From 84b70bdd72941fae597b77fab4570af5146825f7 Mon Sep 17 00:00:00 2001
From: janna <janna@cs.chalmer.se[D[D>
Date: Thu, 22 Jun 2006 11:17:01 +0000
Subject: [PATCH] russian4

---
 lib/resource-1.0/russian/AdjectiveRus.gf  |   4 +-
 lib/resource-1.0/russian/IdiomRus.gf      |  24 ++--
 lib/resource-1.0/russian/LexiconRus.gf    |  20 +--
 lib/resource-1.0/russian/MorphoRus.gf     | 159 ++++++++++++----------
 lib/resource-1.0/russian/NounRus.gf       |  10 +-
 lib/resource-1.0/russian/ParadigmsRus.gf  |  91 ++++++-------
 lib/resource-1.0/russian/RelativeRus.gf   |   3 +-
 lib/resource-1.0/russian/ResRus.gf        |  28 +++-
 lib/resource-1.0/russian/SentenceRus.gf   |  24 ++--
 lib/resource-1.0/russian/StructuralRus.gf |   4 +-
 lib/resource-1.0/russian/VerbRus.gf       |  12 +-
 11 files changed, 209 insertions(+), 170 deletions(-)

diff --git a/lib/resource-1.0/russian/AdjectiveRus.gf b/lib/resource-1.0/russian/AdjectiveRus.gf
index c544c8d87..39c3d5209 100644
--- a/lib/resource-1.0/russian/AdjectiveRus.gf
+++ b/lib/resource-1.0/russian/AdjectiveRus.gf
@@ -25,12 +25,12 @@ flags  coding=utf8 ;
     } ;
 
     ReflA2 vlublen = 
-    {s = \\af => vlublen.s !Posit! af ++ vlublen.s2 ++ "себя";
+    {s = \\af => vlublen.s !Posit! af ++ vlublen.s2 ++ sam.s ! vlublen.c;
      p = True
     } ;
 
     SentAP vlublen sent= 
-    {s = \\af => vlublen.s ! af ++ sent.s;
+    {s = \\af => vlublen.s ! af ++ [", "] ++ sent.s;
       p = True
     } ;
 
diff --git a/lib/resource-1.0/russian/IdiomRus.gf b/lib/resource-1.0/russian/IdiomRus.gf
index f15741fdf..d2db6c33c 100644
--- a/lib/resource-1.0/russian/IdiomRus.gf
+++ b/lib/resource-1.0/russian/IdiomRus.gf
@@ -7,9 +7,9 @@ concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
   lin
     ExistNP = \bar ->
     {s =\\b,clf => case b of 
-        {Pos =>  verbByut.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3) 
+        {Pos =>  verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3) 
            ++ bar.s ! PF Nom No NonPoss;
-        Neg => "не" ++ verbByut.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3) 
+        Neg => "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3) 
            ++ bar.s ! PF Nom No NonPoss
        }
 } ;
@@ -17,20 +17,24 @@ concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
     ExistIP Kto =
     let {  kto = Kto.s ! (PF Nom No NonPoss) } in 
        {s =  \\b,clf,_ => case b of 
-        {Pos =>  kto ++ verbByut.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3) ;
-        Neg => kto ++ "не" ++ verbByut.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3) 
+        {Pos =>  kto ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3) ;
+        Neg => kto ++ "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3) 
        }
     } ;
 
     CleftAdv adv sen = {s= \\ b, clf =>  let ne= case b of {Pos =>[]; Neg =>"не"}
       in 
-      "это" ++ ne ++ adv.s  ++ sen.s }; 
+      "это" ++ ne ++ adv.s  ++ [", "]++ sen.s }; 
 
-    CleftNP np rs = {s= \\ b, clf =>  let ne= case b of {Pos =>[]; Neg =>"не"}
+    CleftNP np rs = {s= \\ b, clf =>  
+       let 
+         ne= case b of {Pos =>[]; Neg =>"не"};
+         gn = case np.n of {Pl => APl; _=> ASg (pgen2gen np.g)}
       in 
-      "это" ++ ne ++ np.s ! (PF Nom No NonPoss)  ++ rs.s ! ASg Masc!Nom!Animate  }; 
+      "это" ++ ne ++ np.s ! (PF Nom No NonPoss)  ++ 
+        rs.s ! gn !Nom!Animate  }; 
 
-    ImpPl1 vp = {s= "давайте" ++ vp.s! (ClIndic Future Simul)! APl ! P2  }; 
+    ImpPl1 vp = {s= "давайте" ++ vp.s! (ClIndic Future Simul)! APl ! P1}; 
 
     ImpersCl vp = {s= \\ b, clf =>  let ne= case b of {Pos =>[]; Neg =>"не"}
       in 
@@ -44,9 +48,9 @@ concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
 -- The closest subject is "ты" (you), which is omitted in the final sentence:
 -- "Если очень захочешь, можешь в космос улететь"
 
-    GenericCl vp = {s= \\ b, clf =>  let ne= case b of {Pos =>[]; Neg =>""}
+    GenericCl vp = {s= \\ b, clf =>  let ne= case b of {Pos =>[]; Neg =>"не"}
       in 
-      ne ++ vp.s! clf! (ASg Masc) ! P3  }; 
+      "ты" ++ ne ++ vp.s! clf! (ASg Masc) ! P2  }; 
 
     ProgrVP vp = vp ;
 
diff --git a/lib/resource-1.0/russian/LexiconRus.gf b/lib/resource-1.0/russian/LexiconRus.gf
index 55c440902..c5817829d 100644
--- a/lib/resource-1.0/russian/LexiconRus.gf
+++ b/lib/resource-1.0/russian/LexiconRus.gf
@@ -20,21 +20,21 @@ lin
   beautiful_A =  AStaruyj "красив" "красивее";
   become_VA = regV perfective second "станов" "лю" "стал" "стань" "стать" ;
   beer_N = nChislo "пив" ;
-  beg_V2V = dirV2 (regV imperfective  second "про" "шу" "просил" "проси" "просить" );
+  beg_V2V = dirV2 (mkVerbum  imperfective  "прошу" "просишь" "просит" "просим" "просите" "просят" "просил" "проси" "просить" );
   big_A = AKakoj_Nibud  "больш" "" "больше" ;
   bike_N = nTelefon "велосипед" ;
   bird_N = nEdinica "птиц" ;
   black_A = AStaruyj  "чёрн" "чернее";
   blue_A =  AMolodoj  "голуб" "голубее";
   boat_N = nMashina "лодк" ;
-  book_N = nMashina "книг" ;
+  book_N = nNoga "книг" ;
   boot_N = nBank "сапог" ;
   boss_N = nStomatolog "начальник" ;
   boy_N = nStomatolog "мальчик" ;
   bread_N = nAdres "хлеб" ;
   break_V2 = dirV2 (regV imperfective first "прерыва" "ю" "прерывал" "прерывай" "прерывать" );
 
  broad_A = AMalenkij  "широк" "шире";
-  brother_N2 = mkN2  (nBrat ",брат") ;
+  brother_N2 = mkN2  (nBrat "брат") ;
   brown_A = AStaruyj  "коричнев" "коричневее";
   butter_N = nChislo "масл";
   buy_V2 = dirV2 (regV imperfective first "покупа" "ю" "покупал" "покупай" "покупать" );
@@ -59,7 +59,7 @@ child_N = mkN "ребёнок" "ребёнка" "ребёнку" "ребёнка
   country_N = nMashina "стран" ;
 cousin_N = nTelefon "кузен" ;
 cow_N = nMashina "коров" ;
-die_V = regV imperfective first "умира" "ю" "умирал" "умрай" "умирать" ;
+die_V = regV imperfective first "умира" "ю" "умирал" "умирай" "умирать" ;
 dirty_A =  AStaruyj  "грязн" "грязнее" ;
 doctor_N = nAdres "доктор" ;
 dog_N = nNoga "собак" ;
@@ -70,7 +70,7 @@ enemy_N = nStomatolog "враг" ;
 factory_N = nNoga "фабрик" ;
 father_N2 = mkN2 (mkN "отец" "отца" "отцу" "отца" "отцом" "отце" "отцы" "отцов" "отцам" "отцов" "отцами" "отцах" masculine animate);
 fear_VS= regV imperfective second "бо" "ю" "боял" "бой" "боять" ;
-find_V2 = dirV2 (regV imperfective second "нахо" "жу" "находил" "находи" "находить" );
+find_V2 = dirV2 (mkVerbum imperfective   "нахожу" "находишь" "находит" "находим" "находите" "находят" "находил" "находи" "находить" );
 fish_N = nMashina "рыб" ;
 floor_N = nTelefon "пол" ;
 forget_V2= dirV2 (regV imperfective first "забыва" "ю" "забывал" "забывай" "забывать" );
@@ -129,7 +129,7 @@ peace_N = nTelefon "мир" ;
 pen_N = nNoga "ручк" ;
 planet_N = nMashina "планет" ;
 plastic_N = nMashina "пластмасс" ;
-play_V2 = dirV2 (regV imperfective first "игра" "ю" "играл" "играй" "играть" );
+play_V2 = mkV2 (regV imperfective first "игра" "ю" "играл" "играй" "играть" ) "c" instructive;
 policeman_N = nTelefon "милиционер" ;
 priest_N = nStomatolog "священник" ;
 queen_N = nMashina "королев" ;
@@ -145,7 +145,7 @@ rubber_N = nMashina "резин" ;
 run_V = regV imperfective first "бега" "ю" "бегал" "бегай" "бегать" ;
 say_VS = regV imperfective second "говор" "ю" "говорил" "говори" "говорить" ;
 school_N = nMashina "школ" ;
-science_N = nEdinica "наук" ;
+science_N = nNoga "наук" ;
 sea_N = nProizvedenie "мор" ;
 seek_V2 = dirV2 (regV imperfective first "ищ" "у" "искал" "ищи" "искать" );
 see_V2 = dirV2 (regV imperfective second "виж" "у" "видел" "видь" "видеть" );
@@ -213,7 +213,7 @@ young_A = AMolodoj  "молод" "моложе";
   stop_V = regV imperfective first "останавлива" "ю" "останавливал" "останавливай" "останавливать";
   jump_V = regV imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ;
 
-distance_N3 = mkN3 (nProizvedenie "расстоян") from_Prep to_Prep ;
+distance_N3 = mkN3 (nProizvedenie "расстояни") from_Prep to_Prep ;
 
 -- in Russian combinations with verbs are expressed with adverbs:
 -- "легко понять" ("easy to understand"), which is different from 
@@ -221,12 +221,12 @@ distance_N3 = mkN3 (nProizvedenie "расстоян") from_Prep to_Prep ;
 -- So the next to words are adjectives, since there are such adjectives
 -- in Russian, but to use them with verb would be wrong in Russian:
 fun_AV = AStaruyj "весёл" "веселее";
-easy_A2V = mkA2 (AMalenkij "легк" "легче") "для" genitive ;
+easy_A2V = mkA2 (AMalenkij "лёгк" "легче") "для" genitive ;
 
 empty_A =  AMolodoj "пуст" "пустее";
 married_A2 = mkA2 (adjInvar "замужем") "за" instructive ;
 paint_V2A = dirV2 (regV imperfective first "рису" "ю" "рисовал" "рисуй"  "рисовать" ) ;
-  probable_AS = AStaruyj "возможный" "возможнее";
+  probable_AS = AStaruyj "возможн" "возможнее";
  rain_V0  = idetDozhd verbIdti; --  No such verb in Russian!
 talk_V3 = mkV3 (regV imperfective second "говор" "ю" "говорил" "говори" "говорить" ) "с" "о" instructive prepositional;
 wonder_VQ = regV imperfective first "интересу" "ю" "интересовал" "интересуй" "интересовать";  
diff --git a/lib/resource-1.0/russian/MorphoRus.gf b/lib/resource-1.0/russian/MorphoRus.gf
index d6610b898..cc858fed7 100644
--- a/lib/resource-1.0/russian/MorphoRus.gf
+++ b/lib/resource-1.0/russian/MorphoRus.gf
@@ -1196,8 +1196,8 @@ oper odinDet: Adjective = {s = table {
       AF Prepos _ (ASg Masc) => "одном"; 
       AF Prepos _ (ASg Fem) => "одной"; 
       AF Prepos _ (ASg Neut) => "одном";
-      AF Prepos _ APl => "дних";
-      AdvF => "одно"
+      AF Prepos _ APl => "одних";
+      AdvF =>  "одно"
        } 
   } ;
 oper etotDet: Adjective = {s = table {
@@ -1227,7 +1227,7 @@ oper etotDet: Adjective = {s = table {
       AF Prepos _ (ASg Fem) => "этой"; 
       AF Prepos _ (ASg Neut) => "этом";
       AF Prepos _ APl => "этих";
-      AdvF => "это"
+      AdvF =>   "это"
        } 
   } ;
 oper vesDet: Adjective = {s = table {
@@ -1257,37 +1257,37 @@ oper vesDet: Adjective = {s = table {
       AF Prepos _ (ASg Fem) => "всей"; 
       AF Prepos _ (ASg Neut) => "всём";
       AF Prepos _ APl => "всех" ;
-      AdvF => "полностью"
+      AdvF =>  "полностью"
       } 
   } ;
 oper uy_j_EndDecl : Str -> Adjective = \s ->{s = table {
-      AF Nom _ (ASg Masc) => Prelude.glue s "ый"; 
-      AF Nom _ (ASg Fem) => Prelude.glue s "ая"; 
-      AF Nom _ (ASg Neut) => Prelude.glue s "ое";
-      AF Nom _ APl => Prelude.glue s "ые";
-      AF Acc  Inanimate (ASg Masc) => Prelude.glue s "ый"; 
-      AF Acc  Animate (ASg Masc) => Prelude.glue s "ого"; 
-      AF Acc  _ (ASg Fem) => Prelude.glue s "ую"; 
-      AF Acc  _ (ASg Neut) => Prelude.glue s "ое";
-      AF Acc  Inanimate APl => Prelude.glue s "ые";
-      AF Acc  Animate APl => Prelude.glue s "ых";
-      AF Gen  _ (ASg Masc) => Prelude.glue s "ого"; 
-      AF Gen  _ (ASg Fem) => Prelude.glue s "ой"; 
-      AF Gen  _ (ASg Neut) => Prelude.glue s "ого";
-      AF Gen  _ APl => Prelude.glue s "ых";
-      AF Inst _ (ASg Masc) => Prelude.glue s "ым"; 
-      AF Inst _ (ASg Fem) => Prelude.glue s "ой"; 
-      AF Inst _ (ASg Neut) => Prelude.glue s "ым";
-      AF Inst _ APl => Prelude.glue s "ыми";
-      AF Dat  _ (ASg Masc) => Prelude.glue s "ому"; 
-      AF Dat  _ (ASg Fem) => Prelude.glue s "ой"; 
-      AF Dat  _ (ASg Neut) => Prelude.glue s "ому";
-      AF Dat  _ APl => Prelude.glue s "ым";
-      AF Prepos _ (ASg Masc) => Prelude.glue s "ом"; 
-      AF Prepos _ (ASg Fem) => Prelude.glue s "ой"; 
-      AF Prepos _ (ASg Neut) => Prelude.glue s "ом";
-      AF Prepos _ APl => Prelude.glue s "ых";
-      AdvF => "о"
+      AF Nom _ (ASg Masc) => s+ "ый"; 
+      AF Nom _ (ASg Fem) =>  s + "ая"; 
+      AF Nom _ (ASg Neut) => s + "ое";
+      AF Nom _ APl => s + "ые";
+      AF Acc  Inanimate (ASg Masc) => s + "ый"; 
+      AF Acc  Animate (ASg Masc) => s + "ого"; 
+      AF Acc  _ (ASg Fem) => s + "ую"; 
+      AF Acc  _ (ASg Neut) => s + "ое";
+      AF Acc  Inanimate APl => s + "ые";
+      AF Acc  Animate APl => s + "ых";
+      AF Gen  _ (ASg Masc) => s + "ого"; 
+      AF Gen  _ (ASg Fem) => s + "ой"; 
+      AF Gen  _ (ASg Neut) => s + "ого";
+      AF Gen  _ APl => s + "ых";
+      AF Inst _ (ASg Masc) => s + "ым"; 
+      AF Inst _ (ASg Fem) => s + "ой"; 
+      AF Inst _ (ASg Neut) => s + "ым";
+      AF Inst _ APl => s + "ыми";
+      AF Dat  _ (ASg Masc) => s + "ому"; 
+      AF Dat  _ (ASg Fem) => s + "ой"; 
+      AF Dat  _ (ASg Neut) => s + "ому";
+      AF Dat  _ APl => s + "ым";
+      AF Prepos _ (ASg Masc) => s + "ом"; 
+      AF Prepos _ (ASg Fem) => s + "ой"; 
+      AF Prepos _ (ASg Neut) => s + "ом";
+      AF Prepos _ APl => s + "ых";
+      AdvF => s +"о"
       } 
   } ;
 oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table {
@@ -1317,7 +1317,7 @@ oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table {
       AF Prepos _ (ASg Fem) => s+"ьей"; 
       AF Prepos _ (ASg Neut) => s+"ьем";
       AF Prepos _ APl => s+"ьих";
-      AdvF => "ье"
+      AdvF => s +  "ье"
       } 
   } ;
 
@@ -1348,7 +1348,7 @@ oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table {
 --      AF Prepos _ (ASg Fem) => s+"ей"; 
 --      AF Prepos _ (ASg Neut) => s+"ем";
 --      AF Prepos _ APl => s+"их";
---      AdvF => "о"
+--      AdvF => s +  "о"
 --      } 
 --  } ;
 --
@@ -1388,7 +1388,7 @@ oper ij_EndK_G_KH_Decl : Str -> Adjective = \s ->{s = table {
     AF Prepos _ (ASg Fem) => s+"ой"; 
     AF Prepos _ (ASg Neut) => s+"ом";
     AF Prepos _ APl => s+"их";
-     AdvF => "о"
+     AdvF => s +  "о"
     }
   } ;
 oper shij_End_Decl : Str -> Adjective = \s ->{s = table {
@@ -1418,7 +1418,7 @@ oper shij_End_Decl : Str -> Adjective = \s ->{s = table {
     AF Prepos _ (ASg Fem) => s+"ей"; 
     AF Prepos _ (ASg Neut) => s+"ем";
     AF Prepos _ APl => s+"их";
-     AdvF => "о"
+     AdvF => s +  "о"
     }
   } ;
 
@@ -1430,7 +1430,7 @@ oper i_oj_EndDecl : Str -> Str -> Adjective = \s, chastica ->{s = table {
     AF Nom _ (ASg Neut) => s+"ое"+ chastica ;
     AF Nom _ APl => s+"ие"+ chastica ;
     AF Acc  Animate (ASg Masc) => s+"ого"+ chastica ; 
-    AF Acc  Inanimate (ASg Masc) => s+"ое"+ chastica ; 
+    AF Acc  Inanimate (ASg Masc) => s+"ой"+ chastica ; 
     AF Acc  _ (ASg Fem) => s+"ую"+ chastica ; 
     AF Acc  _ (ASg Neut) => s+"ое"+ chastica ;
     AF Acc Animate APl => s+"их"+ chastica ;    
@@ -1439,7 +1439,8 @@ oper i_oj_EndDecl : Str -> Str -> Adjective = \s, chastica ->{s = table {
     AF Gen _ (ASg Fem) => s+"ой"+ chastica ; 
     AF Gen _ (ASg Neut) => s+"ого"+ chastica ;
     AF Gen _ APl => s+"их"+ chastica ;
-    AF Inst _ (ASg Masc) => s+"им"+ chastica ; 
    AF Inst _ (ASg Fem) => s+"ой"+ chastica ; 
+    AF Inst _ (ASg Masc) => s+"им"+ chastica ;
+ 
    AF Inst _ (ASg Fem) => s+"ой"+ chastica ; 
     AF Inst _ (ASg Neut) => s+"им"+ chastica ;
     AF Inst _ APl => s+"ими"+ chastica ;
     AF Dat _ (ASg Masc) => s+"ому"+ chastica ; 
@@ -1450,7 +1451,7 @@ oper i_oj_EndDecl : Str -> Str -> Adjective = \s, chastica ->{s = table {
     AF Prepos _ (ASg Fem) => s+"ой"+ chastica ; 
     AF Prepos _ (ASg Neut) => s+"ом"+ chastica ;
     AF Prepos _ APl => s+"их" + chastica;
-     AdvF => "о"
+     AdvF => s +  "о"
     }
   } ;
 --oper molodoj: AdjDegr = mkAdjDeg (uy_oj_EndDecl "молод") "моложе";
@@ -1482,7 +1483,7 @@ oper uy_oj_EndDecl : Str -> Adjective = \s ->{s = table {
     AF Prepos _ (ASg Fem) => s+"ой"; 
     AF Prepos _ (ASg Neut) => s+"ом";
     AF Prepos _ APl => s+"ых";
-    AdvF => "о"
+    AdvF => s +  "о"
     }
   } ;
 --oper prostuzhen: Adjective = shortDecl1 "простужен" ;     
@@ -1493,7 +1494,7 @@ oper uy_oj_EndDecl : Str -> Adjective = \s ->{s = table {
 --    AF _ _ (ASg Fem) => s+"а"; 
 --    AF _ _ (ASg Neut) => s+"о";
 --    AF _ _ APl => s+"ы" ;
---    AdvF => "о"
+--    AdvF => s +  "о"
 --    }
 --  } ;
 --oper shortDecl : Str -> Adjective = \s ->{s = table {
@@ -1501,7 +1502,7 @@ oper uy_oj_EndDecl : Str -> Adjective = \s ->{s = table {
 --    AF _ _ (ASg Fem) => s+"на"; 
 --    AF _ _ (ASg Neut) => s+"но";
 --    AF _ _ APl => s+"ны" ;
---    AdvF => "о"
+--    AdvF => s +  "о"
 --    }
--  } ;
 --
 ---- 2 Adverbs
@@ -1522,13 +1523,14 @@ oper uy_oj_EndDecl : Str -> Adjective = \s ->{s = table {
 ---- patterns in the present tense in the indicative mood.
 --
 param Conjugation = First | FirstE | Second | Mixed | Dolzhen;
+
 --
 --3 First conjugation (in Present) verbs :
-
 oper verbIdti : Verbum = verbDecl Imperfective First "ид" "у" "шел" "иди" "идти";
+
 --oper verbGulyat : Verbum = verbDecl Imperfective First "гуля" "ю" "гулял" "гуляй" "гулять";
 --oper verbVkluchat : Verbum = verbDecl Imperfective First "включа" "ю" "включал" "включай" "включать";
---oper verbSuchestvovat : Verbum = verbDecl Imperfective First "существу" "ю" "существовал" "существуй" "существовать";
+oper verbSuchestvovat : Verbum = verbDecl Imperfective First "существу" "ю" "существовал" "существуй" "существовать";
 --oper verbVukluchat : Verbum = verbDecl Imperfective First "выключа" "ю" "выключал" "выключай" "выключать";
 --oper verbZhdat : Verbum = verbDecl Imperfective First "жд" "у" "ждал" "жди" "ждать" ;
 --oper verbBegat : Verbum = verbDecl Imperfective First "бега" "ю" "бегал" "бегай" "бегать";
@@ -1537,26 +1539,33 @@ oper verbIdti : Verbum = verbDecl Imperfective First "ид" "у" "шел" "ид
 --oper verbPredpochitat : Verbum = verbDecl Imperfective First "предпочита" "ю" "предпочитал" "предпочитай" "предпочитать";
 --oper verbOtpravlyat : Verbum = verbDecl Imperfective First "отправля" "ю" "отправлял" "отправляй" "отправлять";
 --oper verbSlomat : Verbum = verbDecl Perfective First "слома" "ю" "сломал" "сломай" "сломать";
-oper verbByut : Verbum = verbDecl Perfective First "буд" "у" "был" "будь" "быть";
 
-oper verbMoch : Verbum = verbDeclMoch Imperfective First "мог" "у" "мог" "моги" "мочь" "мож";
 
 ---- Verbs with vowel "ё": "даёшь" (give), "пьёшь" (drink)  :
 --oper verbDavat : Verbum = verbDecl Imperfective FirstE "да" "ю" "давал" "давай" "давать";
 --oper verbPit : Verbum = verbDecl Imperfective FirstE "пь" "ю" "пил" "пей" "пить";
 --
+
+
+oper verbByut : Verbum = verbDecl Perfective First "буд" "у" "был" "будь" "быть";
+
+oper verbMoch : Verbum = verbDeclMoch Imperfective First "мог" "у" "мог" "моги" "мочь" "мож";
+
 ----3 Second conjugation (in Present) verbs :
 --
 --oper verbLubit : Verbum = verbDecl Imperfective Second "люб" "лю" "любил" "люби" "любить";
 --oper verbGovorit : Verbum = verbDecl Imperfective Second "говор" "ю" "говорил" "говори" "говорить";
---
--oper verbBolet_2 : Verbum = verbDecl Imperfective Second "бол" "ю" "болел" "боли" "болеть";
+--
+--oper verbBolet_2 : Verbum = verbDecl Imperfective Second "бол" "ю" "болел" "боли" "болеть";
 --oper verbPoranit : Verbum = verbDecl Perfective Second "поран" "ю" "поранил" "порань" "поранить";
---
-- Irregular Mixed:
+--
+-- Irregular Mixed:
 oper verbKhotet : Verbum = verbDecl Imperfective Mixed "хоч" "у" "хотел" "хоти" "хотеть";
 
 -- Irregular
 oper verbDolzhen : Verbum = verbDecl Imperfective Dolzhen "долж" "ен" "долж" ["будь должен"] ["быть должным"] ;
 
+
 -- To reduces the redundancies in the definitions
 -- we introduce some intermediate types,
 -- so that the full type can be described as a combination
@@ -1595,7 +1604,7 @@ oper presentConjMixed: Str -> Str -> PresentVerb = \del, sgP1End ->
     PRF APl P3  => del+ "ят"   
   };
 oper presentConj2: Str -> Str -> PresentVerb = \del, sgP1End ->
-  table {
+table {
     PRF (ASg _) P1 => del+ sgP1End ;
     PRF (ASg _) P2 => del+ "ишь" ;
     PRF (ASg _) P3  => del+ "ит" ;
@@ -1623,7 +1632,7 @@ oper presentConj1: Str -> Str -> PresentVerb = \del, sgP1End ->
     PRF APl P3 => del+ sgP1End + "т"   
   };
 oper presentConj1Moch: Str -> Str -> Str -> PresentVerb = \del, sgP1End, altRoot ->
-  table {
+ table {
     PRF (ASg _) P1 => del + sgP1End ;
     PRF (ASg _) P2 => altRoot + "ешь" ;
     PRF (ASg _) P3 => altRoot + "ет" ;
@@ -1708,10 +1717,10 @@ oper mkPassive: AspectVoice -> PastVerb -> AspectVoice =  \av, pv ->
     VIMP  Pl  P2 => av.s! (VIMP  Pl P2) +"сь";
     VIMP  Sg P3 => av.s ! (VIMP Sg P3)  +"ся";
     VIMP  Pl  P3 => av.s ! (VIMP Pl P3) +"ся";
-    VSUB (ASg Masc) => pv !  (PSF (ASg Masc)) + "ся"+[" бы"];
-    VSUB (ASg Fem) => pv  ! (PSF (ASg Fem)) + "сь"+[" бы"];
-    VSUB (ASg Neut)  => pv ! (PSF (ASg Neut)) + "сь"+[" бы"];
-    VSUB APl  => pv ! (PSF APl) + "сь"+[" бы"] ;
+    VSUB (ASg Masc) => pv !  (PSF (ASg Masc)) + "ся"++"бы";
+    VSUB (ASg Fem) => pv  ! (PSF (ASg Fem)) + "сь"++"бы";
+    VSUB (ASg Neut)  => pv ! (PSF (ASg Neut)) + "сь"++"бы";
+    VSUB APl  => pv ! (PSF APl) + "сь"+"бы" ;
     VIND (ASg _) (VPresent P1)  => 
      --           case av.asp of { Imperfective =>
                        av.s ! (VIND (ASg Masc) (VPresent P1)) + "сь" ;
@@ -1743,28 +1752,28 @@ oper
  imperfectiveActivePattern : Str -> Str -> PresentVerb -> PastVerb -> AspectVoice = 
      \inf, imper, presentFuture, past -> { s=  table {
     VINF  => inf ;
-    VIMP Sg P1 => ["давайте "]+ inf ;
-    VIMP Pl P1 => ["давайте "] + inf ;
+    VIMP Sg P1 => "давайте" ++ inf ;
+    VIMP Pl P1 => "давайте" ++ inf ;
     VIMP Sg P2 => imper ;
     VIMP Pl P2 => imper+"те" ;
-    VIMP Sg P3 => ["пускай "]  + presentFuture ! (PRF (ASg Masc) P3) ;
-    VIMP Pl P3 => ["пускай "] + presentFuture ! (PRF APl P3) ;
-    VSUB (ASg Masc) => past ! (PSF (ASg Masc)) +[" бы"];
-    VSUB (ASg Fem) => past ! (PSF (ASg Fem)) +[" бы"];
-    VSUB (ASg Neut)  => past ! (PSF (ASg Neut) )+[" бы"];
-    VSUB APl  => past ! (PSF APl) +[" бы"];
+    VIMP Sg P3 => "пусть"  ++ presentFuture ! (PRF (ASg Masc) P3) ;
+    VIMP Pl P3 => "пусть" ++ presentFuture ! (PRF APl P3) ;
+    VSUB (ASg Masc) => past ! (PSF (ASg Masc)) ++"бы";
+    VSUB (ASg Fem) => past ! (PSF (ASg Fem)) ++"бы";
+    VSUB (ASg Neut)  => past ! (PSF (ASg Neut) )++"бы";
+    VSUB APl  => past ! (PSF APl) ++"бы";
     VIND (ASg _) (VPresent P1) => presentFuture ! ( PRF (ASg Masc) P1);
     VIND (ASg _) (VPresent P2) => presentFuture! (PRF (ASg Masc) P2) ;
     VIND (ASg _) (VPresent P3) => presentFuture ! (PRF (ASg Masc) P3) ;
     VIND APl (VPresent P1) => presentFuture ! (PRF APl P1);
     VIND APl (VPresent P2) => presentFuture ! (PRF APl P2);
     VIND APl (VPresent P3) => presentFuture ! (PRF APl P3);
-    VIND (ASg _) (VFuture P1) => ["буду "] + presentFuture ! (PRF (ASg Masc) P1) ;
-    VIND (ASg _) (VFuture P2) => ["будешь"] + presentFuture ! (PRF (ASg Masc) P2) ;
-    VIND (ASg _) (VFuture P3) => ["будет "] + presentFuture ! (PRF (ASg Masc) P3) ;
-    VIND APl (VFuture P1) => ["будем "] + presentFuture ! (PRF APl P1) ;
-    VIND APl (VFuture P2) => ["будете "] + presentFuture ! (PRF APl P2) ;
-    VIND APl (VFuture P3) => ["будут "] + presentFuture ! (PRF APl P3) ;
+    VIND (ASg _) (VFuture P1) => "буду" ++ inf ;
+    VIND (ASg _) (VFuture P2) => "будешь" ++ inf ;
+    VIND (ASg _) (VFuture P3) => "будет" ++ inf ;
+    VIND APl (VFuture P1) => "будем" ++ inf ;
+    VIND APl (VFuture P2) => "будете" ++ inf ;
+    VIND APl (VFuture P3) => "будут" ++ inf ;
     VIND (ASg Masc) VPast   => past ! (PSF (ASg Masc)) ;
     VIND (ASg Fem) VPast  => past ! (PSF (ASg Fem) ) ;
     VIND (ASg Neut) VPast  => past ! (PSF (ASg Neut))  ;
@@ -1776,17 +1785,17 @@ oper
  oper perfectiveActivePattern: Str -> Str -> PresentVerb -> PastVerb -> AspectVoice = 
      \inf, imper, presentFuture, past -> { s=  table {
     VINF  => inf ;
-    VIMP Sg P1 => ["давайте "]+ presentFuture ! (PRF (ASg Masc) P1);
-    VIMP Pl P1 => ["давайте "] + presentFuture ! (PRF APl P1);
+    VIMP Sg P1 => "давайте"++ presentFuture ! (PRF (ASg Masc) P1);
+    VIMP Pl P1 => "давайте" ++ presentFuture ! (PRF APl P1);
     VIMP Sg P2 => imper ;
     VIMP Pl P2 => imper+"те" ;
-    VIMP Sg P3 => ["пускай "]  + presentFuture ! (PRF (ASg Masc) P3) ;
-    VIMP Pl P3 => ["пускай "] + presentFuture ! (PRF APl P3) ;
-    VSUB (ASg Masc) => past ! (PSF (ASg Masc)) +[" бы"];
-    VSUB (ASg Fem) => past ! (PSF (ASg Fem)) +[" бы"];
+    VIMP Sg P3 => "пусть" ++ presentFuture ! (PRF (ASg Masc) P3) ;
+    VIMP Pl P3 => "пусть" ++ presentFuture ! (PRF APl P3) ;
+    VSUB (ASg Masc) => past ! (PSF (ASg Masc)) ++"бы";
+    VSUB (ASg Fem) => past ! (PSF (ASg Fem)) ++"бы";
 
-    VSUB (ASg Neut)  => past ! (PSF (ASg Neut) )+[" бы"];
-    VSUB APl  => past ! (PSF APl) +[" бы"];
+    VSUB (ASg Neut)  => past ! (PSF (ASg Neut) )++"бы";
+    VSUB APl  => past ! (PSF APl) ++"бы";
     VIND (ASg _) (VPresent _) => [] ;
     VIND APl (VPresent P1) => nonExist ;
     VIND APl (VPresent P2) => nonExist ;
diff --git a/lib/resource-1.0/russian/NounRus.gf b/lib/resource-1.0/russian/NounRus.gf
index 11436ceb9..e7643b3f6 100644
--- a/lib/resource-1.0/russian/NounRus.gf
+++ b/lib/resource-1.0/russian/NounRus.gf
@@ -16,7 +16,7 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
       n = kazhduj.n ; 
       p = P3 ;
       pron = False;
-      g = kazhduj.g ;
+      g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g };
       anim = okhotnik.anim 
     } ;
 
@@ -87,8 +87,8 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
  --      3 => (ti_j_EndDecl n.s) ; 
  --      _ => uy_j_EndDecl n.s }  ;
 
-  OrdNumeral numeral = 
-   {s = \\ af => (uy_j_EndDecl (numeral.s ! caseAF af ! genAF af)).s!af} ;
+ -- OrdNumeral numeral = 
+ --  {s = \\ af => (uy_j_EndDecl (numeral.s ! caseAF af ! genAF af)).s!af} ;
 
     NumNumeral n = n ;
 
@@ -165,12 +165,12 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
 -- first place as common nouns, so that one can also have "a suggestion that...".
 
   SentCN idea x =
-    {s = \\n,c => idea.s ! n ! c ++ ["о том, что"] ++ x.s ; 
+    {s = \\n,c => idea.s ! n ! c ++ x.s ; 
      g = idea.g; anim = idea.anim
     } ;
 
   RelCN idea x =
-    {s = \\n,c => idea.s ! n ! c ++ ["о том, что"] ++ x.s !(gNum idea.g n)!c!idea.anim ; 
+    {s = \\n,c => idea.s ! n ! c ++ x.s !(gNum idea.g n)!c!idea.anim ; 
      g = idea.g; anim = idea.anim
     } ;
 
diff --git a/lib/resource-1.0/russian/ParadigmsRus.gf b/lib/resource-1.0/russian/ParadigmsRus.gf
index a8e4c8266..1ef1e971e 100644
--- a/lib/resource-1.0/russian/ParadigmsRus.gf
+++ b/lib/resource-1.0/russian/ParadigmsRus.gf
@@ -2,16 +2,16 @@
 
 --1 Russian Lexical Paradigms
 --
--- Janna Khegai 2003--2005
+-- Janna Khegai 2003--2006
 --
--- This is an API to the user of the resource grammar 
+-- This is an API for the user of the resource grammar 
 -- for adding lexical items. It gives functions for forming
 -- expressions of open categories: nouns, adjectives, verbs.
 -- 
 -- Closed categories (determiners, pronouns, conjunctions) are
 -- accessed through the resource syntax API, $Structural.gf$. 
 --
--- The main difference with $MorphoEng.gf$ is that the types
+-- The main difference with $MorphoRus.gf$ is that the types
 -- referred to are compiled resource grammar types. We have moreover
 -- had the design principle of always having existing forms, rather
 -- than stems, as string arguments of the paradigms.
@@ -20,9 +20,6 @@
 -- first we give a handful of patterns that aim to cover all
 -- regular cases. Then we give a worst-case function $mkC$, which serves as an
 -- escape to construct the most irregular words of type $C$.
--- However, this function should only seldom be needed: we have a
--- separate module $IrregularEng$, which covers all irregularly inflected
--- words.
 -- 
 -- The following modules are presupposed:
 
@@ -74,7 +71,7 @@ oper
   animate: Animacy;
   inanimate: Animacy; 
  
-   mkIndeclinableNoun: Str -> Gender -> Animacy -> N ; 
+  mkIndeclinableNoun: Str -> Gender -> Animacy -> N ; 
 
 -- Worst case - give six singular forms:
 -- Nominative, Genetive, Dative, Accusative, Instructive and Prepositional;
@@ -85,7 +82,8 @@ oper
 -- to the Nominative or the Genetive one) is actually of no help, 
 -- since there are a lot of exceptions and the gain is just one form less.
 
-  mkN  : (_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Animacy -> N ; 
+  mkN  : (nomSg, genSg, datSg, accSg, instSg, preposSg,
+          nomPl, genPl, datPl, accPl, instPl, preposPl: Str) -> Gender -> Animacy -> N ; 
 
      -- мужчина, мужчины, мужчине, мужчину, мужчиной, мужчине
      -- мужчины, мужчин, мужчинам, мужчин, мужчинами, мужчинах
@@ -104,7 +102,7 @@ oper
   nEdinica   : Str -> N ;    -- feminine, inanimate, ending with "-а", Inst -"единиц-ей"
   nZhenchina : Str -> N ;    -- feminine, animate, ending with "-a"
   nNoga      : Str -> N ;    -- feminine, inanimate, ending with "г_к_х-a"
-  nMalyariya  : Str -> N ;    -- feminine, inanimate, ending with "-ия"   
+  nMalyariya : Str -> N ;    -- feminine, inanimate, ending with "-ия"   
   nTetya     : Str -> N ;    -- feminine, animate, ending with "-я"   
   nBol       : Str -> N ;    -- feminine, inanimate, ending with "-ь"(soft sign)     
 
@@ -117,8 +115,8 @@ oper
 
 -- Masculine patterns. 
 
---Ending with consonant: 
-nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-ла"
+-- Ending with consonant: 
+  nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-ла"
 
   nBrat: Str -> N ;   -- animate, брат-ья
   nStul: Str -> N ;    -- same as above, but inanimate
@@ -143,7 +141,6 @@ nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-л
 -- Proper names.
 
   mkPN  : Str -> Gender -> Animacy -> PN ;          -- "Иван", "Маша"
-  regPN : Str -> PN ;
   nounPN : N -> PN ;
   
 -- On the top level, it is maybe $CN$ that is used rather than $N$, and
@@ -159,14 +156,10 @@ nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-л
 -- forms in the worst case:
 
 
---                        Masculine  | Feminine | Neutral | Plural
---  Nominative
---  Genitive
---  Dative
---  Accusative Inanimate
---  Accusative Animate
---  Instructive
---  Prepositional
+--  (Masculine  | Feminine | Neutral | Plural) *
+
+--  (Nominative | Genitive | Dative | Accusative Inanimate | Accusative Animate |
+--  Instructive | Prepositional)
 
 
 -- Notice that 4 short forms, which exist for some adjectives are not included 
@@ -176,22 +169,24 @@ nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-л
 -- mkA : ( : Str) -> A ;
 
 -- The regular function captures the variants for some popular adjective
--- endings below:
+-- endings below. The first string agrument is the masculine singular form, 
+-- the second is comparative:
   
    regA : Str -> Str -> A ;
 
+
 -- Invariable adjective is a special case.
 
    adjInvar : Str -> A ;          -- khaki, mini, hindi, netto
 
 -- Some regular patterns depending on the ending.
 
-   AStaruyj : Str -> Str -> A ;             -- ending with "-ый"
-   AMalenkij : Str -> Str -> A ;            -- ending with "-ий", Gen - "маленьк-ого"
-   AKhoroshij : Str -> Str -> A ;         --  ending with "-ий", Gen - "хорош-его"
-     AMolodoj : Str -> Str -> A ;             -- ending with "-ой", 
+   AStaruyj : Str -> Str -> A ;            -- ending with "-ый"
+   AMalenkij : Str -> Str -> A ;           -- ending with "-ий", Gen - "маленьк-ого"
+   AKhoroshij : Str -> Str -> A ;          -- ending with "-ий", Gen - "хорош-его"
+   AMolodoj : Str -> Str -> A ;            -- ending with "-ой", 
                                            -- plural - молод-ые"
-   AKakoj_Nibud : Str -> Str -> Str -> A ;  -- ending with "-ой", 
+   AKakoj_Nibud : Str -> Str -> Str -> A ; -- ending with "-ой", 
                                            -- plural - "как-ие"
 
 -- Two-place adjectives need a preposition and a case as extra arguments.
@@ -200,11 +195,11 @@ nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-л
 
 -- Comparison adjectives need a positive adjective 
 -- (28 forms without short forms). 
--- Taking only one comparative form (non-syntaxic) and 
--- only one superlative form (syntaxic) we can produce the
+-- Taking only one comparative form (non-syntactic) and 
+-- only one superlative form (syntactic) we can produce the
 -- comparison adjective with only one extra argument -
--- non-syntaxic comparative form.
--- Syntaxic forms are based on the positive forms.
+-- non-syntactic comparative form.
+-- Syntactic forms are based on the positive forms.
 
 
 --   mkADeg : A -> Str -> ADeg ;
@@ -215,8 +210,7 @@ nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-л
 
 --2 Adverbs
 
--- Adverbs are not inflected. Most lexical ones have position
--- after the verb. Some can be preverbal (e.g. "always").
+-- Adverbs are not inflected.
 
   mkAdv : Str -> Adv ;
 
@@ -228,30 +222,27 @@ nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-л
 -- 4(GenNum)(past) ](indicative)+ 4 (GenNum) (subjunctive) } 
 -- Participles (Present and Past) and Gerund forms are not included, 
 -- since they fuction more like Adjectives and Adverbs correspondingly
--- rather than verbs. Aspect regarded as an inherent parameter of a verb.
--- Notice, that some forms are never used for some verbs. Actually, 
--- the majority of verbs do not have many of the forms.
+-- rather than verbs. Aspect is regarded as an inherent parameter of a verb.
+-- Notice, that some forms are never used for some verbs. 
+
 Voice: Type; 
 Aspect: Type; 
---Tense : Type;  
 Bool: Type;
 Conjugation: Type ;
 
-first: Conjugation; -- "гуля-Ешь, гуля-Ем"
-firstE: Conjugation; -- Verbs with vowel "ё": "даёшь" (give), "пьёшь" (drink)  
-second: Conjugation; -- "вид-Ишь, вид-Им"
-mixed: Conjugation; -- "хоч-Ешь - хот-Им"
+first:   Conjugation; -- "гуля-Ешь, гуля-Ем"
+firstE:  Conjugation; -- Verbs with vowel "ё": "даёшь" (give), "пьёшь" (drink)  
+second:  Conjugation; -- "вид-Ишь, вид-Им"
+mixed:   Conjugation; -- "хоч-Ешь - хот-Им"
 dolzhen: Conjugation; -- irregular
 
-true: Bool;
+true:  Bool;
 false: Bool;
  
 active: Voice ;
 passive: Voice ;
 imperfective: Aspect;
 perfective: Aspect ;  
---present : Tense ;
---past : Tense ;
 
 
 -- The worst case need 6 forms of the present tense in indicative mood
@@ -260,7 +251,9 @@ perfective: Aspect ;
 -- (singular, second person: "беги"), an infinitive ("бежать").
 -- Inherent aspect should also be specified.
 
-   mkVerbum : Aspect -> (_,_,_,_,_,_,_,_,_ : Str) -> V ;
+   mkVerbum : Aspect -> (presentSgP1,presentSgP2,presentSgP3,
+                         presentPlP1,presentPlP2,presentPlP3,
+                         pastSgMasculine,imperative,infinitive: Str) -> V ;
 
 -- Common conjugation patterns are two conjugations: 
 --  first - verbs ending with "-ать/-ять" and second - "-ить/-еть".
@@ -273,7 +266,8 @@ perfective: Aspect ;
 -- So the definition for verb "любить"  looks like:
 -- regV Imperfective Second "люб" "лю" "любил" "люби" "любить";
 
-   regV :Aspect -> Conjugation -> (_,_,_,_,_ : Str) -> V ; 
+   regV :Aspect -> Conjugation -> (stemPresentSgP1,endingPresentSgP1,
+                         pastSgP1,imperative,infinitive : Str) -> V ; 
 
 -- For writing an application grammar one usualy doesn't need
 -- the whole inflection table, since each verb is used in 
@@ -293,11 +287,10 @@ perfective: Aspect ;
    mkV3  : V -> Str -> Str -> Case -> Case -> V3 ; -- "сложить письмо в конверт"
    dirV2    : V -> V2 ;                    -- "видеть", "любить"
    tvDirDir : V -> V3 ; 
-
---.                            
+                            
 -- The definitions should not bother the user of the API. So they are
 -- hidden from the document.
-
+--.
   Gender = MorphoRus.Gender ;
   Case = MorphoRus.Case ;
   Number = MorphoRus.Number ;
@@ -452,8 +445,6 @@ regN = \ray ->
        Masc => mkProperNameMasc ivan anim ; 
        _ => mkProperNameFem ivan anim
     } ** {lock_PN =<>};
-  regPN x = mkPN x masculine animate ;
-
   nounPN n = {s=\\c => n.s! SF Sg c; anim=n.anim; g=n.g; lock_PN=<>};
     
   mkCN = UseN;
diff --git a/lib/resource-1.0/russian/RelativeRus.gf b/lib/resource-1.0/russian/RelativeRus.gf
index b3966de39..d8a60dc47 100644
--- a/lib/resource-1.0/russian/RelativeRus.gf
+++ b/lib/resource-1.0/russian/RelativeRus.gf
@@ -20,7 +20,8 @@ concrete RelativeRus of Relative = CatRus ** open ResRus, MorphoRus in {
 -- deferred to $ExtRus.gf$ ("at which we are looking").
 
     RelSlash kotoruj yaVizhu =
-    {s = \\b,clf,gn, _ , anim => yaVizhu.s2 ++ kotoruj.s ! gn ! yaVizhu.c ! anim 
+    {s = \\b,clf,gn, _ , anim => yaVizhu.s2 ++ 
+         kotoruj.s ! gn ! yaVizhu.c ! anim 
          ++ yaVizhu.s!b!clf 
     } ;
 
diff --git a/lib/resource-1.0/russian/ResRus.gf b/lib/resource-1.0/russian/ResRus.gf
index 9165fa790..edfcf2533 100644
--- a/lib/resource-1.0/russian/ResRus.gf
+++ b/lib/resource-1.0/russian/ResRus.gf
@@ -107,6 +107,7 @@ oper
     PNoGen => variants {Masc ; Fem} --- the best we can do for ya, tu
     } ;
 
+
 oper
   extCase: PronForm -> Case = \pf -> case pf of 
    { PF Nom _ _ => Nom ;
@@ -194,7 +195,7 @@ oper
    case t of { Present => VPresent p ; PastRus => VPast; Future => VFuture p } ;
 
    getTense : Tense -> RusTense= \t ->
-   case t of { Pres => Present  ; Past => PastRus; _ => Future} ;
+   case t of { Pres => Present  ; Fut => Future; _ => PastRus} ;
 
   
    getVoice: VerbForm -> Voice = \vf ->
@@ -267,6 +268,15 @@ oper
       ClImper => VFORM Act (VIMP n p) 
    };
 
+   getPassVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of
+   { ClIndic Future _ => VFORM Pass (VIND (gNum g n) (VFuture p));
+     ClIndic PastRus _ => VFORM Pass (VIND (gNum g n) VPast);
+      ClIndic Present _ => VFORM Pass (VIND (gNum g n) (VPresent p));
+      ClCondit => VFORM Pass (VSUB (gNum g n));
+      ClInfinit => VFORM Pass VINF ;
+      ClImper => VFORM Pass (VIMP n p) 
+   };
+
 
 --2 For $Adjective$
 param
@@ -275,13 +285,25 @@ param
 oper
   Complement =  {s2 : Str ; c : Case} ;
 
+oper Refl ={s: Case => Str};
+oper sam: Refl=
+{s = table{
+     Nom => "сам";
+     Gen => "себя";
+     Dat => "себе";
+     Acc => "себя";
+     Inst => "собой";
+     Prepos => "себе"
+     }
+};
+
   pgNum : PronGen -> Number -> GenNum = \g,n -> 
     case n of 
    {   Sg => case g of 
                  { PGen Fem => ASg Fem ;
                    PGen Masc => ASg Masc ;
                    PGen Neut => ASg Neut ;
-                   _ => ASg Masc } ; 
+                   _ => ASg Masc } ; -- assuming pronoun "I" is a male
         Pl => APl
    } ;
               --    _  => variants {ASg Masc ; ASg Fem}  } ; 
@@ -293,7 +315,7 @@ oper numGNum : GenNum -> Number = \gn ->
    case gn of { APl => Pl ; _ => Sg } ;
 
 oper genGNum : GenNum -> Gender = \gn ->
-   case gn of { ASg Fem => Fem; _ => Masc } ;
+   case gn of { ASg Fem => Fem; ASg Masc => Masc; _ => Neut } ;
 
 oper numAF: AdjForm -> Number = \af ->
    case af of { AdvF => Sg; AF _ _  gn => (numGNum gn) } ;
diff --git a/lib/resource-1.0/russian/SentenceRus.gf b/lib/resource-1.0/russian/SentenceRus.gf
index 1fd376e39..40cc73efe 100644
--- a/lib/resource-1.0/russian/SentenceRus.gf
+++ b/lib/resource-1.0/russian/SentenceRus.gf
@@ -16,12 +16,13 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
                });
          ne = case b of {Pos=>""; Neg=>"не"};

          vizhu = tebyaNeVizhu.s ! clf ! (pgNum Ya.g Ya.n)! Ya.p;
+         khorosho = tebyaNeVizhu.s2 ;
          tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n 
        }
        in
        if_then_else Str tebyaNeVizhu.negBefore  
-        (ya ++ ne ++ vizhu ++ tebya)
-        (ya ++ vizhu ++ ne ++ tebya)
+        (ya ++ ne ++ vizhu ++ tebya ++ khorosho)
+        (ya ++ vizhu ++ ne ++ tebya ++ khorosho)
     } ;
 
 
@@ -44,7 +45,7 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
     SlashVVV2 ivan khotet lubit =
    { s=\\b,clf => ivan.s ! PF Nom No NonPoss ++ khotet.s! (getActVerbForm clf (pgen2gen ivan.g) ivan.n ivan.p) ++ lubit.s! VFORM Act VINF ;
     s2=lubit.s2; 
-    c=lubit.c                    };
+    c=lubit.c  };
 
     AdvSlash slash adv = {
       s  = \\b,clf => slash.s ! b ! clf ++ adv.s ;
@@ -61,19 +62,26 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
             _ => []
             }
         in
-        dont ++ inf.s ! ClImper ! (gNum g n )!P3++ 
+        dont ++ inf.s ! ClImper ! (gNum g n )!P2 ++ 
         inf.s2++inf.s3!g!n
     } ;
 
     EmbedS  s  = {s = "что" ++ s.s} ;
  -- In Russian "Whether you go" transformed in "go whether you":
     EmbedQS qs = {s = qs.s ! QIndir} ;
-    EmbedVP vp = {s = vp.s!ClInfinit!(ASg Masc) !P3} ;
+    EmbedVP vp = {s = vp.s2  ++ vp.s!ClInfinit!(ASg Masc) !P3 ++ vp.s3!Masc!Sg} ;
 
-    UseCl  t a p cl = {s = cl.s! p.p ! ClIndic (getTense t.t) a.a};
+    UseCl  t a p cl = {s = case t.t of { 
+      Cond => cl.s! p.p ! ClCondit ;
+      _ => cl.s! p.p ! ClIndic (getTense t.t) a.a}};
 
-    UseQCl t a p qcl= {s = qcl.s!p.p! ClIndic (getTense t.t) a.a };
-    UseRCl t a p rcl ={s = rcl.s! p.p ! ClIndic (getTense t.t) a.a };
+    UseQCl t a p qcl= {s = case t.t of { 
+      Cond => qcl.s! p.p ! ClCondit ;
+      _ => qcl.s!p.p! ClIndic (getTense t.t) a.a }};
+
+    UseRCl t a p rcl ={s = \\gn,c,anim => case t.t of { 
+      Cond => [", "] ++ rcl.s! p.p ! ClCondit ! gn !c !anim ;
+      _ => [", "] ++ rcl.s! p.p ! ClIndic (getTense t.t) a.a !gn !c !anim}};
 
 }
 
diff --git a/lib/resource-1.0/russian/StructuralRus.gf b/lib/resource-1.0/russian/StructuralRus.gf
index af758d0f9..5ae9c6941 100644
--- a/lib/resource-1.0/russian/StructuralRus.gf
+++ b/lib/resource-1.0/russian/StructuralRus.gf
@@ -45,13 +45,13 @@ lin
   here7to_Adv = ss "сюда" ;
   here7from_Adv = ss "отсюда" ;
   how_IAdv  = ss "как" ;
-  how8many_IDet   = skolkoSgDet ** {n = Sg; g = (PGen Neut); c= Gen}; 
+  how8many_IDet   = skolkoSgDet ** {n = Pl; g = (PGen Neut); c= Gen}; 
   i_Pron   = pronYa ;
   if_Subj    = ss "если" ;
   in8front_Prep  = { s = "перед" ; c = Inst};
   in_Prep  = { s = "в" ; c = Prepos };
   it_Pron    = pronOno ;
-  less_CAdv = ss "меньше" ;
+  less_CAdv = ss "менее" ;
   many_Det  = mnogoSgDet ** {n = Sg; g = (PGen Neut); c= Gen} ; 
   more_CAdv = ss "более" ;
   most_Predet   = bolshinstvoSgDet ** {n = Sg; g = (PGen Neut); c= Gen} ; 
diff --git a/lib/resource-1.0/russian/VerbRus.gf b/lib/resource-1.0/russian/VerbRus.gf
index 068c7c760..d6da11242 100644
--- a/lib/resource-1.0/russian/VerbRus.gf
+++ b/lib/resource-1.0/russian/VerbRus.gf
@@ -188,7 +188,8 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
 -- the verb parameter type.
 
   ComplVV putatsya bezhat =
-  { s =  \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p)  ++ bezhat.s!clf!gn!p ; 
+  { s =  \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn) 
+       (numGNum gn) p) ++ bezhat.s!ClInfinit !gn!p ; 
       asp = putatsya.asp ;
       w = Act;
       negBefore = True;
@@ -213,7 +214,10 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
     } ;
 
   ComplV2A  obechat tu molodoj =
-         {s  = \\clf,gn,p => obechat.s2++obechat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++  tu.s ! PF obechat.c No NonPoss ++molodoj.s!AF Inst tu.anim (pgNum tu.g tu.n) ; 
+    {s  = \\clf,gn,p => obechat.s2++
+          obechat.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ++  
+         tu.s ! PF obechat.c No NonPoss ++
+         molodoj.s!AF Inst tu.anim (pgNum tu.g tu.n) ; 
       asp = obechat.asp ;
       w = Act;
       negBefore = True;
@@ -225,11 +229,11 @@ concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
      asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
 
   AdVVP khorosho poet =
-    {s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = poet.s2 ++ khorosho.s; s3 = poet.s3;
+    {s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = khorosho.s ++ poet.s2; s3 = poet.s3;
      asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
 
 PassV2  se =
-    {s=\\clf,gn,p =>  se.s ! (getActVerbForm clf (genGNum gn) (numGNum gn) p) ; 
+    {s=\\clf,gn,p =>  se.s ! (getPassVerbForm clf (genGNum gn) (numGNum gn) p) ; 
     asp=se.asp; w=Pass;      s2 = se.s2;
       negBefore = True;
       s3 = table{_=> table{_ => ""}}
