resource ResBel = {

param Case = Nom | Acc | Dat | Gen | Loc | Instr ;
param Number = Sg | Pl ;
param Gender = Masc | Fem | Neuter ;
oper Noun = {s: Case => Number => Str; voc: Str; g: Gender} ; -- 2696
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
       \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,g ->
          { s = table {
                  Nom => table {
                           Sg => f1 ;
                           Pl => f2
                         } ;
                  Acc => table {
                           Sg => f3 ;
                           Pl => f4
                         } ;
                  Dat => table {
                           Sg => f5 ;
                           Pl => f6
                         } ;
                  Gen => table {
                           Sg => f7 ;
                           Pl => f8
                         } ;
                  Loc => table {
                           Sg => f9 ;
                           Pl => f10
                         } ;
                  Instr => table {
                             Sg => f11 ;
                             Pl => f12
                           }
                } ;
            voc = f13 ;
            g = g
          } ;


param Aspect = Imperf | Perf ;
param Person = P1 | P2 | P3 ;
param Tense = Pres | Past ;
oper V = {active: Aspect => {Past: Str; Pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
       \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 ->
          { active = table {
                       Imperf => { Past = f1 ;
                                   Pres = table {
                                            P1 => table {
                                                    Sg => f2 ;
                                                    Pl => f3
                                                  } ;
                                            P2 => table {
                                                    Sg => f4 ;
                                                    Pl => f5
                                                  } ;
                                            P3 => table {
                                                    Sg => f6 ;
                                                    Pl => f7
                                                  }
                                          }
                                 } ;
                       Perf => { Past = f8 ;
                                 Pres = table {
                                          P1 => table {
                                                  Sg => f9 ;
                                                  Pl => f10
                                                } ;
                                          P2 => table {
                                                  Sg => f11 ;
                                                  Pl => f12
                                                } ;
                                          P3 => table {
                                                  Sg => f13 ;
                                                  Pl => f14
                                                }
                                        }
                               }
                     } ;
            imperative = table {
                           Sg => f15 ;
                           Pl => f16
                         } ;
            infinitive = f17 ;
            participle = table {
                           Masc => table {
                                     Sg => f18 ;
                                     Pl => f19
                                   } ;
                           Fem => table {
                                    Sg => f20 ;
                                    Pl => f21
                                  } ;
                           Neuter => table {
                                       Sg => f22 ;
                                       Pl => f23
                                     }
                         } ;
            passive = table {
                        Imperf => table {
                                    Pres => f24 ;
                                    Past => f25
                                  } ;
                        Perf => table {
                                  Pres => f26 ;
                                  Past => f27
                                }
                      }
          } ;


param GenNum = GSg Gender | GPl ;
oper A = {s: Case => GenNum => Str} ; -- 704
oper mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
       \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
          { s = table {
                  Nom => table {
                           GSg Masc => f1 ;
                           GSg Fem => f2 ;
                           GSg Neuter => f3 ;
                           GPl => f4
                         } ;
                  Acc => table {
                           GSg Masc => f5 ;
                           GSg Fem => f6 ;
                           GSg Neuter => f7 ;
                           GPl => f8
                         } ;
                  Dat => table {
                           GSg Masc => f9 ;
                           GSg Fem => f10 ;
                           GSg Neuter => f11 ;
                           GPl => f12
                         } ;
                  Gen => table {
                           GSg Masc => f13 ;
                           GSg Fem => f14 ;
                           GSg Neuter => f15 ;
                           GPl => f16
                         } ;
                  Loc => table {
                           GSg Masc => f17 ;
                           GSg Fem => f18 ;
                           GSg Neuter => f19 ;
                           GPl => f20
                         } ;
                  Instr => table {
                             GSg Masc => f21 ;
                             GSg Fem => f22 ;
                             GSg Neuter => f23 ;
                             GPl => f24
                           }
                }
          } ;


oper Compl = {s : Str; c : Case} ;
oper noPrep : Compl = {s=""; c=Acc} ;

oper CommonNoun = Noun ;
oper AdjPhrase = A ;

}
