packages feed

gf-3.4: lib/src/japanese/SentenceJpn.gf

concrete SentenceJpn of Sentence = CatJpn
** open ResJpn, ParadigmsJpn, Prelude in {

flags coding = utf8 ;

  lin
      
    PredVP np vp = case np.needPart of {
      True => {
        s = table {
          Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++ 
                            vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
          Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++ 
                            vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p
          } ;
        te = table {
          Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++ 
                          vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
          Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++ 
                          vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p
          } ; 
        ba = table {
          Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++ 
                          vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
          Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++ 
                          vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p
          } ;
        subj = table {
          Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ;
          Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" 
          } ;
        pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
        pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
        pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
        changePolar = np.changePolar
        } ;
      False => {
        s = table {
          Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ 
                            vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
          Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ 
                            vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p
          } ; 
        te = table {
          Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++ 
                          vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
          Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++ 
                          vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p
          } ;
        ba = table {
          Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++ 
                          vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
          Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++ 
                          vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p
          } ;
        subj = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ;
        pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
        pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
        pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
        changePolar = np.changePolar
        } 
      } ;
    
    PredSCVP sc vp = case sc.isVP of {
      True => {
        s = table {
          Wa => \\st,t,p => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++ vp.prep ++ 
                            vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
          Ga => \\st,t,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++ 
                            vp.verb ! SomeoneElse ! Inanim ! st ! t ! p  
          } ;
        te = table {
          Wa => \\st,p => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++ 
                          vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
          Ga => \\st,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ 
                          vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p
          } ; 
        ba = table {
          Wa => \\st,p => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++ 
                          vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
          Ga => \\st,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ 
                          vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p
          } ;
        subj = table {
          Wa => \\st => sc.s ! Wa ! st ++ "ことは" ;
          Ga => \\st => sc.s ! Ga ! st ++ "ことが"
          } ;
        pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
        pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
        pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
        changePolar = False
        } ;
      False => {
        s = \\part,st,t,p => sc.s ! part ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++ 
                             vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
        te = \\part,st,p => sc.s ! part ! st ++ "ことが" ++ vp.obj ! st ++ 
                            vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
        ba = \\part,st,p => sc.s ! part ! st ++ "ことが" ++ vp.obj ! st ++ 
                            vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
        subj = \\part,st => sc.s ! part ! st ++ "ことが" ;
        pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
        pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
        pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
        changePolar = False
        } 
      } ;

    SlashVP np vpslash = {
      s = \\st,t,p => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++ 
                      vpslash.obj ! st ++ vpslash.s ! np.meaning ! Plain ! t ! p ;
      te = \\st,p => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++ 
                   vpslash.obj ! st ++ vpslash.te ! np.meaning ! p ;
      ba = \\st,p => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++ 
                   vpslash.obj ! st ++ vpslash.ba ! np.meaning ! p ;
      subj = table {
        Wa => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "は" ;
        Ga => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が"
        } ;
      pred = \\st,t,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.s ! np.meaning ! st ! t ! p ;
      pred_te = \\st,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.te ! np.meaning ! p ;
      pred_ba = \\st,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.ba ! np.meaning ! p ;
      changePolar = np.changePolar
      } ;
               
    AdvSlash clslash adv = {
      s = \\st,t,p => adv.s ! st ++ clslash.s ! st ! t ! p ;
      te = \\st,p => adv.s ! st ++ clslash.te ! st ! p ;
      ba = \\st,p => adv.s ! st ++ clslash.ba ! st ! p ;
      subj = \\part,st => adv.s ! st ++ clslash.subj ! part ! st ;
      pred = clslash.pred ;
      pred_te = clslash.pred_te ;
      pred_ba = clslash.pred_ba ;
      changePolar = clslash.changePolar
      } ;
          
    SlashPrep cl prep = {
      s = \\st,t,p => cl.s ! Ga ! st ! t ! p ++ prep.null ;
      te = \\st,p => cl.te ! Ga ! st ! p ++ prep.null ;
      ba = \\st,p => cl.ba ! Ga ! st ! p ++ prep.null ;
      subj = cl.subj ;
      pred = \\st,t,p => cl.pred ! st ! t ! p ++ prep.null ;
      pred_te = \\st,p => cl.pred_te ! st ! p ++ prep.null ;
      pred_ba = \\st,p => cl.pred_ba ! st ! p ++ prep.null ;
      changePolar = cl.changePolar
      } ;

    SlashVS np vs sslash = {
      s = \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ 
                      vs.prep ++ vs.s ! Plain ! t ! p ;
      te = \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ vs.prep ++ 
                     vs.te ! p ;
      ba = \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ 
                     vs.prep ++ vs.ba ! p ;
      subj = table {
        Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ;
        Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が"
        } ;
      pred = \\st,t,p => sslash.s ! st ++ vs.prep ++ vs.s ! st ! t ! p ;
      pred_te = \\st,p => sslash.s ! st ++ vs.prep ++ vs.te ! p ;
      pred_ba = \\st,p => sslash.s ! st ++ vs.prep ++ vs.ba ! p ;
      changePolar = np.changePolar
      } ;
    
    ImpVP vp = {
      s = table {
        Resp => table {
          Pos => vp.prepositive ! Resp ++ vp.obj ! Resp ++ vp.prep ++ 
                 vp.te ! SomeoneElse ! Anim ! Resp ! Pos ;
          Neg => vp.prepositive ! Resp ++ vp.obj ! Resp ++ vp.prep ++ 
                 vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! Neg ++ "で" 
          } ;
        Plain => table {
          Pos => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++ 
                 vp.i_stem ! SomeoneElse ! Anim ! Plain ++ "なさい" ;
          Neg => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++ 
                 vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! Pos ++ "な" 
          }
        }
      } ;
    
    EmbedS sent = {s = \\part,st => sent.subj ! part ! st ++ sent.pred ! Plain ; isVP = False} ;
    
    EmbedQS qs = {s = \\part,st => qs.s ! part ! Plain ; isVP = False} ;
    
    EmbedVP vp = {s = \\part,st => vp.verb ! SomeoneElse ! Inanim ! Plain ! TPres ! Pos ; 
                  isVP = True} ;
    
    UseCl t p cl = {
      s = \\part,st => case t.a of {
        Simul => case cl.changePolar of {
          False => t.s ++ p.s ++ cl.s ! part ! st ! t.t ! p.b ; 
          True => t.s ++ p.s ++ cl.s ! part ! st ! t.t ! Neg
          } ;
        Anter => case t.t of {
          TPres => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! Neg
            } ;
          TPast => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! Neg
            } ;
          TFut => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.s ! part ! st ! TPres ! p.b ;
            True => t.s ++ p.s ++ cl.s ! part ! st ! TPres ! Neg
            } 
          }
        } ;
      te = \\part,st => t.s ++ p.s ++ cl.te ! part ! st ! p.b ;
      ba = \\part,st => t.s ++ p.s ++ cl.ba ! part ! st ! p.b ;
      subj = cl.subj ;
      pred = \\st => case t.a of {
        Simul => case cl.changePolar of {
          False => t.s ++ p.s ++ cl.pred ! st ! t.t ! p.b ; 
          True => t.s ++ p.s ++ cl.pred ! st ! t.t ! Neg
          } ;
        Anter => case t.t of {
          TPres => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.pred ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ cl.pred ! st ! TPast ! Neg
            } ;
          TPast => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.pred ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ cl.pred ! st ! TPast ! Neg
            } ;
          TFut => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.pred ! st ! TPres ! p.b ;
            True => t.s ++ p.s ++ cl.pred ! st ! TPres ! Neg
            } 
          }
        } ;
      pred_te = \\st => cl.pred_te ! st ! p.b ;
      pred_ba = \\st => cl.pred_ba ! st ! p.b 
      } ; 
    
    UseQCl t p cl = {
      s = \\part,st => case t.a of {
        Simul => case cl.changePolar of {
          False => t.s ++ p.s ++ cl.s ! part ! st ! t.t ! p.b ;
          True => t.s ++ p.s ++ cl.s ! part ! st ! t.t ! Neg
          } ;
        Anter => case t.t of {
          TPres => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! Neg
            } ;
          TPast => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! Neg
            } ;
          TFut => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.s ! part ! st ! TPres ! p.b ;
            True => t.s ++ p.s ++ cl.s ! part ! st ! TPres ! Neg
            }
          } 
        } ;
      s_plain_pred = \\part,st => case t.a of {
        Simul => case cl.changePolar of {
          False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! t.t ! p.b ;
          True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! t.t ! Neg
          } ;
        Anter => case t.t of {
          TPres => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! Neg
            } ;
          TPast => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! Neg
            } ;
          TFut => case cl.changePolar of {
            False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPres ! p.b ;
            True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPres ! Neg
            }
          } 
        }
      } ;
          
    UseRCl t p rcl = {
      s = \\a,st => case t.a of {
        Simul => case rcl.changePolar of {
          False => t.s ++ p.s ++ rcl.s ! a ! st ! t.t ! p.b ; 
          True => t.s ++ p.s ++ rcl.s ! a ! st ! t.t ! Neg
          } ;
        Anter => case t.t of {
          TPres => case rcl.changePolar of {
            False => t.s ++ p.s ++ rcl.s ! a ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ rcl.s ! a ! st ! TPast ! Neg
            } ;
          TPast => case rcl.changePolar of {
            False => t.s ++ p.s ++ rcl.s ! a ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ rcl.s ! a ! st ! TPast ! Neg
            } ;
          TFut => case rcl.changePolar of {
            False => t.s ++ p.s ++ rcl.s ! a ! st ! TPres ! p.b ;
            True => t.s ++ p.s ++ rcl.s ! a ! st ! TPres ! Neg
            } 
          }
        } ;
      te = \\a,st => t.s ++ p.s ++ rcl.te ! a ! st ! p.b ;
      subj = rcl.subj ;
      pred = \\a,st => case t.a of {
        Simul => case rcl.changePolar of {
          False => t.s ++ p.s ++ rcl.pred ! a ! st ! t.t ! p.b ; 
          True => t.s ++ p.s ++ rcl.pred ! a ! st ! t.t ! Neg
          } ;
        Anter => case t.t of {
          TPres => case rcl.changePolar of {
            False => t.s ++ p.s ++ rcl.pred ! a ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ rcl.pred ! a ! st ! TPast ! Neg
            } ;
          TPast => case rcl.changePolar of {
            False => t.s ++ p.s ++ rcl.pred ! a ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ rcl.pred ! a ! st ! TPast ! Neg
            } ;
          TFut => case rcl.changePolar of {
            False => t.s ++ p.s ++ rcl.pred ! a ! st ! TPres ! p.b ;
            True => t.s ++ p.s ++ rcl.pred ! a ! st ! TPres ! Neg
            } 
          }
        } ;
      pred_te = \\a,st => t.s ++ p.s ++ rcl.pred_te ! a ! st ! p.b ;
      pred_ba = \\a,st => t.s ++ p.s ++ rcl.pred_ba ! a ! st ! p.b ;
      missingSubj = rcl.missingSubj
      } ; 
              
    UseSlash t p clslash = {
      s = \\st => case t.a of {
        Simul => case clslash.changePolar of {
          False => t.s ++ p.s ++ clslash.s ! st ! t.t ! p.b ; 
          True => t.s ++ p.s ++ clslash.s ! st ! t.t ! Neg
          } ;
        Anter => case t.t of {
          TPres => case clslash.changePolar of {
            False => t.s ++ p.s ++ clslash.s ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ clslash.s ! st ! TPast ! Neg
            } ;
          TPast => case clslash.changePolar of {
            False => t.s ++ p.s ++ clslash.s ! st ! TPast ! p.b ;
            True => t.s ++ p.s ++ clslash.s ! st ! TPast ! Neg
            } ;
          TFut => case clslash.changePolar of {
            False => t.s ++ p.s ++ clslash.s ! st ! TPres ! p.b ;
            True => t.s ++ p.s ++ clslash.s ! st ! TPres ! Neg
            } 
          }
        } ;
      te = \\st => clslash.te ! st ! p.b
      } ;
    
    AdvS adv s = {
      s = \\part,st => adv.s ! st ++ s.s ! part ! st ;
      te = \\part,st => adv.s ! st ++ s.te ! part ! st ;
      ba = \\part,st => adv.s ! st ++ s.ba ! part ! st ;
      subj = \\part,st => adv.s ! st ++ s.subj ! part ! st ;
      pred = s.pred ;
      pred_te = s.pred_te ;
      pred_ba = s.pred_ba
      } ;
    
    ExtAdvS adv s = {
      s = \\part,st => adv.s ! st ++ "、" ++ s.s ! part ! st ;
      te = \\part,st => adv.s ! st ++ "、" ++ s.te ! part ! st ;
      ba = \\part,st => adv.s ! st ++ "、" ++ s.ba ! part ! st ;
      subj = \\part,st => adv.s ! st ++ "、" ++ s.subj ! part ! st ;
      pred = s.pred ;
      pred_te = s.pred_te ;
      pred_ba = s.pred_ba
      } ;
      
    SSubjS s1 subj s2 = case subj.type of {
      If => {
        s = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.s ! Ga ! st ;
        te = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.te ! Ga ! st ;
        ba = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.ba ! Ga ! st ;
        subj = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.subj ! Ga ! st ;
        pred = s2.pred ;
        pred_te = s2.pred_te ;
        pred_ba = s2.pred_ba 
        } ;
      That => {
        s = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++ 
                         subj.s ++ s1.pred ! st ; 
        te = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++ 
                          subj.s ++ s1.pred_te ! st ; 
        ba = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++ 
                          subj.s ++ s1.pred_ba ! st ; 
        subj = \\part,st => s1.subj ! part ! st ;
        pred = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred ! st ;
        pred_te = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred_te ! st ;
        pred_ba = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred_ba ! st
        } ;
      OtherSubj => {
        s = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.s ! Ga ! st ;
        te = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.te ! Ga ! st ;
        ba = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.ba ! Ga ! st ;
        subj = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.subj ! Ga ! st ;
        pred = s2.pred ;
        pred_te = s2.pred_te ;
        pred_ba = s2.pred_ba
        } 
      } ;
          
    RelS sent rs = case rs.missingSubj of {
      True => {
        s = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ 
                         "ことが" ++ rs.pred ! Inanim ! st ;
        te = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ 
                          "ことが" ++ rs.pred_te ! Inanim ! st ;
        ba = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ 
                            "ことが" ++ rs.pred_ba ! Inanim ! st ;
        subj = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
                            "ことが" ;
        pred = \\st => rs.pred ! Inanim ! st ;
        pred_te = \\st => rs.pred_te ! Inanim ! st ;
        pred_ba = \\st => rs.pred_ba ! Inanim ! st
        } ;
      False => {
        s = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ 
                         "ことを" ++ rs.pred ! Inanim ! st ;
        te = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ 
                          "ことを" ++ rs.pred_te ! Inanim ! st ;
        ba = \\part,st => rs.subj ! Wa ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ 
                          "ことを" ++ rs.pred_ba ! Inanim ! st ;
        subj = \\part,st => rs.subj ! part ! st ;
        pred = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++ 
                       rs.pred ! Inanim ! st ;
        pred_te = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++ 
                          rs.pred_te ! Inanim ! st ;
        pred_ba = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++ 
                          rs.pred_ba ! Inanim ! st
        }
      } ;
}