concrete CatMay of Cat = CommonX - [IAdv] ** open ResMay, Prelude in {

  flags optimize=all_subs ;

  lincat

--2 Sentences and clauses
-- Constructed in SentenceMay, and also in IdiomMay

    S  = ResMay.Sentence ;
    QS = SS ;
    RS = ResMay.RS ;
    -- relative sentence. Tense and polarity fixed,
    -- but agreement may depend on the CN/NP it modifies.

    Cl = ResMay.Clause ;
    ClSlash = ResMay.ClSlash ;
    SSlash  = ResMay.Sentence ; -- sentence missing NP; e.g. "she has looked at"
    Imp     = {s : Number => Polarity => Str} ; -- imperative             e.g. "look at this"

--2 Questions and interrogatives

-- Constructed in QuestionMay.

    QCl = ResMay.Clause ;
    IComp = {s: Str} ;                -- interrogative complement of copula  e.g. "where"
    IDet = ResMay.Determiner ;  -- interrogative determiner            e.g. "how many"
    IQuant = ResMay.IQuant ;     -- interrogative quantifier            e.g. "which"
    IP = ResMay.IPhrase ;    -- interrogative pronoun               e.g. "who"
    IAdv = ResMay.IAdv ;

--2 Subord clauses and pronouns

    RCl = ResMay.RClause ;
    RP = SS ;

--2 Verb phrases

-- Constructed in VerbMay.

    VP = ResMay.VerbPhrase ;
    VPSlash = ResMay.VPSlash ;
    Comp = ResMay.VerbPhrase ;


--2 Adjectival phrases

-- Constructed in AdjectiveMay.

    AP = ResMay.AdjPhrase ;


--2 Nouns and noun phrases

-- Constructed in NounMay.
-- Many atomic noun phrases e.g. "everybody"
-- are constructed in StructuralMay.
-- The determiner structure is
-- ``` Predet (QuantSg | QuantPl Num) Ord
-- as defined in NounMay.

    CN = ResMay.CNoun ;
    NP = ResMay.NounPhrase ;
    Pron = ResMay.Pronoun ; --Pronouns need enough info to turn it into NP or Quant.
    Det = ResMay.Determiner ;
    Predet = SS ;
    Quant = ResMay.Quant ;
    Num = ResMay.Num ;
    Ord = {
      s : Str ; -- AForm => Str ; -- Ord can came from AP and become AP again
      -- n : Number -- Ord can come from Num, which has inherent number
      } ;
    DAP = ResMay.Determiner ;


--2 Numerals

-- Constructed in NumeralMay.

    Card = ResMay.CardNum ;
    Numeral = ResMay.CardOrdNum ;
    Digits = ResMay.DigNum ;
    Decimal = ResMay.DigNum**{hasDot : Bool} ;



--2 Structural words

-- Constructed in StructuralMay.
    Conj = {s2 : Str ; s1 : Str ; n : Number } ;
    Subj = SS ;
    Prep = ResMay.Preposition ;



--2 Words of open classes

-- These are constructed in LexiconMay and in
-- additional lexicon modules.

    -- TODO: eventually different lincats
    VS,    -- sentence-complement verb            e.g. "claim"
    VQ,    -- question-complement verb            e.g. "wonder"
    VA,    -- adjective-complement verb           e.g. "look"
    V = ResMay.Verb ;

    VV     -- verb-phrase-complement verb         e.g. "want"
      = SS ;

    V2A,   -- verb with NP and AP complement      e.g. "paint"
    V2V,   -- verb with NP and V complement       e.g. "cause"
    V2S,   -- Reverb with NP and S complement       e.g. "tell"
    V2Q,   -- verb with NP and Q complement       e.g. "ask"
    V2 = ResMay.Verb2 ;
    V3 = ResMay.Verb3 ;

    A = ResMay.Adjective ;
    A2  = ResMay.Adjective2 ;

    N = ResMay.Noun ;
    N2 = ResMay.Noun2 ;
    N3 = ResMay.Noun3 ;
    PN = ResMay.PNoun ;

    linref
        CN = linCN ;
        ClSlash = linClSlash ;
        RCl = linRCl ;
        Cl = linCl ;
        Det = linDet ;
}

--   Determiner : Type = Quant ** {
--     pr : Str ; -- prefix for numbers
--     n : NumType ; -- number as in 5 (noun in singular), Sg or Pl
--     } ;
