concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelude in {

  lincat

-- Tensed/Untensed

    S  = {s : Str} ;
    QS = {s : Bool => Str} ; -- True = direct question (with ma for sentential questions)
    RS = {s : Str} ;
    SSlash = {s : Str ; c2 : Preposition} ; 

-- Sentence

    Cl = Clause ; -- {s : Polarity => Aspect => Str ; np: Str ; vp: Polarity => Aspect => Str} ; 

    ClSlash = Clause ** {c2 : Preposition} ;

    Imp = {s : Polarity => Str} ;

-- Question

    QCl = {s : Bool => Polarity => Aspect => Str} ; -- True = direct question
    IP = {s : Str} ;
    IComp = {s : Str} ;    
    IDet = {s : Str ; detType : DetType} ;
    IQuant = {s : Str} ;

-- Relative

    RCl = {s : Polarity => Aspect => Str} ;
    RP = {s : Str} ;

-- Verb

    VP = ResChi.VP ; 
    Comp = ResChi.VP ;
    VPSlash = ResChi.VP ** {c2 : Preposition ; isPre : Bool} ; -- whether the missing arg is before verb

-- Adjective

    AP = ResChi.Adj ** {hasAdA : Bool} ;

-- Noun

    CN = ResChi.Noun ;
    NP, Pron = ResChi.NP ;
    Det = Determiner ;
    Quant = Determiner ** {pl : Str} ;
    Predet = {s : Str} ; ----
    Ord = {s : Str} ;
    Num = {s : Str ; numType : NumType} ;

    Adv = {s : Str ; advType : AdvType} ;

-- Numeral

    Numeral = {s,p : Str} ;
    Card, Digits = {s : Str} ;

-- Structural

    Conj = {s : ConjForm => {s1,s2 : Str}} ;    
    Subj = {prePart : Str ; sufPart : Str} ;
    Prep = Preposition ;

-- Open lexical classes, e.g. Lexicon

    V, VS, VQ, VA = Verb ; 
    V2, V2Q, V2S = Verb ** {c2 : Preposition ; hasPrep : Bool ; part : Str} ;
    V3, V2A, V2V = Verb ** {c2, c3 : Preposition ; hasPrep : Bool ; part : Str} ;
    VV = Verb ;

    A = ResChi.Adj ;
    A2 = ResChi.Adj ** {c2 : Preposition} ;

    N = ResChi.Noun ;
    N2 = ResChi.Noun ** {c2 : Preposition} ;
    N3 = ResChi.Noun ** {c2,c3 : Preposition} ;
    PN = ResChi.NP ;

-- overridden

    Temp  = {s : Str ; t : Aspect} ;
    Tense = {s : Str ; t : Aspect} ;
    Ant   = {s : Str ; t : Aspect} ;

}
