concrete QuestionTha of Question = CatTha ** 
  open ResTha, StringsTha, Prelude in {

  flags optimize=all_subs ;

  lin

-- pos. may, neg. chay may - not always the proper forms ---

    QuestCl cl = {s = cl.s ! ClQuest} ; 

---- order of IP and VP to be revisited: Smyth p. 160

    QuestVP qp vp = {s = (mkClause qp vp).s ! ClDecl} ;

    QuestSlash ip slash = {s = \\p => thbind (slash.s ! p) slash.c2 ip.s} ; 

    QuestIAdv iadv cl = {s = \\p => thbind (cl.s ! ClDecl ! p) iadv.s} ; 

    QuestIComp icomp np = {s = \\p => thbind np.s (polStr may_s p) icomp.s} ; 

    PrepIP p ip = thbind p ip ;

    AdvIP ip adv = thbind ip adv ;

    IdetCN det cn = 
      let cnc = if_then_Str det.hasC cn.c []
      in  mkNP (thbind cn.s det.s1 cnc det.s2) ;

    IdetIP idet = mkNP (thbind idet.s1 idet.s2) ;

    IdetQuant iquant num = {
      s1 = num.s ++bIND++ iquant.s1 ; --- is num even possible ??
      s2 = iquant.s2 ;
      hasC = iquant.hasC
      } ;

    AdvIAdv i a = thbind i a ;

    CompIAdv a = ss (thbind yuu_s a.s) ;

    CompIP ip = ss (thbind pen_s ip.s) ;

}

