concrete MP3Eng of MP3=open StructuralEng,LexiconEng in{flags modulesize=n9;flags startcat=Move;lin CanPlay:MP3.Move=\Song@0->{s="can"++("you"++("play"++Song@0.s!))++"?";lock_Phr={}};"(can you play Song_0)?"; lincat Move={s:Str;lock_Phr:{}}={s=str@0;lock_Phr={}};"Move"; lin Play:MP3.Move=\Song@0->{s="play"++Song@0.s!++"!";lock_Phr={}};"(play Song_0)!"; lincat Song={s:(TypesEng.NPForm=>Str);n:TypesEng.Number;p:TypesEng.Person;lock_NP:{}}={s=table TypesEng.NPForm{(TypesEng.NomP)(TypesEng.AccP)(TypesEng.GenP)(TypesEng.GenSP)=>str@0};n=;p=;lock_NP={}};"Song"; lin This:MP3.Song=\->{s=table TypesEng.NPForm{(TypesEng.NomP)(TypesEng.AccP)(TypesEng.GenSP)=>"this";(TypesEng.GenP)=>"this's"};n=;p=;lock_NP={}};"this"; lin ThisSong:MP3.Song=\->{s=table TypesEng.NPForm{(TypesEng.NomP)(TypesEng.AccP)(TypesEng.GenSP)=>"this"++"song";(TypesEng.GenP)=>"this"++"song's"};n=;p=;lock_NP={}};"this song"; lin WantPlay:MP3.Move=\Song@0->{s="I"++("want"++("to"++("play"++Song@0.s!)))++".";lock_Phr={}};"(I want to play Song_0)."; lin WhichPlay:MP3.Move=\->{s="which"++"song"++("is"++"played")++"?";lock_Phr={}};"((which song)is played)?"; lin Yesterday:MP3.Song=\->{s=table TypesEng.NPForm{(TypesEng.NomP)(TypesEng.AccP)(TypesEng.GenSP)=>"Yesterday";(TypesEng.GenP)=>"Yesterday's"};n=;p=;lock_NP={}};"Yesterday"; } resource LexiconEng=open StructuralEng,ParadigmsEng in{flags modulesize=n0;} resource ParadigmsEng=open Predef,Prelude,SyntaxEng,ResourceEng in{flags modulesize=n0;} resource ResourceEng=open Prelude,SyntaxEng in{flags modulesize=n0;} resource SyntaxEng=MorphoEng**open Prelude,Coordination in{flags modulesize=n85;AAdj data in TypesEng; AAdv data in TypesEng; AForm data in TypesEng; AccP data in TypesEng; AdjDegr in TypesEng; Adjective in TypesEng; param Anteriority=Simul|Anter; Case data in TypesEng; CommonNoun in TypesEng; Comp data in TypesEng; Degree data in TypesEng; Gen data in TypesEng; GenP data in TypesEng; GenSP data in TypesEng; Gender data in TypesEng; Hum data in TypesEng; Indic data in TypesEng; InfImp data in TypesEng; NPForm data in TypesEng; NoHum data in TypesEng; Nom data in TypesEng; NomP data in TypesEng; Number data in TypesEng; P1 data in TypesEng; P2 data in TypesEng; P3 data in TypesEng; PPart data in TypesEng; Particle in TypesEng; Past data in TypesEng; Person data in TypesEng; Pl data in TypesEng; Pos data in TypesEng; Pronoun in TypesEng; ProperName in TypesEng; param QuestForm=DirQ|IndirQ; RelPron in TypesEng; Sg data in TypesEng; Sup data in TypesEng; param Tense=Pres|Pas|Fut; VForm data in TypesEng; Verb in TypesEng; param VerbForm=VInd SyntaxEng.Tense SyntaxEng.Anteriority TypesEng.Number TypesEng.Person|VCond SyntaxEng.Anteriority|VInf SyntaxEng.Anteriority|VImp; VerbP3 in TypesEng; adjDegrIrreg in MorphoEng; adjDegrLong in MorphoEng; adjDegrReg in MorphoEng; artDef in MorphoEng; artIndef in MorphoEng; contractNot in MorphoEng; dont in MorphoEng; mkAdjDegrWorst in MorphoEng; mkAdjective in MorphoEng; mkNoun in MorphoEng; mkPronoun in MorphoEng; mkVerb in MorphoEng; mkVerbP3 in MorphoEng; nameReg in MorphoEng; nounGen in MorphoEng; nounReg in MorphoEng; nounS in MorphoEng; nounY in MorphoEng; plural in TypesEng; pronHe in MorphoEng; pronI in MorphoEng; pronIt in MorphoEng; pronShe in MorphoEng; pronThey in MorphoEng; pronWe in MorphoEng; pronYouPl in MorphoEng; pronYouSg in MorphoEng; regAdjective in MorphoEng; regVerbP3 in MorphoEng; relPron in MorphoEng; singular in TypesEng; toCase in TypesEng; toNPForm in TypesEng; verbBe in MorphoEng; verbGen in MorphoEng; verbNoPart in MorphoEng; verbP3Do in MorphoEng; verbP3Have in MorphoEng; verbP3e in MorphoEng; verbP3s in MorphoEng; verbP3y in MorphoEng; verbPart in MorphoEng; } resource MorphoEng=TypesEng**open Prelude,Predef in{flags modulesize=n43;AAdj data in TypesEng; AAdv data in TypesEng; AForm data in TypesEng; AccP data in TypesEng; AdjDegr in TypesEng; Adjective in TypesEng; Case data in TypesEng; CommonNoun in TypesEng; Comp data in TypesEng; Degree data in TypesEng; Gen data in TypesEng; GenP data in TypesEng; GenSP data in TypesEng; Gender data in TypesEng; Hum data in TypesEng; Indic data in TypesEng; InfImp data in TypesEng; NPForm data in TypesEng; NoHum data in TypesEng; Nom data in TypesEng; NomP data in TypesEng; Number data in TypesEng; P1 data in TypesEng; P2 data in TypesEng; P3 data in TypesEng; PPart data in TypesEng; Particle in TypesEng; Past data in TypesEng; Person data in TypesEng; Pl data in TypesEng; Pos data in TypesEng; Pronoun in TypesEng; ProperName in TypesEng; RelPron in TypesEng; Sg data in TypesEng; Sup data in TypesEng; VForm data in TypesEng; Verb in TypesEng; VerbP3 in TypesEng; plural in TypesEng; singular in TypesEng; toCase in TypesEng; toNPForm in TypesEng; } resource TypesEng=open Prelude in{flags modulesize=n8;param AForm=AAdj|AAdv; param Case=Nom|Gen; param Degree=Pos|Comp|Sup; param Gender=NoHum|Hum; param NPForm=NomP|AccP|GenP|GenSP; param Number=Sg|Pl; param Person=P1|P2|P3; param VForm=InfImp|Indic TypesEng.Person|Past TypesEng.Number|PPart; } concrete MP3Swe of MP3=open StructuralSwe,LexiconSwe in{flags modulesize=n9;flags startcat=Move;lin CanPlay:MP3.Move=\Song@0->{s="kan"++("du"++("spela"++Song@0.s!))++"?";lock_Phr={}};"(kan du spela Song_0)?"; lincat Move={s:Str;lock_Phr:{}}={s=str@0;lock_Phr={}};"Move"; lin Play:MP3.Move=\Song@0->{s="spela"++Song@0.s!++"!";lock_Phr={}};"(spela Song_0)!"; lincat Song={s:(TypesSwe.NPForm=>Str);g:TypesSwe.Gender;n:TypesSwe.Number;lock_NP:{}}={s=table TypesSwe.NPForm{(TypesSwe.PNom)(TypesSwe.PAcc)(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Utr)))(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Neutr)))(TypesSwe.PGen(TypesSwe.APl))=>str@0};g=;n=;lock_NP={}};"Song"; lin This:MP3.Song=\->{s=table TypesSwe.NPForm{(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Utr)))(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Neutr)))(TypesSwe.PGen(TypesSwe.APl))=>"det"++"här"++"s";(TypesSwe.PNom)(TypesSwe.PAcc)=>"det"++"här"};g=;n=;lock_NP={}};"det här"; lin ThisSong:MP3.Song=\->{s=table TypesSwe.NPForm{(TypesSwe.PNom)(TypesSwe.PAcc)=>"den"++"här"++"låten";(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Utr)))(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Neutr)))(TypesSwe.PGen(TypesSwe.APl))=>"den"++"här"++"låtens"};g=;n=;lock_NP={}};"(den här)låten"; lin WantPlay:MP3.Move=\Song@0->{s="jag"++("vill"++("spela"++Song@0.s!))++".";lock_Phr={}};"(jag vill spela Song_0)."; lin WhichPlay:MP3.Move=\->{s="vilken"++"låt"++"spelas"++"?";lock_Phr={}};"((vilken låt)spelas)?"; lin Yesterday:MP3.Song=\->{s=table TypesSwe.NPForm{(TypesSwe.PNom)(TypesSwe.PAcc)=>"Yesterday";(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Utr)))(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Neutr)))(TypesSwe.PGen(TypesSwe.APl))=>"Yesterdays"};g=;n=;lock_NP={}};"Yesterday"; } resource LexiconSwe=open StructuralSwe,ParadigmsSwe in{flags modulesize=n0;} resource ParadigmsSwe=open Predef,Prelude,SyntaxSwe,ResourceSwe in{flags modulesize=n0;} resource ResourceSwe=open Prelude,SyntaxSwe in{flags modulesize=n0;} resource SyntaxSwe=MorphoSwe**open Prelude,Coordination in{flags modulesize=n172;AF data in TypesSwe; APl data in TypesSwe; APron data in TypesSwe; ASg data in TypesSwe; Act data in TypesSwe; Adj in TypesSwe; AdjForm data in TypesSwe; AdjFormGrad data in TypesSwe; AdjFormPos data in TypesSwe; AdjFormSup data in TypesSwe; AdjPronForm data in TypesSwe; Adv in TypesSwe; AdvInv in TypesSwe; Art in TypesSwe; AuxInf data in TypesSwe; AuxPres data in TypesSwe; AuxPret data in TypesSwe; AuxSup data in TypesSwe; AuxVerbForm data in TypesSwe; AxPl data in TypesSwe; AxSg data in TypesSwe; Case data in TypesSwe; Cnj data in TypesSwe; Comp data in TypesSwe; Compar data in TypesSwe; Conjunct in TypesSwe; Def data in TypesSwe; Degree data in TypesSwe; Gen data in TypesSwe; GenNum data in TypesSwe; Gender data in TypesSwe; Imper data in TypesSwe; Imperat data in TypesSwe; Ind data in TypesSwe; Indef data in TypesSwe; Indicat data in TypesSwe; Inf data in TypesSwe; Infin in TypesSwe; Infinit data in TypesSwe; Interj in TypesSwe; Masc data in TypesSwe; Mode data in TypesSwe; NPForm data in TypesSwe; Neutr data in TypesSwe; NoMasc data in TypesSwe; Nom data in TypesSwe; Number data in TypesSwe; param Order=Main|Inv|Sub; P1 data in TypesSwe; P2 data in TypesSwe; P3 data in TypesSwe; PAcc data in TypesSwe; PGen data in TypesSwe; PNm in TypesSwe; PNom data in TypesSwe; Part in TypesSwe; Pass data in TypesSwe; Person data in TypesSwe; Pl data in TypesSwe; Pos data in TypesSwe; Posit data in TypesSwe; Prep in TypesSwe; Preposition in MorphoSwe; Pres data in TypesSwe; Pret data in TypesSwe; ProAdj in TypesSwe; ProPN in TypesSwe; PtPres data in TypesSwe; PtPret data in TypesSwe; param QuestForm=DirQ|IndirQ; RAcc data in MorphoSwe; RGen data in MorphoSwe; RNom data in MorphoSwe; RPrep data in MorphoSwe; RelCase data in MorphoSwe; param RelGender=RNoGen|RG TypesSwe.Gender; SF data in TypesSwe; Sex data in TypesSwe; SexNum data in TypesSwe; Sg data in TypesSwe; Species data in TypesSwe; param SpeciesP=IndefP|DefP TypesSwe.Species; Strong data in TypesSwe; Subjunct in TypesSwe; Subst in TypesSwe; SubstForm data in TypesSwe; Sup data in TypesSwe; SupStrong data in TypesSwe; SupWeak data in TypesSwe; Super data in TypesSwe; Supin data in TypesSwe; Utr data in TypesSwe; VAux in TypesSwe; VF data in TypesSwe; VFin data in TypesSwe; VForm data in TypesSwe; VI data in TypesSwe; VInf data in TypesSwe; VMode data in TypesSwe; VPres data in TypesSwe; Verb in TypesSwe; VerbForm data in TypesSwe; Verbum in TypesSwe; Voice data in TypesSwe; Weak data in TypesSwe; aAbstrakt in MorphoSwe; aFager in MorphoSwe; aFin in MorphoSwe; aGrund in MorphoSwe; aKorkad in MorphoSwe; aVaken in MorphoSwe; aVid in MorphoSwe; adverbForm in TypesSwe; artDef in MorphoSwe; artIndef in MorphoSwe; de_38 in MorphoSwe; den_39 in MorphoSwe; det_40 in MorphoSwe; du_33 in MorphoSwe; extVerb in TypesSwe; extVerbPart in TypesSwe; farbror_8 in MorphoSwe; gammal_16 in MorphoSwe; giva_1147 in MorphoSwe; gå_1174 in MorphoSwe; han_34 in MorphoSwe; hava_1198 in MorphoSwe; hon_35 in MorphoSwe; jag_32 in MorphoSwe; liten_1146 in MorphoSwe; man_1144 in MorphoSwe; mkVerb in MorphoSwe; mkVerbPart in MorphoSwe; mor_1 in MorphoSwe; ni_37 in MorphoSwe; pronSådan in MorphoSwe; pronVilken in MorphoSwe; relPronForms in MorphoSwe; sApa in MorphoSwe; sBil in MorphoSwe; sHus in MorphoSwe; sKam in MorphoSwe; sKikare in MorphoSwe; sLik in MorphoSwe; sMuseum in MorphoSwe; sNivå in MorphoSwe; sNummer in MorphoSwe; sNyckel in MorphoSwe; sPapper in MorphoSwe; sParti in MorphoSwe; sPojke in MorphoSwe; sProgram in MorphoSwe; sRike in MorphoSwe; sRum in MorphoSwe; sSak in MorphoSwe; sVarelse in MorphoSwe; stor_25 in MorphoSwe; ung_29 in MorphoSwe; vByta in MorphoSwe; vFinna in MorphoSwe; vGömma in MorphoSwe; vHyra in MorphoSwe; vLeka in MorphoSwe; vTala in MorphoSwe; vTyda in MorphoSwe; vTåla in MorphoSwe; vVända in MorphoSwe; vara_1200 in MorphoSwe; verbFinnas in MorphoSwe; verbHava in MorphoSwe; verbVara in MorphoSwe; vi_36 in MorphoSwe; } resource MorphoSwe=TypesSwe**open Prelude in{flags modulesize=n99;AF data in TypesSwe; APl data in TypesSwe; APron data in TypesSwe; ASg data in TypesSwe; Act data in TypesSwe; Adj in TypesSwe; AdjForm data in TypesSwe; AdjFormGrad data in TypesSwe; AdjFormPos data in TypesSwe; AdjFormSup data in TypesSwe; AdjPronForm data in TypesSwe; Adv in TypesSwe; AdvInv in TypesSwe; Art in TypesSwe; AuxInf data in TypesSwe; AuxPres data in TypesSwe; AuxPret data in TypesSwe; AuxSup data in TypesSwe; AuxVerbForm data in TypesSwe; AxPl data in TypesSwe; AxSg data in TypesSwe; Case data in TypesSwe; Cnj data in TypesSwe; Comp data in TypesSwe; Compar data in TypesSwe; Conjunct in TypesSwe; Def data in TypesSwe; Degree data in TypesSwe; Gen data in TypesSwe; GenNum data in TypesSwe; Gender data in TypesSwe; Imper data in TypesSwe; Imperat data in TypesSwe; Ind data in TypesSwe; Indef data in TypesSwe; Indicat data in TypesSwe; Inf data in TypesSwe; Infin in TypesSwe; Infinit data in TypesSwe; Interj in TypesSwe; Masc data in TypesSwe; Mode data in TypesSwe; NPForm data in TypesSwe; Neutr data in TypesSwe; NoMasc data in TypesSwe; Nom data in TypesSwe; Number data in TypesSwe; P1 data in TypesSwe; P2 data in TypesSwe; P3 data in TypesSwe; PAcc data in TypesSwe; PGen data in TypesSwe; PNm in TypesSwe; PNom data in TypesSwe; Part in TypesSwe; Pass data in TypesSwe; Person data in TypesSwe; Pl data in TypesSwe; Pos data in TypesSwe; Posit data in TypesSwe; Prep in TypesSwe; Pres data in TypesSwe; Pret data in TypesSwe; ProAdj in TypesSwe; ProPN in TypesSwe; PtPres data in TypesSwe; PtPret data in TypesSwe; param RelCase=RNom|RAcc|RGen|RPrep; SF data in TypesSwe; Sex data in TypesSwe; SexNum data in TypesSwe; Sg data in TypesSwe; Species data in TypesSwe; Strong data in TypesSwe; Subjunct in TypesSwe; Subst in TypesSwe; SubstForm data in TypesSwe; Sup data in TypesSwe; SupStrong data in TypesSwe; SupWeak data in TypesSwe; Super data in TypesSwe; Supin data in TypesSwe; Utr data in TypesSwe; VAux in TypesSwe; VF data in TypesSwe; VFin data in TypesSwe; VForm data in TypesSwe; VI data in TypesSwe; VInf data in TypesSwe; VMode data in TypesSwe; VPres data in TypesSwe; Verb in TypesSwe; VerbForm data in TypesSwe; Verbum in TypesSwe; Voice data in TypesSwe; Weak data in TypesSwe; adverbForm in TypesSwe; extVerb in TypesSwe; extVerbPart in TypesSwe; } resource TypesSwe=open Prelude in{flags modulesize=n24;param AdjForm=AF TypesSwe.AdjFormGrad TypesSwe.Case; param AdjFormGrad=Posit TypesSwe.AdjFormPos|Compar|Super TypesSwe.AdjFormSup; param AdjFormPos=Strong TypesSwe.GenNum|Weak TypesSwe.SexNum; param AdjFormSup=SupStrong|SupWeak; param AdjPronForm=APron TypesSwe.GenNum TypesSwe.Case; param AuxVerbForm=AuxInf|AuxPres|AuxPret|AuxSup; param Case=Nom|Gen; param Degree=Pos|Comp|Sup; param GenNum=ASg TypesSwe.Gender|APl; param Gender=Utr|Neutr; param Mode=Ind|Cnj; param NPForm=PNom|PAcc|PGen TypesSwe.GenNum; param Number=Sg|Pl; param Person=P1|P2|P3; param Sex=NoMasc|Masc; param SexNum=AxSg TypesSwe.Sex|AxPl; param Species=Indef|Def; param SubstForm=SF TypesSwe.Number TypesSwe.Species TypesSwe.Case; param VFin=Pres TypesSwe.Mode TypesSwe.Voice|Pret TypesSwe.Mode TypesSwe.Voice|Imper; param VForm=VPres TypesSwe.VMode TypesSwe.Voice; param VInf=Inf TypesSwe.Voice|Supin TypesSwe.Voice|PtPres TypesSwe.Case|PtPret TypesSwe.AdjFormPos TypesSwe.Case; param VMode=Infinit|Indicat|Imperat; param VerbForm=VF TypesSwe.VFin|VI TypesSwe.VInf; param Voice=Act|Pass; } concrete MP3Fre of MP3=open StructuralFre,LexiconFre in{flags modulesize=n9;flags startcat=Move;lin CanPlay:MP3.Move=\Song@0->{s=variants{("est-ce"++[pre"que"{"qu'"/"a""â""ā""e""ę""é""č""h""i""î""o""ô""u""û""y"}])[]}++("tu"++("peux"++table Prelude.Bool{(Prelude.True)=>Song@0.s!>++"jouer";(Prelude.False)=>"jouer"++Song@0.s!>}!(table Prelude.Bool{(Prelude.False)=>;(Prelude.True)=>}!(table TypesFre.ClitType{(TypesFre.Clit0)=>;(TypesFre.Clit1)(TypesFre.Clit2)(TypesFre.Clit3)=>}!(Song@0.c)))))++"?";lock_Phr={}};"((est-ce que)tu peux Song_0 jouer)?"; lincat Move={s:Str;lock_Phr:{}}={s=str@0;lock_Phr={}};"Move"; lin Play:MP3.Move=\Song@0->{s=table Prelude.Bool{(Prelude.True)=>Song@0.s!>++"joue";(Prelude.False)=>"joue"++Song@0.s!>}!(table Prelude.Bool{(Prelude.False)=>;(Prelude.True)=>}!(table TypesFre.ClitType{(TypesFre.Clit0)=>;(TypesFre.Clit1)(TypesFre.Clit2)(TypesFre.Clit3)=>}!(Song@0.c)))++"!";lock_Phr={}};"(Song_0 joue)!"; lincat Song={s:(TypesFre.NPForm=>Str);g:TypesFre.PronGen;n:TypesFre.Number;p:TypesFre.Person;c:TypesFre.ClitType;lock_NP:{}}={s=table TypesFre.NPForm{(TypesFre.Ton(TypesFre.Nom))(TypesFre.Ton(TypesFre.Acc))(TypesFre.Ton(TypesFre.Gen))(TypesFre.Ton(TypesFre.Dat))(TypesFre.Aton(TypesFre.Nom))(TypesFre.Aton(TypesFre.Acc))(TypesFre.Aton(TypesFre.Gen))(TypesFre.Aton(TypesFre.Dat))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Fem))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Fem))=>str@0};g=>;n=;p=;c=;lock_NP={}};"Song"; lin This:MP3.Song=\->{s=table TypesFre.NPForm{(TypesFre.Ton(TypesFre.Gen))(TypesFre.Aton(TypesFre.Gen))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Fem))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Fem))=>"de"++"ceci";(TypesFre.Ton(TypesFre.Dat))(TypesFre.Aton(TypesFre.Dat))=>"ā"++"ceci";(TypesFre.Ton(TypesFre.Nom))(TypesFre.Ton(TypesFre.Acc))(TypesFre.Aton(TypesFre.Nom))(TypesFre.Aton(TypesFre.Acc))=>"ceci"};g=>;n=;p=;c=;lock_NP={}};"ceci"; lin ThisSong:MP3.Song=\->{s=table TypesFre.NPForm{(TypesFre.Ton(TypesFre.Nom))(TypesFre.Ton(TypesFre.Acc))(TypesFre.Aton(TypesFre.Nom))(TypesFre.Aton(TypesFre.Acc))=>"cette"++"chanson";(TypesFre.Ton(TypesFre.Dat))(TypesFre.Aton(TypesFre.Dat))=>"ā"++("cette"++"chanson");(TypesFre.Ton(TypesFre.Gen))(TypesFre.Aton(TypesFre.Gen))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Fem))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Fem))=>[pre"de"{"d'"/"a""â""ā""e""ę""é""č""h""i""î""o""ô""u""û""y"}]++("cette"++"chanson")};g=>;n=;p=;c=;lock_NP={}};"cette chanson"; lin WantPlay:MP3.Move=\Song@0->{s=[pre"je"{"j'"/"a""â""ā""e""ę""é""č""h""i""î""o""ô""u""û""y"}]++("veux"++table Prelude.Bool{(Prelude.True)=>Song@0.s!>++"jouer";(Prelude.False)=>"jouer"++Song@0.s!>}!(table Prelude.Bool{(Prelude.False)=>;(Prelude.True)=>}!(table TypesFre.ClitType{(TypesFre.Clit0)=>;(TypesFre.Clit1)(TypesFre.Clit2)(TypesFre.Clit3)=>}!(Song@0.c))))++".";lock_Phr={}};"(je veux Song_0 jouer)."; lin WhichPlay:MP3.Move=\->{s="quelle"++"chanson"++(variants{("est-ce"++"qui")[]}++("est"++"jouée"))++"?";lock_Phr={}};"((quelle chanson)(est-ce qui)est jouée)?"; lin Yesterday:MP3.Song=\->{s=table TypesFre.NPForm{(TypesFre.Ton(TypesFre.Gen))(TypesFre.Aton(TypesFre.Gen))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Fem))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Fem))=>"de"++"Yesterday";(TypesFre.Ton(TypesFre.Dat))(TypesFre.Aton(TypesFre.Dat))=>"ā"++"Yesterday";(TypesFre.Ton(TypesFre.Nom))(TypesFre.Ton(TypesFre.Acc))(TypesFre.Aton(TypesFre.Nom))(TypesFre.Aton(TypesFre.Acc))=>"Yesterday"};g=>;n=;p=;c=;lock_NP={}};"Yesterday"; } concrete MP3I of MP3={flags modulesize=n0;flags startcat=Move;} resource LexiconFre=open StructuralFre,ParadigmsFre in{flags modulesize=n0;} resource Lexicon={flags modulesize=n0;} resource ParadigmsFre=open Prelude,TypesFre,SyntaxFre,MorphoFre,ResourceFre in{flags modulesize=n0;} resource ResourceFre=open SyntaxFre,MorphoFre,Prelude in{flags modulesize=n0;} resource SyntaxFre=TypesFre**open Prelude,Coordination,MorphoFre in{flags modulesize=n108;AA data in TypesFre; AF data in TypesFre; AForm data in TypesFre; Acc data in TypesFre; Adj in TypesFre; AdjComp in TypesFre; Aton data in TypesFre; CNom in TypesFre; Case data in TypesFre; CaseA in TypesFre; Clit0 data in TypesFre; Clit1 data in TypesFre; Clit2 data in TypesFre; Clit3 data in TypesFre; ClitType data in TypesFre; Comp data in TypesFre; Con data in TypesFre; Cond data in TypesFre; Dat data in TypesFre; Degree data in TypesFre; Fem data in TypesFre; Futur data in TypesFre; Gen data in TypesFre; Gender data in TypesFre; Imparf data in TypesFre; Imper data in TypesFre; Ind data in TypesFre; Indic data in TypesFre; Inf data in TypesFre; Masc data in TypesFre; Mode data in TypesFre; NPForm data in TypesFre; NPFormA in TypesFre; Nom data in TypesFre; NumPersI data in TypesFre; Number data in TypesFre; P1 data in TypesFre; P2 data in TypesFre; P3 data in TypesFre; PGen data in TypesFre; PNoGen data in TypesFre; PPasse data in TypesFre; PPres data in TypesFre; Part data in TypesFre; Passe data in TypesFre; Person data in TypesFre; Pl data in TypesFre; PlP1 data in TypesFre; PlP2 data in TypesFre; Pos data in TypesFre; Poss data in TypesFre; Pres data in TypesFre; PronGen data in TypesFre; Pronoun in TypesFre; param QuestForm=DirQ|IndirQ; RComplex data in TypesFre; RG data in TypesFre; RNoGen data in TypesFre; RSimple data in TypesFre; RelForm data in TypesFre; RelFormA in TypesFre; RelGen data in TypesFre; SImparf data in TypesFre; SPres data in TypesFre; Sg data in TypesFre; SgP2 data in TypesFre; Subjo data in TypesFre; Sup data in TypesFre; TPart data in TypesFre; TSubj data in TypesFre; Temps data in TypesFre; Ton data in TypesFre; VF data in TypesFre; VFin data in TypesFre; VForm data in TypesFre; VImper data in TypesFre; VInfin data in TypesFre; VPart data in TypesFre; VerbPres in TypesFre; Verbum in TypesFre; accusative in TypesFre; adjCompLong in TypesFre; case2pform in TypesFre; case2pformClit in TypesFre; dative in TypesFre; elisDe in TypesFre; elisLa in TypesFre; elisLe in TypesFre; elisNe in TypesFre; elisQue in TypesFre; elisSi in TypesFre; elision in TypesFre; genitive in TypesFre; mkAdjComp in TypesFre; nombreVerb in TypesFre; nominative in TypesFre; pform2case in TypesFre; pgen2gen in TypesFre; plural in TypesFre; prepCase in TypesFre; prepositional in TypesFre; relPronForms in TypesFre; singular in TypesFre; stressed in TypesFre; unstressed in TypesFre; vImper in TypesFre; verbPres in TypesFre; voyelle in TypesFre; } resource SyntaxRomance={flags modulesize=n0;} resource Coordination=open Prelude in{flags modulesize=n1;param ListSize=TwoElem|ManyElem; } resource MorphoFre=open Predef,Prelude,TypesFre in{flags modulesize=n0;} resource Prelude=open Predef in{flags modulesize=n2;param Bool=True|False; param ENumber=E0|E1|E2|Emore; } resource Predef={flags modulesize=n1;param PBool=PTrue|PFalse; } resource TypesFre={flags modulesize=n18;param AForm=AF TypesFre.Gender TypesFre.Number|AA; param Case=Nom|Acc|Gen|Dat; param ClitType=Clit0|Clit1|Clit2|Clit3; param Degree=Pos|Comp|Sup; param Gender=Masc|Fem; param Mode=Ind|Con; param NPForm=Ton TypesFre.Case|Aton TypesFre.Case|Poss TypesFre.Number TypesFre.Gender; param NumPersI=SgP2|PlP1|PlP2; param Number=Sg|Pl; param Person=P1|P2|P3; param PronGen=PGen TypesFre.Gender|PNoGen; param RelForm=RSimple TypesFre.Case|RComplex TypesFre.Gender TypesFre.Number TypesFre.Case; param RelGen=RNoGen|RG TypesFre.Gender; param TPart=PPres|PPasse TypesFre.Gender TypesFre.Number; param TSubj=SPres|SImparf; param Temps=Pres|Imparf|Passe|Futur; param VF=VFin TypesFre.Mode TypesFre.Number TypesFre.Person|VImper TypesFre.NumPersI|VPart TypesFre.Gender TypesFre.Number|VInfin; param VForm=Inf|Indic TypesFre.Temps TypesFre.Number TypesFre.Person|Cond TypesFre.Number TypesFre.Person|Subjo TypesFre.TSubj TypesFre.Number TypesFre.Person|Imper TypesFre.NumPersI|Part TypesFre.TPart; } resource TypesRomance={flags modulesize=n0;} resource Resource={flags modulesize=n0;} concrete MP3Ger of MP3=open StructuralGer,LexiconGer in{flags modulesize=n9;flags startcat=Move;lin CanPlay:MP3.Move=\Song@0->{s="kannst"++("du"++(Song@0.s!>++"spielen"))++"?";lock_Phr={}};"(kannst du Song_0 spielen)?"; lincat Move={s:Str;lock_Phr:{}}={s=str@0;lock_Phr={}};"Move"; lin Play:MP3.Move=\Song@0->{s="spiel"++Song@0.s!>++"!";lock_Phr={}};"(spiel Song_0)!"; lincat Song={s:(TypesGer.NPForm=>Str);n:TypesGer.Number;p:TypesGer.Person;pro:Prelude.Bool;lock_NP:{}}={s=table TypesGer.NPForm{(TypesGer.NPCase(TypesGer.Nom))(TypesGer.NPCase(TypesGer.Acc))(TypesGer.NPCase(TypesGer.Dat))(TypesGer.NPCase(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Gen))=>str@0};n=;p=;pro=;lock_NP={}};"Song"; lin This:MP3.Song=\->{s=table TypesGer.NPForm{(TypesGer.NPCase(TypesGer.Dat))=>"diesem";(TypesGer.NPCase(TypesGer.Nom))(TypesGer.NPCase(TypesGer.Acc))(TypesGer.NPCase(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Gen))=>"dieses"};n=;p=;pro=;lock_NP={}};"dieses"; lin ThisSong:MP3.Song=\->{s=table TypesGer.NPForm{(TypesGer.NPCase(TypesGer.Dat))=>"diesem"++"lied";(TypesGer.NPCase(TypesGer.Nom))(TypesGer.NPCase(TypesGer.Acc))=>"dieses"++"lied";(TypesGer.NPCase(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Gen))=>"dieses"++"liedes"};n=;p=;pro=;lock_NP={}};"dieses lied"; lin WantPlay:MP3.Move=\Song@0->{s="ich"++("will"++(Song@0.s!>++"spielen"))++".";lock_Phr={}};"(ich will Song_0 spielen)."; lin WhichPlay:MP3.Move=\->{s="welches"++"lied"++("wird"++"gespielt")++"?";lock_Phr={}};"((welches lied)wird gespielt)?"; lin Yesterday:MP3.Song=\->{s=table TypesGer.NPForm{(TypesGer.NPCase(TypesGer.Nom))(TypesGer.NPCase(TypesGer.Acc))(TypesGer.NPCase(TypesGer.Dat))=>"Yesterday";(TypesGer.NPCase(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Gen))=>"Yesterdays"};n=;p=;pro=;lock_NP={}};"Yesterday"; } abstract MP3={flags modulesize=n9;fun CanPlay:(h_:MP3.Song)->MP3.Move={}; cat Move[]=; fun Play:(h_:MP3.Song)->MP3.Move={}; cat Song[]=; fun This:MP3.Song={}; fun ThisSong:MP3.Song={}; fun WantPlay:(h_:MP3.Song)->MP3.Move={}; fun WhichPlay:MP3.Move={}; fun Yesterday:MP3.Song={}; } resource LexiconGer=open StructuralGer,ParadigmsGer in{flags modulesize=n0;} resource ParadigmsGer=open Prelude,MorphoGer,SyntaxGer,ResourceGer in{flags modulesize=n0;} resource ResourceGer=open Prelude,SyntaxGer in{flags modulesize=n0;} resource SyntaxGer=MorphoGer**open Prelude,Coordination in{flags modulesize=n132;AForm data in TypesGer; AMod data in TypesGer; APred data in TypesGer; Acc data in TypesGer; AdjComp in TypesGer; Adjective in TypesGer; Adjf data in TypesGer; Case data in TypesGer; CommNoun in TypesGer; Comp data in TypesGer; Dat data in TypesGer; Degree data in TypesGer; Fem data in TypesGer; GPl data in TypesGer; GSg data in TypesGer; Gen data in TypesGer; GenNum data in TypesGer; Gender data in TypesGer; Inv data in TypesGer; Main data in TypesGer; Masc data in TypesGer; NPCase data in TypesGer; NPForm data in TypesGer; NPPoss data in TypesGer; Neut data in TypesGer; Nom data in TypesGer; Number data in TypesGer; Order data in TypesGer; P1 data in TypesGer; P2 data in TypesGer; P3 data in TypesGer; Particle in TypesGer; Person data in TypesGer; Pl data in TypesGer; Pos data in TypesGer; Preposition in TypesGer; ProPN in MorphoGer; param QuestForm=DirQ|IndirQ; RelPron in MorphoGer; Sg data in TypesGer; Strong data in TypesGer; Sub data in TypesGer; Sup data in TypesGer; VForm data in TypesGer; VImp data in TypesGer; VImpfInd data in TypesGer; VImpfSubj data in TypesGer; VInd data in TypesGer; VInf data in TypesGer; VPart data in TypesGer; VPresPart data in TypesGer; VSubj data in TypesGer; Verb in TypesGer; Verbum in TypesGer; Weak data in TypesGer; aMod in MorphoGer; adde in MorphoGer; adjCompReg in MorphoGer; adjCompReg3 in MorphoGer; adjE in MorphoGer; adjEr in MorphoGer; adjGen in MorphoGer; adjInvar in MorphoGer; adjReg in MorphoGer; artDef in MorphoGer; artIndef in MorphoGer; caselist in MorphoGer; declN1 in MorphoGer; declN1M in MorphoGer; declN1e in MorphoGer; declN1eM in MorphoGer; declN1in in MorphoGer; declN2 in MorphoGer; declN2i in MorphoGer; declN2in in MorphoGer; declN2n in MorphoGer; declN2u in MorphoGer; declN2uF in MorphoGer; declN3 in MorphoGer; declN3u in MorphoGer; declN3uS in MorphoGer; declNs in MorphoGer; gNumber in MorphoGer; impe in MorphoGer; mkAdjComp in MorphoGer; mkAdjective in MorphoGer; mkNoun in MorphoGer; mkNoun2es in MorphoGer; mkNoun2n in MorphoGer; mkNoun2s in MorphoGer; mkNoun2ses in MorphoGer; mkNoun3 in MorphoGer; mkNoun4 in MorphoGer; mkPronPers in MorphoGer; mkVerb in MorphoGer; mkVerbSimple in MorphoGer; mkVerbum in MorphoGer; numGenNum in MorphoGer; plural in TypesGer; pronDu in MorphoGer; pronEnding in MorphoGer; pronEr in MorphoGer; pronEs in MorphoGer; pronIch in MorphoGer; pronIhr in MorphoGer; pronSSie in MorphoGer; pronSie in MorphoGer; pronSiePl in MorphoGer; pronWir in MorphoGer; regVerb in MorphoGer; relPron in MorphoGer; singular in TypesGer; verbGeben in MorphoGer; verbHaben in MorphoGer; verbSein in MorphoGer; verbWerden in MorphoGer; verbumAux in MorphoGer; verbumDürfen in MorphoGer; verbumGratulieren in MorphoGer; verbumHaben in MorphoGer; verbumKönnen in MorphoGer; verbumMögen in MorphoGer; verbumMüssen in MorphoGer; verbumSein in MorphoGer; verbumSollen in MorphoGer; verbumStrongLaufen in MorphoGer; verbumStrongSehen in MorphoGer; verbumStrongSingen in MorphoGer; verbumWeak in MorphoGer; verbumWerden in MorphoGer; verbumWissen in MorphoGer; verbumWollen in MorphoGer; } resource MorphoGer=TypesGer**open Predef,Prelude in{flags modulesize=n54;AForm data in TypesGer; AMod data in TypesGer; APred data in TypesGer; Acc data in TypesGer; AdjComp in TypesGer; Adjective in TypesGer; Adjf data in TypesGer; Case data in TypesGer; CommNoun in TypesGer; Comp data in TypesGer; Dat data in TypesGer; Degree data in TypesGer; Fem data in TypesGer; GPl data in TypesGer; GSg data in TypesGer; Gen data in TypesGer; GenNum data in TypesGer; Gender data in TypesGer; Inv data in TypesGer; Main data in TypesGer; Masc data in TypesGer; NPCase data in TypesGer; NPForm data in TypesGer; NPPoss data in TypesGer; Neut data in TypesGer; Nom data in TypesGer; Number data in TypesGer; Order data in TypesGer; P1 data in TypesGer; P2 data in TypesGer; P3 data in TypesGer; Particle in TypesGer; Person data in TypesGer; Pl data in TypesGer; Pos data in TypesGer; Preposition in TypesGer; Sg data in TypesGer; Strong data in TypesGer; Sub data in TypesGer; Sup data in TypesGer; VForm data in TypesGer; VImp data in TypesGer; VImpfInd data in TypesGer; VImpfSubj data in TypesGer; VInd data in TypesGer; VInf data in TypesGer; VPart data in TypesGer; VPresPart data in TypesGer; VSubj data in TypesGer; Verb in TypesGer; Verbum in TypesGer; Weak data in TypesGer; plural in TypesGer; singular in TypesGer; } resource TypesGer=open Prelude in{flags modulesize=n11;param AForm=APred|AMod TypesGer.Adjf TypesGer.GenNum TypesGer.Case; param Adjf=Strong|Weak; param Case=Nom|Acc|Dat|Gen; param Degree=Pos|Comp|Sup; param GenNum=GSg TypesGer.Gender|GPl; param Gender=Masc|Fem|Neut; param NPForm=NPCase TypesGer.Case|NPPoss TypesGer.GenNum TypesGer.Case; param Number=Sg|Pl; param Order=Main|Inv|Sub; param Person=P1|P2|P3; param VForm=VInf|VInd TypesGer.Number TypesGer.Person|VImp TypesGer.Number|VSubj TypesGer.Number TypesGer.Person|VImpfInd TypesGer.Number TypesGer.Person|VImpfSubj TypesGer.Number TypesGer.Person|VPresPart TypesGer.AForm|VPart TypesGer.AForm; }