concrete IdiomPes of Idiom = CatPes ** open Prelude,ParadigmsPes,ResPes,(N=NounPes) in {

  flags optimize=all_subs ;
  flags coding = utf8;

lin

  ImpersCl vp = mkSClause " " (agrP3 Sg) vp ;
  GenericCl vp = mkSClause "آدم" (agrP3 Sg) vp ;

  CleftNP np rs =
	 let cl = mkSClause (np2str np) (np.a) (predV beVerb);
	  in
	   {s = \\t,p,o =>  cl.s ! t ! p ! o ++ rs2str Ke np.a rs};

  CleftAdv ad ss = { s = \\t,b,o => ad.s ++ ss.s ! Indic};

  ExistNP np =
    mkSClause [] (agrP3 (fromAgr np.a).n)
              (complSlash (predVc existVerb) np) ;

  ExistNPAdv np adv = ExistNP (N.AdvNP np adv) ;

  ExistIP ip =
    let cl = mkSClause ip.s (agrP3 ip.n) (predV beVerb);
    in {s = \\t,p => cl.s ! t ! p ! ODir};

  ProgrVP vp = predProg vp ;

  ImpPl1 vp = let a = agrP1 Pl in
    {s = "بیایید" ++ showVPH (VSubj Pos a) a vp } ;
	ImpP3 np vp =
    {s = "بگذارید" ++ np2str np ++ showVPH (VSubj Pos np.a) np.a vp};

oper
  existVerb : V2 = mkV2 (mkV "وجود" haveVerb) noPrep ;

}
