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