concrete CatTel of Cat = CommonX ** open ResTel, Prelude in {

  flags optimize=all_subs ;

  lincat
----
------ Tensed/Untensed
----
----    S  = {s : Str} ;
----    QS = {s : QForm => Str} ;
----    RS = {s : Agr => Str ; c : Case} ; -- c for it clefts
----    SSlash = {s : Str ; c2 : Str} ;
----
------ Sentence
----
--    Cl = ResTel.Clause ;
----    ClSlash = {
----      s : ResTel.Tense => Anteriority => CPolarity => Order => Str ;
----      c2 : Str
----      } ;
----    Imp = {s : CPolarity => ImpForm => Str} ;
----
------ Question
----
----    QCl = {s : ResTel.Tense => Anteriority => CPolarity => QForm => Str} ;
----    IP = {s : Case => Str ; n : Number} ;
----    IComp = {s : Str} ;    
----    IDet = {s : Str ; n : Number} ;
----    IQuant = {s : Number => Str} ;
----
------ Relative
----
----    RCl = {
----      s : ResTel.Tense => Anteriority => CPolarity => Agr => Str ; 
----      c : Case
----      } ;
----    RP = {s : RCase => Str ; a : RAgr} ;
----
------ Verb
----
--    VP = ResTel.VPH ;
--    VPSlash = ResTel.VPHSlash ;
----    Comp = {s : Agr => Str} ; 
----
------ Adjective
----
--    AP = ResTel.Adjective ;
----
------ Noun
----
    CN = ResTel.Noun ;
--    NP = ResTel.NP ;
--    Pron = {s : PronCase => Str ; a : Agr} ;
--    Det = {s : Gender => Case => Str ; n : Number} ;
----    Predet, Ord = {s : Str} ;
--    Num  = {s : Str ; n : Number} ;
----    Card = {s : Str; n : Number} ;
--    Quant = {s : Number => Gender => Case => Str} ;
--    Art = {s : Str} ;
----
------ Numeral
----
----    Numeral = {s : CardOrd => Str ; n : Number} ;
----    Digits  = {s : CardOrd => Str ; n : Number ; tail : DTail} ;
----
------ Structural
----
----    Conj = {s1,s2 : Str ; n : Number} ;
-------b    Conj = {s : Str ; n : Number} ;
-------b    DConj = {s1,s2 : Str ; n : Number} ;
----    Subj = {s : Str} ;
----    Prep = {s : Str} ;
----
------ Open lexical classes, e.g. Lexicon
----
--    V, VS, VQ, VA = Verb ; -- = {s : VForm => Str} ;
--    V2, V2A, V2Q, V2S = Verb ** {c2 : Compl} ;
----    V3 = Verb ** {c2, c3 : Str} ;
----    VV = {s : VVForm => Str ; isAux : Bool} ;
----    V2V = Verb ** {c2 : Str ; isAux : Bool} ;
----
--    A = ResTel.Adjective ; --- {s : Gender => Number => Case => Str} ;
----    A2 = {s : AForm => Str ; c2 : Str} ;
----
    N = ResTel.Noun ; --{s : Number => Case => Str ; g : Gender} ;
----    N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Str} ;
----    N3 = {s : Number => Case => Str ; g : Gender} ** {c2,c3 : Str} ;
--    PN = {s : Case => Str ; g : Gender} ;
----
}
