      mkText : Phr -> (Punct) -> (Text) -> Text  -- Does she sleep? Yes. 
mkText (mkPhr (mkQS (mkCl she_NP sleep_V))) questMarkPunct (mkText (mkPhr yes_Utt) fullStopPunct)
      mkText : Utt ->  Text    -- Yes. 
mkText yes_Utt
      mkText : S   ->  Text    -- She slept. 
mkText (mkS pastTense (mkCl she_NP sleep_V))
      mkText : Cl  ->  Text    -- She sleeps.
mkText (mkCl she_NP sleep_V)
      mkText : QS  ->  Text    -- Did she sleep? 
mkText (mkQS pastTense (mkQCl (mkCl she_NP sleep_V)))
      mkText : (Pol) -> Imp ->  Text    -- Don't sleep!
mkText negativePol (mkImp sleep_V)
      mkText : Text -> Text -> Text  -- Where? Here. When? Now! 
mkText (mkText (mkPhr (mkUtt where_IAdv)) questMarkPunct (mkText (mkPhr (mkUtt here_Adv)))) (mkText (mkPhr (mkUtt when_IAdv)) questMarkPunct (mkText (mkPhr (mkUtt now_Adv)) exclMarkPunct))
--      emptyText : Text  -- (empty text)  
--emptyText
      fullStopPunct  : Punct   -- .   
mkText (mkPhr yes_Utt) fullStopPunct
      questMarkPunct : Punct   -- ?   
mkText (mkPhr yes_Utt) questMarkPunct
      exclMarkPunct  : Punct   -- !   
mkText (mkPhr yes_Utt) exclMarkPunct
      mkPhr : (PConj) -> Utt -> (Voc) -> Phr   -- but sleep, my friend   
mkPhr but_PConj (mkUtt (mkImp sleep_V)) (mkVoc (mkNP i_Pron friend_N))
      mkPhr : S -> Phr   -- she won't sleep
mkPhr (mkS futureTense negativePol (mkCl she_NP sleep_V))
      mkPhr : Cl -> Phr   -- she sleeps
mkPhr (mkCl she_NP sleep_V)
      mkPhr : QS -> Phr   -- would she sleep
mkPhr (mkQS conditionalTense (mkQCl (mkCl she_NP sleep_V)))  
      mkPhr : Imp -> Phr  -- sleep
mkPhr (mkImp sleep_V)
      mkPConj : Conj -> PConj   -- and   
mkPhr (mkPConj and_Conj) (mkUtt now_Adv)
      mkVoc : NP -> Voc  -- my friend
mkPhr yes_Utt (mkVoc (mkNP i_Pron friend_N))
      mkUtt : S -> Utt                     -- she slept     
mkUtt (mkS pastTense (mkCl she_NP sleep_V))
      mkUtt : Cl -> Utt                     -- she sleeps  
mkUtt (mkCl she_NP sleep_V)
      mkUtt : QS -> Utt                    -- who didn't sleep
mkUtt (mkQS pastTense negativePol (mkQCl who_IP sleep_V))   
      mkUtt : QCl -> Utt                   -- who sleeps 
mkUtt (mkQCl who_IP sleep_V) 
      mkUtt : (ImpForm) -> (Pol) -> Imp -> Utt  -- don't be men
mkUtt pluralImpForm negativePol (mkImp (mkVP man_N))
      mkUtt : IP   -> Utt     -- who
mkUtt who_IP
      mkUtt : IAdv -> Utt     -- why   
mkUtt why_IAdv
      mkUtt : NP   -> Utt     -- this man   
mkUtt (mkNP this_Det man_N)
      mkUtt : Adv  -> Utt     -- here
mkUtt here_Adv   
      mkUtt : VP   -> Utt     -- to sleep  
mkUtt (mkVP sleep_V)
      mkUtt : CN   -> Utt     -- beer
mkUtt (mkCN beer_N)      
      mkUtt : AP   -> Utt     -- good
mkUtt (mkAP good_A)   
      mkUtt : Card -> Utt     -- five  
mkUtt (mkCard (mkNumeral n5_Unit)) 
      lets_Utt : VP ->  Utt  -- let's sleep
mkPhr (lets_Utt (mkVP sleep_V))
      positivePol : Pol   -- she sleeps [default]    
mkS positivePol (mkCl she_NP sleep_V)
      negativePol : Pol   -- she doesn't sleep    
mkS negativePol (mkCl she_NP sleep_V)
      simultaneousAnt : Ant   -- she sleeps [default]
mkS simultaneousAnt (mkCl she_NP sleep_V)
      anteriorAnt : Ant   -- she has slept       --# notpresent   
mkS anteriorAnt (mkCl she_NP sleep_V)
      presentTense     : Tense  -- she sleeps [default]   
mkS presentTense (mkCl she_NP sleep_V)
      pastTense        : Tense  -- she slept           --# notpresent   
mkS pastTense (mkCl she_NP sleep_V)
      futureTense      : Tense  -- she will sleep        --# notpresent  
mkS futureTense (mkCl she_NP sleep_V)
      conditionalTense : Tense  -- she would sleep       --# notpresent   
mkS conditionalTense (mkCl she_NP sleep_V)
      singularImpForm : ImpForm   -- be a man [default]
mkUtt singularImpForm (mkImp (mkVP man_N))
      pluralImpForm   : ImpForm   -- be men 
mkUtt pluralImpForm (mkImp (mkVP man_N)) 
      politeImpForm   : ImpForm   -- be a man [polite singular]  
mkUtt politeImpForm (mkImp (mkVP man_N))
      mkS : (Tense) -> (Ant) -> (Pol) -> Cl  -> S -- she wouldn't have slept  
mkS conditionalTense anteriorAnt negativePol (mkCl she_NP sleep_V)
      mkS : Conj -> S -> S -> S   -- she sleeps and I run    
mkS and_Conj (mkS (mkCl she_NP sleep_V)) (mkS (mkCl i_NP run_V))
      mkS : Conj -> ListS  -> S   -- she sleeps, I run and you walk  
mkS and_Conj (mkListS (mkS (mkCl she_NP sleep_V)) (mkListS (mkS (mkCl i_NP run_V)) (mkS (mkCl (mkNP youSg_Pron) walk_V))))
      mkS : Adv -> S -> S         -- today, she sleeps 
mkS today_Adv (mkS (mkCl she_NP sleep_V))
      mkCl : NP -> V -> Cl                -- she sleeps   
mkCl she_NP sleep_V
      mkCl : NP -> V2 -> NP -> Cl         -- she loves him
mkCl she_NP love_V2 he_NP
      mkCl : NP -> V3 -> NP -> NP -> Cl   -- she sends it to him
mkCl she_NP send_V3 it_NP he_NP
      mkCl : NP  -> VV -> VP -> Cl        -- she wants to sleep
mkCl she_NP want_VV (mkVP sleep_V)
      mkCl : NP  -> VS -> S  -> Cl        -- she says that I sleep
mkCl she_NP say_VS (mkS (mkCl i_NP sleep_V))
      mkCl : NP  -> VQ -> QS -> Cl        -- she wonders who sleeps
mkCl she_NP wonder_VQ (mkQS (mkQCl who_IP sleep_V))
      mkCl : NP  -> VA -> A  -> Cl        -- she becomes old
mkCl she_NP become_VA old_A
      mkCl : NP  -> VA -> AP -> Cl        -- she becomes very old
mkCl she_NP become_VA (mkAP very_AdA old_A)
      mkCl : NP  -> V2A -> NP -> A  -> Cl -- she paints it red
mkCl she_NP paint_V2A it_NP red_A
      mkCl : NP  -> V2A -> NP -> AP -> Cl -- she paints it very red
mkCl she_NP paint_V2A it_NP (mkAP red_A)
      mkCl : NP  -> V2S -> NP -> S -> Cl  -- she answers to him that we sleep
mkCl she_NP answer_V2S he_NP (mkS (mkCl we_NP sleep_V))
      mkCl : NP  -> V2Q -> NP -> QS -> Cl -- she asks him who sleeps 
mkCl she_NP ask_V2Q he_NP (mkQS (mkQCl who_IP sleep_V))
      mkCl : NP  -> V2V -> NP -> VP -> Cl -- she begs him to sleep
mkCl she_NP beg_V2V he_NP (mkVP sleep_V)
      mkCl : NP -> A  -> Cl       -- she is old
mkCl she_NP old_A
      mkCl : NP -> A -> NP -> Cl  -- she is older than he   
mkCl she_NP old_A he_NP
      mkCl : NP -> A2 -> NP -> Cl -- she is married to him 
mkCl she_NP married_A2 he_NP
      mkCl : NP -> AP -> Cl    -- she is very old 
mkCl she_NP (mkAP very_AdA old_A)
      mkCl : NP -> NP -> Cl    -- she is the woman   
mkCl she_NP (mkNP the_Det woman_N)
      mkCl : NP -> N -> Cl     -- she is a woman   
mkCl she_NP woman_N
      mkCl : NP -> CN -> Cl    -- she is an old woman   
mkCl she_NP (mkCN old_A woman_N)
      mkCl : NP -> Adv -> Cl   -- she is here   
mkCl she_NP here_Adv
      mkCl : NP -> VP -> Cl    -- she always sleeps
mkCl she_NP (mkVP always_AdV (mkVP sleep_V))
      mkCl : N -> Cl           -- there is a house
mkCl house_N
---      mkCl : CN -> Cl          -- there is an old house 
--- mkCl (mkCN old_A house_N)
      mkCl : NP -> Cl          -- there are many houses 
mkCl (mkNP many_Det house_N)  
      mkCl : NP  -> RS -> Cl   -- it is she who sleeps
mkCl she_NP (mkRS (mkRCl which_RP (mkVP sleep_V)))
      mkCl : Adv -> S  -> Cl   -- it is here that she sleeps
mkCl here_Adv (mkS (mkCl she_NP sleep_V)) 
      mkCl : V -> Cl           -- it rains
mkCl rain_V0 
      mkCl : VP -> Cl          -- it is raining    
mkCl (progressiveVP (mkVP rain_V0))
      mkCl : SC -> VP -> Cl    -- that she sleeps is good
mkCl (mkSC (mkS (mkCl she_NP sleep_V))) (mkVP good_A)
      genericCl : VP ->  Cl    -- one sleeps
mkS (genericCl (mkVP sleep_V))              
      mkVP : V   -> VP                -- sleep
mkUtt (mkVP sleep_V) 
      mkVP : V2  -> NP -> VP          -- love him 
mkUtt (mkVP love_V2 he_NP) 
      mkVP : V3  -> NP -> NP -> VP    -- send it to him 
mkUtt (mkVP send_V3 it_NP he_NP) 
      mkVP : VV  -> VP -> VP          -- want to sleep
mkUtt (mkVP want_VV (mkVP sleep_V)) 
      mkVP : VS  -> S  -> VP          -- know that she sleeps
mkUtt (mkVP know_VS (mkS (mkCl she_NP sleep_V))) 
      mkVP : VQ  -> QS -> VP          -- wonder who sleeps  
mkUtt (mkVP wonder_VQ (mkQS (mkQCl who_IP sleep_V))) 
      mkVP : VA  -> AP -> VP          -- become red 
mkUtt (mkVP become_VA (mkAP red_A))
      mkVP : V2A -> NP -> AP -> VP    -- paint it red 
mkUtt (mkVP paint_V2A it_NP (mkAP red_A))
      mkVP : V2S -> NP -> S  -> VP    -- answer to him that we sleep
mkUtt (mkVP answer_V2S he_NP (mkS (mkCl she_NP sleep_V))) 
      mkVP : V2Q -> NP -> QS -> VP    -- ask him who sleeps
mkUtt (mkVP answer_V2S he_NP (mkQS (mkQCl who_IP sleep_V))) 
      mkVP : V2V -> NP -> VP -> VP    -- beg him to sleep
mkUtt (mkVP beg_V2V he_NP (mkVP sleep_V))
      mkVP : A -> VP               -- be old
mkUtt (mkVP old_A) 
      mkVP : A -> NP -> VP         -- be older than he 
mkUtt (mkVP old_A he_NP) 
      mkVP : A2 -> NP -> VP        -- be married to him
mkUtt (mkVP married_A2 he_NP)  
      mkVP : AP -> VP              -- be very old
mkUtt (mkVP (mkAP very_AdA old_A) 
      mkVP : N -> VP               -- be a woman
mkUtt (mkVP woman_N) 
      mkVP : CN -> VP              -- be an old woman 
mkUtt (mkVP (mkCN old_A woman_N)) 
      mkVP : NP -> VP              -- be the woman 
mkUtt (mkVP (mkNP the_Det woman_N)) 
      mkVP : Adv -> VP             -- be here 
mkUtt (mkVP here_Adv) 
      mkVP : VP -> Adv -> VP       -- sleep here
mkUtt (mkVP (mkVP sleep_V) here_Adv)
      mkVP : AdV -> VP -> VP       -- always sleep   
mkUtt (mkVP always_AdV (mkVP sleep_V))
      mkVP : VPSlash -> NP -> VP   -- paint it black  
mkUtt (mkVP (mkVPSlash paint_V2A (mkAP black_A)) it_NP)
      mkVP : VPSlash -> VP         -- paint itself black 
mkUtt (mkVP (mkVPSlash paint_V2A (mkAP black_A)))
      mkVP : Comp -> VP            -- be warm 
mkUtt (mkVP (mkComp (mkAP warm_A)))
      reflexiveVP : V2 -> VP       -- love itself
mkUtt (reflexiveVP love_V2)  
      mkVP : VPSlash -> VP         -- paint itself black 
mkUtt (reflexiveVP (mkVPSlash paint_V2A (mkAP black_A)))
      passiveVP : V2 ->       VP   -- be loved
mkUtt (passiveVP love_V2)
      passiveVP : V2 -> NP -> VP   -- be loved by her 
mkUtt (passiveVP love_V2 she_NP)
      progressiveVP : VP -> VP     -- be sleeping 
mkUtt (progressiveVP (mkVP sleep_V))
      mkComp : AP -> Comp -- very old 
mkComp (mkAP old_A)
      mkComp : NP -> Comp -- this man 
mkComp (mkNP this_Det man_N)
      mkComp : Adv -> Comp -- here
mkComp here_Adv 
      mkSC : S -> SC -- that she sleeps
mkSC (mkS (mkCl she_NP sleep_V))
      mkSC : QS -> SC -- who sleeps 
mkSC (mkQS (mkQCl who_IP sleep_V))
      mkSC : VP -> SC -- to sleep 
mkSC (mkVP sleep_V)
      mkImp : VP -> Imp                -- come to my house
mkImp (mkVP (mkVP come_V) (mkAdv to_Prep (mkNP i_Pron house_N)))
      mkImp : V  -> Imp                -- come
mkImp come_V
      mkImp : V2 -> NP -> Imp          -- take it
mkImp buy_V2 it_NP
      mkNP : Quant -> N  -> NP          -- this man
mkUtt (mkNP this_Quant man_N)
      mkNP : Quant -> CN -> NP          -- this old man
mkUtt (mkNP this_Quant (mkCN old_A man_N))
      mkNP : Quant -> Num -> CN -> NP   -- these five old men
mkUtt (mkNP this_Quant (mkNum (mkNumeral n5_Unit)) (mkCN old_A man_N))
      mkNP : Quant -> Num -> N  -> NP   -- these five men
mkUtt (mkNP this_Quant (mkNum (mkNumeral n5_Unit)) man_N)
      mkNP : Det -> CN -> NP      -- the first old man
mkUtt (mkNP (mkDet the_Quant (mkNum (mkNumeral n5_Unit))) (mkCN old_A man_N))
      mkNP : Det -> N -> NP       -- the first man   
mkUtt (mkNP (mkDet the_Quant (mkNum (mkNumeral n5_Unit))) man_N)
      mkNP : Numeral -> CN -> NP      -- fifty old men
mkUtt (mkNP (mkNumeral (tenfoldSub100 n5_Unit)) (mkCN old_A man_N))
      mkNP : Numeral -> N -> NP       -- fifty men  
mkUtt (mkNP (mkNumeral (tenfoldSub100 n5_Unit)) man_N)
      mkNP : Digits -> CN -> NP      -- 51 old men 
mkUtt (mkNP (mkDigits n5_Dig (mkDigits n1_Dig)) (mkCN old_A man_N))
      mkNP : Digits -> N -> NP       -- 51 men 
mkUtt (mkNP (mkDigits n5_Dig (mkDigits n1_Dig)) man_N)
--      mkNP : Card -> CN -> NP     -- forty-five old men   
--      mkNP : Card -> N -> NP       -- forty-five men   
      mkNP : Pron -> CN -> NP   -- my old man
mkUtt (mkNP i_Pron (mkCN old_A man_N))
      mkNP : Pron -> N  -> NP   -- my man
mkUtt (mkNP i_Pron man_N)
      mkNP : PN -> NP             -- Paris
mkUtt (mkNP paris_PN)
      mkNP : Pron -> NP           -- we
mkUtt (mkNP we_Pron)
      mkNP : Quant -> NP           -- this
mkUtt (mkNP this_Quant)  
      mkNP : Quant -> Num -> NP    -- these five  
mkUtt (mkNP this_Quant (mkNum (mkNumeral n5_Unit)))
      mkNP : Det -> NP             -- the five best  
mkUtt (mkNP (mkDet the_Quant (mkNum (mkNumeral n5_Unit)) (mkOrd good_A)))
      mkNP : CN -> NP  -- old beer   
mkUtt (mkNP (mkCN old_A beer_N))
      mkNP : N -> NP  -- beer
mkUtt (mkNP beer_N)
      mkNP : Predet -> NP -> NP  -- only this woman   
mkUtt (mkNP only_Predet (mkNP this_Det woman_N))
      mkNP : NP -> V2  -> NP     -- the man seen
mkUtt (mkNP (mkNP the_Det man_N) see_V2)
      mkNP : NP -> Adv -> NP     -- Paris today
mkUtt (mkNP (mkNP paris_PN) today_Adv)
      mkNP : NP -> RS -> NP      -- John, who walks
mkUtt (mkNP (mkNP john_PN) (mkRS (mkRCl which_RP (mkVP walk_V))))
      mkNP : Conj -> NP -> NP -> NP 
mkUtt (mkNP or_Conj (mkNP this_Det woman_N) (mkNP john_PN))
      mkNP : Conj -> ListNP -> NP  
mkUtt (mkNP or_Conj (mkListNP (mkNP this_Det woman_N) (mkListNP (mkNP john_PN) i_NP)))
--      i_NP : NP          -- I
--i_NP
--      you_NP : NP        -- you (singular)
--you_NP
--      youPol_NP : NP     -- you (polite singular)
--youPol_NP
--      he_NP : NP         -- he
--he_NP
--      she_NP : NP        -- she
--she_NP
--      it_NP : NP         -- it
--it_NP
--      we_NP : NP         -- we
--we_NP
--      youPl_NP : NP      -- you (plural)
--youPl_NP
--      they_NP : NP       -- they
--they_NP
--      mkDet : Quant ->  Det       -- this  
--      mkDet : Quant -> Card -> Det   -- these five
--      mkDet : Quant ->  Ord -> Det     -- the best
--      mkDet : Quant -> Num -> Ord -> Det  -- these five best  
--      mkDet : Quant -> Num -> Det -- these five  
--      mkDet : Card ->  Det     -- forty  
--      mkDet : Digits -> Det    -- 51
--      mkDet : Numeral -> Det  -- five 
--      mkDet : Pron -> Det     -- my
--      mkDet : Pron -> Num -> Det -- my five
--      the_Det   : Det -- the (house)
--      a_Det     : Det -- a (house)
--      theSg_Det : Det -- the (houses)
--      thePl_Det : Det -- the (houses)
--      aSg_Det   : Det -- a (house)
--      aPl_Det   : Det -- (houses)
--      mkQuant : Pron -> Quant   -- my  
--    the_Quant : Quant    -- the 
--    a_Quant   : Quant    -- a  
--      mkNum : Str -> Num   -- thirty-five (given by "35") 
      mkNum : Numeral -> Num  -- twenty  
mkNum (mkNumeral (tenfoldSub100 n2_Unit))
      mkNum : Digits -> Num   -- 21 
mkNum (mkDigits n2_Dig (mkDigits n1_Dig))
--      mkNum : Digit -> Num -- five
      mkNum : Card -> Num  -- almost ten
mkNum (mkCard almost_AdN (mkCard (mkNumeral n5_Unit))) 
      mkNum : AdN -> Card -> Num  -- almost ten
mkNum (mkCard almost_AdN (mkCard (mkNumeral n5_Unit)))
--      singularNum : Num              -- singular 
--      pluralNum : Num                -- plural 
--      mkCard : Str -> Card   -- thirty-five (given as "35")
      mkCard : Numeral -> Card   -- twenty  
mkCard (mkNumeral n7_Unit)
--      mkCard : Digits -> Card      -- 51  
--      mkCard : AdN -> Card -> Card  -- almost fifty
--      mkOrd : Numeral -> Ord   -- twentieth  
--      mkOrd : Digits -> Ord         -- 51st 
--      mkOrd : Digit -> Ord       -- fifth 
      mkOrd : A -> Ord           -- largest  
mkOrd small_A
      mkAdN : CAdv -> AdN  -- more than  
mkAdN more_CAdv
--      mkNumeral : Sub1000 -> Numeral -- coerce 1..999  
--      mkNumeral : Sub1000 -> Sub1000 -> Numeral -- 1000m + n  
--      mkNumeral : Str -> Numeral   -- thirty-five (given by "35") 
--      thousandfoldNumeral : Sub1000 -> Numeral -- 1000n  
--      mkSub1000 : Sub100 -> Sub1000 -- coerce 1..99  
--      mkSub1000 : Sub10 -> Sub1000 -- 100n  
--      mkSub1000 : Sub10 -> Sub100 -> Sub1000 -- 100m + n  
      mkSub100 : Unit -> Sub100            -- eight (coerce 1..9)  
mkSub100 n8_Unit
    mkSub100 : Unit -> Unit -> Sub100    -- 10m + n  
mkSub100 n8_Unit n3_Unit
    tenfoldSub100 : Unit -> Sub100 -- 10n  
mkSub100 n8_Unit
    n1_Unit : Unit -- one 
mkNumeral n1_Unit
    n2_Unit : Unit -- two  
mkNumeral n2_Unit
    n3_Unit : Unit -- three  
mkNumeral n3_Unit
    n4_Unit : Unit -- four  
mkNumeral n4_Unit
    n5_Unit : Unit -- five  
mkNumeral n5_Unit
    n6_Unit : Unit -- six  
mkNumeral n6_Unit
    n7_Unit : Unit -- seven  
mkNumeral n7_Unit
    n8_Unit : Unit -- eight  
mkNumeral n8_Unit
    n9_Unit : Unit -- nine  
mkNumeral n9_Unit
--      mkDigits : Str -> Digits -- 35 (from string "35")
      mkDigits : Dig -> Digits -- 4  
mkDigits n4_Dig
      mkDigits : Dig -> Digits -> Digits -- 1,233,486 
mkDigits n1_Dig (mkDigits n2_Dig (mkDigits n3_Dig (mkDigits n3_Dig (mkDigits n4_Dig (mkDigits n8_Dig (mkDigits n6_Dig)))))) 
--      n0_Dig : Dig   -- 0  
--      n1_Dig : Dig   -- 1  
--      n2_Dig : Dig   -- 2   
--      n3_Dig : Dig   -- 3      
--      n4_Dig : Dig   -- 4  
--      n5_Dig : Dig   -- 5      
--      n6_Dig : Dig   -- 6      
--      n7_Dig : Dig   -- 7           
--      n8_Dig : Dig   -- 8      
--      n9_Dig : Dig   -- 9  
      mkCN : N  -> CN            -- house 
mkCN house_N 
      mkCN : N2 -> NP -> CN      -- mother of the king   
mkCN mother_N2 (mkNP the_Det king_N)
      mkCN : N3 -> NP -> NP -> CN  -- distance from this city to Paris
mkCN distance_N3 (mkNP this_Det city_N) (mkNP paris_PN) 
      mkCN : N2 -> CN            -- mother 
mkCN mother_N2
      mkCN : N3 -> CN            -- distance 
mkCN distance_N3
      mkCN :  A ->  N  -> CN     -- big house
mkCN big_A house_N  
      mkCN :  A -> CN  -> CN     -- big blue house  
mkCN big_A (mkCN blue_A house_N)
      mkCN : AP ->  N  -> CN     -- very big house
mkCN (mkAP very_AdA big_A) house_N  
      mkCN : AP -> CN  -> CN     -- very big blue house  
mkCN (mkAP very_AdA big_A) (mkCN blue_A house_N)  
      mkCN :  N -> RS  -> CN     -- man whom she loves 
mkCN man_N (mkRS (mkRCl which_RP she_NP love_V2))
      mkCN : CN -> RS  -> CN     -- old man whom she loves 
mkCN (mkCN old_A man_N) (mkRS (mkRCl which_RP she_NP love_V2)) 
      mkCN :  N -> Adv -> CN     -- house on the hill 
mkCN house_N (mkAdv on_Prep (mkNP the_Det hill_N))
      mkCN : CN -> Adv -> CN     -- big house on the hill 
mkCN (mkCN big_A house_N) (mkAdv on_Prep (mkNP the_Det hill_N))
      mkCN : CN -> S   -> CN     -- rule that she sleeps 
mkNum (mkCard almost_AdN (mkCard (mkNumeral n5_Unit)))
      mkCN : CN -> QS  -> CN     -- question if she sleeps 
mkNum (mkCard almost_AdN (mkCard (mkNumeral n5_Unit)))
      mkCN : CN -> VP  -> CN     -- reason to sleep 
mkCN (mkCN reason_N) (mkVP sleep_V)
      mkCN : CN -> SC  -> CN     -- reason to sleep  
mkCN (mkCN reason_N) (mkVP sleep_V)
      mkCN :  N -> NP  -> CN     -- king John
mkCN king_N (mkNP john_PN) 
      mkCN : CN -> NP  -> CN     -- old king John
mkCN (mkCN old_A king_N) (mkNP john_PN)
      mkAP : A -> AP           -- warm   
mkAP warm_A
      mkAP : A -> NP -> AP     -- warmer than Paris    
mkAP warm_A (mkNP paris_PN)
      mkAP : A2 -> NP -> AP    -- married to her
mkAP married_A2 she_NP 
      mkAP : A2 -> AP          -- married 
mkAP married_A2
      mkAP : AP -> S -> AP    -- probable that she sleeps  
mkCl (mkVP (mkAP (mkAP good_A) (mkS (mkCl she_NP sleep_V))))
      mkAP : AP -> QS -> AP    -- uncertain who sleeps  
mkCl (mkVP (mkAP (mkAP uncertain_A) (mkQS (mkQCl who_IP sleep_V))))
      mkAP : AP -> VP -> AP    -- ready to go 
mkCl she_NP (mkAP (mkAP ready_A) (mkVP sleep_V))
--      mkAP : AP -> SC -> AP    -- ready to go  
      mkAP : AdA -> A -> AP   -- very old
mkAP very_AdA old_A
      mkAP : AdA -> AP -> AP   -- very very old  
mkAP very_AdA (mkAP very_AdA old_A)
      mkAP : Conj -> AP -> AP -> AP -- old and big 
mkAP or_Conj (mkAP old_A) (mkAP young_A)
      mkAP : Conj -> ListAP -> AP   -- old, big and warm 
mkAP and_Conj (mkListAP (mkAP old_A) (mkListAP (mkAP big_A) (mkAP warm_A)))
      mkAP : Ord   -> AP              -- oldest 
mkAP (mkOrd old_A)
      mkAP : CAdv -> AP -> NP -> AP   -- as old as she
mkAP as_CAdv (mkAP old_A) she_NP
      reflAP   : A2 -> AP             -- married to himself 
mkUtt (reflAP married_A2)
      comparAP : A -> AP              -- warmer 
mkUtt (comparAP warm_A)
      mkAdv : A -> Adv            -- warmly   
mkAdv warm_A
      mkAdv : Prep -> NP -> Adv          -- in the house    
mkAdv in_Prep (mkNP the_Det house_N)
      mkAdv : Subj -> S -> Adv   -- when she sleeps
mkAdv when_Subj (mkS (mkCl she_NP sleep_V))
      mkAdv : CAdv -> A -> NP -> Adv   -- more warmly than he
mkAdv more_CAdv warm_A he_NP  
      mkAdv : CAdv -> A -> S -> Adv    -- more warmly than he runs 
mkAdv more_CAdv warm_A (mkS (mkCl he_NP run_V))  
      mkAdv : AdA -> Adv -> Adv        -- very warmly
mkAdv very_AdA (mkAdv warm_A) 
      mkAdv : Conj -> Adv -> Adv -> Adv  -- here and now
mkAdv and_Conj here_Adv now_Adv
      mkAdv : Conj -> ListAdv -> Adv   -- with her, here and now  
mkAdv and_Conj (mkListAdv (mkAdv with_Prep she_NP) (mkListAdv here_Adv now_Adv))
      mkQS : (Tense) -> (Ant) -> (Pol) -> QCl -> QS -- who wouldn't have slept 
mkQS conditionalTense anteriorAnt negativePol (mkQCl who_IP sleep_V)
      mkQS : Cl -> QS -- 
mkQS (mkQCl who_IP sleep_V)
      mkQCl : Cl -> QCl -- does she sleep
mkQCl (mkCl she_NP sleep_V)
      mkQCl : IP -> VP -> QCl               -- who sleeps      
mkQCl who_IP (mkVP (mkVP sleep_V) here_Adv)
      mkQCl : IP -> V -> QCl                -- who sleeps
mkQCl who_IP sleep_V
      mkQCl : IP -> V2 -> NP -> QCl         -- who loves her
mkQCl who_IP love_V2 she_NP
      mkQCl : IP -> V3 -> NP -> NP -> QCl   -- who sends it to her
mkQCl who_IP send_V3 it_NP she_NP
      mkQCl : IP  -> VV -> VP -> QCl        -- who wants to sleep
mkQCl who_IP want_VV (mkVP sleep_V)
      mkQCl : IP  -> VS -> S  -> QCl        -- who says that I sleep
mkQCl who_IP say_VS (mkS (mkCl i_NP sleep_V))
      mkQCl : IP  -> VQ -> QS -> QCl        -- who wonders who sleeps
mkQCl who_IP wonder_VQ (mkQS (mkQCl who_IP sleep_V))
      mkQCl : IP  -> VA -> A  -> QCl        -- who becomes old
mkQCl who_IP become_VA old_A
      mkQCl : IP  -> VA -> AP -> QCl        -- who becomes very old
mkQCl who_IP become_VA (mkAP very_AdA old_A)
      mkQCl : IP  -> V2A -> NP -> A  -> QCl -- who paints it red
mkQCl who_IP paint_V2A it_NP red_A
      mkQCl : IP  -> V2A -> NP -> AP -> QCl -- who paints it very red
mkQCl who_IP paint_V2A it_NP (mkAP very_AdA red_A)
      mkQCl : IP  -> V2S -> NP -> S -> QCl  -- who answers to him that we sleep
mkQCl who_IP answer_V2S he_NP (mkS (mkCl we_NP sleep_V))
      mkQCl : IP  -> V2Q -> NP -> QS -> QCl -- who asks him who sleeps 
mkQCl who_IP ask_V2Q he_NP (mkQS (mkQCl who_IP sleep_V))
      mkQCl : IP  -> V2V -> NP -> VP -> QCl -- who begs him to sleep
mkQCl who_IP beg_V2V he_NP (mkVP sleep_V)
      mkQCl : IP -> A  -> QCl       -- who is old
mkQCl who_IP old_A
      mkQCl : IP -> A -> NP -> QCl  -- who is older than he   
mkQCl who_IP old_A he_NP
      mkQCl : IP -> A2 -> NP -> QCl -- who is married to him 
mkQCl who_IP married_A2 he_NP
      mkQCl : IP -> AP -> QCl    -- who is very old 
mkQCl who_IP (mkAP very_AdA old_A)
      mkQCl : IP -> NP -> QCl    -- who is the woman   
mkQCl who_IP (mkNP the_Det woman_N)
      mkQCl : IP -> N -> QCl     -- who is a woman   
mkQCl who_IP woman_N
      mkQCl : IP -> CN -> QCl    -- who is an old woman   
mkQCl who_IP (mkCN old_A woman_N)
      mkQCl : IP -> Adv -> QCl   -- who is here   
mkQCl who_IP here_Adv
      mkQCl : IP -> VP -> QCl    -- who always sleeps
mkQCl who_IP (mkVP always_AdV (mkVP sleep_V))
      mkQCl : IAdv -> Cl -> QCl            -- why does she sleep
mkQCl why_IAdv (mkCl she_NP sleep_V)     
      mkQCl : Prep -> IP -> Cl -> QCl      -- with whom does she sleep
mkQCl with_Prep who_IP (mkCl she_NP sleep_V)      
      mkQCl : IAdv -> NP -> QCl   -- where is she
mkQCl where_IAdv she_NP 
      mkQCl : IComp -> NP -> QCl   -- who is this man
mkQCl (mkIComp who_IP) (mkNP this_Det man_N)
      mkQCl : IP -> QCl         -- which cities are there
mkQCl (mkIP which_IQuant city_N)
      mkQCl : IP -> NP -> V2 -> QCl        -- who does she love 
mkQCl who_IP she_NP
      mkQCl : IP -> ClSlash -> QCl         -- who does she love today   --:   
mkQCl who_IP (mkClSlash (mkClSlash she_NP love_V2) today_Adv)
      mkIP : IDet -> CN -> IP          -- which five big cities
mkIP (mkIDet which_IQuant (mkNum (mkNumeral n5_Unit))) (mkCN big_A city_N)    
      mkIP : IDet -> N -> IP      -- which five cities
mkIP (mkIDet which_IQuant (mkNum (mkNumeral n5_Unit))) city_N    
      mkIP : IDet -> IP      -- which five 
mkIP (mkIDet which_IQuant (mkNum (mkNumeral n5_Unit)))
      mkIP : IQuant -> CN -> IP    -- which big city
mkIP which_IQuant (mkCN big_A city_N)    
      mkIP : IQuant -> Num -> CN -> IP          -- which five big cities
mkIP which_IQuant (mkNum (mkNumeral n5_Unit)) (mkCN big_A city_N)    
      mkIP : IQuant -> N -> IP      -- which city
mkIP which_IQuant city_N
      mkIP : IP -> Adv -> IP        -- who in Paris
mkIP who_IP (mkAdv in_Prep (mkNP paris_PN))
      what_IP : IP  -- what (singular)
mkUtt what_IP
      who_IP : IP   -- who (singular)
mkUtt who_IP
      mkIAdv : Prep -> IP -> IAdv --  in which city 
mkIAdv in_Prep (mkIP which_IQuant city_N)
      mkIAdv : IAdv -> Adv -> IAdv --  where in Paris
mkIAdv where_IAdv (mkAdv in_Prep (mkNP paris_PN))  
      mkIDet : IQuant -> Num -> IDet          -- which (songs) 
mkIDet which_IQuant pluralNum
      mkIDet : IQuant -> IDet
mkIDet which_IQuant      
      which_IDet : IDet 
mkIP which_IDet
      whichPl_IDet : IDet 
mkIP whichPl_IDet
      mkRS : (Tense) -> (Ant) -> (Pol) -> RCl -> RS -- that wouldn't have slept 
mkRS conditionalTense anteriorAnt negativePol (mkRCl which_RP sleep_V)
      mkRS : RCl -> RS -- 
mkRS (mkRCl which_RP sleep_V)
      mkRCl : RP -> VP -> RCl               -- who sleeps      
mkRCl which_RP (mkVP (mkVP sleep_V) here_Adv)
      mkRCl : RP -> V -> RCl                -- who sleeps
mkRCl which_RP sleep_V
      mkRCl : RP -> V2 -> NP -> RCl         -- who loves her
mkRCl which_RP love_V2 she_NP
      mkRCl : RP -> V3 -> NP -> NP -> RCl   -- who sends it to her
mkRCl which_RP send_V3 it_NP she_NP
      mkRCl : RP  -> VV -> VP -> RCl        -- who wants to sleep
mkRCl which_RP want_VV (mkVP sleep_V)
      mkRCl : RP  -> VS -> S  -> RCl        -- who says that I sleep
mkRCl which_RP say_VS (mkS (mkCl i_NP sleep_V))
      mkRCl : RP  -> VQ -> QS -> RCl        -- who wonders who sleeps
mkRCl which_RP wonder_VQ (mkQS (mkQCl who_IP sleep_V))
      mkRCl : RP  -> VA -> A  -> RCl        -- who becomes old
mkRCl which_RP become_VA old_A
      mkRCl : RP  -> VA -> AP -> RCl        -- who becomes very old
mkRCl which_RP become_VA (mkAP very_AdA old_A)
      mkRCl : RP  -> V2A -> NP -> A  -> RCl -- who paints it red
mkRCl which_RP paint_V2A it_NP red_A
      mkRCl : RP  -> V2A -> NP -> AP -> RCl -- who paints it very red
mkRCl which_RP paint_V2A it_NP (mkAP red_A)
      mkRCl : RP  -> V2S -> NP -> S -> RCl  -- who answers to him that we sleep
mkRCl which_RP answer_V2S he_NP (mkS (mkCl we_NP sleep_V))
      mkRCl : RP  -> V2Q -> NP -> QS -> RCl -- who asks him who sleeps 
mkRCl which_RP ask_V2Q he_NP (mkQS (mkQCl who_IP sleep_V))
      mkRCl : RP  -> V2V -> NP -> VP -> RCl -- who begs him to sleep
mkRCl which_RP beg_V2V he_NP (mkVP sleep_V)
      mkRCl : RP -> A  -> RCl       -- who is old
mkRCl which_RP old_A
      mkRCl : RP -> A -> NP -> RCl  -- who is older than he   
mkRCl which_RP old_A he_NP
      mkRCl : RP -> A2 -> NP -> RCl -- who is married to him 
mkRCl which_RP married_A2 he_NP
      mkRCl : RP -> AP -> RCl    -- who is very old 
mkRCl which_RP (mkAP very_AdA old_A)
      mkRCl : RP -> NP -> RCl    -- who is the woman   
mkRCl which_RP (mkNP the_Det woman_N)
      mkRCl : RP -> N -> RCl     -- who is a woman   
mkRCl which_RP woman_N
      mkRCl : RP -> CN -> RCl    -- who is an old woman   
mkRCl which_RP (mkCN old_A woman_N)
      mkRCl : RP -> Adv -> RCl   -- who is here   
mkRCl which_RP here_Adv
      mkRCl : RP -> VP -> RCl    -- who always sleeps
mkRCl which_RP (mkVP always_AdV (mkVP sleep_V))
      mkRCl : RP -> NP -> V2 -> RCl        -- who she loves 
mkRCl which_RP she_NP love_V2
      mkRCl : RP -> ClSlash -> RCl         -- who she loves today   --:   
mkRCl which_RP (mkClSlash (mkClSlash she_NP love_V2) today_Adv)
      which_RP : RP                        -- which 
which_RP
      mkRP : Prep -> NP -> RP -> RP    -- all the cities in which
mkRP in_Prep (mkNP all_Predet (mkNP the_Quant pluralNum city_N)) which_RP
      mkSSlash : Temp -> Pol -> ClSlash -> SSlash  
mkSSlash (mkTemp pastTense anteriorAnt) negativePol (mkClSlash she_NP (mkVPSlash see_V2))
      mkClSlash : NP -> VPSlash -> ClSlash        -- (whom) he sees here  
mkQCl who_IP (mkClSlash she_NP (mkVPSlash see_V2))
      mkClSlash : NP -> V2 -> ClSlash        -- (whom) he sees 
mkQCl who_IP (mkClSlash she_NP see_V2)
      mkClSlash : NP -> VV -> V2 -> ClSlash  -- (whom) he wants to see
mkQCl who_IP (mkClSlash she_NP want_VV see_V2)
      mkClSlash : Cl -> Prep -> ClSlash      -- (with whom) he sleeps
mkQCl who_IP (mkClSlash (mkCl she_NP sleep_V) with_Prep)
      mkClSlash : ClSlash -> Adv -> ClSlash    -- (whom) he sees tomorrow   
mkQCl who_IP (mkClSlash (mkClSlash she_NP see_V2) today_Adv)
      mkClSlash : NP -> VS -> SSlash -> ClSlash -- (whom)she says that he s
mkQCl who_IP (mkClSlash she_NP know_VS (mkSSlash (mkTemp pastTense anteriorAnt) negativePol (mkClSlash we_NP (mkVPSlash see_V2))))
--.
      mkVPSlash : V2  -> VPSlash         -- (whom) (she) loves 
mkQCl who_IP (mkClSlash she_NP (mkVPSlash see_V2))
      mkVPSlash : V3  -> NP -> VPSlash   -- (whom) (she) gives an apple 
mkQCl who_IP (mkClSlash she_NP (mkVPSlash send_V3 it_NP))  
      mkVPSlash : V2A -> AP -> VPSlash   -- (whom) (she) paints red
mkQCl who_IP (mkClSlash she_NP (mkVPSlash paint_V2A (mkAP red_A)))  
      mkVPSlash : V2Q -> QS -> VPSlash   -- (whom) (she) asks who sleeps
mkQCl who_IP (mkClSlash she_NP (mkVPSlash ask_V2Q (mkQS (mkQCl where_IAP (mkCl i_NP sleep_V)))))   
      mkVPSlash : V2S -> S  -> VPSlash   -- (whom) (she) tells that we sleep
mkQCl who_IP (mkClSlash she_NP (mkVPSlash answer_V2S (mkS (mkCl i_NP sleep_V))))   
      mkVPSlash : V2V -> VP -> VPSlash   -- (whom) (she) forces to sleep  
mkQCl who_IP (mkClSlash she_NP (mkVPSlash beg_V2V (mkVP sleep_V)))
      mkVPSlash : VV  -> VPSlash -> VPSlash  -- want always to buy 
      mkVPSlash : V2V -> NP -> VPSlash -> VPSlash -- beg me always to buy 
