concrete StructuralTha of Structural = CatTha ** 
  open StringsTha, ResTha, Prelude in {

  flags optimize=all ;

  lin
--  above_Prep = ss "above" ;
--  after_Prep = ss "after" ;
--  all_Predet = ss "all" ;
--  almost_AdA, almost_AdN = ss "almost" ;
--  although_Subj = ss "although" ;
--  always_AdV = ss "always" ;
--  and_Conj = ss "and" ** {n = Pl} ;
--  because_Subj = ss "because" ;
--  before_Prep = ss "before" ;
--  behind_Prep = ss "behind" ;
--  between_Prep = ss "between" ;
--  both7and_DConj = sd2 "both" "and" ** {n = Pl} ;
--  but_PConj = ss "but" ;
--  by8agent_Prep = ss "by" ;
--  by8means_Prep = ss "by" ;
  can8know_VV = {s = pen_s ; typ = VVPost} ;
  can_VV = {s = way_s ; typ = VVPost} ;
--  during_Prep = ss "during" ;
--  either7or_DConj = sd2 "either" "or" ** {n = Sg} ;
--  everybody_NP = regNP "everybody" Sg ;
--  every_Det = mkDeterminer Sg "every" ;
--  everything_NP = regNP "everything" Sg ;
--  everywhere_Adv = ss "everywhere" ;
--  few_Det = mkDeterminer Pl "few" ;
--  first_Ord = ss "first" ;
--  for_Prep = ss "for" ;
--  from_Prep = ss "from" ;
  he_Pron = ss khaw_s ;
--  here_Adv = ss "here" ;
--  here7to_Adv = ss ["to here"] ;
--  here7from_Adv = ss ["from here"] ;
--  how_IAdv = ss "how" ;
--  how8many_IDet = mkDeterminer Pl ["how many"] ;
--  if_Subj = ss "if" ;
--  in8front_Prep = ss ["in front of"] ;
  i_Pron  = ss chan_s ;
--  in_Prep = ss "in" ;
--  it_Pron  = mkNP "it" "it" "its" Sg P3 ;
--  less_CAdv = ss "less" ;
--  many_Det = mkDeterminer Pl "many" ;
--  more_CAdv = ss "more" ;
--  most_Predet = ss "most" ;
--  much_Det = mkDeterminer Sg "much" ;
  must_VV = {s = tog_s ; typ = VVPre} ;
--  no_Phr = ss "no" ;
--  on_Prep = ss "on" ;
--  one_Quant = mkDeterminer Sg "one" ;
--  only_Predet = ss "only" ;
--  or_Conj = ss "or" ** {n = Sg} ;
--  otherwise_PConj = ss "otherwise" ;
--  part_Prep = ss "of" ;
--  please_Voc = ss "please" ;
--  possess_Prep = ss "of" ;
--  quite_Adv = ss "quite" ;
  she_Pron = ss khaw_s ;
--  so_AdA = ss "so" ;
--  somebody_NP = regNP "somebody" Sg ;
--  someSg_Det = mkDeterminer Sg "some" ;
--  somePl_Det = mkDeterminer Pl "some" ;
--  something_NP = regNP "something" Sg ;
--  somewhere_Adv = ss "somewhere" ;
  that_Quant = ss nan_s ** {hasC = True} ;
--  that_NP = regNP "that" Sg ;
--  there_Adv = ss "there" ;
--  there7to_Adv = ss "there" ;
--  there7from_Adv = ss ["from there"] ;
--  therefore_PConj = ss "therefore" ;
--  these_NP = regNP "these" Pl ;
--  they_Pron = mkNP "they" "them" "their" Pl P3 ; 
--  this_Quant = mkQuant "this" "these" ;
--  this_NP = regNP "this" Sg ;
--  those_NP = regNP "those" Pl ;
--  through_Prep = ss "through" ;
--  too_AdA = ss "too" ;
--  to_Prep = ss "to" ;
--  under_Prep = ss "under" ;
--  very_AdA = ss "very" ;
  want_VV = {s = yaak_s ; typ = VVMid} ;
  we_Pron = ss raw_s ;
--  whatPl_IP = mkIP "what" "what" "what's" Sg ;
--  whatSg_IP = mkIP "what" "what" "what's" Sg ;
--  when_IAdv = ss "when" ;
--  when_Subj = ss "when" ;
--  where_IAdv = ss "where" ;
--  whichPl_IDet = mkDeterminer Pl ["which"] ;
--  whichSg_IDet = mkDeterminer Sg ["which"] ;
--  whoSg_IP = mkIP "who" "whom" "whose" Sg ;
--  whoPl_IP = mkIP "who" "whom" "whose" Pl ;
--  why_IAdv = ss "why" ;
--  without_Prep = ss "without" ;
--  with_Prep = ss "with" ;
--  yes_Phr = ss "yes" ;
  youSg_Pron = ss khun_s ;
  youPl_Pron = ss khun_s ;
  youPol_Pron = ss khun_s ;
--
--
--oper
--  mkQuant : Str -> Str -> {s : Number => Str} = \x,y -> {
--    s = table Number [x ; y]
--    } ;
--
}

