--# -path=.:../abstract:../../prelude

incomplete concrete ClausePredI of Clause = open Predic in {

  flags optimize=all ;

  lin

  SPredV  np v     = SPredVerb Vt_       np (UseV1 v) ComplNil ;
  SPredV2 np v x   = SPredVerb (Vt  CtN) np (UseV2 v) (ComplNP x) ;
----  SPredV3 np v x y = SPredVerb (VtN CtN) np (UseV3 v) (ComplAdd (Vt CtN) x (ComplNP y)) ;
----  SPredVS np v x   = SPredVerb (Vt  CtS) np (UseVS v) (ComplS x) ;

--  SPredPassV np v = PredVP np (UsePassV v) ;
--  SPredReflV2 np v = PredVP np (ComplReflV2 v) ;
{-
  SPredVV np v x = PredVP np (ComplVV v x) ;
  SPredVQ np v x = PredVP np (ComplVQ v x) ;
  SPredVA np v x = PredVP np (ComplVA v x) ;
  SPredV2A np v x y = PredVP np (ComplV2A v x y) ;
  SPredSubjV2V np v x y = PredVP np (ComplSubjV2V v x y) ;
  SPredObjV2V np v x y = PredVP np (ComplObjV2V v x y) ;
  SPredV2S np v x y = PredVP np (ComplV2S v x y) ;
  SPredV2Q np v x y = PredVP np (ComplV2Q v x y) ;

  SPredAP np v = PredVP np (PredAP v) ;
  SPredCN np v = PredVP np (PredCN v) ;
  SPredNP np v = PredVP np (PredNP v) ;
  SPredAdv np v = PredVP np (PredAdv v) ;

  SPredProgVP np vp = PredVP np (PredProgVP vp) ;

  QPredV np v = IntVP np (UseV v) ;
  QPredPassV np v = IntVP np (UsePassV v) ;
  QPredV2 np v x = IntVP np (ComplV2 v x) ;
  QPredV3 np v x y = IntVP np (ComplV3 v x y) ;
  QPredReflV2 np v = IntVP np (ComplReflV2 v) ;
  QPredVS np v x = IntVP np (ComplVS v x) ;
  QPredVV np v x = IntVP np (ComplVV v x) ;
  QPredVQ np v x = IntVP np (ComplVQ v x) ;
  QPredVA np v x = IntVP np (ComplVA v x) ;
  QPredV2A np v x y = IntVP np (ComplV2A v x y) ;
  QPredSubjV2V np v x y = IntVP np (ComplSubjV2V v x y) ;
  QPredObjV2V np v x y = IntVP np (ComplObjV2V v x y) ;
  QPredV2S np v x y = IntVP np (ComplV2S v x y) ;
  QPredV2Q np v x y = IntVP np (ComplV2Q v x y) ;

  QPredAP np v = IntVP np (PredAP v) ;
  QPredCN np v = IntVP np (PredCN v) ;
  QPredNP np v = IntVP np (PredNP v) ;
  QPredAdv np v = IntVP np (PredAdv v) ;

  QPredProgVP np vp = IntVP np (PredProgVP vp) ;

  RPredV np v = RelVP np (UseV v) ;
  RPredPassV np v = RelVP np (UsePassV v) ;
  RPredV2 np v x = RelVP np (ComplV2 v x) ;
  RPredV3 np v x y = RelVP np (ComplV3 v x y) ;
  RPredReflV2 np v = RelVP np (ComplReflV2 v) ;
  RPredVS np v x = RelVP np (ComplVS v x) ;
  RPredVV np v x = RelVP np (ComplVV v x) ;
  RPredVQ np v x = RelVP np (ComplVQ v x) ;
  RPredVA np v x = RelVP np (ComplVA v x) ;
  RPredV2A np v x y = RelVP np (ComplV2A v x y) ;
  RPredSubjV2V np v x y = RelVP np (ComplSubjV2V v x y) ;
  RPredObjV2V np v x y = RelVP np (ComplObjV2V v x y) ;
  RPredV2S np v x y = RelVP np (ComplV2S v x y) ;
  RPredV2Q np v x y = RelVP np (ComplV2Q v x y) ;

  RPredAP np v = RelVP np (PredAP v) ;
  RPredCN np v = RelVP np (PredCN v) ;
  RPredNP np v = RelVP np (PredNP v) ;
  RPredAdv np v = RelVP np (PredAdv v) ;

  RPredProgVP np vp = RelVP np (PredProgVP vp) ;

  IPredV v = UseVP (UseV v) ;
  IPredV2 v x = UseVP (ComplV2 v x) ;
  IPredPassV v = UseVP (UsePassV v) ;
  IPredV3 v x y = UseVP (ComplV3 v x y) ;
  IPredReflV2 v = UseVP (ComplReflV2 v) ;
  IPredVS v x = UseVP (ComplVS v x) ;
  IPredVV v x = UseVP (ComplVV v x) ;
  IPredVQ v x = UseVP (ComplVQ v x) ;
  IPredVA v x = UseVP (ComplVA v x) ;
  IPredV2A v x y = UseVP (ComplV2A v x y) ;
  IPredSubjV2V v x y = UseVP (ComplSubjV2V v x y) ;
  IPredObjV2V v x y = UseVP (ComplObjV2V v x y) ;
  IPredV2S v x y = UseVP (ComplV2S v x y) ;
  IPredV2Q v x y = UseVP (ComplV2Q v x y) ;

  IPredAP v = UseVP (PredAP v) ;
  IPredCN v = UseVP (PredCN v) ;
  IPredNP v = UseVP (PredNP v) ;
  IPredAdv v = UseVP (PredAdv v) ;

  IPredProgVP vp = UseVP (PredProgVP vp) ;
-}
{-
-- Use VPs

  IntVP = intVerbPhrase ;
  RelVP = relVerbPhrase ;


  PosVP tp = predVerbGroup True tp.a ;
  NegVP tp = predVerbGroup False tp.a ;

  AdvVP = adVerbPhrase ;
  SubjVP = subjunctVerbPhrase ;
-}

}