Parse Successful! [Abstract Syntax] Gr [MModule CMCompl (MTInterface (Ident "SyntaxRomance")) (MBody (Ext [IAll (Ident "TypesRomance")]) (OpenIn [OName (Ident "Prelude"),OQual QOCompl (Ident "CO") (Ident "Coordination")]) [DefFlag [FlagDefC (Ident "coding") (Ident "utf8")],DefOper [DFull [IdentName (Ident "CommNoun")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "Number")) (ESort Sort_Str)),LDDecl [Ident "g"] (EIdent (Ident "Gender"))]),DDef [IdentName (Ident "CommNounPhrase")] (EIdent (Ident "CommNoun")),DFull [IdentName (Ident "noun2CommNounPhrase")] (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "CommNoun"))) (EAbstr [BIdent (Ident "x")] (EIdent (Ident "x"))),DFull [IdentName (Ident "commonNounComp")] (EProd (DExp (EIdent (Ident "CommNoun"))) (EProd (DExp (ESort Sort_Str)) (EIdent (Ident "CommNoun")))) (EAbstr [BIdent (Ident "numero"),BIdent (Ident "detelephone")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "n")] (EConcat (ESelect (EProj (EIdent (Ident "numero")) (LIdent (Ident "s"))) (EIdent (Ident "n"))) (EIdent (Ident "detelephone")))),LDDef [Ident "g"] (EProj (EIdent (Ident "numero")) (LIdent (Ident "g")))])),DFull [IdentName (Ident "ProperName")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s"] (ESort Sort_Str),LDDecl [Ident "g"] (EIdent (Ident "Gender"))]),DFull [IdentName (Ident "NounPhrase")] (ESort Sort_Type) (EIdent (Ident "Pronoun")),DDeclC [IdentName (Ident "nameNounPhrase")] (EProd (DExp (EIdent (Ident "ProperName"))) (EIdent (Ident "NounPhrase"))),DFull [IdentName (Ident "mkProperName")] (EProd (DExp (ESort Sort_Str)) (EProd (DExp (EIdent (Ident "Gender"))) (EIdent (Ident "ProperName")))) (EAbstr [BIdent (Ident "jean"),BIdent (Ident "m")] (ERecord [LDDef [Ident "s"] (EIdent (Ident "jean")),LDDef [Ident "g"] (EIdent (Ident "m"))])),DFull [IdentName (Ident "mkNameNounPhrase")] (EProd (DExp (ESort Sort_Str)) (EProd (DExp (EIdent (Ident "Gender"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "jean"),BIdent (Ident "m")] (EApp (EIdent (Ident "nameNounPhrase")) (EApp (EApp (EIdent (Ident "mkProperName")) (EIdent (Ident "jean"))) (EIdent (Ident "m"))))),DDeclC [IdentName (Ident "nounPhraseOn")] (EIdent (Ident "NounPhrase")),DFull [IdentName (Ident "normalNounPhrase")] (EProd (DExp (ETType (EIdent (Ident "CaseA")) (ESort Sort_Str))) (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EIdent (Ident "NounPhrase"))))) (EAbstr [BIdent (Ident "cs"),BIdent (Ident "g"),BIdent (Ident "n")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "p")] (ESelect (EIdent (Ident "cs")) (EApp (EIdent (Ident "pform2case")) (EIdent (Ident "p"))))),LDDef [Ident "g"] (EApp (EIdent (Ident "PGen")) (EIdent (Ident "g"))),LDDef [Ident "n"] (EIdent (Ident "n")),LDDef [Ident "p"] (EIdent (Ident "P3")),LDDef [Ident "c"] (EIdent (Ident "Clit0"))])),DFull [IdentName (Ident "pronNounPhrase")] (EProd (DExp (EIdent (Ident "Pronoun"))) (EIdent (Ident "NounPhrase"))) (EAbstr [BIdent (Ident "pro")] (EIdent (Ident "pro"))),DFull [IdentName (Ident "Numeral")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "Gender")) (ESort Sort_Str)),LDDecl [Ident "n"] (EIdent (Ident "Number")),LDDecl [Ident "isNo"] (EIdent (Ident "Bool"))]),DFull [IdentName (Ident "pronWithNum")] (EProd (DExp (EIdent (Ident "Pronoun"))) (EProd (DExp (EIdent (Ident "Numeral"))) (EIdent (Ident "Pronoun")))) (EAbstr [BIdent (Ident "nous"),BIdent (Ident "deux")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "c")] (EConcat (ESelect (EProj (EIdent (Ident "nous")) (LIdent (Ident "s"))) (EIdent (Ident "c"))) (ESelect (EProj (EIdent (Ident "deux")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "pgen2gen")) (EProj (EIdent (Ident "nous")) (LIdent (Ident "g"))))))),LDDef [Ident "g"] (EProj (EIdent (Ident "nous")) (LIdent (Ident "g"))),LDDef [Ident "n"] (EProj (EIdent (Ident "nous")) (LIdent (Ident "n"))),LDDef [Ident "p"] (EProj (EIdent (Ident "nous")) (LIdent (Ident "p"))),LDDef [Ident "c"] (EProj (EIdent (Ident "nous")) (LIdent (Ident "c")))])),DFull [IdentName (Ident "noNum")] (EIdent (Ident "Numeral")) (ERecord [LDDef [Ident "s"] (ECTable [BWild] EEmpty),LDDef [Ident "n"] (EIdent (Ident "Pl")),LDDef [Ident "isNo"] (EIdent (Ident "True"))]),DDeclC [IdentName (Ident "existNounPhrase")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "Clause"))),DFull [IdentName (Ident "addSymbNounPhrase")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (ESort Sort_Str)) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "np"),BIdent (Ident "x")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "c")] (EConcat (ESelect (EProj (EIdent (Ident "np")) (LIdent (Ident "s"))) (EIdent (Ident "c"))) (EIdent (Ident "x")))),LDDef [Ident "g"] (EProj (EIdent (Ident "np")) (LIdent (Ident "g"))),LDDef [Ident "n"] (EProj (EIdent (Ident "np")) (LIdent (Ident "n"))),LDDef [Ident "p"] (EProj (EIdent (Ident "np")) (LIdent (Ident "p"))),LDDef [Ident "c"] (EProj (EIdent (Ident "np")) (LIdent (Ident "c")))])),DFull [IdentName (Ident "Determiner")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "Gender")) (ESort Sort_Str)),LDDecl [Ident "n"] (EIdent (Ident "Number"))]),DFull [IdentName (Ident "DeterminerNum")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "Gender")) (ESort Sort_Str))]),DFull [IdentName (Ident "detNounPhrase")] (EProd (DExp (EIdent (Ident "Determiner"))) (EProd (DExp (EIdent (Ident "CommNoun"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "tout"),BIdent (Ident "homme")] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (ECTable [BIdent (Ident "c")] (EConcat (EApp (EIdent (Ident "prepCase")) (EIdent (Ident "c"))) (EConcat (ESelect (EProj (EIdent (Ident "tout")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "homme")) (LIdent (Ident "g")))) (ESelect (EProj (EIdent (Ident "homme")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "tout")) (LIdent (Ident "n")))))))) (EProj (EIdent (Ident "homme")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "tout")) (LIdent (Ident "n"))))),DFull [IdentName (Ident "numDetNounPhrase")] (EProd (DExp (EIdent (Ident "DeterminerNum"))) (EProd (DExp (EIdent (Ident "Numeral"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "NounPhrase"))))) (EAbstr [BIdent (Ident "tous"),BIdent (Ident "six"),BIdent (Ident "homme")] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (ECTable [BIdent (Ident "c")] (EConcat (EApp (EIdent (Ident "prepCase")) (EIdent (Ident "c"))) (EConcat (ESelect (EProj (EIdent (Ident "tous")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "homme")) (LIdent (Ident "g")))) (EConcat (ESelect (EProj (EIdent (Ident "six")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "homme")) (LIdent (Ident "g")))) (ESelect (EProj (EIdent (Ident "homme")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "six")) (LIdent (Ident "n"))))))))) (EProj (EIdent (Ident "homme")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "six")) (LIdent (Ident "n"))))),DFull [IdentName (Ident "justNumDetNounPhrase")] (EProd (DExp (EIdent (Ident "DeterminerNum"))) (EProd (DExp (EIdent (Ident "Numeral"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "tous"),BIdent (Ident "six")] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (ECTable [BIdent (Ident "c")] (EConcat (EApp (EIdent (Ident "prepCase")) (EIdent (Ident "c"))) (EConcat (ESelect (EProj (EIdent (Ident "tous")) (LIdent (Ident "s"))) (EIdent (Ident "Masc"))) (ESelect (EProj (EIdent (Ident "six")) (LIdent (Ident "s"))) (EIdent (Ident "Masc"))))))) (EIdent (Ident "Masc"))) (EProj (EIdent (Ident "six")) (LIdent (Ident "n"))))),DFull [IdentName (Ident "mkDeterminer")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (ESort Sort_Str)) (EProd (DExp (ESort Sort_Str)) (EIdent (Ident "Determiner"))))) (EAbstr [BIdent (Ident "n"),BIdent (Ident "tous"),BIdent (Ident "toutes")] (ERecord [LDDef [Ident "s"] (EApp (EApp (EIdent (Ident "genForms")) (EIdent (Ident "tous"))) (EIdent (Ident "toutes"))),LDDef [Ident "n"] (EIdent (Ident "n"))])),DFull [IdentName (Ident "mkDeterminer1")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (ESort Sort_Str)) (EIdent (Ident "Determiner")))) (EAbstr [BIdent (Ident "n"),BIdent (Ident "chaque")] (EApp (EApp (EApp (EIdent (Ident "mkDeterminer")) (EIdent (Ident "n"))) (EIdent (Ident "chaque"))) (EIdent (Ident "chaque")))),DFull [IdentName (Ident "mkDeterminerNum")] (EProd (DExp (ESort Sort_Str)) (EProd (DExp (ESort Sort_Str)) (EIdent (Ident "DeterminerNum")))) (EAbstr [BIdent (Ident "tous"),BIdent (Ident "toutes")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "g")] (ESelect (EApp (EApp (EIdent (Ident "genForms")) (EIdent (Ident "tous"))) (EIdent (Ident "toutes"))) (EIdent (Ident "g"))))])),DFull [IdentName (Ident "indefNounPhrase")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "n"),BIdent (Ident "mec")] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (ECTable [BIdent (Ident "c")] (EConcat (EApp (EApp (EApp (EIdent (Ident "artIndef")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "n"))) (EIdent (Ident "c"))) (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "n")))))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "n")))),DFull [IdentName (Ident "indefNounPhraseNum")] (EProd (DExp (EIdent (Ident "Numeral"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "nu"),BIdent (Ident "mec")] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (ECTable [BIdent (Ident "c")] (ECase (EProj (EIdent (Ident "nu")) (LIdent (Ident "isNo"))) [CaseC [AltP (PV (Ident "True"))] (EConcat (EApp (EApp (EApp (EIdent (Ident "artIndef")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "Pl"))) (EIdent (Ident "c"))) (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "Pl")))),CaseC [AltP PW] (EConcat (EApp (EIdent (Ident "prepCase")) (EIdent (Ident "c"))) (EConcat (ESelect (EProj (EIdent (Ident "nu")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "nu")) (LIdent (Ident "n"))))))]))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "nu")) (LIdent (Ident "n"))))),DFull [IdentName (Ident "defNounPhrase")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "n"),BIdent (Ident "mec")] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (ECTable [BIdent (Ident "c")] (EConcat (EApp (EApp (EApp (EIdent (Ident "artDef")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "n"))) (EIdent (Ident "c"))) (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "n")))))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "n")))),DFull [IdentName (Ident "defNounPhraseNum")] (EProd (DExp (EIdent (Ident "Numeral"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "nu"),BIdent (Ident "mec")] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (ECTable [BIdent (Ident "c")] (EConcat (EApp (EApp (EApp (EIdent (Ident "artDef")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "nu")) (LIdent (Ident "n")))) (EIdent (Ident "c"))) (EConcat (ESelect (EProj (EIdent (Ident "nu")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "nu")) (LIdent (Ident "n")))))))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "nu")) (LIdent (Ident "n"))))),DFull [IdentName (Ident "indefNoun")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (ESort Sort_Str))) (EAbstr [BIdent (Ident "n"),BIdent (Ident "mec")] (ESelect (EProj (EApp (EApp (EIdent (Ident "indefNounPhrase")) (EIdent (Ident "n"))) (EIdent (Ident "mec"))) (LIdent (Ident "s"))) (EApp (EIdent (Ident "case2pform")) (EIdent (Ident "nominative"))))),DFull [IdentName (Ident "npGenDet")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "NounPhrase"))))) (EAbstr [BIdent (Ident "n"),BIdent (Ident "jeanne"),BIdent (Ident "mec")] (ELet [LDFull [Ident "str"] (ETType (EIdent (Ident "CaseA")) (ESort Sort_Str)) (ECase (EProj (EIdent (Ident "jeanne")) (LIdent (Ident "c"))) [CaseC [AltP (PV (Ident "Clit0"))] (EApp (EApp (EApp (EIdent (Ident "npGenDe")) (EIdent (Ident "n"))) (EIdent (Ident "jeanne"))) (EIdent (Ident "mec"))),CaseC [AltP PW] (EApp (EApp (EApp (EIdent (Ident "npGenPoss")) (EIdent (Ident "n"))) (EIdent (Ident "jeanne"))) (EIdent (Ident "mec")))])] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (EIdent (Ident "str"))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "n"))))),DFull [IdentName (Ident "npGenDetNum")] (EProd (DExp (EIdent (Ident "Numeral"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "NounPhrase"))))) (EAbstr [BIdent (Ident "nu"),BIdent (Ident "jeanne"),BIdent (Ident "mec")] (ELet [LDFull [Ident "str"] (ETType (EIdent (Ident "CaseA")) (ESort Sort_Str)) (ECase (EProj (EIdent (Ident "jeanne")) (LIdent (Ident "c"))) [CaseC [AltP (PV (Ident "Clit0"))] (EApp (EApp (EApp (EIdent (Ident "npGenDeNum")) (EIdent (Ident "nu"))) (EIdent (Ident "jeanne"))) (EIdent (Ident "mec"))),CaseC [AltP PW] (EApp (EApp (EApp (EIdent (Ident "npGenPossNum")) (EIdent (Ident "nu"))) (EIdent (Ident "jeanne"))) (EIdent (Ident "mec")))])] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (EIdent (Ident "str"))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "nu")) (LIdent (Ident "n")))))),DFull [IdentName (Ident "npGenDe")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (ETType (EIdent (Ident "CaseA")) (ESort Sort_Str))))) (EAbstr [BIdent (Ident "n"),BIdent (Ident "jeanne"),BIdent (Ident "mec")] (ECTable [BIdent (Ident "c")] (EConcat (EApp (EApp (EApp (EIdent (Ident "artDef")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "n"))) (EIdent (Ident "c"))) (EConcat (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "n"))) (ESelect (EProj (EIdent (Ident "jeanne")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "case2pform")) (EIdent (Ident "genitive")))))))),DFull [IdentName (Ident "npGenDeNum")] (EProd (DExp (EIdent (Ident "Numeral"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (ETType (EIdent (Ident "CaseA")) (ESort Sort_Str))))) (EAbstr [BIdent (Ident "nu"),BIdent (Ident "jeanne"),BIdent (Ident "mec")] (ECTable [BIdent (Ident "c")] (EConcat (EApp (EApp (EApp (EIdent (Ident "artDef")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "nu")) (LIdent (Ident "n")))) (EIdent (Ident "c"))) (EConcat (ESelect (EProj (EIdent (Ident "nu")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EConcat (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "nu")) (LIdent (Ident "n")))) (ESelect (EProj (EIdent (Ident "jeanne")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "case2pform")) (EIdent (Ident "genitive"))))))))),DDeclC [IdentName (Ident "npGenPoss")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (ETType (EIdent (Ident "CaseA")) (ESort Sort_Str))))),DDeclC [IdentName (Ident "npGenPossNum")] (EProd (DExp (EIdent (Ident "Numeral"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (ETType (EIdent (Ident "CaseA")) (ESort Sort_Str))))),DFull [IdentName (Ident "nounThatSentence")] (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EProd (DExp (EIdent (Ident "Sentence"))) (EIdent (Ident "CommNounPhrase")))) (EAbstr [BIdent (Ident "idee"),BIdent (Ident "x")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "n")] (EConcat (ESelect (EProj (EIdent (Ident "idee")) (LIdent (Ident "s"))) (EIdent (Ident "n"))) (EConcat (EIdent (Ident "elisQue")) (ESelect (EProj (EIdent (Ident "x")) (LIdent (Ident "s"))) (EIdent (Ident "Ind")))))),LDDef [Ident "g"] (EProj (EIdent (Ident "idee")) (LIdent (Ident "g")))])),DDeclC [IdentName (Ident "partitiveNounPhrase")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "NounPhrase")))),DFull [IdentName (Ident "Adjective")] (ESort Sort_Type) (EExtend (EIdent (Ident "Adj")) (ERecord [LDDecl [Ident "p"] (EIdent (Ident "Bool"))])),DDef [IdentName (Ident "adjPre")] (EIdent (Ident "True")),DDef [IdentName (Ident "adjPost")] (EIdent (Ident "False")),DFull [IdentName (Ident "AdjPhrase")] (ESort Sort_Type) (EIdent (Ident "Adjective")),DFull [IdentName (Ident "adj2adjPhrase")] (EProd (DExp (EIdent (Ident "Adjective"))) (EIdent (Ident "AdjPhrase"))) (EAbstr [BIdent (Ident "x")] (EIdent (Ident "x"))),DFull [IdentName (Ident "mkAdjective")] (EProd (DExp (EIdent (Ident "Adj"))) (EProd (DExp (EIdent (Ident "Bool"))) (EIdent (Ident "Adjective")))) (EAbstr [BIdent (Ident "adj"),BIdent (Ident "p")] (EExtend (EIdent (Ident "adj")) (ERecord [LDDef [Ident "p"] (EIdent (Ident "p"))]))),DDef [IdentName (Ident "AdjDegr")] (EExtend (EIdent (Ident "AdjComp")) (ERecord [LDDecl [Ident "p"] (EIdent (Ident "Bool"))])),DFull [IdentName (Ident "mkAdjDegr")] (EProd (DExp (EIdent (Ident "AdjComp"))) (EProd (DExp (EIdent (Ident "Bool"))) (EIdent (Ident "AdjDegr")))) (EAbstr [BIdent (Ident "adj"),BIdent (Ident "p")] (EExtend (EIdent (Ident "adj")) (ERecord [LDDef [Ident "p"] (EIdent (Ident "p"))]))),DFull [IdentName (Ident "mkAdjDegrLong")] (EProd (DExp (EIdent (Ident "Adj"))) (EProd (DExp (EIdent (Ident "Bool"))) (EIdent (Ident "AdjDegr")))) (EAbstr [BIdent (Ident "adj"),BIdent (Ident "p")] (EExtend (EApp (EIdent (Ident "adjCompLong")) (EIdent (Ident "adj"))) (ERecord [LDDef [Ident "p"] (EIdent (Ident "p"))]))),DFull [IdentName (Ident "positAdjPhrase")] (EProd (DExp (EIdent (Ident "AdjDegr"))) (EIdent (Ident "AdjPhrase"))) (EAbstr [BIdent (Ident "bon")] (ERecord [LDDef [Ident "s"] (ESelect (EProj (EIdent (Ident "bon")) (LIdent (Ident "s"))) (EIdent (Ident "Pos"))),LDDef [Ident "p"] (EProj (EIdent (Ident "bon")) (LIdent (Ident "p")))])),DFull [IdentName (Ident "comparAdjPhrase")] (EProd (DExp (EIdent (Ident "AdjDegr"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "AdjPhrase")))) (EAbstr [BIdent (Ident "bon"),BIdent (Ident "toi")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "a")] (EConcat (ESelect (ESelect (EProj (EIdent (Ident "bon")) (LIdent (Ident "s"))) (EIdent (Ident "Comp"))) (EIdent (Ident "a"))) (EConcat (EIdent (Ident "comparConj")) (ESelect (EProj (EIdent (Ident "toi")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "stressed")) (EIdent (Ident "accusative"))))))),LDDef [Ident "p"] (EIdent (Ident "False"))])),DDeclC [IdentName (Ident "comparConj")] (ESort Sort_Str),DFull [IdentName (Ident "superlNounPhrase")] (EProd (DExp (EIdent (Ident "AdjDegr"))) (EProd (DExp (EIdent (Ident "CommNoun"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "bon"),BIdent (Ident "mec")] (EApp (EApp (EApp (EIdent (Ident "normalNounPhrase")) (ECTable [BIdent (Ident "c")] (EConcat (EApp (EApp (EApp (EIdent (Ident "artDef")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "Sg"))) (EIdent (Ident "c"))) (EApp (EApp (EApp (EApp (EIdent (Ident "if_then_else")) (ESort Sort_Str)) (EProj (EIdent (Ident "bon")) (LIdent (Ident "p")))) (EConcat (ESelect (ESelect (EProj (EIdent (Ident "bon")) (LIdent (Ident "s"))) (EIdent (Ident "Comp"))) (EApp (EApp (EIdent (Ident "AF")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "Sg")))) (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "Sg"))))) (EConcat (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "Sg"))) (EConcat (EApp (EApp (EApp (EIdent (Ident "artDef")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "Sg"))) (EIdent (Ident "nominative"))) (ESelect (ESelect (EProj (EIdent (Ident "bon")) (LIdent (Ident "s"))) (EIdent (Ident "Comp"))) (EApp (EApp (EIdent (Ident "AF")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "Sg")))))))))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "Sg")))),DFull [IdentName (Ident "superlAdjPhrase")] (EProd (DExp (EIdent (Ident "AdjDegr"))) (EIdent (Ident "AdjPhrase"))) (EAbstr [BIdent (Ident "bon")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "a")] (EConcat (EApp (EApp (EApp (EIdent (Ident "artDef")) (EApp (EIdent (Ident "genAForm")) (EIdent (Ident "a")))) (EApp (EIdent (Ident "numAForm")) (EIdent (Ident "a")))) (EIdent (Ident "nominative"))) (ESelect (ESelect (EProj (EIdent (Ident "bon")) (LIdent (Ident "s"))) (EIdent (Ident "Comp"))) (EIdent (Ident "a"))))),LDDef [Ident "p"] (EProj (EIdent (Ident "bon")) (LIdent (Ident "p")))])),DFull [IdentName (Ident "predAdjSent")] (EProd (DExp (EExtend (EIdent (Ident "Adjective")) (ERecord [LDDecl [Ident "mp",Ident "mn"] (EIdent (Ident "Mode"))]))) (EProd (DExp (EIdent (Ident "Sentence"))) (EIdent (Ident "Clause")))) (EAbstr [BIdent (Ident "adj"),BIdent (Ident "ildort")] (EApp (EIdent (Ident "sats2clause")) (EApp (EApp (EIdent (Ident "insertExtrapos")) (EApp (EApp (EIdent (Ident "mkSatsCopula")) (EIdent (Ident "pronImpers"))) (ESelect (EProj (EIdent (Ident "adj")) (LIdent (Ident "s"))) (EApp (EApp (EIdent (Ident "AF")) (EIdent (Ident "Masc"))) (EIdent (Ident "Sg")))))) (ECTable [BIdent (Ident "b")] (EConcat (EIdent (Ident "embedConj")) (ESelect (EProj (EIdent (Ident "ildort")) (LIdent (Ident "s"))) (EApp (EApp (EApp (EApp (EIdent (Ident "if_then_else")) (EIdent (Ident "Mode"))) (EIdent (Ident "b"))) (EProj (EIdent (Ident "adj")) (LIdent (Ident "mp")))) (EProj (EIdent (Ident "adj")) (LIdent (Ident "mn")))))))))),DFull [IdentName (Ident "predAdjSent2")] (EProd (DExp (EExtend (EIdent (Ident "AdjCompl")) (ERecord [LDDecl [Ident "mp",Ident "mn"] (EIdent (Ident "Mode"))]))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EExtend (EIdent (Ident "Adjective")) (ERecord [LDDecl [Ident "mp",Ident "mn"] (EIdent (Ident "Mode"))])))) (EAbstr [BIdent (Ident "facile"),BIdent (Ident "jean")] (EExtend (EApp (EApp (EIdent (Ident "complAdj")) (EIdent (Ident "facile"))) (EIdent (Ident "jean"))) (ERecord [LDDef [Ident "mp"] (EProj (EIdent (Ident "facile")) (LIdent (Ident "mp"))),LDDef [Ident "mn"] (EProj (EIdent (Ident "facile")) (LIdent (Ident "mn")))]))),DDeclC [IdentName (Ident "pronImpers")] (EIdent (Ident "NounPhrase")),DDef [IdentName (Ident "Preposition")] (ESort Sort_Str),DDef [IdentName (Ident "Complement")] (ERecord [LDDecl [Ident "s2"] (EIdent (Ident "Preposition")),LDDecl [Ident "c"] (EIdent (Ident "CaseA"))]),DFull [IdentName (Ident "complement")] (EProd (DExp (ESort Sort_Str)) (EIdent (Ident "Complement"))) (EAbstr [BIdent (Ident "par")] (ERecord [LDDef [Ident "s2"] (EIdent (Ident "par")),LDDef [Ident "c"] (EIdent (Ident "nominative"))])),DFull [IdentName (Ident "complementDir")] (EIdent (Ident "Complement")) (EApp (EIdent (Ident "complement")) EEmpty),DFull [IdentName (Ident "complementCas")] (EProd (DExp (EIdent (Ident "CaseA"))) (EIdent (Ident "Complement"))) (EAbstr [BIdent (Ident "c")] (ERecord [LDDef [Ident "s2"] EEmpty,LDDef [Ident "c"] (EIdent (Ident "c"))])),DDef [IdentName (Ident "AdjCompl")] (EExtend (EIdent (Ident "AdjPhrase")) (EIdent (Ident "Complement"))),DFull [IdentName (Ident "mkAdjCompl")] (EProd (DExp (EIdent (Ident "Adj"))) (EProd (DExp (EIdent (Ident "Bool"))) (EProd (DExp (EIdent (Ident "Complement"))) (EIdent (Ident "AdjCompl"))))) (EAbstr [BIdent (Ident "adj"),BIdent (Ident "p"),BIdent (Ident "c")] (EExtend (EApp (EApp (EIdent (Ident "mkAdjective")) (EIdent (Ident "adj"))) (EIdent (Ident "p"))) (EIdent (Ident "c")))),DFull [IdentName (Ident "complAdj")] (EProd (DExp (EIdent (Ident "AdjCompl"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "AdjPhrase")))) (EAbstr [BIdent (Ident "relie"),BIdent (Ident "jean")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "a")] (EConcat (ESelect (EProj (EIdent (Ident "relie")) (LIdent (Ident "s"))) (EIdent (Ident "a"))) (EConcat (EProj (EIdent (Ident "relie")) (LIdent (Ident "s2"))) (ESelect (EProj (EIdent (Ident "jean")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "case2pform")) (EProj (EIdent (Ident "relie")) (LIdent (Ident "c")))))))),LDDef [Ident "p"] (EIdent (Ident "False"))])),DFull [IdentName (Ident "modCommNounPhrase")] (EProd (DExp (EIdent (Ident "AdjPhrase"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "CommNounPhrase")))) (EAbstr [BIdent (Ident "bon"),BIdent (Ident "mec")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "n")] (EApp (EApp (EApp (EApp (EIdent (Ident "if_then_else")) (ESort Sort_Str)) (EProj (EIdent (Ident "bon")) (LIdent (Ident "p")))) (EConcat (ESelect (EProj (EIdent (Ident "bon")) (LIdent (Ident "s"))) (EApp (EApp (EIdent (Ident "AF")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "n")))) (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "n"))))) (EConcat (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "n"))) (ESelect (EProj (EIdent (Ident "bon")) (LIdent (Ident "s"))) (EApp (EApp (EIdent (Ident "AF")) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "n"))))))),LDDef [Ident "g"] (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))])),DFull [IdentName (Ident "Function")] (ESort Sort_Type) (EExtend (EIdent (Ident "CommNounPhrase")) (EIdent (Ident "Complement"))),DFull [IdentName (Ident "appFunComm")] (EProd (DExp (EIdent (Ident "Function"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "CommNounPhrase")))) (EAbstr [BIdent (Ident "mere"),BIdent (Ident "jean")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "n")] (EConcat (ESelect (EProj (EIdent (Ident "mere")) (LIdent (Ident "s"))) (EIdent (Ident "n"))) (EConcat (EProj (EIdent (Ident "mere")) (LIdent (Ident "s2"))) (ESelect (EProj (EIdent (Ident "jean")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "case2pform")) (EProj (EIdent (Ident "mere")) (LIdent (Ident "c")))))))),LDDef [Ident "g"] (EProj (EIdent (Ident "mere")) (LIdent (Ident "g")))])),DDef [IdentName (Ident "Function2")] (EExtend (EIdent (Ident "Function")) (ERecord [LDDecl [Ident "s3"] (EIdent (Ident "Preposition")),LDDecl [Ident "c3"] (EIdent (Ident "CaseA"))])),DFull [IdentName (Ident "appFun2")] (EProd (DExp (EIdent (Ident "Function2"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "Function")))) (EAbstr [BIdent (Ident "vol"),BIdent (Ident "paris")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "n")] (EConcat (ESelect (EProj (EIdent (Ident "vol")) (LIdent (Ident "s"))) (EIdent (Ident "n"))) (EConcat (EProj (EIdent (Ident "vol")) (LIdent (Ident "s2"))) (ESelect (EProj (EIdent (Ident "paris")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "case2pform")) (EProj (EIdent (Ident "vol")) (LIdent (Ident "c")))))))),LDDef [Ident "g"] (EProj (EIdent (Ident "vol")) (LIdent (Ident "g"))),LDDef [Ident "s2"] (EProj (EIdent (Ident "vol")) (LIdent (Ident "s3"))),LDDef [Ident "c"] (EProj (EIdent (Ident "vol")) (LIdent (Ident "c3")))])),DFull [IdentName (Ident "funAsCommNounPhrase")] (EProd (DExp (EIdent (Ident "Function"))) (EIdent (Ident "CommNounPhrase"))) (EAbstr [BIdent (Ident "x")] (EIdent (Ident "x"))),DFull [IdentName (Ident "appFun")] (EProd (DExp (EIdent (Ident "Bool"))) (EProd (DExp (EIdent (Ident "Function"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "NounPhrase"))))) (EAbstr [BIdent (Ident "coll"),BIdent (Ident "mere"),BIdent (Ident "jean")] (ELetb [LDDef [Ident "n"] (EProj (EIdent (Ident "jean")) (LIdent (Ident "n"))),LDDef [Ident "g"] (EProj (EIdent (Ident "mere")) (LIdent (Ident "g"))),LDDef [Ident "nf"] (EApp (EApp (EApp (EApp (EIdent (Ident "if_then_else")) (EIdent (Ident "Number"))) (EIdent (Ident "coll"))) (EIdent (Ident "Sg"))) (EIdent (Ident "n")))] (EVariants [EApp (EApp (EIdent (Ident "defNounPhrase")) (EIdent (Ident "nf"))) (EApp (EApp (EIdent (Ident "appFunComm")) (EIdent (Ident "mere"))) (EIdent (Ident "jean"))),EApp (EApp (EApp (EIdent (Ident "npGenDet")) (EIdent (Ident "nf"))) (EIdent (Ident "jean"))) (EIdent (Ident "mere"))])))],DefPar [ParDefDir (Ident "VPForm") [ParConstrC (Ident "VPF") [DDExp (EIdent (Ident "Anteriority")),DDExp (EIdent (Ident "VF"))]],ParDefDir (Ident "Anteriority") [ParConstrC (Ident "Simul") [],ParConstrC (Ident "Anter") []],ParDefDir (Ident "VIForm") [ParConstrC (Ident "VIInfinit") [],ParConstrC (Ident "VIImperat") [DDExp (EIdent (Ident "Bool")),DDExp (EIdent (Ident "Number"))],ParConstrC (Ident "VIGerund") []]],DefOper [DDef [IdentName (Ident "VerbPhrase")] (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "VIForm")) (ETType (EIdent (Ident "Gender")) (ETType (EIdent (Ident "Number")) (ETType (EIdent (Ident "Person")) (ESort Sort_Str)))))]),DDef [IdentName (Ident "VerbClause")] (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "Bool")) (ETType (EIdent (Ident "Anteriority")) (ETType (EIdent (Ident "VIForm")) (ETType (EIdent (Ident "Gender")) (ETType (EIdent (Ident "Number")) (ETType (EIdent (Ident "Person")) (ESort Sort_Str)))))))]),DFull [IdentName (Ident "vpf2vf")] (EProd (DExp (EIdent (Ident "VPForm"))) (EIdent (Ident "VF"))) (EAbstr [BIdent (Ident "vpf")] (ECase (EIdent (Ident "vpf")) [CaseC [AltP (PC (Ident "VPF") [PW,PV (Ident "vf")])] (EIdent (Ident "vf"))])),DDeclC [IdentName (Ident "auxVerb")] (EProd (DExp (EIdent (Ident "Verb"))) (EIdent (Ident "Verb"))),DFull [IdentName (Ident "nombreVerbPhrase")] (EProd (DExp (EIdent (Ident "VPForm"))) (EIdent (Ident "Number"))) (EAbstr [BIdent (Ident "v")] (ECase (EIdent (Ident "v")) [CaseC [AltP (PC (Ident "VPF") [PW,PV (Ident "f")])] (EApp (EIdent (Ident "nombreVerb")) (EIdent (Ident "f")))])),DFull [IdentName (Ident "personVerbPhrase")] (EProd (DExp (EIdent (Ident "VPForm"))) (EIdent (Ident "Person"))) (EAbstr [BIdent (Ident "v")] (ECase (EIdent (Ident "v")) [CaseC [AltP (PC (Ident "VPF") [PW,PV (Ident "f")])] (EApp (EIdent (Ident "personVerb")) (EIdent (Ident "f")))])),DFull [IdentName (Ident "isNotImperative")] (EProd (DExp (EIdent (Ident "VPForm"))) (EIdent (Ident "Bool"))) (EAbstr [BIdent (Ident "v")] (ECase (EIdent (Ident "v")) [CaseC [AltP (PC (Ident "VPF") [PW,PC (Ident "VImper") [PW]])] (EIdent (Ident "False")),CaseC [AltP PW] (EIdent (Ident "True"))])),DDeclC [IdentName (Ident "negVerb")] (EProd (DExp (ESort Sort_Str)) (ESort Sort_Str)),DDeclC [IdentName (Ident "copula")] (EIdent (Ident "Verb")),DFull [IdentName (Ident "complVerbAdj")] (EProd (DExp (EIdent (Ident "AdjCompl"))) (EProd (DExp (EIdent (Ident "VerbPhrase"))) (EIdent (Ident "AdjPhrase")))) (EAbstr [BIdent (Ident "facile"),BIdent (Ident "ouvrir")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "gn")] (EConcat (ESelect (EProj (EIdent (Ident "facile")) (LIdent (Ident "s"))) (EIdent (Ident "gn"))) (EConcat (EApp (EIdent (Ident "prepCase")) (EProj (EIdent (Ident "facile")) (LIdent (Ident "c")))) (EConcat (EProj (EIdent (Ident "facile")) (LIdent (Ident "s2"))) (ESelect (ESelect (ESelect (ESelect (EProj (EIdent (Ident "ouvrir")) (LIdent (Ident "s"))) (EIdent (Ident "VIInfinit"))) (EIdent (Ident "Masc"))) (EIdent (Ident "Sg"))) (EIdent (Ident "P3"))))))),LDDef [Ident "p"] (EIdent (Ident "False"))])),DFull [IdentName (Ident "complVerbAdj2")] (EProd (DExp (EIdent (Ident "Bool"))) (EProd (DExp (EIdent (Ident "AdjCompl"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "VerbPhrase"))) (EIdent (Ident "AdjPhrase")))))) (EAbstr [BIdent (Ident "b"),BIdent (Ident "facile"),BIdent (Ident "lui"),BIdent (Ident "nager")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "gn")] (EConcat (ESelect (EProj (EIdent (Ident "facile")) (LIdent (Ident "s"))) (EIdent (Ident "gn"))) (EConcat (ESelect (EProj (EIdent (Ident "lui")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "stressed")) (EIdent (Ident "dative")))) (EConcat (EApp (EIdent (Ident "prepCase")) (EProj (EIdent (Ident "facile")) (LIdent (Ident "c")))) (EConcat (EProj (EIdent (Ident "facile")) (LIdent (Ident "s2"))) (ESelect (ESelect (ESelect (ESelect (EProj (EIdent (Ident "nager")) (LIdent (Ident "s"))) (EIdent (Ident "VIInfinit"))) (EApp (EIdent (Ident "pgen2gen")) (EProj (EIdent (Ident "lui")) (LIdent (Ident "g"))))) (EProj (EIdent (Ident "lui")) (LIdent (Ident "n")))) (EIdent (Ident "P3")))))))),LDDef [Ident "p"] (EIdent (Ident "False"))])),DFull [IdentName (Ident "TransVerb")] (ESort Sort_Type) (EExtend (EIdent (Ident "Verb")) (EIdent (Ident "Complement"))),DFull [IdentName (Ident "complementOfTransVerb")] (EProd (DExp (EIdent (Ident "TransVerb"))) (EIdent (Ident "Complement"))) (EAbstr [BIdent (Ident "v")] (ERecord [LDDef [Ident "s2"] (EProj (EIdent (Ident "v")) (LIdent (Ident "s2"))),LDDef [Ident "c"] (EProj (EIdent (Ident "v")) (LIdent (Ident "c")))])),DFull [IdentName (Ident "verbOfTransVerb")] (EProd (DExp (EIdent (Ident "TransVerb"))) (EIdent (Ident "Verb"))) (EAbstr [BIdent (Ident "v")] (ERecord [LDDef [Ident "s"] (EProj (EIdent (Ident "v")) (LIdent (Ident "s"))),LDDef [Ident "aux"] (EProj (EIdent (Ident "v")) (LIdent (Ident "aux")))])),DFull [IdentName (Ident "isNounPhraseClit")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "Bool"))) (EAbstr [BIdent (Ident "n")] (ECase (EProj (EIdent (Ident "n")) (LIdent (Ident "c"))) [CaseC [AltP (PV (Ident "Clit0"))] (EIdent (Ident "False")),CaseC [AltP PW] (EIdent (Ident "True"))])),DDeclC [IdentName (Ident "isClitCase")] (EProd (DExp (EIdent (Ident "CaseA"))) (EIdent (Ident "Bool"))),DFull [IdentName (Ident "isTransVerbClit")] (EProd (DExp (EIdent (Ident "TransVerb"))) (EIdent (Ident "Bool"))) (EAbstr [BIdent (Ident "v")] (EApp (EIdent (Ident "isClitCase")) (EProj (EIdent (Ident "v")) (LIdent (Ident "c"))))),DFull [IdentName (Ident "isDitransVerbClit")] (EProd (DExp (EIdent (Ident "DitransVerb"))) (ETupTyp (EIdent (Ident "Bool")) (EIdent (Ident "Bool")))) (EAbstr [BIdent (Ident "v")] (ETuple [TComp (EApp (EIdent (Ident "isClitCase")) (EProj (EIdent (Ident "v")) (LIdent (Ident "c")))),TComp (EApp (EIdent (Ident "isClitCase")) (EProj (EIdent (Ident "v")) (LIdent (Ident "c3"))))])),DDeclC [IdentName (Ident "reflPron")] (ETType (EIdent (Ident "Number")) (ETType (EIdent (Ident "Person")) (ETType (EIdent (Ident "NPFormA")) (ESort Sort_Str)))),DFull [IdentName (Ident "reflPronNounPhrase")] (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "Person"))) (EIdent (Ident "NounPhrase"))))) (EAbstr [BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (ERecord [LDDef [Ident "s"] (ESelect (ESelect (EIdent (Ident "reflPron")) (EIdent (Ident "n"))) (EIdent (Ident "p"))),LDDef [Ident "g"] (EApp (EIdent (Ident "PGen")) (EIdent (Ident "g"))),LDDef [Ident "n"] (EIdent (Ident "n")),LDDef [Ident "p"] (EIdent (Ident "p")),LDDef [Ident "c"] (EIdent (Ident "Clit1"))])),DFull [IdentName (Ident "adjPastPart")] (EProd (DExp (EIdent (Ident "Verb"))) (EIdent (Ident "Adjective"))) (EAbstr [BIdent (Ident "verb")] (ERecord [LDDef [Ident "s"] (ETable [CaseC [AltP (PC (Ident "AF") [PV (Ident "g"),PV (Ident "n")])] (ESelect (EProj (EIdent (Ident "verb")) (LIdent (Ident "s"))) (EApp (EApp (EIdent (Ident "VPart")) (EIdent (Ident "g"))) (EIdent (Ident "n")))),CaseC [AltP (PV (Ident "AA"))] (ESelect (EProj (EIdent (Ident "verb")) (LIdent (Ident "s"))) (EApp (EApp (EIdent (Ident "VPart")) (EIdent (Ident "Masc"))) (EIdent (Ident "Sg"))))]),LDDef [Ident "p"] (EIdent (Ident "False"))])),DFull [IdentName (Ident "mkTransVerb")] (EProd (DExp (EIdent (Ident "Verb"))) (EProd (DExp (EIdent (Ident "Preposition"))) (EProd (DExp (EIdent (Ident "CaseA"))) (EIdent (Ident "TransVerb"))))) (EAbstr [BIdent (Ident "v"),BIdent (Ident "p"),BIdent (Ident "c")] (EExtend (EIdent (Ident "v")) (ERecord [LDDef [Ident "s2"] (EIdent (Ident "p")),LDDef [Ident "c"] (EIdent (Ident "c"))]))),DFull [IdentName (Ident "mkTransVerbPrep")] (EProd (DExp (EIdent (Ident "Verb"))) (EProd (DExp (EIdent (Ident "Preposition"))) (EIdent (Ident "TransVerb")))) (EAbstr [BIdent (Ident "passer"),BIdent (Ident "par")] (EApp (EApp (EApp (EIdent (Ident "mkTransVerb")) (EIdent (Ident "passer"))) (EIdent (Ident "par"))) (EIdent (Ident "accusative")))),DFull [IdentName (Ident "mkTransVerbCas")] (EProd (DExp (EIdent (Ident "Verb"))) (EProd (DExp (EIdent (Ident "CaseA"))) (EIdent (Ident "TransVerb")))) (EAbstr [BIdent (Ident "penser"),BIdent (Ident "a")] (EApp (EApp (EApp (EIdent (Ident "mkTransVerb")) (EIdent (Ident "penser"))) EEmpty) (EIdent (Ident "a")))),DFull [IdentName (Ident "mkTransVerbDir")] (EProd (DExp (EIdent (Ident "Verb"))) (EIdent (Ident "TransVerb"))) (EAbstr [BIdent (Ident "aimer")] (EApp (EApp (EIdent (Ident "mkTransVerbCas")) (EIdent (Ident "aimer"))) (EIdent (Ident "accusative")))),DFull [IdentName (Ident "transAsVerb")] (EProd (DExp (EIdent (Ident "TransVerb"))) (EIdent (Ident "Verb"))) (EAbstr [BIdent (Ident "love")] (EIdent (Ident "love"))),DDef [IdentName (Ident "DitransVerb")] (EExtend (EIdent (Ident "TransVerb")) (ERecord [LDDecl [Ident "s3"] (EIdent (Ident "Preposition")),LDDecl [Ident "c3"] (EIdent (Ident "CaseA"))])),DFull [IdentName (Ident "mkDitransVerb")] (EProd (DExp (EIdent (Ident "Verb"))) (EProd (DExp (EIdent (Ident "Preposition"))) (EProd (DExp (EIdent (Ident "CaseA"))) (EProd (DExp (EIdent (Ident "Preposition"))) (EProd (DExp (EIdent (Ident "CaseA"))) (EIdent (Ident "DitransVerb"))))))) (EAbstr [BIdent (Ident "v"),BIdent (Ident "p1"),BIdent (Ident "c1"),BIdent (Ident "p2"),BIdent (Ident "c2")] (EExtend (EIdent (Ident "v")) (ERecord [LDDef [Ident "s2"] (EIdent (Ident "p1")),LDDef [Ident "c"] (EIdent (Ident "c1")),LDDef [Ident "s3"] (EIdent (Ident "p2")),LDDef [Ident "c3"] (EIdent (Ident "c2"))]))),DDeclC [IdentName (Ident "posNeg")] (EProd (DExp (EIdent (Ident "Bool"))) (EProd (DDec [BIdent (Ident "verb"),BIdent (Ident "compl")] (ESort Sort_Str)) (ESort Sort_Str))),DDef [IdentName (Ident "DitransVerbVerb")] (EExtend (EIdent (Ident "TransVerb")) (ERecord [LDDecl [Ident "c3"] (EIdent (Ident "CaseA"))])),DFull [IdentName (Ident "Adverb")] (ESort Sort_Type) (EIdent (Ident "SS")),DFull [IdentName (Ident "advVerbPhrase")] (EProd (DExp (EIdent (Ident "VerbPhrase"))) (EProd (DExp (EIdent (Ident "Adverb"))) (EIdent (Ident "VerbPhrase")))) (EAbstr [BIdent (Ident "chante"),BIdent (Ident "bien")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "v"),BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (EConcat (ESelect (ESelect (ESelect (ESelect (EProj (EIdent (Ident "chante")) (LIdent (Ident "s"))) (EIdent (Ident "v"))) (EIdent (Ident "g"))) (EIdent (Ident "n"))) (EIdent (Ident "p"))) (EProj (EIdent (Ident "bien")) (LIdent (Ident "s")))))])),DFull [IdentName (Ident "prepNounPhrase")] (EProd (DExp (ERecord [LDDecl [Ident "s"] (EIdent (Ident "Preposition")),LDDecl [Ident "c"] (EIdent (Ident "CaseA"))])) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "Adverb")))) (EAbstr [BIdent (Ident "dans"),BIdent (Ident "jean")] (ERecord [LDDef [Ident "s"] (EConcat (EProj (EIdent (Ident "dans")) (LIdent (Ident "s"))) (ESelect (EProj (EIdent (Ident "jean")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "Ton")) (EProj (EIdent (Ident "dans")) (LIdent (Ident "c"))))))])),DFull [IdentName (Ident "justPrep")] (EProd (DExp (EIdent (Ident "Preposition"))) (ERecord [LDDecl [Ident "s"] (EIdent (Ident "Preposition")),LDDecl [Ident "c"] (EIdent (Ident "CaseA"))])) (EAbstr [BIdent (Ident "sans")] (ERecord [LDDef [Ident "s"] (EIdent (Ident "sans")),LDDef [Ident "c"] (EIdent (Ident "prepositional"))])),DFull [IdentName (Ident "justCase")] (EProd (DExp (EIdent (Ident "CaseA"))) (ERecord [LDDecl [Ident "s"] (EIdent (Ident "Preposition")),LDDecl [Ident "c"] (EIdent (Ident "CaseA"))])) (EAbstr [BIdent (Ident "nom")] (ERecord [LDDef [Ident "s"] EEmpty,LDDef [Ident "c"] (EIdent (Ident "nom"))])),DFull [IdentName (Ident "advCommNounPhrase")] (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EProd (DExp (EIdent (Ident "Adverb"))) (EIdent (Ident "CommNounPhrase")))) (EAbstr [BIdent (Ident "mec"),BIdent (Ident "aparis")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "n")] (EConcat (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "n"))) (EProj (EIdent (Ident "aparis")) (LIdent (Ident "s"))))),LDDef [Ident "g"] (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))])),DFull [IdentName (Ident "advAdjPhrase")] (EProd (DExp (EIdent (Ident "Adverb"))) (EProd (DExp (EIdent (Ident "AdjPhrase"))) (EIdent (Ident "AdjPhrase")))) (EAbstr [BIdent (Ident "trop"),BIdent (Ident "lent")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "a")] (EConcat (EProj (EIdent (Ident "trop")) (LIdent (Ident "s"))) (ESelect (EProj (EIdent (Ident "lent")) (LIdent (Ident "s"))) (EIdent (Ident "a"))))),LDDef [Ident "p"] (EProj (EIdent (Ident "lent")) (LIdent (Ident "p")))])),DFull [IdentName (Ident "Sentence")] (ESort Sort_Type) (EApp (EIdent (Ident "SS1")) (EIdent (Ident "Mode")))],DefPar [ParDefDir (Ident "Tense") [ParConstrC (Ident "Present") [],ParConstrC (Ident "Past") [],ParConstrC (Ident "Future") [],ParConstrC (Ident "Condit") []],ParDefDir (Ident "ClForm") [ParConstrC (Ident "ClPres") [DDExp (EIdent (Ident "Anteriority")),DDExp (EIdent (Ident "Mode"))],ParConstrC (Ident "ClImperf") [DDExp (EIdent (Ident "Anteriority")),DDExp (EIdent (Ident "Mode"))],ParConstrC (Ident "ClPasse") [DDExp (EIdent (Ident "Anteriority"))],ParConstrC (Ident "ClFut") [DDExp (EIdent (Ident "Anteriority"))],ParConstrC (Ident "ClCondit") [DDExp (EIdent (Ident "Anteriority"))],ParConstrC (Ident "ClInfinit") [DDExp (EIdent (Ident "Anteriority"))]]],DefOper [DFull [IdentName (Ident "useClForm")] (EProd (DExp (EIdent (Ident "Tense"))) (EProd (DExp (EIdent (Ident "Anteriority"))) (EProd (DExp (EIdent (Ident "Mode"))) (EIdent (Ident "ClForm"))))) (EAbstr [BIdent (Ident "t"),BIdent (Ident "a"),BIdent (Ident "m")] (ECase (EIdent (Ident "t")) [CaseC [AltP (PV (Ident "Present"))] (EApp (EApp (EIdent (Ident "ClPres")) (EIdent (Ident "a"))) (EIdent (Ident "m"))),CaseC [AltP (PV (Ident "Past"))] (EApp (EApp (EIdent (Ident "ClImperf")) (EIdent (Ident "a"))) (EIdent (Ident "m"))),CaseC [AltP (PV (Ident "Future"))] (EApp (EIdent (Ident "ClFut")) (EIdent (Ident "a"))),CaseC [AltP (PV (Ident "Condit"))] (EApp (EIdent (Ident "ClCondit")) (EIdent (Ident "a")))])),DDef [IdentName (Ident "Clause")] (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "Bool")) (ETType (EIdent (Ident "ClForm")) (ESort Sort_Str)))]),DFull [IdentName (Ident "SentenceVerb")] (ESort Sort_Type) (EExtend (EIdent (Ident "Verb")) (ERecord [LDDecl [Ident "mp",Ident "mn"] (EIdent (Ident "Mode"))])),DFull [IdentName (Ident "subordMode")] (EProd (DExp (EIdent (Ident "SentenceVerb"))) (EProd (DExp (EIdent (Ident "Bool"))) (EIdent (Ident "Mode")))) (EAbstr [BIdent (Ident "verb"),BIdent (Ident "b")] (EApp (EApp (EApp (EApp (EIdent (Ident "if_then_else")) (EIdent (Ident "Mode"))) (EIdent (Ident "b"))) (EProj (EIdent (Ident "verb")) (LIdent (Ident "mp")))) (EProj (EIdent (Ident "verb")) (LIdent (Ident "mn"))))),DFull [IdentName (Ident "verbSent")] (EProd (DExp (EIdent (Ident "Verb"))) (EProd (DExp (EIdent (Ident "Mode"))) (EProd (DExp (EIdent (Ident "Mode"))) (EIdent (Ident "SentenceVerb"))))) (EAbstr [BIdent (Ident "v"),BIdent (Ident "mp"),BIdent (Ident "mn")] (EExtend (EIdent (Ident "v")) (ERecord [LDDef [Ident "mp"] (EIdent (Ident "mp")),LDDef [Ident "mn"] (EIdent (Ident "mn"))]))),DDeclC [IdentName (Ident "embedConj")] (ESort Sort_Str),DFull [IdentName (Ident "VerbVerb")] (ESort Sort_Type) (EExtend (EIdent (Ident "Verb")) (ERecord [LDDecl [Ident "c"] (EIdent (Ident "CaseA"))])),DFull [IdentName (Ident "mkVerbVerbDir")] (EProd (DExp (EIdent (Ident "Verb"))) (EIdent (Ident "VerbVerb"))) (EAbstr [BIdent (Ident "v")] (EExtend (EIdent (Ident "v")) (ERecord [LDDef [Ident "c"] (EIdent (Ident "accusative"))]))),DDef [IdentName (Ident "ClauseSlashNounPhrase")] (EExtend (EIdent (Ident "Clause")) (EIdent (Ident "Complement"))),DFull [IdentName (Ident "dummyNounPhrase")] (EIdent (Ident "NounPhrase")) (EApp (EApp (EIdent (Ident "mkNameNounPhrase")) EEmpty) (EIdent (Ident "Masc"))),DFull [IdentName (Ident "slashTransVerb")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "TransVerb"))) (EIdent (Ident "ClauseSlashNounPhrase")))) (EAbstr [BIdent (Ident "np"),BIdent (Ident "v")] (EExtend (EApp (EIdent (Ident "sats2clause")) (EApp (EApp (EApp (EIdent (Ident "mkSatsObject")) (EIdent (Ident "np"))) (EIdent (Ident "v"))) (EIdent (Ident "dummyNounPhrase")))) (EApp (EIdent (Ident "complementOfTransVerb")) (EIdent (Ident "v"))))),DFull [IdentName (Ident "slashVerbVerb")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "VerbVerb"))) (EProd (DExp (EIdent (Ident "TransVerb"))) (EIdent (Ident "ClauseSlashNounPhrase"))))) (EAbstr [BIdent (Ident "subj"),BIdent (Ident "verb"),BIdent (Ident "tv")] (EExtend (EApp (EIdent (Ident "sats2clause")) (EApp (EApp (EIdent (Ident "insertExtrapos")) (EApp (EApp (EIdent (Ident "mkSats")) (EIdent (Ident "subj"))) (EIdent (Ident "verb")))) (ECTable [BWild] (EConcat (EApp (EIdent (Ident "prepCase")) (EProj (EIdent (Ident "verb")) (LIdent (Ident "c")))) (ESelect (EProj (EIdent (Ident "tv")) (LIdent (Ident "s"))) (EIdent (Ident "VInfin"))))))) (EApp (EIdent (Ident "complementOfTransVerb")) (EIdent (Ident "tv"))))),DFull [IdentName (Ident "slashAdverb")] (EProd (DExp (EIdent (Ident "Clause"))) (EProd (DExp (ERecord [LDDecl [Ident "s"] (ESort Sort_Str),LDDecl [Ident "c"] (EIdent (Ident "CaseA"))])) (EIdent (Ident "ClauseSlashNounPhrase")))) (EAbstr [BIdent (Ident "ilhabite"),BIdent (Ident "dans")] (EExtend (EIdent (Ident "ilhabite")) (ERecord [LDDef [Ident "s2"] (EProj (EIdent (Ident "dans")) (LIdent (Ident "s"))),LDDef [Ident "c"] (EProj (EIdent (Ident "dans")) (LIdent (Ident "c")))])))],DefOper [DFull [IdentName (Ident "RelPron")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "RelFormA")) (ESort Sort_Str)),LDDecl [Ident "g"] (EIdent (Ident "RelGen"))]),DFull [IdentName (Ident "RelClause")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s1"] (ETType (EIdent (Ident "Gender")) (ETType (EIdent (Ident "Number")) (ETType (EIdent (Ident "Person")) (ESort Sort_Str)))),LDDecl [Ident "s2"] (ETType (EIdent (Ident "Bool")) (ETType (EIdent (Ident "ClForm")) (ETType (EIdent (Ident "Gender")) (ETType (EIdent (Ident "Number")) (ETType (EIdent (Ident "Person")) (ESort Sort_Str)))))),LDDecl [Ident "s3"] (ETType (EIdent (Ident "Bool")) (ESort Sort_Str))]),DFull [IdentName (Ident "RelSentence")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "Mode")) (ETType (EIdent (Ident "Gender")) (ETType (EIdent (Ident "Number")) (ETType (EIdent (Ident "Person")) (ESort Sort_Str)))))]),DFull [IdentName (Ident "mkGenRel")] (EProd (DExp (EIdent (Ident "RelGen"))) (EProd (DExp (EIdent (Ident "Gender"))) (EIdent (Ident "Gender")))) (EAbstr [BIdent (Ident "rg"),BIdent (Ident "g")] (ECase (EIdent (Ident "rg")) [CaseC [AltP (PC (Ident "PGen") [PV (Ident "gen")])] (EIdent (Ident "gen")),CaseC [AltP PW] (EIdent (Ident "g"))])),DDeclC [IdentName (Ident "identRelPron")] (EIdent (Ident "RelPron")),DDeclC [IdentName (Ident "composRelPron")] (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CaseA"))) (ESort Sort_Str)))),DDeclC [IdentName (Ident "funRelPron")] (EProd (DExp (EIdent (Ident "Function"))) (EProd (DExp (EIdent (Ident "RelPron"))) (EIdent (Ident "RelPron")))),DDeclC [IdentName (Ident "allRelForms")] (EProd (DExp (EIdent (Ident "RelPron"))) (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CaseA"))) (ESort Sort_Str))))),DFull [IdentName (Ident "relSlash")] (EProd (DExp (EIdent (Ident "RelPron"))) (EProd (DExp (EIdent (Ident "ClauseSlashNounPhrase"))) (EIdent (Ident "RelClause")))) (EAbstr [BIdent (Ident "dont"),BIdent (Ident "jeparle")] (ERecord [LDDef [Ident "s1"] (ECTable [BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (EConcat (EProj (EIdent (Ident "jeparle")) (LIdent (Ident "s2"))) (EApp (EApp (EApp (EApp (EIdent (Ident "allRelForms")) (EIdent (Ident "dont"))) (EIdent (Ident "g"))) (EIdent (Ident "n"))) (EProj (EIdent (Ident "jeparle")) (LIdent (Ident "c")))))),LDDef [Ident "s2"] (ECTable [BIdent (Ident "b"),BIdent (Ident "cl"),BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (ESelect (ESelect (EProj (EIdent (Ident "jeparle")) (LIdent (Ident "s"))) (EIdent (Ident "b"))) (EIdent (Ident "cl")))),LDDef [Ident "s3"] (ECTable [BWild] EEmpty)])),DFull [IdentName (Ident "relSuch")] (EProd (DExp (EIdent (Ident "Clause"))) (EIdent (Ident "RelClause"))) (EAbstr [BIdent (Ident "A")] (ERecord [LDDef [Ident "s1"] (ECTable [BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (EApp (EApp (EIdent (Ident "suchPron")) (EIdent (Ident "g"))) (EIdent (Ident "n")))),LDDef [Ident "s2"] (ECTable [BIdent (Ident "b"),BIdent (Ident "cl"),BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (EConcat (EIdent (Ident "embedConj")) (ESelect (ESelect (EProj (EIdent (Ident "A")) (LIdent (Ident "s"))) (EIdent (Ident "b"))) (EIdent (Ident "cl"))))),LDDef [Ident "s3"] (ECTable [BWild] EEmpty)])),DDeclC [IdentName (Ident "suchPron")] (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (ESort Sort_Str))),DFull [IdentName (Ident "modRelClause")] (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EProd (DExp (EIdent (Ident "RelSentence"))) (EIdent (Ident "CommNounPhrase")))) (EAbstr [BIdent (Ident "mec"),BIdent (Ident "quidort")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "n")] (EConcat (ESelect (EProj (EIdent (Ident "mec")) (LIdent (Ident "s"))) (EIdent (Ident "n"))) (ESelect (ESelect (ESelect (ESelect (EProj (EIdent (Ident "quidort")) (LIdent (Ident "s"))) (EIdent (Ident "Ind"))) (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))) (EIdent (Ident "n"))) (EIdent (Ident "P3"))))),LDDef [Ident "g"] (EProj (EIdent (Ident "mec")) (LIdent (Ident "g")))])),DFull [IdentName (Ident "IntPron")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "CaseA")) (ESort Sort_Str)),LDDecl [Ident "g"] (EIdent (Ident "Gender")),LDDecl [Ident "n"] (EIdent (Ident "Number"))]),DFull [IdentName (Ident "funIntPron")] (EProd (DExp (EIdent (Ident "Function"))) (EProd (DExp (EIdent (Ident "IntPron"))) (EIdent (Ident "IntPron")))) (EAbstr [BIdent (Ident "mere"),BIdent (Ident "qui")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "c")] (EConcat (EApp (EApp (EApp (EIdent (Ident "artDef")) (EProj (EIdent (Ident "mere")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "qui")) (LIdent (Ident "n")))) (EIdent (Ident "c"))) (EConcat (ESelect (EProj (EIdent (Ident "mere")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "qui")) (LIdent (Ident "n")))) (EConcat (EProj (EIdent (Ident "mere")) (LIdent (Ident "s2"))) (ESelect (EProj (EIdent (Ident "qui")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "mere")) (LIdent (Ident "c")))))))),LDDef [Ident "g"] (EProj (EIdent (Ident "mere")) (LIdent (Ident "g"))),LDDef [Ident "n"] (EProj (EIdent (Ident "qui")) (LIdent (Ident "n")))])),DDeclC [IdentName (Ident "nounIntPron")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "IntPron")))),DDeclC [IdentName (Ident "intPronWho")] (EProd (DExp (EIdent (Ident "Number"))) (EIdent (Ident "IntPron"))),DDeclC [IdentName (Ident "intPronWhat")] (EProd (DExp (EIdent (Ident "Number"))) (EIdent (Ident "IntPron"))),DDef [IdentName (Ident "Utterance")] (EIdent (Ident "SS")),DFull [IdentName (Ident "indicUtt")] (EProd (DExp (EIdent (Ident "Sentence"))) (EIdent (Ident "Utterance"))) (EAbstr [BIdent (Ident "x")] (EApp (EIdent (Ident "ss")) (EConcat (ESelect (EProj (EIdent (Ident "x")) (LIdent (Ident "s"))) (EIdent (Ident "Ind"))) (EString ".")))),DFull [IdentName (Ident "interrogUtt")] (EProd (DExp (EIdent (Ident "QuestionSent"))) (EIdent (Ident "Utterance"))) (EAbstr [BIdent (Ident "x")] (EApp (EIdent (Ident "ss")) (EConcat (ESelect (EProj (EIdent (Ident "x")) (LIdent (Ident "s"))) (EIdent (Ident "DirQ"))) (EString "?"))))],DefPar [ParDefDir (Ident "QuestForm") [ParConstrC (Ident "DirQ") [],ParConstrC (Ident "IndirQ") []]],DefOper [DDef [IdentName (Ident "Question")] (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "Bool")) (ETType (EIdent (Ident "ClForm")) (ETType (EIdent (Ident "QuestForm")) (ESort Sort_Str))))]),DDef [IdentName (Ident "QuestionSent")] (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "QuestForm")) (ESort Sort_Str))]),DFull [IdentName (Ident "questClause")] (EProd (DExp (EIdent (Ident "Clause"))) (EIdent (Ident "Question"))) (EAbstr [BIdent (Ident "cl")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "b"),BIdent (Ident "c")] (ETable [CaseC [AltP (PV (Ident "DirQ"))] (ESelect (ESelect (EProj (EIdent (Ident "cl")) (LIdent (Ident "s"))) (EIdent (Ident "b"))) (EIdent (Ident "c"))),CaseC [AltP (PV (Ident "IndirQ"))] (ESelect (ESelect (EProj (EIdent (Ident "cl")) (LIdent (Ident "s"))) (EIdent (Ident "b"))) (EIdent (Ident "c")))]))])),DDeclC [IdentName (Ident "intSlash")] (EProd (DExp (EIdent (Ident "IntPron"))) (EProd (DExp (EIdent (Ident "ClauseSlashNounPhrase"))) (EIdent (Ident "Question")))),DFull [IdentName (Ident "intNounPhrase")] (EProd (DExp (EIdent (Ident "IntPron"))) (EIdent (Ident "NounPhrase"))) (EAbstr [BIdent (Ident "ip")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "nf")] (ESelect (EProj (EIdent (Ident "ip")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "pform2case")) (EIdent (Ident "nf"))))),LDDef [Ident "g"] (EApp (EIdent (Ident "PGen")) (EProj (EIdent (Ident "ip")) (LIdent (Ident "g")))),LDDef [Ident "n"] (EProj (EIdent (Ident "ip")) (LIdent (Ident "n"))),LDDef [Ident "p"] (EIdent (Ident "P3")),LDDef [Ident "c"] (EIdent (Ident "Clit0"))])),DDef [IdentName (Ident "IntAdverb")] (EIdent (Ident "SS")),DFull [IdentName (Ident "questAdverbial")] (EProd (DExp (EIdent (Ident "IntAdverb"))) (EProd (DExp (EIdent (Ident "Clause"))) (EIdent (Ident "Question")))) (EAbstr [BIdent (Ident "quand"),BIdent (Ident "jeanDort")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "b"),BIdent (Ident "cl")] (ELetb [LDDef [Ident "jeandort"] (ESelect (ESelect (EProj (EIdent (Ident "jeanDort")) (LIdent (Ident "s"))) (EIdent (Ident "b"))) (EIdent (Ident "cl")))] (ETable [CaseC [AltP (PV (Ident "DirQ"))] (EConcat (EProj (EIdent (Ident "quand")) (LIdent (Ident "s"))) (EIdent (Ident "jeandort"))),CaseC [AltP (PV (Ident "IndirQ"))] (EConcat (EProj (EIdent (Ident "quand")) (LIdent (Ident "s"))) (EIdent (Ident "jeandort")))])))])),DDef [IdentName (Ident "Imperative")] (ERecord [LDDecl [Ident "s"] (ETType (EIdent (Ident "Gender")) (ETType (EIdent (Ident "Number")) (ESort Sort_Str)))]),DFull [IdentName (Ident "imperVerbPhrase")] (EProd (DExp (EIdent (Ident "Bool"))) (EProd (DExp (EIdent (Ident "VerbClause"))) (EIdent (Ident "Imperative")))) (EAbstr [BIdent (Ident "b"),BIdent (Ident "dormir")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "g"),BIdent (Ident "n")] (ESelect (ESelect (ESelect (ESelect (ESelect (ESelect (EProj (EIdent (Ident "dormir")) (LIdent (Ident "s"))) (EIdent (Ident "b"))) (EIdent (Ident "Simul"))) (EApp (EApp (EIdent (Ident "VIImperat")) (EIdent (Ident "b"))) (EIdent (Ident "n")))) (EIdent (Ident "g"))) (EIdent (Ident "n"))) (EIdent (Ident "P2"))))])),DFull [IdentName (Ident "imperUtterance")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "Imperative"))) (EIdent (Ident "Utterance")))) (EAbstr [BIdent (Ident "n"),BIdent (Ident "I")] (EApp (EIdent (Ident "ss")) (EConcat (ESelect (ESelect (EProj (EIdent (Ident "I")) (LIdent (Ident "s"))) (EIdent (Ident "Masc"))) (EIdent (Ident "n"))) (EString "!")))),DFull [IdentName (Ident "advClause")] (EProd (DExp (EIdent (Ident "Clause"))) (EProd (DExp (EIdent (Ident "Adverb"))) (EIdent (Ident "Clause")))) (EAbstr [BIdent (Ident "yousing"),BIdent (Ident "well")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "b"),BIdent (Ident "c")] (EConcat (ESelect (ESelect (EProj (EIdent (Ident "yousing")) (LIdent (Ident "s"))) (EIdent (Ident "b"))) (EIdent (Ident "c"))) (EProj (EIdent (Ident "well")) (LIdent (Ident "s")))))])),DFull [IdentName (Ident "advSentence")] (EProd (DExp (EIdent (Ident "SS"))) (EProd (DExp (EIdent (Ident "Sentence"))) (EIdent (Ident "Utterance")))) (EAbstr [BIdent (Ident "donc"),BIdent (Ident "ildort")] (EApp (EIdent (Ident "ss")) (EConcat (EProj (EIdent (Ident "donc")) (LIdent (Ident "s"))) (EConcat (ESelect (EProj (EIdent (Ident "ildort")) (LIdent (Ident "s"))) (EIdent (Ident "Ind"))) (EString "."))))),DDef [IdentName (Ident "Conjunction")] (EExtend (EProj (EIdent (Ident "CO")) (LIdent (Ident "Conjunction"))) (ERecord [LDDecl [Ident "n"] (EIdent (Ident "Number"))])),DDef [IdentName (Ident "ConjunctionDistr")] (EExtend (EProj (EIdent (Ident "CO")) (LIdent (Ident "ConjunctionDistr"))) (ERecord [LDDecl [Ident "n"] (EIdent (Ident "Number"))])),DFull [IdentName (Ident "ListSentence")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s1",Ident "s2"] (ETType (EIdent (Ident "Mode")) (ESort Sort_Str))]),DFull [IdentName (Ident "twoSentence")] (EProd (DDec [BWild,BWild] (EIdent (Ident "Sentence"))) (EIdent (Ident "ListSentence"))) (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "twoTable"))) (EIdent (Ident "Mode"))),DFull [IdentName (Ident "consSentence")] (EProd (DExp (EIdent (Ident "ListSentence"))) (EProd (DExp (EIdent (Ident "Sentence"))) (EIdent (Ident "ListSentence")))) (EApp (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "consTable"))) (EIdent (Ident "Mode"))) (EProj (EIdent (Ident "CO")) (LIdent (Ident "comma")))),DFull [IdentName (Ident "conjunctSentence")] (EProd (DExp (EIdent (Ident "Conjunction"))) (EProd (DExp (EIdent (Ident "ListSentence"))) (EIdent (Ident "Sentence")))) (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "conjunctTable"))) (EIdent (Ident "Mode"))),DFull [IdentName (Ident "conjunctDistrSentence")] (EProd (DExp (EIdent (Ident "ConjunctionDistr"))) (EProd (DExp (EIdent (Ident "ListSentence"))) (EIdent (Ident "Sentence")))) (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "conjunctDistrTable"))) (EIdent (Ident "Mode"))),DFull [IdentName (Ident "ListAdjPhrase")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s1",Ident "s2"] (ETType (EIdent (Ident "AForm")) (ESort Sort_Str)),LDDecl [Ident "p"] (EIdent (Ident "Bool"))]),DFull [IdentName (Ident "twoAdjPhrase")] (EProd (DDec [BWild,BWild] (EIdent (Ident "AdjPhrase"))) (EIdent (Ident "ListAdjPhrase"))) (EAbstr [BIdent (Ident "x"),BIdent (Ident "y")] (EExtend (EApp (EApp (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "twoTable"))) (EIdent (Ident "AForm"))) (EIdent (Ident "x"))) (EIdent (Ident "y"))) (ERecord [LDDef [Ident "p"] (EApp (EApp (EIdent (Ident "andB")) (EProj (EIdent (Ident "x")) (LIdent (Ident "p")))) (EProj (EIdent (Ident "y")) (LIdent (Ident "p"))))]))),DFull [IdentName (Ident "consAdjPhrase")] (EProd (DExp (EIdent (Ident "ListAdjPhrase"))) (EProd (DExp (EIdent (Ident "AdjPhrase"))) (EIdent (Ident "ListAdjPhrase")))) (EAbstr [BIdent (Ident "xs"),BIdent (Ident "x")] (EExtend (EApp (EApp (EApp (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "consTable"))) (EIdent (Ident "AForm"))) (EProj (EIdent (Ident "CO")) (LIdent (Ident "comma")))) (EIdent (Ident "xs"))) (EIdent (Ident "x"))) (ERecord [LDDef [Ident "p"] (EApp (EApp (EIdent (Ident "andB")) (EProj (EIdent (Ident "xs")) (LIdent (Ident "p")))) (EProj (EIdent (Ident "x")) (LIdent (Ident "p"))))]))),DFull [IdentName (Ident "conjunctAdjPhrase")] (EProd (DExp (EIdent (Ident "Conjunction"))) (EProd (DExp (EIdent (Ident "ListAdjPhrase"))) (EIdent (Ident "AdjPhrase")))) (EAbstr [BIdent (Ident "c"),BIdent (Ident "xs")] (EExtend (EApp (EApp (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "conjunctTable"))) (EIdent (Ident "AForm"))) (EIdent (Ident "c"))) (EIdent (Ident "xs"))) (ERecord [LDDef [Ident "p"] (EProj (EIdent (Ident "xs")) (LIdent (Ident "p")))]))),DFull [IdentName (Ident "conjunctDistrAdjPhrase")] (EProd (DExp (EIdent (Ident "ConjunctionDistr"))) (EProd (DExp (EIdent (Ident "ListAdjPhrase"))) (EIdent (Ident "AdjPhrase")))) (EAbstr [BIdent (Ident "c"),BIdent (Ident "xs")] (EExtend (EApp (EApp (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "conjunctDistrTable"))) (EIdent (Ident "AForm"))) (EIdent (Ident "c"))) (EIdent (Ident "xs"))) (ERecord [LDDef [Ident "p"] (EProj (EIdent (Ident "xs")) (LIdent (Ident "p")))]))),DFull [IdentName (Ident "ListNounPhrase")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s1",Ident "s2"] (ETType (EIdent (Ident "CaseA")) (ESort Sort_Str)),LDDecl [Ident "g"] (EIdent (Ident "PronGen")),LDDecl [Ident "n"] (EIdent (Ident "Number")),LDDecl [Ident "p"] (EIdent (Ident "Person"))]),DFull [IdentName (Ident "twoNounPhrase")] (EProd (DDec [BWild,BWild] (EIdent (Ident "NounPhrase"))) (EIdent (Ident "ListNounPhrase"))) (EAbstr [BIdent (Ident "x"),BIdent (Ident "y")] (EExtend (ERecord [LDDef [Ident "s1"] (ECTable [BIdent (Ident "c")] (ESelect (EProj (EIdent (Ident "x")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "stressed")) (EIdent (Ident "c"))))),LDDef [Ident "s2"] (ECTable [BIdent (Ident "c")] (ESelect (EProj (EIdent (Ident "y")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "stressed")) (EApp (EIdent (Ident "conjunctCase")) (EIdent (Ident "c"))))))]) (ERecord [LDDef [Ident "n"] (EApp (EApp (EIdent (Ident "conjNumber")) (EProj (EIdent (Ident "x")) (LIdent (Ident "n")))) (EProj (EIdent (Ident "y")) (LIdent (Ident "n")))),LDDef [Ident "g"] (EApp (EApp (EIdent (Ident "conjGender")) (EProj (EIdent (Ident "x")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "y")) (LIdent (Ident "g")))),LDDef [Ident "p"] (EApp (EApp (EIdent (Ident "conjPers")) (EProj (EIdent (Ident "x")) (LIdent (Ident "p")))) (EProj (EIdent (Ident "y")) (LIdent (Ident "p"))))]))),DFull [IdentName (Ident "consNounPhrase")] (EProd (DExp (EIdent (Ident "ListNounPhrase"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "ListNounPhrase")))) (EAbstr [BIdent (Ident "xs"),BIdent (Ident "x")] (EExtend (ERecord [LDDef [Ident "s1"] (ECTable [BIdent (Ident "c")] (EConcat (ESelect (EProj (EIdent (Ident "xs")) (LIdent (Ident "s1"))) (EIdent (Ident "c"))) (EConcat (EProj (EIdent (Ident "CO")) (LIdent (Ident "comma"))) (ESelect (EProj (EIdent (Ident "xs")) (LIdent (Ident "s2"))) (EApp (EIdent (Ident "conjunctCase")) (EIdent (Ident "c"))))))),LDDef [Ident "s2"] (ECTable [BIdent (Ident "c")] (ESelect (EProj (EIdent (Ident "x")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "stressed")) (EApp (EIdent (Ident "conjunctCase")) (EIdent (Ident "c"))))))]) (ERecord [LDDef [Ident "n"] (EApp (EApp (EIdent (Ident "conjNumber")) (EProj (EIdent (Ident "xs")) (LIdent (Ident "n")))) (EProj (EIdent (Ident "x")) (LIdent (Ident "n")))),LDDef [Ident "g"] (EApp (EApp (EIdent (Ident "conjGender")) (EProj (EIdent (Ident "xs")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "x")) (LIdent (Ident "g")))),LDDef [Ident "p"] (EApp (EApp (EIdent (Ident "conjPers")) (EProj (EIdent (Ident "xs")) (LIdent (Ident "p")))) (EProj (EIdent (Ident "x")) (LIdent (Ident "p"))))]))),DDeclC [IdentName (Ident "conjunctCase")] (EProd (DExp (EIdent (Ident "CaseA"))) (EIdent (Ident "CaseA"))),DFull [IdentName (Ident "conjunctNounPhrase")] (EProd (DExp (EIdent (Ident "Conjunction"))) (EProd (DExp (EIdent (Ident "ListNounPhrase"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "co"),BIdent (Ident "xs")] (EExtend (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "c")] (EConcat (ESelect (EProj (EIdent (Ident "xs")) (LIdent (Ident "s1"))) (EApp (EIdent (Ident "pform2case")) (EIdent (Ident "c")))) (EConcat (EProj (EIdent (Ident "co")) (LIdent (Ident "s"))) (ESelect (EProj (EIdent (Ident "xs")) (LIdent (Ident "s2"))) (EApp (EIdent (Ident "pform2case")) (EIdent (Ident "c")))))))]) (ERecord [LDDef [Ident "n"] (EApp (EApp (EIdent (Ident "conjNumber")) (EProj (EIdent (Ident "co")) (LIdent (Ident "n")))) (EProj (EIdent (Ident "xs")) (LIdent (Ident "n")))),LDDef [Ident "g"] (EProj (EIdent (Ident "xs")) (LIdent (Ident "g"))),LDDef [Ident "p"] (EProj (EIdent (Ident "xs")) (LIdent (Ident "p"))),LDDef [Ident "c"] (EIdent (Ident "Clit0"))]))),DFull [IdentName (Ident "conjunctDistrNounPhrase")] (EProd (DExp (EIdent (Ident "ConjunctionDistr"))) (EProd (DExp (EIdent (Ident "ListNounPhrase"))) (EIdent (Ident "NounPhrase")))) (EAbstr [BIdent (Ident "co"),BIdent (Ident "xs")] (EExtend (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "c")] (EConcat (EProj (EIdent (Ident "co")) (LIdent (Ident "s1"))) (EConcat (ESelect (EProj (EIdent (Ident "xs")) (LIdent (Ident "s1"))) (EApp (EIdent (Ident "pform2case")) (EIdent (Ident "c")))) (EConcat (EProj (EIdent (Ident "co")) (LIdent (Ident "s2"))) (ESelect (EProj (EIdent (Ident "xs")) (LIdent (Ident "s2"))) (EApp (EIdent (Ident "pform2case")) (EIdent (Ident "c"))))))))]) (ERecord [LDDef [Ident "n"] (EApp (EApp (EIdent (Ident "conjNumber")) (EProj (EIdent (Ident "co")) (LIdent (Ident "n")))) (EProj (EIdent (Ident "xs")) (LIdent (Ident "n")))),LDDef [Ident "g"] (EProj (EIdent (Ident "xs")) (LIdent (Ident "g"))),LDDef [Ident "p"] (EProj (EIdent (Ident "xs")) (LIdent (Ident "p"))),LDDef [Ident "c"] (EIdent (Ident "Clit0"))]))),DFull [IdentName (Ident "conjNumber")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "Number"))) (EIdent (Ident "Number")))) (EAbstr [BIdent (Ident "m"),BIdent (Ident "n")] (ECase (ETuple [TComp (EIdent (Ident "m")),TComp (EIdent (Ident "n"))]) [CaseC [AltP (PTup [PTComp (PV (Ident "Sg")),PTComp (PV (Ident "Sg"))])] (EIdent (Ident "Sg")),CaseC [AltP PW] (EIdent (Ident "Pl"))])),DFull [IdentName (Ident "conjGen")] (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Gender"))) (EIdent (Ident "Gender")))) (EAbstr [BIdent (Ident "m"),BIdent (Ident "n")] (ECase (ETuple [TComp (EIdent (Ident "m")),TComp (EIdent (Ident "n"))]) [CaseC [AltP (PTup [PTComp (PV (Ident "Fem")),PTComp (PV (Ident "Fem"))])] (EIdent (Ident "Fem")),CaseC [AltP PW] (EIdent (Ident "Masc"))])),DFull [IdentName (Ident "conjGender")] (EProd (DExp (EIdent (Ident "PronGen"))) (EProd (DExp (EIdent (Ident "PronGen"))) (EIdent (Ident "PronGen")))) (EAbstr [BIdent (Ident "m"),BIdent (Ident "n")] (ECase (ETuple [TComp (EIdent (Ident "m")),TComp (EIdent (Ident "n"))]) [CaseC [AltP (PTup [PTComp (PC (Ident "PGen") [PV (Ident "Fem")]),PTComp (PC (Ident "PGen") [PV (Ident "Fem")])])] (EApp (EIdent (Ident "PGen")) (EIdent (Ident "Fem"))),CaseC [AltP PW] (EIdent (Ident "PNoGen"))])),DFull [IdentName (Ident "conjPers")] (EProd (DExp (EIdent (Ident "Person"))) (EProd (DExp (EIdent (Ident "Person"))) (EIdent (Ident "Person")))) (EAbstr [BIdent (Ident "p"),BIdent (Ident "q")] (ECase (ETuple [TComp (EIdent (Ident "p")),TComp (EIdent (Ident "q"))]) [CaseC [AltP (PTup [PTComp (PV (Ident "P3")),PTComp (PV (Ident "P3"))])] (EIdent (Ident "P3")),CaseC [AltP (PTup [PTComp (PV (Ident "P1")),PTComp PW])] (EIdent (Ident "P1")),CaseC [AltP (PTup [PTComp PW,PTComp (PV (Ident "P1"))])] (EIdent (Ident "P1")),CaseC [AltP PW] (EIdent (Ident "P2"))])),DFull [IdentName (Ident "ListAdverb")] (ESort Sort_Type) (EIdent (Ident "SD2")),DFull [IdentName (Ident "twoAdverb")] (EProd (DDec [BWild,BWild] (EIdent (Ident "Adverb"))) (EIdent (Ident "ListAdverb"))) (EProj (EIdent (Ident "CO")) (LIdent (Ident "twoSS"))),DFull [IdentName (Ident "consAdverb")] (EProd (DExp (EIdent (Ident "ListAdverb"))) (EProd (DExp (EIdent (Ident "Adverb"))) (EIdent (Ident "ListAdverb")))) (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "consSS"))) (EProj (EIdent (Ident "CO")) (LIdent (Ident "comma")))),DFull [IdentName (Ident "conjunctAdverb")] (EProd (DExp (EIdent (Ident "Conjunction"))) (EProd (DExp (EIdent (Ident "ListAdverb"))) (EIdent (Ident "Adverb")))) (EAbstr [BIdent (Ident "c"),BIdent (Ident "xs")] (EApp (EIdent (Ident "ss")) (EApp (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "conjunctX"))) (EIdent (Ident "c"))) (EIdent (Ident "xs"))))),DFull [IdentName (Ident "conjunctDistrAdverb")] (EProd (DExp (EIdent (Ident "ConjunctionDistr"))) (EProd (DExp (EIdent (Ident "ListAdverb"))) (EIdent (Ident "Adverb")))) (EAbstr [BIdent (Ident "c"),BIdent (Ident "xs")] (EApp (EIdent (Ident "ss")) (EApp (EApp (EProj (EIdent (Ident "CO")) (LIdent (Ident "conjunctDistrX"))) (EIdent (Ident "c"))) (EIdent (Ident "xs"))))),DDef [IdentName (Ident "Subjunction")] (ERecord [LDDecl [Ident "s"] (ESort Sort_Str),LDDecl [Ident "m"] (EIdent (Ident "Mode"))]),DFull [IdentName (Ident "subjunctSentence")] (EProd (DExp (EIdent (Ident "Subjunction"))) (EProd (DExp (EIdent (Ident "Sentence"))) (EProd (DExp (EIdent (Ident "Sentence"))) (EIdent (Ident "Sentence"))))) (EAbstr [BIdent (Ident "si"),BIdent (Ident "A"),BIdent (Ident "B")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "m")] (EApp (EApp (EApp (EIdent (Ident "subjunctVariants")) (EIdent (Ident "si"))) (EIdent (Ident "A"))) (ESelect (EProj (EIdent (Ident "B")) (LIdent (Ident "s"))) (EIdent (Ident "m")))))])),DFull [IdentName (Ident "subjunctImperative")] (EProd (DExp (EIdent (Ident "Subjunction"))) (EProd (DExp (EIdent (Ident "Sentence"))) (EProd (DExp (EIdent (Ident "Imperative"))) (EIdent (Ident "Imperative"))))) (EAbstr [BIdent (Ident "si"),BIdent (Ident "A"),BIdent (Ident "B")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "g"),BIdent (Ident "n")] (EApp (EApp (EApp (EIdent (Ident "subjunctVariants")) (EIdent (Ident "si"))) (EIdent (Ident "A"))) (ESelect (ESelect (EProj (EIdent (Ident "B")) (LIdent (Ident "s"))) (EIdent (Ident "g"))) (EIdent (Ident "n")))))])),DFull [IdentName (Ident "subjunctQuestion")] (EProd (DExp (EIdent (Ident "Subjunction"))) (EProd (DExp (EIdent (Ident "Sentence"))) (EProd (DExp (EIdent (Ident "QuestionSent"))) (EIdent (Ident "QuestionSent"))))) (EAbstr [BIdent (Ident "si"),BIdent (Ident "A"),BIdent (Ident "B")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "q")] (EApp (EApp (EApp (EIdent (Ident "subjunctVariants")) (EIdent (Ident "si"))) (EIdent (Ident "A"))) (ESelect (EProj (EIdent (Ident "B")) (LIdent (Ident "s"))) (EIdent (Ident "q")))))])),DFull [IdentName (Ident "subjunctVariants")] (EProd (DExp (EIdent (Ident "Subjunction"))) (EProd (DExp (EIdent (Ident "Sentence"))) (EProd (DExp (ESort Sort_Str)) (ESort Sort_Str)))) (EAbstr [BIdent (Ident "si"),BIdent (Ident "A"),BIdent (Ident "B")] (ELet [LDDef [Ident "As"] (ESelect (EProj (EIdent (Ident "A")) (LIdent (Ident "s"))) (EProj (EIdent (Ident "si")) (LIdent (Ident "m"))))] (EVariants [EConcat (EProj (EIdent (Ident "si")) (LIdent (Ident "s"))) (EConcat (EIdent (Ident "As")) (EIdent (Ident "B"))),EConcat (EIdent (Ident "B")) (EConcat (EProj (EIdent (Ident "si")) (LIdent (Ident "s"))) (EIdent (Ident "As")))]))),DFull [IdentName (Ident "useNounPhrase")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "Utterance"))) (EAbstr [BIdent (Ident "jean")] (EApp (EApp (EIdent (Ident "postfixSS")) (EString ".")) (EApp (EIdent (Ident "defaultNounPhrase")) (EIdent (Ident "jean"))))),DFull [IdentName (Ident "useCommonNounPhrase")] (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CommNounPhrase"))) (EIdent (Ident "Utterance")))) (EAbstr [BIdent (Ident "n"),BIdent (Ident "mec")] (EApp (EIdent (Ident "useNounPhrase")) (EApp (EApp (EIdent (Ident "indefNounPhrase")) (EIdent (Ident "n"))) (EIdent (Ident "mec"))))),DFull [IdentName (Ident "verbUtterance")] (EProd (DExp (EIdent (Ident "VerbPhrase"))) (EIdent (Ident "Utterance"))) (EAbstr [BIdent (Ident "vp")] (EApp (EIdent (Ident "ss")) (ESelect (ESelect (ESelect (ESelect (EProj (EIdent (Ident "vp")) (LIdent (Ident "s"))) (EIdent (Ident "VIInfinit"))) (EIdent (Ident "Masc"))) (EIdent (Ident "Sg"))) (EIdent (Ident "P3"))))),DFull [IdentName (Ident "defaultNounPhrase")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "SS"))) (EAbstr [BIdent (Ident "jean")] (EApp (EIdent (Ident "ss")) (ESelect (EProj (EIdent (Ident "jean")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "stressed")) (EIdent (Ident "nominative")))))),DFull [IdentName (Ident "defaultQuestion")] (EProd (DExp (EIdent (Ident "QuestionSent"))) (EIdent (Ident "SS"))) (EAbstr [BIdent (Ident "quiesttu")] (EApp (EIdent (Ident "ss")) (ESelect (EProj (EIdent (Ident "quiesttu")) (LIdent (Ident "s"))) (EIdent (Ident "DirQ"))))),DFull [IdentName (Ident "defaultSentence")] (EProd (DExp (EIdent (Ident "Sentence"))) (EIdent (Ident "SS"))) (EAbstr [BIdent (Ident "x")] (EApp (EIdent (Ident "ss")) (ESelect (EProj (EIdent (Ident "x")) (LIdent (Ident "s"))) (EIdent (Ident "Ind"))))),DDeclC [IdentName (Ident "artDef")] (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CaseA"))) (ESort Sort_Str)))),DDeclC [IdentName (Ident "artIndef")] (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "CaseA"))) (ESort Sort_Str)))),DDeclC [IdentName (Ident "genForms")] (EProd (DExp (ESort Sort_Str)) (EProd (DExp (ESort Sort_Str)) (ETType (EIdent (Ident "Gender")) (ESort Sort_Str)))),DDeclC [IdentName (Ident "pronJe"),IdentName (Ident "pronTu"),IdentName (Ident "pronIl"),IdentName (Ident "pronElle"),IdentName (Ident "pronNous"),IdentName (Ident "pronVous"),IdentName (Ident "pronIls"),IdentName (Ident "pronElles")] (EIdent (Ident "Pronoun")),DDeclC [IdentName (Ident "chaqueDet"),IdentName (Ident "quelDet"),IdentName (Ident "plupartDet")] (EIdent (Ident "Determiner")),DDeclC [IdentName (Ident "commentAdv"),IdentName (Ident "quandAdv"),IdentName (Ident "ouAdv"),IdentName (Ident "pourquoiAdv")] (EIdent (Ident "Adverb")),DDeclC [IdentName (Ident "etConj"),IdentName (Ident "ouConj")] (EIdent (Ident "Conjunction")),DDeclC [IdentName (Ident "etetConj"),IdentName (Ident "ououConj")] (EIdent (Ident "ConjunctionDistr")),DDeclC [IdentName (Ident "siSubj"),IdentName (Ident "quandSubj")] (EIdent (Ident "Subjunction")),DDeclC [IdentName (Ident "ouiPhr"),IdentName (Ident "noPhr")] (EIdent (Ident "Utterance")),DFull [IdentName (Ident "Sats")] (ESort Sort_Type) (ERecord [LDDecl [Ident "s1"] (ESort Sort_Str),LDDecl [Ident "s3"] (ESort Sort_Str),LDDecl [Ident "s4"] (ETType (EIdent (Ident "VF")) (ESort Sort_Str)),LDDecl [Ident "s5"] (ESort Sort_Str),LDDecl [Ident "s6"] (ESort Sort_Str),LDDecl [Ident "s7"] (ETType (EIdent (Ident "Bool")) (ESort Sort_Str)),LDDecl [Ident "aux"] (EIdent (Ident "VAux")),LDDecl [Ident "g",Ident "g2"] (EIdent (Ident "Gender")),LDDecl [Ident "n",Ident "n2"] (EIdent (Ident "Number")),LDDecl [Ident "p"] (EIdent (Ident "Person"))]),DFull [IdentName (Ident "verbClForm")] (EProd (DExp (EIdent (Ident "Verb"))) (EProd (DExp (EIdent (Ident "ClForm"))) (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "Person"))) (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (ETupTyp (ESort Sort_Str) (ESort Sort_Str))))))))) (EAbstr [BIdent (Ident "verb"),BIdent (Ident "cl"),BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p"),BIdent (Ident "g2"),BIdent (Ident "n2")] (ELetb [LDDef [Ident "aimee"] (ESelect (EProj (EIdent (Ident "verb")) (LIdent (Ident "s"))) (EApp (EApp (EIdent (Ident "VPart")) (EIdent (Ident "g2"))) (EIdent (Ident "n2")))),LDDef [Ident "auxv"] (EProj (EApp (EIdent (Ident "auxVerb")) (EIdent (Ident "verb"))) (LIdent (Ident "s"))),LDFull [Ident "aime"] (EProd (DExp (EIdent (Ident "TMode"))) (ESort Sort_Str)) (EAbstr [BIdent (Ident "t")] (ESelect (EProj (EIdent (Ident "verb")) (LIdent (Ident "s"))) (EApp (EApp (EApp (EIdent (Ident "VFin")) (EIdent (Ident "t"))) (EIdent (Ident "n"))) (EIdent (Ident "p"))))),LDFull [Ident "avoir"] (EProd (DExp (EIdent (Ident "TMode"))) (ESort Sort_Str)) (EAbstr [BIdent (Ident "t")] (ESelect (EIdent (Ident "auxv")) (EApp (EApp (EApp (EIdent (Ident "VFin")) (EIdent (Ident "t"))) (EIdent (Ident "n"))) (EIdent (Ident "p"))))),LDDef [Ident "aimer"] (ESelect (EProj (EIdent (Ident "verb")) (LIdent (Ident "s"))) (EIdent (Ident "VInfin"))),LDDef [Ident "avoirr"] (ESelect (EIdent (Ident "auxv")) (EIdent (Ident "VInfin")))] (ECase (EIdent (Ident "cl")) [CaseC [AltP (PC (Ident "ClPres") [PV (Ident "Simul"),PV (Ident "m")])] (ETuple [TComp (EApp (EIdent (Ident "aime")) (EApp (EIdent (Ident "VPres")) (EIdent (Ident "m")))),TComp EEmpty]),CaseC [AltP (PC (Ident "ClPres") [PV (Ident "a"),PV (Ident "m")])] (ETuple [TComp (EApp (EIdent (Ident "avoir")) (EApp (EIdent (Ident "VPres")) (EIdent (Ident "m")))),TComp (EIdent (Ident "aimee"))]),CaseC [AltP (PC (Ident "ClImperf") [PV (Ident "Simul"),PV (Ident "m")])] (ETuple [TComp (EApp (EIdent (Ident "aime")) (EApp (EIdent (Ident "VImperf")) (EIdent (Ident "m")))),TComp EEmpty]),CaseC [AltP (PC (Ident "ClImperf") [PV (Ident "a"),PV (Ident "m")])] (ETuple [TComp (EApp (EIdent (Ident "avoir")) (EApp (EIdent (Ident "VImperf")) (EIdent (Ident "m")))),TComp (EIdent (Ident "aimee"))]),CaseC [AltP (PC (Ident "ClPasse") [PV (Ident "Simul")])] (ETuple [TComp (EApp (EIdent (Ident "aime")) (EIdent (Ident "VPasse"))),TComp EEmpty]),CaseC [AltP (PC (Ident "ClPasse") [PV (Ident "a")])] (ETuple [TComp (EApp (EIdent (Ident "avoir")) (EIdent (Ident "VPasse"))),TComp (EIdent (Ident "aimee"))]),CaseC [AltP (PC (Ident "ClFut") [PV (Ident "Simul")])] (ETuple [TComp (EApp (EIdent (Ident "aime")) (EIdent (Ident "VFut"))),TComp EEmpty]),CaseC [AltP (PC (Ident "ClFut") [PV (Ident "a")])] (ETuple [TComp (EApp (EIdent (Ident "avoir")) (EIdent (Ident "VFut"))),TComp (EIdent (Ident "aimee"))]),CaseC [AltP (PC (Ident "ClCondit") [PV (Ident "Simul")])] (ETuple [TComp (EApp (EIdent (Ident "aime")) (EIdent (Ident "VCondit"))),TComp EEmpty]),CaseC [AltP (PC (Ident "ClCondit") [PV (Ident "a")])] (ETuple [TComp (EApp (EIdent (Ident "avoir")) (EIdent (Ident "VCondit"))),TComp (EIdent (Ident "aimee"))]),CaseC [AltP (PC (Ident "ClInfinit") [PV (Ident "Simul")])] (ETuple [TComp (EIdent (Ident "aimer")),TComp EEmpty]),CaseC [AltP (PC (Ident "ClInfinit") [PV (Ident "a")])] (ETuple [TComp (EIdent (Ident "avoirr")),TComp (EIdent (Ident "aimee"))])]))),DFull [IdentName (Ident "mkSats")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "Verb"))) (EIdent (Ident "Sats")))) (EAbstr [BIdent (Ident "subj"),BIdent (Ident "verb")] (ELetb [LDFull [Ident "ifEsse"] (EProd (DDec [BIdent (Ident "T")] (ESort Sort_Type)) (EProd (DExp (EIdent (Ident "T"))) (EProd (DExp (EIdent (Ident "T"))) (EIdent (Ident "T"))))) (EAbstr [BIdent (Ident "T"),BIdent (Ident "e"),BIdent (Ident "h")] (ECase (EProj (EIdent (Ident "verb")) (LIdent (Ident "aux"))) [CaseC [AltP (PV (Ident "AEsse"))] (EIdent (Ident "e")),CaseC [AltP (PV (Ident "AHabere"))] (EIdent (Ident "h"))]))] (ERecord [LDDef [Ident "s1"] (ESelect (EProj (EIdent (Ident "subj")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "unstressed")) (EIdent (Ident "nominative")))),LDDef [Ident "s3"] EEmpty,LDDef [Ident "s4"] (EProj (EIdent (Ident "verb")) (LIdent (Ident "s"))),LDDef [Ident "s5",Ident "s6"] EEmpty,LDDef [Ident "s7"] (ECTable [BWild] EEmpty),LDDef [Ident "aux"] (EProj (EIdent (Ident "verb")) (LIdent (Ident "aux"))),LDDef [Ident "g"] (EApp (EIdent (Ident "pgen2gen")) (EProj (EIdent (Ident "subj")) (LIdent (Ident "g")))),LDDef [Ident "n"] (EProj (EIdent (Ident "subj")) (LIdent (Ident "n"))),LDDef [Ident "p"] (EProj (EIdent (Ident "subj")) (LIdent (Ident "p"))),LDDef [Ident "g2"] (EApp (EApp (EApp (EIdent (Ident "ifEsse")) (EIdent (Ident "Gender"))) (EApp (EIdent (Ident "pgen2gen")) (EProj (EIdent (Ident "subj")) (LIdent (Ident "g"))))) (EIdent (Ident "Masc"))),LDDef [Ident "n2"] (EApp (EApp (EApp (EIdent (Ident "ifEsse")) (EIdent (Ident "Number"))) (EProj (EIdent (Ident "subj")) (LIdent (Ident "n")))) (EIdent (Ident "Sg")))]))),DFull [IdentName (Ident "insertObject")] (EProd (DExp (EIdent (Ident "Sats"))) (EProd (DExp (EIdent (Ident "CaseA"))) (EProd (DExp (ESort Sort_Str)) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "Sats")))))) (EAbstr [BIdent (Ident "sats"),BIdent (Ident "c"),BIdent (Ident "prep"),BIdent (Ident "obj")] (ELetb [LDFull [Ident "ifClit"] (EProd (DDec [BIdent (Ident "T")] (ESort Sort_Type)) (EProd (DExp (EIdent (Ident "T"))) (EProd (DExp (EIdent (Ident "T"))) (EIdent (Ident "T"))))) (EAbstr [BIdent (Ident "T")] (EApp (EApp (EIdent (Ident "if_then_else")) (EIdent (Ident "T"))) (EApp (EApp (EIdent (Ident "andB")) (EApp (EIdent (Ident "isNounPhraseClit")) (EIdent (Ident "obj")))) (EApp (EIdent (Ident "isClitCase")) (EIdent (Ident "c")))))),LDDef [Ident "object"] (ESelect (EProj (EIdent (Ident "obj")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "case2pformClit")) (EIdent (Ident "c")))),LDDef [Ident "clit"] (EApp (EApp (EApp (EIdent (Ident "ifClit")) (ESort Sort_Str)) (EIdent (Ident "object"))) EEmpty),LDDef [Ident "np"] (EApp (EApp (EApp (EIdent (Ident "ifClit")) (ESort Sort_Str)) EEmpty) (EIdent (Ident "object")))] (ERecord [LDDef [Ident "s1"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s1"))),LDDef [Ident "s3"] (EConcat (EProj (EIdent (Ident "sats")) (LIdent (Ident "s3"))) (EIdent (Ident "clit"))),LDDef [Ident "s4"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s4"))),LDDef [Ident "s5"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s5"))),LDDef [Ident "s6"] (EConcat (EProj (EIdent (Ident "sats")) (LIdent (Ident "s6"))) (EConcat (EIdent (Ident "prep")) (EIdent (Ident "np")))),LDDef [Ident "s7"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s7"))),LDDef [Ident "aux"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "aux"))),LDDef [Ident "g"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "g"))),LDDef [Ident "n"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "n"))),LDDef [Ident "g2"] (EApp (EApp (EApp (EIdent (Ident "ifClit")) (EIdent (Ident "Gender"))) (EApp (EIdent (Ident "pgen2gen")) (EProj (EIdent (Ident "obj")) (LIdent (Ident "g"))))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "g2")))),LDDef [Ident "n2"] (EApp (EApp (EApp (EIdent (Ident "ifClit")) (EIdent (Ident "Number"))) (EProj (EIdent (Ident "obj")) (LIdent (Ident "n")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "n2")))),LDDef [Ident "p"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "p")))]))),DFull [IdentName (Ident "insertExtrapos")] (EProd (DExp (EIdent (Ident "Sats"))) (EProd (DExp (ETType (EIdent (Ident "Bool")) (ESort Sort_Str))) (EIdent (Ident "Sats")))) (EAbstr [BIdent (Ident "sats"),BIdent (Ident "obj")] (ERecord [LDDef [Ident "s1"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s1"))),LDDef [Ident "s3"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s3"))),LDDef [Ident "s4"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s4"))),LDDef [Ident "s5"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s5"))),LDDef [Ident "s6"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s6"))),LDDef [Ident "s7"] (EIdent (Ident "obj")),LDDef [Ident "aux"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "aux"))),LDDef [Ident "g"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "g"))),LDDef [Ident "n"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "n"))),LDDef [Ident "g2"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "g2"))),LDDef [Ident "n2"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "n2"))),LDDef [Ident "p"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "p")))])),DFull [IdentName (Ident "mkSatsObject")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "TransVerb"))) (EProd (DExp (EIdent (Ident "NounPhrase"))) (EIdent (Ident "Sats"))))) (EAbstr [BIdent (Ident "subj"),BIdent (Ident "verb"),BIdent (Ident "obj")] (EApp (EApp (EApp (EApp (EIdent (Ident "insertObject")) (EApp (EApp (EIdent (Ident "mkSats")) (EIdent (Ident "subj"))) (EIdent (Ident "verb")))) (EProj (EIdent (Ident "verb")) (LIdent (Ident "c")))) (EProj (EIdent (Ident "verb")) (LIdent (Ident "s2")))) (EIdent (Ident "obj")))),DFull [IdentName (Ident "mkSatsCopula")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (ESort Sort_Str)) (EIdent (Ident "Sats")))) (EAbstr [BIdent (Ident "subj"),BIdent (Ident "obj")] (EApp (EApp (EApp (EIdent (Ident "mkSatsObject")) (EIdent (Ident "subj"))) (EApp (EIdent (Ident "mkTransVerbDir")) (EIdent (Ident "copula")))) (EApp (EIdent (Ident "nameNounPhrase")) (EApp (EApp (EIdent (Ident "mkProperName")) (EIdent (Ident "obj"))) (EIdent (Ident "Masc")))))),DFull [IdentName (Ident "sats2clause")] (EProd (DExp (EIdent (Ident "Sats"))) (EIdent (Ident "Clause"))) (EAbstr [BIdent (Ident "sats")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "b"),BIdent (Ident "cf")] (ELetb [LDDef [Ident "je"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s1"))),LDDef [Ident "lui"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s3"))),LDDef [Ident "dire"] (EApp (EApp (EApp (EApp (EApp (EApp (EApp (EIdent (Ident "verbClForm")) (ERecord [LDDef [Ident "s"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s4"))),LDDef [Ident "aux"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "aux")))])) (EIdent (Ident "cf"))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "n")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "p")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "g2")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "n2")))),LDDef [Ident "ai"] (EProj (EIdent (Ident "dire")) (LIdent (Ident "p1"))),LDDef [Ident "dit"] (EProj (EIdent (Ident "dire")) (LIdent (Ident "p2"))),LDDef [Ident "toujours"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s5"))),LDDef [Ident "directement"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s6"))),LDDef [Ident "ne"] (EApp (EApp (EApp (EIdent (Ident "if_then_Str")) (EIdent (Ident "b"))) EEmpty) (EIdent (Ident "negNe"))),LDDef [Ident "pas"] (EApp (EApp (EApp (EIdent (Ident "if_then_Str")) (EIdent (Ident "b"))) EEmpty) (EIdent (Ident "negPas"))),LDDef [Ident "oui"] (ESelect (EProj (EIdent (Ident "sats")) (LIdent (Ident "s7"))) (EIdent (Ident "b")))] (EConcat (EIdent (Ident "je")) (EConcat (EIdent (Ident "ne")) (EConcat (EIdent (Ident "lui")) (EConcat (EIdent (Ident "ai")) (EConcat (EIdent (Ident "toujours")) (EConcat (EIdent (Ident "pas")) (EConcat (EIdent (Ident "dit")) (EConcat (EIdent (Ident "directement")) (EIdent (Ident "oui"))))))))))))])),DDeclC [IdentName (Ident "negNe"),IdentName (Ident "negPas")] (ESort Sort_Str),DFull [IdentName (Ident "sats2quest")] (EProd (DExp (EIdent (Ident "Sats"))) (EIdent (Ident "Question"))) (EAbstr [BIdent (Ident "x")] (ELetb [LDDef [Ident "cl"] (EApp (EIdent (Ident "sats2clause")) (EIdent (Ident "x")))] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "b"),BIdent (Ident "f"),BWild] (ESelect (ESelect (EProj (EIdent (Ident "cl")) (LIdent (Ident "s"))) (EIdent (Ident "b"))) (EIdent (Ident "f"))))]))),DFull [IdentName (Ident "sats2rel")] (EProd (DExp (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "Person"))) (EIdent (Ident "Sats")))))) (EIdent (Ident "RelClause"))) (EAbstr [BIdent (Ident "s")] (ERecord [LDDef [Ident "s1"] (ECTable [BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (ELetb [LDDef [Ident "sats"] (EApp (EApp (EApp (EIdent (Ident "s")) (EIdent (Ident "g"))) (EIdent (Ident "n"))) (EIdent (Ident "p")))] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s1"))))),LDDef [Ident "s2"] (ECTable [BIdent (Ident "b"),BIdent (Ident "cf"),BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (ELetb [LDDef [Ident "sats"] (EApp (EApp (EApp (EIdent (Ident "s")) (EIdent (Ident "g"))) (EIdent (Ident "n"))) (EIdent (Ident "p"))),LDDef [Ident "lui"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s3"))),LDDef [Ident "dire"] (EApp (EApp (EApp (EApp (EApp (EApp (EApp (EIdent (Ident "verbClForm")) (ERecord [LDDef [Ident "s"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s4"))),LDDef [Ident "aux"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "aux")))])) (EIdent (Ident "cf"))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "g")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "n")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "p")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "g2")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "n2")))),LDDef [Ident "ai"] (EProj (EIdent (Ident "dire")) (LIdent (Ident "p1"))),LDDef [Ident "toujours"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s5"))),LDDef [Ident "dit"] (EProj (EIdent (Ident "dire")) (LIdent (Ident "p2"))),LDDef [Ident "ne"] (EApp (EApp (EApp (EIdent (Ident "if_then_Str")) (EIdent (Ident "b"))) EEmpty) (EIdent (Ident "negNe"))),LDDef [Ident "pas"] (EApp (EApp (EApp (EIdent (Ident "if_then_Str")) (EIdent (Ident "b"))) EEmpty) (EIdent (Ident "negPas")))] (EConcat (EIdent (Ident "ne")) (EConcat (EIdent (Ident "lui")) (EConcat (EIdent (Ident "ai")) (EConcat (EIdent (Ident "toujours")) (EConcat (EIdent (Ident "pas")) (EIdent (Ident "dit"))))))))),LDDef [Ident "s3"] (ECTable [BIdent (Ident "b")] (ELetb [LDDef [Ident "sats"] (EApp (EApp (EApp (EIdent (Ident "s")) (EIdent (Ident "Masc"))) (EIdent (Ident "Sg"))) (EIdent (Ident "P3"))),LDDef [Ident "directement"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s6"))),LDDef [Ident "oui"] (ESelect (EProj (EIdent (Ident "sats")) (LIdent (Ident "s7"))) (EIdent (Ident "b")))] (EConcat (EIdent (Ident "directement")) (EIdent (Ident "oui")))))])),DFull [IdentName (Ident "relNounPhrase")] (EProd (DExp (EIdent (Ident "RelPron"))) (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "Person"))) (EIdent (Ident "NounPhrase")))))) (EAbstr [BIdent (Ident "r"),BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "np")] (ESelect (EProj (EIdent (Ident "r")) (LIdent (Ident "s"))) (EApp (EIdent (Ident "npRelForm")) (EIdent (Ident "np"))))),LDDef [Ident "g"] (EApp (EIdent (Ident "PGen")) (EIdent (Ident "g"))),LDDef [Ident "n"] (EIdent (Ident "n")),LDDef [Ident "p"] (EIdent (Ident "p")),LDDef [Ident "c"] (EIdent (Ident "Clit0"))])),DFull [IdentName (Ident "sats2verbPhrase")] (EProd (DExp (EIdent (Ident "Sats"))) (EIdent (Ident "VerbClause"))) (EAbstr [BIdent (Ident "sats")] (ERecord [LDDef [Ident "s"] (ECTable [BIdent (Ident "b"),BIdent (Ident "ant"),BIdent (Ident "vi"),BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p")] (ELetb [LDDef [Ident "lui"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s3"))),LDDef [Ident "dire"] (EApp (EApp (EApp (EApp (EApp (EApp (EApp (EApp (EIdent (Ident "verbVIForm")) (ERecord [LDDef [Ident "s"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s4"))),LDDef [Ident "aux"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "aux")))])) (EIdent (Ident "ant"))) (EIdent (Ident "vi"))) (EIdent (Ident "g"))) (EIdent (Ident "n"))) (EIdent (Ident "p"))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "g2")))) (EProj (EIdent (Ident "sats")) (LIdent (Ident "n2")))),LDDef [Ident "ai"] (EProj (EIdent (Ident "dire")) (LIdent (Ident "p1"))),LDDef [Ident "dit"] (EProj (EIdent (Ident "dire")) (LIdent (Ident "p2"))),LDDef [Ident "toujours"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s5"))),LDDef [Ident "directement"] (EProj (EIdent (Ident "sats")) (LIdent (Ident "s6"))),LDDef [Ident "ne"] (EApp (EApp (EApp (EIdent (Ident "if_then_Str")) (EIdent (Ident "b"))) EEmpty) (EIdent (Ident "negNe"))),LDDef [Ident "pas"] (EApp (EApp (EApp (EIdent (Ident "if_then_Str")) (EIdent (Ident "b"))) EEmpty) (EIdent (Ident "negPas"))),LDDef [Ident "oui"] (ESelect (EProj (EIdent (Ident "sats")) (LIdent (Ident "s7"))) (EIdent (Ident "b")))] (EConcat (EIdent (Ident "ne")) (EConcat (EIdent (Ident "lui")) (EConcat (EIdent (Ident "ai")) (EConcat (EIdent (Ident "toujours")) (EConcat (EIdent (Ident "pas")) (EConcat (EIdent (Ident "dit")) (EConcat (EIdent (Ident "directement")) (EIdent (Ident "oui")))))))))))])),DFull [IdentName (Ident "verbVIForm")] (EProd (DExp (EIdent (Ident "Verb"))) (EProd (DExp (EIdent (Ident "Anteriority"))) (EProd (DExp (EIdent (Ident "VIForm"))) (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (EProd (DExp (EIdent (Ident "Person"))) (EProd (DExp (EIdent (Ident "Gender"))) (EProd (DExp (EIdent (Ident "Number"))) (ETupTyp (ESort Sort_Str) (ESort Sort_Str)))))))))) (EAbstr [BIdent (Ident "verb"),BIdent (Ident "ant"),BIdent (Ident "cl"),BIdent (Ident "g"),BIdent (Ident "n"),BIdent (Ident "p"),BIdent (Ident "g2"),BIdent (Ident "n2")] (ELetb [LDFull [Ident "aime"] (EProd (DExp (EIdent (Ident "Number"))) (ESort Sort_Str)) (EAbstr [BIdent (Ident "t")] (ESelect (EProj (EIdent (Ident "verb")) (LIdent (Ident "s"))) (EApp (EApp (EIdent (Ident "vImper")) (EIdent (Ident "t"))) (EIdent (Ident "P2"))))),LDDef [Ident "aimee"] (ECase (EIdent (Ident "ant")) [CaseC [AltP (PV (Ident "Simul"))] EEmpty,CaseC [AltP PW] (ESelect (EProj (EIdent (Ident "verb")) (LIdent (Ident "s"))) (EApp (EApp (EIdent (Ident "VPart")) (EIdent (Ident "Masc"))) (EIdent (Ident "Sg"))))]),LDDef [Ident "finverb"] (ECase (EIdent (Ident "ant")) [CaseC [AltP (PV (Ident "Simul"))] (EProj (EIdent (Ident "verb")) (LIdent (Ident "s"))),CaseC [AltP PW] (EProj (EApp (EIdent (Ident "auxVerb")) (EIdent (Ident "verb"))) (LIdent (Ident "s")))]),LDDef [Ident "aimer"] (ESelect (EIdent (Ident "finverb")) (EIdent (Ident "VInfin"))),LDDef [Ident "aimant"] (ESelect (EIdent (Ident "finverb")) (EIdent (Ident "VGer")))] (ECase (EIdent (Ident "cl")) [CaseC [AltP (PC (Ident "VIImperat") [PW,PV (Ident "n")])] (ETuple [TComp (EApp (EIdent (Ident "aime")) (EIdent (Ident "n"))),TComp EEmpty]),CaseC [AltP (PV (Ident "VIGerund"))] (ETuple [TComp (EIdent (Ident "aimant")),TComp (EIdent (Ident "aimee"))]),CaseC [AltP (PV (Ident "VIInfinit"))] (ETuple [TComp (EIdent (Ident "aimer")),TComp (EIdent (Ident "aimee"))])]))),DFull [IdentName (Ident "predVerb0")] (EProd (DExp (EIdent (Ident "Verb"))) (EIdent (Ident "Clause"))) (EAbstr [BIdent (Ident "rain")] (EApp (EIdent (Ident "sats2clause")) (EApp (EApp (EIdent (Ident "mkSats")) (EApp (EIdent (Ident "pronNounPhrase")) (EIdent (Ident "pronImpers")))) (EIdent (Ident "rain"))))),DDeclC [IdentName (Ident "progressiveSats")] (EProd (DExp (EIdent (Ident "NounPhrase"))) (EProd (DExp (EIdent (Ident "VerbPhrase"))) (EIdent (Ident "Sats"))))]])] [Linearized tree] interface SyntaxRomance = TypesRomance ** open Prelude, (CO = Coordination)in { flags coding = utf8 ; oper CommNoun : Type = { s : Number => Str ; g : Gender } ; CommNounPhrase = CommNoun ; noun2CommNounPhrase : CommNounPhrase -> CommNoun = \ x -> x ; commonNounComp : CommNoun -> Str -> CommNoun = \ numero, detelephone -> { s = \ \ n => numero . s ! n ++ detelephone ; g = numero . g } ; ProperName : Type = { s : Str ; g : Gender } ; NounPhrase : Type = Pronoun ; nameNounPhrase : ProperName -> NounPhrase ; mkProperName : Str -> Gender -> ProperName = \ jean, m -> { s = jean ; g = m } ; mkNameNounPhrase : Str -> Gender -> NounPhrase = \ jean, m -> nameNounPhrase (mkProperName jean m); nounPhraseOn : NounPhrase ; normalNounPhrase : (CaseA => Str)-> Gender -> Number -> NounPhrase = \ cs, g, n -> { s = \ \ p => cs ! pform2case p ; g = PGen g ; n = n ; p = P3 ; c = Clit0 } ; pronNounPhrase : Pronoun -> NounPhrase = \ pro -> pro ; Numeral : Type = { s : Gender => Str ; n : Number ; isNo : Bool } ; pronWithNum : Pronoun -> Numeral -> Pronoun = \ nous, deux -> { s = \ \ c => nous . s ! c ++ deux . s ! pgen2gen nous . g ; g = nous . g ; n = nous . n ; p = nous . p ; c = nous . c } ; noNum : Numeral = { s = \ \ _ => [] ; n = Pl ; isNo = True } ; existNounPhrase : NounPhrase -> Clause ; addSymbNounPhrase : NounPhrase -> Str -> NounPhrase = \ np, x -> { s = \ \ c => np . s ! c ++ x ; g = np . g ; n = np . n ; p = np . p ; c = np . c } ; Determiner : Type = { s : Gender => Str ; n : Number } ; DeterminerNum : Type = { s : Gender => Str } ; detNounPhrase : Determiner -> CommNoun -> NounPhrase = \ tout, homme -> normalNounPhrase (\ \ c => prepCase c ++ tout . s ! homme . g ++ homme . s ! tout . n)homme . g tout . n ; numDetNounPhrase : DeterminerNum -> Numeral -> CommNounPhrase -> NounPhrase = \ tous, six, homme -> normalNounPhrase (\ \ c => prepCase c ++ tous . s ! homme . g ++ six . s ! homme . g ++ homme . s ! six . n)homme . g six . n ; justNumDetNounPhrase : DeterminerNum -> Numeral -> NounPhrase = \ tous, six -> normalNounPhrase (\ \ c => prepCase c ++ tous . s ! Masc ++ six . s ! Masc)Masc six . n ; mkDeterminer : Number -> Str -> Str -> Determiner = \ n, tous, toutes -> { s = genForms tous toutes ; n = n } ; mkDeterminer1 : Number -> Str -> Determiner = \ n, chaque -> mkDeterminer n chaque chaque ; mkDeterminerNum : Str -> Str -> DeterminerNum = \ tous, toutes -> { s = \ \ g => genForms tous toutes ! g } ; indefNounPhrase : Number -> CommNounPhrase -> NounPhrase = \ n, mec -> normalNounPhrase (\ \ c => artIndef mec . g n c ++ mec . s ! n)mec . g n ; indefNounPhraseNum : Numeral -> CommNounPhrase -> NounPhrase = \ nu, mec -> normalNounPhrase (\ \ c => case nu . isNo of { True => artIndef mec . g Pl c ++ mec . s ! Pl ; _ => prepCase c ++ nu . s ! mec . g ++ mec . s ! nu . n } ) mec . g nu . n ; defNounPhrase : Number -> CommNounPhrase -> NounPhrase = \ n, mec -> normalNounPhrase (\ \ c => artDef mec . g n c ++ mec . s ! n)mec . g n ; defNounPhraseNum : Numeral -> CommNounPhrase -> NounPhrase = \ nu, mec -> normalNounPhrase (\ \ c => artDef mec . g nu . n c ++ nu . s ! mec . g ++ mec . s ! nu . n)mec . g nu . n ; indefNoun : Number -> CommNounPhrase -> Str = \ n, mec -> (indefNounPhrase n mec). s ! case2pform nominative ; npGenDet : Number -> NounPhrase -> CommNounPhrase -> NounPhrase = \ n, jeanne, mec -> let { str : CaseA => Str = case jeanne . c of { Clit0 => npGenDe n jeanne mec ; _ => npGenPoss n jeanne mec } } in normalNounPhrase str mec . g n ; npGenDetNum : Numeral -> NounPhrase -> CommNounPhrase -> NounPhrase = \ nu, jeanne, mec -> let { str : CaseA => Str = case jeanne . c of { Clit0 => npGenDeNum nu jeanne mec ; _ => npGenPossNum nu jeanne mec } } in normalNounPhrase str mec . g nu . n ; npGenDe : Number -> NounPhrase -> CommNounPhrase -> CaseA => Str = \ n, jeanne, mec -> \ \ c => artDef mec . g n c ++ mec . s ! n ++ jeanne . s ! case2pform genitive ; npGenDeNum : Numeral -> NounPhrase -> CommNounPhrase -> CaseA => Str = \ nu, jeanne, mec -> \ \ c => artDef mec . g nu . n c ++ nu . s ! mec . g ++ mec . s ! nu . n ++ jeanne . s ! case2pform genitive ; npGenPoss : Number -> NounPhrase -> CommNounPhrase -> CaseA => Str ; npGenPossNum : Numeral -> NounPhrase -> CommNounPhrase -> CaseA => Str ; nounThatSentence : CommNounPhrase -> Sentence -> CommNounPhrase = \ idee, x -> { s = \ \ n => idee . s ! n ++ elisQue ++ x . s ! Ind ; g = idee . g } ; partitiveNounPhrase : Number -> CommNounPhrase -> NounPhrase ; Adjective : Type = Adj ** { p : Bool } ; adjPre = True ; adjPost = False ; AdjPhrase : Type = Adjective ; adj2adjPhrase : Adjective -> AdjPhrase = \ x -> x ; mkAdjective : Adj -> Bool -> Adjective = \ adj, p -> adj ** { p = p } ; AdjDegr = AdjComp ** { p : Bool } ; mkAdjDegr : AdjComp -> Bool -> AdjDegr = \ adj, p -> adj ** { p = p } ; mkAdjDegrLong : Adj -> Bool -> AdjDegr = \ adj, p -> adjCompLong adj ** { p = p } ; positAdjPhrase : AdjDegr -> AdjPhrase = \ bon -> { s = bon . s ! Pos ; p = bon . p } ; comparAdjPhrase : AdjDegr -> NounPhrase -> AdjPhrase = \ bon, toi -> { s = \ \ a => bon . s ! Comp ! a ++ comparConj ++ toi . s ! stressed accusative ; p = False } ; comparConj : Str ; superlNounPhrase : AdjDegr -> CommNoun -> NounPhrase = \ bon, mec -> normalNounPhrase (\ \ c => artDef mec . g Sg c ++ if_then_else Str bon . p (bon . s ! Comp ! AF mec . g Sg ++ mec . s ! Sg)(mec . s ! Sg ++ artDef mec . g Sg nominative ++ bon . s ! Comp ! AF mec . g Sg)) mec . g Sg ; superlAdjPhrase : AdjDegr -> AdjPhrase = \ bon -> { s = \ \ a => artDef (genAForm a)(numAForm a)nominative ++ bon . s ! Comp ! a ; p = bon . p } ; predAdjSent : (Adjective ** { mp, mn : Mode } ) -> Sentence -> Clause = \ adj, ildort -> sats2clause (insertExtrapos (mkSatsCopula pronImpers (adj . s ! AF Masc Sg)) (\ \ b => embedConj ++ ildort . s ! if_then_else Mode b adj . mp adj . mn)) ; predAdjSent2 : (AdjCompl ** { mp, mn : Mode } ) -> NounPhrase -> Adjective ** { mp, mn : Mode } = \ facile, jean -> complAdj facile jean ** { mp = facile . mp ; mn = facile . mn } ; pronImpers : NounPhrase ; Preposition = Str ; Complement = { s2 : Preposition ; c : CaseA } ; complement : Str -> Complement = \ par -> { s2 = par ; c = nominative } ; complementDir : Complement = complement [] ; complementCas : CaseA -> Complement = \ c -> { s2 = [] ; c = c } ; AdjCompl = AdjPhrase ** Complement ; mkAdjCompl : Adj -> Bool -> Complement -> AdjCompl = \ adj, p, c -> mkAdjective adj p ** c ; complAdj : AdjCompl -> NounPhrase -> AdjPhrase = \ relie, jean -> { s = \ \ a => relie . s ! a ++ relie . s2 ++ jean . s ! case2pform relie . c ; p = False } ; modCommNounPhrase : AdjPhrase -> CommNounPhrase -> CommNounPhrase = \ bon, mec -> { s = \ \ n => if_then_else Str bon . p (bon . s ! AF mec . g n ++ mec . s ! n)(mec . s ! n ++ bon . s ! AF mec . g n); g = mec . g } ; Function : Type = CommNounPhrase ** Complement ; appFunComm : Function -> NounPhrase -> CommNounPhrase = \ mere, jean -> { s = \ \ n => mere . s ! n ++ mere . s2 ++ jean . s ! case2pform mere . c ; g = mere . g } ; Function2 = Function ** { s3 : Preposition ; c3 : CaseA } ; appFun2 : Function2 -> NounPhrase -> Function = \ vol, paris -> { s = \ \ n => vol . s ! n ++ vol . s2 ++ paris . s ! case2pform vol . c ; g = vol . g ; s2 = vol . s3 ; c = vol . c3 } ; funAsCommNounPhrase : Function -> CommNounPhrase = \ x -> x ; appFun : Bool -> Function -> NounPhrase -> NounPhrase = \ coll, mere, jean -> let n = jean . n ; g = mere . g ; nf = if_then_else Number coll Sg n in variants { defNounPhrase nf (appFunComm mere jean); npGenDet nf jean mere } ; param VPForm = VPF Anteriority VF ; Anteriority = Simul | Anter ; VIForm = VIInfinit | VIImperat Bool Number | VIGerund ; oper VerbPhrase = { s : VIForm => Gender => Number => Person => Str } ; VerbClause = { s : Bool => Anteriority => VIForm => Gender => Number => Person => Str } ; vpf2vf : VPForm -> VF = \ vpf -> case vpf of { VPF _ vf => vf } ; auxVerb : Verb -> Verb ; nombreVerbPhrase : VPForm -> Number = \ v -> case v of { VPF _ f => nombreVerb f } ; personVerbPhrase : VPForm -> Person = \ v -> case v of { VPF _ f => personVerb f } ; isNotImperative : VPForm -> Bool = \ v -> case v of { VPF _ (VImper _)=> False ; _ => True } ; negVerb : Str -> Str ; copula : Verb ; complVerbAdj : AdjCompl -> VerbPhrase -> AdjPhrase = \ facile, ouvrir -> { s = \ \ gn => facile . s ! gn ++ prepCase facile . c ++ facile . s2 ++ ouvrir . s ! VIInfinit ! Masc ! Sg ! P3 ; p = False } ; complVerbAdj2 : Bool -> AdjCompl -> NounPhrase -> VerbPhrase -> AdjPhrase = \ b, facile, lui, nager -> { s = \ \ gn => facile . s ! gn ++ lui . s ! stressed dative ++ prepCase facile . c ++ facile . s2 ++ nager . s ! VIInfinit ! pgen2gen lui . g ! lui . n ! P3 ; p = False } ; TransVerb : Type = Verb ** Complement ; complementOfTransVerb : TransVerb -> Complement = \ v -> { s2 = v . s2 ; c = v . c } ; verbOfTransVerb : TransVerb -> Verb = \ v -> { s = v . s ; aux = v . aux } ; isNounPhraseClit : NounPhrase -> Bool = \ n -> case n . c of { Clit0 => False ; _ => True } ; isClitCase : CaseA -> Bool ; isTransVerbClit : TransVerb -> Bool = \ v -> isClitCase v . c ; isDitransVerbClit : DitransVerb -> Bool * Bool = \ v -> < isClitCase v . c, isClitCase v . c3 > ; reflPron : Number => Person => NPFormA => Str ; reflPronNounPhrase : Gender -> Number -> Person -> NounPhrase = \ g, n, p -> { s = reflPron ! n ! p ; g = PGen g ; n = n ; p = p ; c = Clit1 } ; adjPastPart : Verb -> Adjective = \ verb -> { s = table { AF g n => verb . s ! VPart g n ; AA => verb . s ! VPart Masc Sg } ; p = False } ; mkTransVerb : Verb -> Preposition -> CaseA -> TransVerb = \ v, p, c -> v ** { s2 = p ; c = c } ; mkTransVerbPrep : Verb -> Preposition -> TransVerb = \ passer, par -> mkTransVerb passer par accusative ; mkTransVerbCas : Verb -> CaseA -> TransVerb = \ penser, a -> mkTransVerb penser [] a ; mkTransVerbDir : Verb -> TransVerb = \ aimer -> mkTransVerbCas aimer accusative ; transAsVerb : TransVerb -> Verb = \ love -> love ; DitransVerb = TransVerb ** { s3 : Preposition ; c3 : CaseA } ; mkDitransVerb : Verb -> Preposition -> CaseA -> Preposition -> CaseA -> DitransVerb = \ v, p1, c1, p2, c2 -> v ** { s2 = p1 ; c = c1 ; s3 = p2 ; c3 = c2 } ; posNeg : Bool -> (verb, compl : Str)-> Str ; DitransVerbVerb = TransVerb ** { c3 : CaseA } ; Adverb : Type = SS ; advVerbPhrase : VerbPhrase -> Adverb -> VerbPhrase = \ chante, bien -> { s = \ \ v, g, n, p => chante . s ! v ! g ! n ! p ++ bien . s } ; prepNounPhrase : { s : Preposition ; c : CaseA } -> NounPhrase -> Adverb = \ dans, jean -> { s = dans . s ++ jean . s ! Ton dans . c } ; justPrep : Preposition -> { s : Preposition ; c : CaseA } = \ sans -> { s = sans ; c = prepositional } ; justCase : CaseA -> { s : Preposition ; c : CaseA } = \ nom -> { s = [] ; c = nom } ; advCommNounPhrase : CommNounPhrase -> Adverb -> CommNounPhrase = \ mec, aparis -> { s = \ \ n => mec . s ! n ++ aparis . s ; g = mec . g } ; advAdjPhrase : Adverb -> AdjPhrase -> AdjPhrase = \ trop, lent -> { s = \ \ a => trop . s ++ lent . s ! a ; p = lent . p } ; Sentence : Type = SS1 Mode ; param Tense = Present | Past | Future | Condit ; ClForm = ClPres Anteriority Mode | ClImperf Anteriority Mode | ClPasse Anteriority | ClFut Anteriority | ClCondit Anteriority | ClInfinit Anteriority ; oper useClForm : Tense -> Anteriority -> Mode -> ClForm = \ t, a, m -> case t of { Present => ClPres a m ; Past => ClImperf a m ; Future => ClFut a ; Condit => ClCondit a } ; Clause = { s : Bool => ClForm => Str } ; SentenceVerb : Type = Verb ** { mp, mn : Mode } ; subordMode : SentenceVerb -> Bool -> Mode = \ verb, b -> if_then_else Mode b verb . mp verb . mn ; verbSent : Verb -> Mode -> Mode -> SentenceVerb = \ v, mp, mn -> v ** { mp = mp ; mn = mn } ; embedConj : Str ; VerbVerb : Type = Verb ** { c : CaseA } ; mkVerbVerbDir : Verb -> VerbVerb = \ v -> v ** { c = accusative } ; ClauseSlashNounPhrase = Clause ** Complement ; dummyNounPhrase : NounPhrase = mkNameNounPhrase [] Masc ; slashTransVerb : NounPhrase -> TransVerb -> ClauseSlashNounPhrase = \ np, v -> sats2clause (mkSatsObject np v dummyNounPhrase)** complementOfTransVerb v ; slashVerbVerb : NounPhrase -> VerbVerb -> TransVerb -> ClauseSlashNounPhrase = \ subj, verb, tv -> sats2clause (insertExtrapos (mkSats subj verb)(\ \ _ => prepCase verb . c ++ tv . s ! VInfin)) ** complementOfTransVerb tv ; slashAdverb : Clause -> { s : Str ; c : CaseA } -> ClauseSlashNounPhrase = \ ilhabite, dans -> ilhabite ** { s2 = dans . s ; c = dans . c } ; oper RelPron : Type = { s : RelFormA => Str ; g : RelGen } ; RelClause : Type = { s1 : Gender => Number => Person => Str ; s2 : Bool => ClForm => Gender => Number => Person => Str ; s3 : Bool => Str } ; RelSentence : Type = { s : Mode => Gender => Number => Person => Str } ; mkGenRel : RelGen -> Gender -> Gender = \ rg, g -> case rg of { PGen gen => gen ; _ => g } ; identRelPron : RelPron ; composRelPron : Gender -> Number -> CaseA -> Str ; funRelPron : Function -> RelPron -> RelPron ; allRelForms : RelPron -> Gender -> Number -> CaseA -> Str ; relSlash : RelPron -> ClauseSlashNounPhrase -> RelClause = \ dont, jeparle -> { s1 = \ \ g, n, p => jeparle . s2 ++ allRelForms dont g n jeparle . c ; s2 = \ \ b, cl, g, n, p => jeparle . s ! b ! cl ; s3 = \ \ _ => [] } ; relSuch : Clause -> RelClause = \ A -> { s1 = \ \ g, n, p => suchPron g n ; s2 = \ \ b, cl, g, n, p => embedConj ++ A . s ! b ! cl ; s3 = \ \ _ => [] } ; suchPron : Gender -> Number -> Str ; modRelClause : CommNounPhrase -> RelSentence -> CommNounPhrase = \ mec, quidort -> { s = \ \ n => mec . s ! n ++ quidort . s ! Ind ! mec . g ! n ! P3 ; g = mec . g } ; IntPron : Type = { s : CaseA => Str ; g : Gender ; n : Number } ; funIntPron : Function -> IntPron -> IntPron = \ mere, qui -> { s = \ \ c => artDef mere . g qui . n c ++ mere . s ! qui . n ++ mere . s2 ++ qui . s ! mere . c ; g = mere . g ; n = qui . n } ; nounIntPron : Number -> CommNounPhrase -> IntPron ; intPronWho : Number -> IntPron ; intPronWhat : Number -> IntPron ; Utterance = SS ; indicUtt : Sentence -> Utterance = \ x -> ss (x . s ! Ind ++ "."); interrogUtt : QuestionSent -> Utterance = \ x -> ss (x . s ! DirQ ++ "?"); param QuestForm = DirQ | IndirQ ; oper Question = { s : Bool => ClForm => QuestForm => Str } ; QuestionSent = { s : QuestForm => Str } ; questClause : Clause -> Question = \ cl -> { s = \ \ b, c => table { DirQ => cl . s ! b ! c ; IndirQ => cl . s ! b ! c } } ; intSlash : IntPron -> ClauseSlashNounPhrase -> Question ; intNounPhrase : IntPron -> NounPhrase = \ ip -> { s = \ \ nf => ip . s ! pform2case nf ; g = PGen ip . g ; n = ip . n ; p = P3 ; c = Clit0 } ; IntAdverb = SS ; questAdverbial : IntAdverb -> Clause -> Question = \ quand, jeanDort -> { s = \ \ b, cl => let jeandort = jeanDort . s ! b ! cl in table { DirQ => quand . s ++ jeandort ; IndirQ => quand . s ++ jeandort } } ; Imperative = { s : Gender => Number => Str } ; imperVerbPhrase : Bool -> VerbClause -> Imperative = \ b, dormir -> { s = \ \ g, n => dormir . s ! b ! Simul ! VIImperat b n ! g ! n ! P2 } ; imperUtterance : Number -> Imperative -> Utterance = \ n, I -> ss (I . s ! Masc ! n ++ "!"); advClause : Clause -> Adverb -> Clause = \ yousing, well -> { s = \ \ b, c => yousing . s ! b ! c ++ well . s } ; advSentence : SS -> Sentence -> Utterance = \ donc, ildort -> ss (donc . s ++ ildort . s ! Ind ++ "."); Conjunction = CO . Conjunction ** { n : Number } ; ConjunctionDistr = CO . ConjunctionDistr ** { n : Number } ; ListSentence : Type = { s1, s2 : Mode => Str } ; twoSentence : (_, _ : Sentence)-> ListSentence = CO . twoTable Mode ; consSentence : ListSentence -> Sentence -> ListSentence = CO . consTable Mode CO . comma ; conjunctSentence : Conjunction -> ListSentence -> Sentence = CO . conjunctTable Mode ; conjunctDistrSentence : ConjunctionDistr -> ListSentence -> Sentence = CO . conjunctDistrTable Mode ; ListAdjPhrase : Type = { s1, s2 : AForm => Str ; p : Bool } ; twoAdjPhrase : (_, _ : AdjPhrase)-> ListAdjPhrase = \ x, y -> CO . twoTable AForm x y ** { p = andB x . p y . p } ; consAdjPhrase : ListAdjPhrase -> AdjPhrase -> ListAdjPhrase = \ xs, x -> CO . consTable AForm CO . comma xs x ** { p = andB xs . p x . p } ; conjunctAdjPhrase : Conjunction -> ListAdjPhrase -> AdjPhrase = \ c, xs -> CO . conjunctTable AForm c xs ** { p = xs . p } ; conjunctDistrAdjPhrase : ConjunctionDistr -> ListAdjPhrase -> AdjPhrase = \ c, xs -> CO . conjunctDistrTable AForm c xs ** { p = xs . p } ; ListNounPhrase : Type = { s1, s2 : CaseA => Str ; g : PronGen ; n : Number ; p : Person } ; twoNounPhrase : (_, _ : NounPhrase)-> ListNounPhrase = \ x, y -> { s1 = \ \ c => x . s ! stressed c ; s2 = \ \ c => y . s ! stressed (conjunctCase c) } ** { n = conjNumber x . n y . n ; g = conjGender x . g y . g ; p = conjPers x . p y . p } ; consNounPhrase : ListNounPhrase -> NounPhrase -> ListNounPhrase = \ xs, x -> { s1 = \ \ c => xs . s1 ! c ++ CO . comma ++ xs . s2 ! conjunctCase c ; s2 = \ \ c => x . s ! stressed (conjunctCase c) } ** { n = conjNumber xs . n x . n ; g = conjGender xs . g x . g ; p = conjPers xs . p x . p } ; conjunctCase : CaseA -> CaseA ; conjunctNounPhrase : Conjunction -> ListNounPhrase -> NounPhrase = \ co, xs -> { s = \ \ c => xs . s1 ! pform2case c ++ co . s ++ xs . s2 ! pform2case c } ** { n = conjNumber co . n xs . n ; g = xs . g ; p = xs . p ; c = Clit0 } ; conjunctDistrNounPhrase : ConjunctionDistr -> ListNounPhrase -> NounPhrase = \ co, xs -> { s = \ \ c => co . s1 ++ xs . s1 ! pform2case c ++ co . s2 ++ xs . s2 ! pform2case c } ** { n = conjNumber co . n xs . n ; g = xs . g ; p = xs . p ; c = Clit0 } ; conjNumber : Number -> Number -> Number = \ m, n -> case < m, n > of { < Sg, Sg > => Sg ; _ => Pl } ; conjGen : Gender -> Gender -> Gender = \ m, n -> case < m, n > of { < Fem, Fem > => Fem ; _ => Masc } ; conjGender : PronGen -> PronGen -> PronGen = \ m, n -> case < m, n > of { < PGen Fem, PGen Fem > => PGen Fem ; _ => PNoGen } ; conjPers : Person -> Person -> Person = \ p, q -> case < p, q > of { < P3, P3 > => P3 ; < P1, _ > => P1 ; < _, P1 > => P1 ; _ => P2 } ; ListAdverb : Type = SD2 ; twoAdverb : (_, _ : Adverb)-> ListAdverb = CO . twoSS ; consAdverb : ListAdverb -> Adverb -> ListAdverb = CO . consSS CO . comma ; conjunctAdverb : Conjunction -> ListAdverb -> Adverb = \ c, xs -> ss (CO . conjunctX c xs); conjunctDistrAdverb : ConjunctionDistr -> ListAdverb -> Adverb = \ c, xs -> ss (CO . conjunctDistrX c xs); Subjunction = { s : Str ; m : Mode } ; subjunctSentence : Subjunction -> Sentence -> Sentence -> Sentence = \ si, A, B -> { s = \ \ m => subjunctVariants si A (B . s ! m) } ; subjunctImperative : Subjunction -> Sentence -> Imperative -> Imperative = \ si, A, B -> { s = \ \ g, n => subjunctVariants si A (B . s ! g ! n) } ; subjunctQuestion : Subjunction -> Sentence -> QuestionSent -> QuestionSent = \ si, A, B -> { s = \ \ q => subjunctVariants si A (B . s ! q) } ; subjunctVariants : Subjunction -> Sentence -> Str -> Str = \ si, A, B -> let { As = A . s ! si . m } in variants { si . s ++ As ++ B ; B ++ si . s ++ As } ; useNounPhrase : NounPhrase -> Utterance = \ jean -> postfixSS "." (defaultNounPhrase jean); useCommonNounPhrase : Number -> CommNounPhrase -> Utterance = \ n, mec -> useNounPhrase (indefNounPhrase n mec); verbUtterance : VerbPhrase -> Utterance = \ vp -> ss (vp . s ! VIInfinit ! Masc ! Sg ! P3); defaultNounPhrase : NounPhrase -> SS = \ jean -> ss (jean . s ! stressed nominative); defaultQuestion : QuestionSent -> SS = \ quiesttu -> ss (quiesttu . s ! DirQ); defaultSentence : Sentence -> SS = \ x -> ss (x . s ! Ind); artDef : Gender -> Number -> CaseA -> Str ; artIndef : Gender -> Number -> CaseA -> Str ; genForms : Str -> Str -> Gender => Str ; pronJe, pronTu, pronIl, pronElle, pronNous, pronVous, pronIls, pronElles : Pronoun ; chaqueDet, quelDet, plupartDet : Determiner ; commentAdv, quandAdv, ouAdv, pourquoiAdv : Adverb ; etConj, ouConj : Conjunction ; etetConj, ououConj : ConjunctionDistr ; siSubj, quandSubj : Subjunction ; ouiPhr, noPhr : Utterance ; Sats : Type = { s1 : Str ; s3 : Str ; s4 : VF => Str ; s5 : Str ; s6 : Str ; s7 : Bool => Str ; aux : VAux ; g, g2 : Gender ; n, n2 : Number ; p : Person } ; verbClForm : Verb -> ClForm -> Gender -> Number -> Person -> Gender -> Number -> Str * Str = \ verb, cl, g, n, p, g2, n2 -> let aimee = verb . s ! VPart g2 n2 ; auxv = (auxVerb verb). s ; aime : TMode -> Str = \ t -> verb . s ! VFin t n p ; avoir : TMode -> Str = \ t -> auxv ! VFin t n p ; aimer = verb . s ! VInfin ; avoirr = auxv ! VInfin in case cl of { ClPres Simul m => < aime (VPres m), [] > ; ClPres a m => < avoir (VPres m), aimee > ; ClImperf Simul m => < aime (VImperf m), [] > ; ClImperf a m => < avoir (VImperf m), aimee > ; ClPasse Simul => < aime VPasse, [] > ; ClPasse a => < avoir VPasse, aimee > ; ClFut Simul => < aime VFut, [] > ; ClFut a => < avoir VFut, aimee > ; ClCondit Simul => < aime VCondit, [] > ; ClCondit a => < avoir VCondit, aimee > ; ClInfinit Simul => < aimer, [] > ; ClInfinit a => < avoirr, aimee > } ; mkSats : NounPhrase -> Verb -> Sats = \ subj, verb -> let ifEsse : (T : Type)-> T -> T -> T = \ T, e, h -> case verb . aux of { AEsse => e ; AHabere => h } in { s1 = subj . s ! unstressed nominative ; s3 = [] ; s4 = verb . s ; s5, s6 = [] ; s7 = \ \ _ => [] ; aux = verb . aux ; g = pgen2gen subj . g ; n = subj . n ; p = subj . p ; g2 = ifEsse Gender (pgen2gen subj . g)Masc ; n2 = ifEsse Number subj . n Sg } ; insertObject : Sats -> CaseA -> Str -> NounPhrase -> Sats = \ sats, c, prep, obj -> let ifClit : (T : Type)-> T -> T -> T = \ T -> if_then_else T (andB (isNounPhraseClit obj)(isClitCase c)) ; object = obj . s ! case2pformClit c ; clit = ifClit Str object [] ; np = ifClit Str [] object in { s1 = sats . s1 ; s3 = sats . s3 ++ clit ; s4 = sats . s4 ; s5 = sats . s5 ; s6 = sats . s6 ++ prep ++ np ; s7 = sats . s7 ; aux = sats . aux ; g = sats . g ; n = sats . n ; g2 = ifClit Gender (pgen2gen obj . g)sats . g2 ; n2 = ifClit Number obj . n sats . n2 ; p = sats . p } ; insertExtrapos : Sats -> (Bool => Str)-> Sats = \ sats, obj -> { s1 = sats . s1 ; s3 = sats . s3 ; s4 = sats . s4 ; s5 = sats . s5 ; s6 = sats . s6 ; s7 = obj ; aux = sats . aux ; g = sats . g ; n = sats . n ; g2 = sats . g2 ; n2 = sats . n2 ; p = sats . p } ; mkSatsObject : NounPhrase -> TransVerb -> NounPhrase -> Sats = \ subj, verb, obj -> insertObject (mkSats subj verb)verb . c verb . s2 obj ; mkSatsCopula : NounPhrase -> Str -> Sats = \ subj, obj -> mkSatsObject subj (mkTransVerbDir copula)(nameNounPhrase (mkProperName obj Masc)) ; sats2clause : Sats -> Clause = \ sats -> { s = \ \ b, cf => let je = sats . s1 ; lui = sats . s3 ; dire = verbClForm { s = sats . s4 ; aux = sats . aux } cf sats . g sats . n sats . p sats . g2 sats . n2 ; ai = dire . p1 ; dit = dire . p2 ; toujours = sats . s5 ; directement = sats . s6 ; ne = if_then_Str b [] negNe ; pas = if_then_Str b [] negPas ; oui = sats . s7 ! b in je ++ ne ++ lui ++ ai ++ toujours ++ pas ++ dit ++ directement ++ oui } ; negNe, negPas : Str ; sats2quest : Sats -> Question = \ x -> let cl = sats2clause x in { s = \ \ b, f, _ => cl . s ! b ! f } ; sats2rel : (Gender -> Number -> Person -> Sats)-> RelClause = \ s -> { s1 = \ \ g, n, p => let sats = s g n p in sats . s1 ; s2 = \ \ b, cf, g, n, p => let sats = s g n p ; lui = sats . s3 ; dire = verbClForm { s = sats . s4 ; aux = sats . aux } cf sats . g sats . n sats . p sats . g2 sats . n2 ; ai = dire . p1 ; toujours = sats . s5 ; dit = dire . p2 ; ne = if_then_Str b [] negNe ; pas = if_then_Str b [] negPas in ne ++ lui ++ ai ++ toujours ++ pas ++ dit ; s3 = \ \ b => let sats = s Masc Sg P3 ; directement = sats . s6 ; oui = sats . s7 ! b in directement ++ oui } ; relNounPhrase : RelPron -> Gender -> Number -> Person -> NounPhrase = \ r, g, n, p -> { s = \ \ np => r . s ! npRelForm np ; g = PGen g ; n = n ; p = p ; c = Clit0 } ; sats2verbPhrase : Sats -> VerbClause = \ sats -> { s = \ \ b, ant, vi, g, n, p => let lui = sats . s3 ; dire = verbVIForm { s = sats . s4 ; aux = sats . aux } ant vi g n p sats . g2 sats . n2 ; ai = dire . p1 ; dit = dire . p2 ; toujours = sats . s5 ; directement = sats . s6 ; ne = if_then_Str b [] negNe ; pas = if_then_Str b [] negPas ; oui = sats . s7 ! b in ne ++ lui ++ ai ++ toujours ++ pas ++ dit ++ directement ++ oui } ; verbVIForm : Verb -> Anteriority -> VIForm -> Gender -> Number -> Person -> Gender -> Number -> Str * Str = \ verb, ant, cl, g, n, p, g2, n2 -> let aime : Number -> Str = \ t -> verb . s ! vImper t P2 ; aimee = case ant of { Simul => [] ; _ => verb . s ! VPart Masc Sg } ; finverb = case ant of { Simul => verb . s ; _ => (auxVerb verb). s } ; aimer = finverb ! VInfin ; aimant = finverb ! VGer in case cl of { VIImperat _ n => < aime n, [] > ; VIGerund => < aimant, aimee > ; VIInfinit => < aimer, aimee > } ; predVerb0 : Verb -> Clause = \ rain -> sats2clause (mkSats (pronNounPhrase pronImpers)rain); progressiveSats : NounPhrase -> VerbPhrase -> Sats ; }