resource ResHye = ParamX ** open Prelude in { param CardOrd = NCard | NOrd ; param Aspect = Non_Past | Perfect ; param Case = Nom | Dat | Ablat | Instr | Loc ; param PartType = Resultative | Subject ; oper Verb = {s: Str; causative: Str; conditional: Aspect => Person => Number => Str; converb: {imperfective: Str; futCon1: Str; futCon2: Str; negative: Str; perfective: Str; simultaneous: Str}; imperative: Number => Str; passive: Str; past: Person => Number => Str; participle: PartType => Str; subjunctive: Aspect => Person => Number => Str} ; -- 898 oper invarVerb : Str -> Verb = \s -> { s=s; causative=s; conditional=table {_ => table {_ => table {_ => s}}}; converb={imperfective=s;futCon1=s;futCon2=s;negative=s;perfective=s;simultaneous=s}; imperative=table {_ => s}; passive=s; past=table {_ => table {_ => s}}; participle=table {_ => s}; subjunctive=table {_ => table {_ => table {_ => s}}} } ; oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb = \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43 -> { s = f1 ; causative = f2 ; conditional = table { Perfect => table { P1 => table { Sg => f3 ; Pl => f4 } ; P2 => table { Sg => f5 ; Pl => f6 } ; P3 => table { Sg => f7 ; Pl => f8 } } ; Non_Past => table { P1 => table { Sg => f9 ; Pl => f10 } ; P2 => table { Sg => f11 ; Pl => f12 } ; P3 => table { Sg => f13 ; Pl => f14 } } } ; converb = { imperfective = f15 ; futCon1 = f16 ; futCon2 = f17 ; negative = f18 ; perfective = f19 ; simultaneous = f20 } ; imperative = table { Sg => f21 ; Pl => f22 } ; passive = f23 ; past = table { P1 => table { Sg => f24 ; Pl => f25 } ; P2 => table { Sg => f26 ; Pl => f27 } ; P3 => table { Sg => f28 ; Pl => f29 } } ; participle = table { Resultative => f30 ; Subject => f31 } ; subjunctive = table { Perfect => table { P1 => table { Sg => f32 ; Pl => f33 } ; P2 => table { Sg => f34 ; Pl => f35 } ; P3 => table { Sg => f36 ; Pl => f37 } } ; Non_Past => table { P1 => table { Sg => f38 ; Pl => f39 } ; P2 => table { Sg => f40 ; Pl => f41 } ; P3 => table { Sg => f42 ; Pl => f43 } } } } ; param Species = Indef | Def | Poss Person ; oper Agr = {n : Number; p : Person} ; oper Noun = {s: Case => Number => Str; def_dat: Number => Str; def_nom: Number => Str; poss1: Case => Number => Str; poss2: Case => Number => Str} ; -- 4880 oper invarNoun : Str -> Noun = \s -> { s=table {_ => table {_ => s}}; def_dat=table {_ => s}; def_nom=table {_ => s}; poss1=table {_ => table {_ => s}}; poss2=table {_ => table {_ => s}} } ; oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun = \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34 -> { s = table { Nom => table { Sg => f1 ; Pl => f2 } ; Dat => table { Sg => f3 ; Pl => f4 } ; Ablat => table { Sg => f5 ; Pl => f6 } ; Instr => table { Sg => f7 ; Pl => f8 } ; Loc => table { Sg => f9 ; Pl => f10 } } ; def_dat = table { Sg => f11 ; Pl => f12 } ; def_nom = table { Sg => f13 ; Pl => f14 } ; poss1 = table { Nom => table { Sg => f15 ; Pl => f16 } ; Dat => table { Sg => f17 ; Pl => f18 } ; Ablat => table { Sg => f19 ; Pl => f20 } ; Instr => table { Sg => f21 ; Pl => f22 } ; Loc => table { Sg => f23 ; Pl => f24 } } ; poss2 = table { Nom => table { Sg => f25 ; Pl => f26 } ; Dat => table { Sg => f27 ; Pl => f28 } ; Ablat => table { Sg => f29 ; Pl => f30 } ; Instr => table { Sg => f31 ; Pl => f32 } ; Loc => table { Sg => f33 ; Pl => f34 } } } ; oper Adj = {s: Case => Number => Str; def_dat: Number => Str; def_nom: Number => Str; poss1: Case => Number => Str; poss2: Case => Number => Str} ; -- 1608 oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj = \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34 -> { s = table { Nom => table { Sg => f1 ; Pl => f2 } ; Dat => table { Sg => f3 ; Pl => f4 } ; Ablat => table { Sg => f5 ; Pl => f6 } ; Instr => table { Sg => f7 ; Pl => f8 } ; Loc => table { Sg => f9 ; Pl => f10 } } ; def_dat = table { Sg => f11 ; Pl => f12 } ; def_nom = table { Sg => f13 ; Pl => f14 } ; poss1 = table { Nom => table { Sg => f15 ; Pl => f16 } ; Dat => table { Sg => f17 ; Pl => f18 } ; Ablat => table { Sg => f19 ; Pl => f20 } ; Instr => table { Sg => f21 ; Pl => f22 } ; Loc => table { Sg => f23 ; Pl => f24 } } ; poss2 = table { Nom => table { Sg => f25 ; Pl => f26 } ; Dat => table { Sg => f27 ; Pl => f28 } ; Ablat => table { Sg => f29 ; Pl => f30 } ; Instr => table { Sg => f31 ; Pl => f32 } ; Loc => table { Sg => f33 ; Pl => f34 } } } ; oper Compl = {s : Str; c : Case; isPre : Bool} ; oper noPrep : Compl = {s=""; c=Nom; isPre=False} ; }