--# -path=.:alltenses

concrete BrowseEng of Browse = CatEng, NumeralEng, LexiconEng, StructuralEng ** open LangEng in {

lincat ListAdv = LangEng.ListAdv ;
lincat ListAP = LangEng.ListAP ;
lincat ListNP = LangEng.ListNP ;
lincat ListRS = LangEng.ListRS ;
lincat ListS = LangEng.ListS ;

lin mkAP_1 = PositA ;
lin mkAP_2 = ComparA ;
lin mkAP_3 = ComplA2 ;
lin mkAP_4 = UseA2 ;
lin mkAP_5 = \ap,s -> SentAP ap (EmbedS s) ;
lin mkAP_6 = \ap,s -> SentAP ap (EmbedQS s) ;
lin mkAP_7 = \ap,s -> SentAP ap (EmbedVP s) ;
lin mkAP_8 = \x,y -> AdAP x (PositA y) ;
lin mkAP_9 = AdAP ;
lin mkAP_10 = \c,x,y -> ConjAP c (BaseAP x y) ;
lin mkAP_11 = \c,xy -> ConjAP c xy ;
lin mkAP_12 = AdjOrd ;
lin mkAP_13 = CAdvAP ;
lin mkAdv_16 = PositAdvAdj ;
lin mkAdv_17 = PrepNP ;
lin mkAdv_18 = ComparAdvAdj ;
lin mkAdv_19 = ComparAdvAdjS ;
lin mkAdv_20 = AdAdv ;
lin mkAdv_21 = SubjS ;
lin mkAdv_22 = \c,x,y -> ConjAdv c (BaseAdv x y) ;
lin mkAdv_23 = \c,xy -> ConjAdv c xy ;
lin mkCl_24 = PredVP ;
lin mkCl_25 = \s,v -> PredVP s (UseV v) ;
lin mkCl_26 = \s,v,o -> PredVP s (ComplV2 v o) ;
lin mkCl_27 = \s,v,o,i -> PredVP s (ComplV3 v o i) ;
lin mkCl_28 = \s,v,vp -> PredVP s (ComplVV v vp) ;
lin mkCl_29 = \s,v,p -> PredVP s (ComplVS v p) ;
lin mkCl_30 = \s,v,q -> PredVP s (ComplVQ v q) ;
lin mkCl_31 = \s,v,q -> PredVP s (ComplVA v q) ;
lin mkCl_32 = \s,v,n,q -> PredVP s (ComplV2A v n q) ;
lin mkCl_33 = \s,v,n,q -> PredVP s (ComplSlash (SlashV2S v q) n) ;
lin mkCl_34 = \s,v,n,q -> PredVP s (ComplSlash (SlashV2Q v q) n) ;
lin mkCl_35 = \s,v,n,q -> PredVP s (ComplSlash (SlashV2V v q) n) ;
lin mkCl_36 = ImpersCl ;
lin mkCl_37 = CleftNP ;
lin mkCl_38 = CleftAdv ;
lin mkCl_39 = \y -> ExistNP (DetArtSg IndefArt (UseN y)) ;
lin mkCl_40 = \y -> ExistNP (DetArtSg IndefArt y) ;
lin mkCl_41 = ExistNP ;
lin mkCl_42 = \x,y -> PredVP x (UseComp (CompAP y)) ;
lin mkCl_43 = \x,y -> PredVP x (UseComp (CompAP (PositA y))) ;
lin mkCl_44 = \x,y,z -> PredVP x (UseComp (CompAP (ComparA y z))) ;
lin mkCl_45 = \x,y,z -> PredVP x (UseComp (CompAP (ComplA2 y z))) ;
lin mkCl_46 = \x,y -> PredVP x (UseComp (CompNP y)) ;
lin mkCl_47 = \x,y -> PredVP x (UseComp (CompNP (DetArtSg IndefArt y))) ;
lin mkCl_48 = \x,y -> PredVP x (UseComp (CompNP (DetArtSg IndefArt (UseN y)))) ;
lin mkCl_49 = \x,y -> PredVP x (UseComp (CompAdv y)) ;
lin mkCl_50 = \v -> ImpersCl (UseV v) ;
lin genericCl_51 = GenericCl ;
lin mkNP_58 = MassNP ;
lin mkNP_59 = \n -> MassNP (UseN n) ;
lin mkNP_60 = DetCN ;
lin mkNP_61 = \d,n -> DetCN d (UseN n) ;
lin mkNP_62 = \q -> DetNP (DetQuant q NumSg) ;
lin mkNP_63 = \q,n -> DetNP (DetQuant q n) ;
lin mkNP_64 = DetNP ;
lin mkNP_65 = \d,n -> DetCN (DetArtCard IndefArt d) n ;
lin mkNP_66 = \d,n -> DetCN (DetArtCard IndefArt d) (UseN n) ;
lin mkNP_67 = \q,n -> DetCN (DetQuant q NumSg) n ;
lin mkNP_68 = \q,n -> DetCN (DetQuant q NumSg) (UseN n) ;
lin mkNP_69 = \q,nu,n -> DetCN (DetQuant q nu) n ;
lin mkNP_70 = \q,nu,n -> DetCN (DetQuant q nu) (UseN n) ;
lin mkNP_71 = \p,n -> DetCN (DetQuant (PossPron p) NumSg) n ;
lin mkNP_72 = \p,n -> DetCN (DetQuant (PossPron p) NumSg) (UseN n) ;
lin mkNP_73 = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral d)) n ;
lin mkNP_74 = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral d)) (UseN n) ;
lin mkNP_75 = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) n ;
lin mkNP_76 = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) (UseN n) ;
lin mkNP_77 = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))))) n ;
lin mkNP_78 = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))))) (UseN n) ;
lin mkNP_79 = UsePN ;
lin mkNP_80 = UsePron ;
lin mkNP_81 = PredetNP ;
lin mkNP_82 = PPartNP ;
lin mkNP_83 = AdvNP ;
lin mkNP_84 = RelNP ;
--lin mkNP_85 = \c,x,y -> ConjNP c (BaseNP x y) ;
lin mkNP_86 = \c,xy -> ConjNP c xy ;
lin mkNP_87 = \q,n -> DetCN (DetQuant q NumSg) n ;
lin mkNP_88 = \q,n -> DetCN (DetQuant q NumPl) n ;
lin mkDet_89 = \d,nu -> (DetArtCard d nu) ;
lin mkDet_90 = \q,o -> DetQuantOrd q NumSg o ;
lin mkDet_91 = \q -> DetQuant q NumSg ;
lin mkDet_92 = DetQuantOrd ;
lin mkDet_93 = DetQuant ;
lin mkDet_94 = DetArtCard IndefArt ;
lin mkDet_95 = \d -> DetArtCard IndefArt (NumDigits d) ;
lin mkDet_96 = \d -> DetArtCard IndefArt (NumNumeral d) ;
lin mkDet_97 = \p -> DetQuant (PossPron p) NumSg ;
lin mkDet_98 = \p -> DetQuant (PossPron p) ;
lin the_Art_99 = DefArt ;
lin a_Art_100 = IndefArt ;
lin sgNum_101 = NumSg ;
lin plNum_102 = NumPl ;
lin mkCard_103 = NumNumeral ;
lin mkCard_104 = NumDigits ;
lin mkCard_105 = AdNum ;
lin mkNum_106 = \d -> NumCard (NumNumeral d) ;
lin mkNum_107 = \d -> NumCard (NumDigits d) ;
lin mkNum_108 = \d -> NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d)))))) ;
lin mkNum_109 = NumCard ;
lin mkNum_110 = \a,c -> NumCard (AdNum a c) ;
lin mkOrd_111 = OrdNumeral ;
lin mkOrd_112 = OrdDigits ;
lin mkOrd_113 = \d -> OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ;
lin mkOrd_114 = OrdSuperl ;
lin mkAdN_141 = AdnCAdv ;
lin mkDigits_142 = IDig ;
lin mkDigits_143 = IIDig ;
lin mkCN_154 = UseN ;
lin mkCN_155 = ComplN2 ;
lin mkCN_156 = \f,x -> ComplN2 (ComplN3 f x) ;
lin mkCN_157 = UseN2 ;
lin mkCN_158 = \n -> UseN2 (Use2N3 n) ;
lin mkCN_159 = AdjCN ;
lin mkCN_160 = \x,y -> AdjCN x (UseN y) ;
lin mkCN_161 = \x,y -> AdjCN y x ;
lin mkCN_162 = \x,y -> AdjCN y (UseN x) ;
lin mkCN_163 = \x,y -> AdjCN (PositA x) y ;
lin mkCN_164 = \x,y -> AdjCN (PositA x) (UseN y) ;
lin mkCN_165 = RelCN ;
lin mkCN_166 = \x,y -> RelCN (UseN x) y ;
lin mkCN_167 = AdvCN ;
lin mkCN_168 = \x,y -> AdvCN (UseN x) y ;
lin mkCN_169 = \cn,s -> SentCN cn (EmbedS s) ;
lin mkCN_170 = \cn,s -> SentCN cn (EmbedQS s) ;
lin mkCN_171 = \cn,s -> SentCN cn (EmbedVP s) ;
lin mkCN_172 = ApposCN ;
lin mkCN_173 = \x,y -> ApposCN (UseN x) y ;
lin mkPhr_174 = PhrUtt ;
lin mkPhr_175 = \u,v -> PhrUtt NoPConj u v ;
lin mkPhr_176 = \u,v -> PhrUtt u v NoVoc ;
lin mkPhr_177 = \u -> PhrUtt NoPConj u NoVoc ;
lin mkPhr_178 = \s -> PhrUtt NoPConj (UttS s) NoVoc ;
lin mkPhr_179 = \s -> PhrUtt NoPConj (UttS (TUseCl TPres ASimul PPos s)) NoVoc ;
lin mkPhr_180 = \s -> PhrUtt NoPConj (UttQS s) NoVoc ;
lin mkPhr_181 = \s -> PhrUtt NoPConj (UttImpSg PPos s) NoVoc ;
lin mkPConj_182 = PConjConj ;
lin noPConj_183 = NoPConj ;
lin mkVoc_184 = VocNP ;
lin noVoc_185 = NoVoc ;
lin positivePol_186 = PPos ;
lin negativePol_187 = PNeg ;
lin simultaneousAnt_188 = ASimul ;
lin anteriorAnt_189 = AAnter ;
lin presentTense_190 = TPres ;
lin pastTense_191 = TPast ;
lin futureTense_192 = TFut ;
lin conditionalTense_193 = TCond ;
lin singularImpForm_194 = IFSg ;
lin pluralImpForm_195 = IFPl ;
lin politeImpForm_196 = IFPol ;
lin mkUtt_197 = UttS ;
lin mkUtt_198 = \c -> UttS (TUseCl TPres ASimul PPos c) ;
lin mkUtt_199 = UttQS ;
lin mkUtt_200 = \c -> UttQS (TUseQCl TPres ASimul PPos c) ;
lin mkUtt_201 = mkUttImp ;
lin mkUtt_202 = \f -> mkUttImp f PPos ;
lin mkUtt_203 = UttImpSg ;
lin mkUtt_204 = UttImpSg PPos ;
lin mkUtt_205 = UttIP ;
lin mkUtt_206 = UttIAdv ;
lin mkUtt_207 = UttNP ;
lin mkUtt_208 = UttAdv ;
lin mkUtt_209 = UttVP ;
lin lets_Utt_210 = ImpPl1 ;
lin mkQCl_211 = QuestCl ;
lin mkQCl_212 = QuestVP ;
lin mkQCl_213 = QuestSlash ;
lin mkQCl_214 = \ip,np,v -> QuestSlash ip (SlashVP np (SlashV2a v)) ;
lin mkQCl_215 = QuestIAdv ;
lin mkQCl_216 = \p,ip -> QuestIAdv (PrepIP p ip) ;
lin mkQCl_217 = \a -> QuestIComp (CompIAdv a) ;
lin mkQCl_218 = \a -> QuestIComp (CompIP a) ;
lin mkQCl_219 = ExistIP ;
lin mkIP_220 = IdetCN ;
lin mkIP_221 = \i,n -> IdetCN i (UseN n) ;
lin mkIP_222 = \i,n -> IdetCN (IdetQuant i NumSg) n ;
lin mkIP_223 = \i,nu,n -> IdetCN (IdetQuant i nu) n ;
lin mkIP_224 = \i,n -> IdetCN (IdetQuant i NumSg) (UseN n) ;
lin mkIP_225 = AdvIP ;
lin mkIDet_226 = \i,nu -> IdetQuant i nu ;
lin mkIDet_227 = \i -> IdetQuant i NumSg ;
lin whichSg_IDet_228 = IdetQuant which_IQuant NumSg ;
lin whichPl_IDet_229 = IdetQuant which_IQuant NumPl ;
lin what_IP_230 = whatSg_IP ;
lin who_IP_231 = whoSg_IP ;
lin which_IDet_232 = whichSg_IDet ;
lin mkIAdv_233 = PrepIP ;
lin mkRCl_234 = RelCl ;
lin mkRCl_235 = RelVP ;
lin mkRCl_236 = RelSlash ;
lin mkRCl_237 = \rp,np,v2 -> RelSlash rp (SlashVP np (SlashV2a v2)) ;
lin which_RP_238 = IdRP ;
lin mkRP_239 = FunRP ;
lin mkClSlash_240 = \np,v2 -> SlashVP np (SlashV2a v2) ;
lin mkClSlash_241 = \np,vv,v2 -> SlashVP np (SlashVV vv (SlashV2a v2)) ;
lin mkClSlash_242 = AdvSlash ;
lin mkClSlash_243 = SlashPrep ;
lin mkImp_244 = ImpVP ;
lin mkImp_245 = \v -> ImpVP (UseV v) ;
lin mkImp_246 = \v,np -> ImpVP (ComplV2 v np) ;
lin mkS_400 = TUseCl TPres ASimul PPos ;
lin mkS_247 = \t -> TUseCl t ASimul PPos ;
lin mkS_248 = \a -> TUseCl TPres a PPos ;
lin mkS_249 = \p -> TUseCl TPres ASimul p ;
lin mkS_250 = \t,a -> TUseCl t a PPos ;
lin mkS_251 = \t,p -> TUseCl t ASimul p ;
lin mkS_252 = \a,p -> TUseCl TPres a p ;
lin mkS_253 = \t,a -> TUseCl t a ;
lin mkS_254 = \c,x,y -> ConjS c (BaseS x y) ;
lin mkS_255 = \c,xy -> ConjS c xy ;
lin mkS_256 = AdvS ;
lin mkQS_257 = TUseQCl TPres ASimul PPos ;
lin mkQS_258 = \t -> TUseQCl t ASimul PPos ;
lin mkQS_259 = \a -> TUseQCl TPres a PPos ;
lin mkQS_260 = \p -> TUseQCl TPres ASimul p ;
lin mkQS_261 = \t,a -> TUseQCl t a PPos ;
lin mkQS_262 = \t,p -> TUseQCl t ASimul p ;
lin mkQS_263 = \a,p -> TUseQCl TPres a p ;
lin mkQS_264 = TUseQCl ;
lin mkQS_265 = \x -> TUseQCl TPres ASimul PPos (QuestCl x) ;
lin mkRS_266 = TUseRCl TPres ASimul PPos ;
lin mkRS_267 = \t -> TUseRCl t ASimul PPos ;
lin mkRS_268 = \a -> TUseRCl TPres a PPos ;
lin mkRS_269 = \p -> TUseRCl TPres ASimul p ;
lin mkRS_270 = \t,a -> TUseRCl t a PPos ;
lin mkRS_271 = \t,p -> TUseRCl t ASimul p ;
lin mkRS_272 = \a,p -> TUseRCl TPres a p ;
lin mkRS_273 = TUseRCl ;
lin mkRS_274 = \c,x,y -> ConjRS c (BaseRS x y) ;
lin mkRS_275 = \c,xy -> ConjRS c xy ;
lin emptyText_276 = TEmpty ;
--lin fullStopPunct_277 = PFullStop ;
--lin questMarkPunct_278 = PQuestMark ;
--lin exclMarkPunct_279 = PExclMark ;
lin mkText_280 = \x -> TFullStop x TEmpty ;
lin mkText_281 = \u -> TFullStop (PhrUtt NoPConj u NoVoc) TEmpty ;
lin mkText_282 = \s -> TFullStop (PhrUtt NoPConj (UttS s) NoVoc) TEmpty ;
lin mkText_283 = \c -> TFullStop (PhrUtt NoPConj (UttS (TUseCl TPres ASimul PPos c)) NoVoc) TEmpty ;
lin mkText_284 = \q -> TQuestMark (PhrUtt NoPConj (UttQS q) NoVoc) TEmpty ;
lin mkText_285 = \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty ;
lin mkText_286 = \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty ;
lin mkText_287 = TFullStop ;
lin mkVP_288 = UseV ;
lin mkVP_289 = ComplV2 ;
lin mkVP_290 = ComplV3 ;
lin mkVP_291 = ComplVV ;
lin mkVP_292 = ComplVS ;
lin mkVP_293 = ComplVQ ;
lin mkVP_294 = ComplVA ;
lin mkVP_295 = ComplV2A ;
lin mkVP_296 = \v,n,q -> (ComplSlash (SlashV2S v q) n) ;
lin mkVP_297 = \v,n,q -> (ComplSlash (SlashV2Q v q) n) ;
lin mkVP_298 = \v,n,q -> (ComplSlash (SlashV2V v q) n) ;
lin mkVP_299 = \a -> UseComp (CompAP (PositA a)) ;
lin mkVP_300 = \y,z -> (UseComp (CompAP (ComparA y z))) ;
lin mkVP_301 = \y,z -> (UseComp (CompAP (ComplA2 y z))) ;
lin mkVP_302 = \a -> UseComp (CompAP a) ;
lin mkVP_303 = \a -> UseComp (CompNP a) ;
lin mkVP_304 = \y -> (UseComp (CompNP (DetArtSg IndefArt y))) ;
lin mkVP_305 = \y -> (UseComp (CompNP (DetArtSg IndefArt (UseN y)))) ;
lin mkVP_306 = \a -> UseComp (CompAdv a) ;
lin mkVP_307 = AdvVP ;
lin mkVP_308 = AdVVP ;
lin mkVP_309 = ComplSlash ;
lin mkVP_310 = ReflVP ;
lin reflexiveVP_311 = \v -> ReflVP (SlashV2a v) ;
lin mkVPSlash_312 = SlashV2a ;
lin mkVPSlash_313 = Slash2V3 ;
lin mkVPSlash_314 = SlashV2A ;
lin mkVPSlash_315 = SlashV2Q ;
lin mkVPSlash_316 = SlashV2S ;
lin mkVPSlash_317 = SlashV2V ;
lin passiveVP_318 = PassV2 ;
lin passiveVP_319 = \v,np -> (AdvVP (PassV2 v) (PrepNP by8agent_Prep np)) ;
lin progressiveVP_320 = ProgrVP ;
lin mkListS_321 = BaseS ;
lin mkListS_322 = ConsS ;
lin mkListAP_323 = BaseAP ;
lin mkListAP_324 = ConsAP ;
lin mkListAdv_325 = BaseAdv ;
lin mkListAdv_326 = ConsAdv ;
lin mkListNP_327 = BaseNP ;
lin mkListNP_328 = ConsNP ;
lin mkListRS_329 = BaseRS ;
lin mkListRS_330 = ConsRS ;
lin that_NP_331 = DetNP (DetQuant that_Quant NumSg) ;
lin this_NP_332 = DetNP (DetQuant this_Quant NumSg) ;
lin those_NP_333 = DetNP (DetQuant that_Quant NumPl) ;
lin these_NP_334 = DetNP (DetQuant this_Quant NumPl) ;
lin that_Det_335 = (DetQuant that_Quant NumSg) ;
lin this_Det_336 = (DetQuant this_Quant NumSg) ;
lin those_Det_337 = (DetQuant that_Quant NumPl) ;
lin these_Det_338 = (DetQuant this_Quant NumPl) ;

lin the_Det = DetQuant DefArt NumSg ;
lin thePl_Det = DetQuant DefArt NumPl ;
lin a_Det = DetQuant IndefArt NumSg ;
lin aPl_Det = DetQuant IndefArt NumPl ;

oper
  ComplV2 : V2 -> NP -> VP = \v,np -> ComplSlash (SlashV2a v) np ;
  ComplV2A : V2A -> NP -> AP -> VP = \v,np,ap -> ComplSlash (SlashV2A v ap) np ; --# notminimal
  ComplV3 : V3 -> NP -> NP -> VP = \v,o,d -> ComplSlash (Slash3V3 v o) d ; 

    DetArtSg : Quant -> CN -> NP = \a -> DetCN (DetQuant a NumSg) ; 
    DetArtPl : Quant -> CN -> NP = \a -> DetCN (DetQuant a NumPl) ; 
    DetArtOrd : Quant -> Num -> Ord -> Det = DetQuantOrd ; --# notminimal
    DetArtCard : Quant -> Card -> Det = \a,c -> DetQuant a (NumCard c) ; 
    TUseCl  : Tense -> Ant -> Pol ->  Cl ->  S = \t,a -> UseCl  (TTAnt t a) ; 
    TUseQCl : Tense -> Ant -> Pol -> QCl -> QS = \t,a -> UseQCl (TTAnt t a) ; 
    TUseRCl : Tense -> Ant -> Pol -> RCl -> RS = \t,a -> UseRCl (TTAnt t a) ; --# notminimal

  param ImpForm = IFSg | IFPl | IFPol ; --# notminimal

  oper --# notminimal
    singularImpForm  : ImpForm = IFSg ; --# notminimal
    pluralImpForm  : ImpForm = IFPl ; --# notminimal
    politeImpForm : ImpForm = IFPol ; --# notminimal

    mkUttImp : ImpForm -> Pol -> Imp -> Utt = \f,p,i -> case f of { --# notminimal
      IFSg  => UttImpSg p i ; --# notminimal
      IFPl  => UttImpPl p i ; --# notminimal
      IFPol => UttImpPol p i --# notminimal
      } ; --# notminimal

    whichSg_IDet : IDet = IdetQuant which_IQuant NumSg ; --# notminimal
    whichPl_IDet : IDet = IdetQuant which_IQuant NumPl ; --# notminimal


}
