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}