      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   -- .   
--fullStopPunct
--      questMarkPunct : Punct   -- ?   
--questMarkPunct
--      exclMarkPunct  : Punct   -- !   
--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   
mkPConj and_Conj
      mkVoc : NP -> Voc  -- my friend
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 "5")) 
      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 : Conj -> ListS  -> S   -- she sleeps, I run and you sleep  
      mkS : Adv -> S -> S           -- today, she sleeps   
      mkCl : NP -> V -> Cl                -- she sleeps   
      mkCl : NP -> V2 -> NP -> Cl         -- she loves him
      mkCl : NP -> V3 -> NP -> NP -> Cl   -- she sends it to him
      mkCl : NP  -> VV -> VP -> Cl        -- she wants to sleep
      mkCl : NP  -> VS -> S  -> Cl        -- she says that she sleeps
      mkCl : NP  -> VQ -> QS -> Cl        -- she wonders who sleeps
      mkCl : NP  -> VA -> AP -> Cl        -- she becomes old
      mkCl : NP  -> V2A -> NP -> AP -> Cl -- she paints it red
      mkCl : NP  -> V2S -> NP -> S -> Cl          -- she tells him that we sleep
      mkCl : NP  -> V2Q -> NP -> QS -> Cl         -- she asks him who sleeps 
      mkCl : NP  -> V2V -> NP -> VP -> Cl         -- she forces him to sleep
      mkCl : NP -> A  -> Cl    -- she is old
      mkCl : NP -> A -> NP -> Cl -- she is older than him   
      mkCl : NP -> A2 -> NP -> Cl -- she is married to him 
      mkCl : NP -> AP -> Cl    -- she is very old 
      mkCl : NP -> NP -> Cl    -- she is the man   
      mkCl : NP -> N -> Cl    -- she is a man   
      mkCl : NP -> CN -> Cl    -- she is an old man   
      mkCl : NP -> Adv -> Cl   -- she is here   
      mkCl : NP -> VP -> Cl   -- she always sleeps here   
      mkCl : N -> Cl           -- there is a house 
      mkCl : CN -> Cl          -- there is an old house 
      mkCl : NP -> Cl          -- there are five houses   
      mkCl : NP  -> RS -> Cl   -- it is she who sleeps    
      mkCl : Adv -> S  -> Cl   -- it is here he sleeps    
      mkCl : V -> Cl   -- it rains 
      mkCl : VP -> Cl  -- it is raining    
      mkCl : SC -> VP -> Cl  
      genericCl : VP ->  Cl    -- one sleeps               
      mkVP : V   -> VP                -- sleep 
      mkVP : V2  -> NP -> VP          -- love it 
      mkVP : V3  -> NP -> NP -> VP    -- send a message to him 
      mkVP : VV  -> VP -> VP          -- want to run  
      mkVP : VS  -> S  -> VP          -- know that she runs   
      mkVP : VQ  -> QS -> VP          -- wonder if she runs  
      mkVP : VA  -> AP -> VP          -- become red  
      mkVP : V2A -> NP -> AP -> VP    -- paint it red 
      mkVP : V2S -> NP -> S  -> VP          -- tell him that we sleep 
      mkVP : V2Q -> NP -> QS -> VP         -- ask him who sleeps
      mkVP : V2V -> NP -> VP -> VP         -- force him to sleep
      mkVP : A -> VP               -- be warm 
      mkVP : A -> NP -> VP         -- be older than him 
      mkVP : A2 -> NP -> VP        -- be married to him 
      mkVP : AP -> VP              -- be warm 
      mkVP : N -> VP               -- be a man 
      mkVP : CN -> VP              -- be an old man 
      mkVP : NP -> VP              -- be this man 
      mkVP : Adv -> VP             -- be here 
      mkVP : VP -> Adv -> VP          -- sleep here    
      mkVP : AdV -> VP -> VP          -- always sleep   
      mkVP : VPSlash -> NP -> VP      -- paint it black  
      mkVP : VPSlash -> VP            -- paint itself black 
      mkVP : Comp -> VP               -- be warm 
      reflexiveVP : V2 -> VP        -- love itself 
      passiveVP : V2 ->       VP   -- be loved
      passiveVP : V2 -> NP -> VP   -- be loved by her 
      progressiveVP : VP -> VP   -- be sleeping 
     mkComp : AP -> Comp -- very old 
     mkComp : NP -> Comp -- this man 
     mkComp : Adv -> Comp -- here 
     mkSC : S -> SC -- that he sleeps 
     mkSC : QS -> SC -- whether he sleeps 
     mkSC : VP -> SC -- to sleep 
      mkImp : VP -> Imp                -- go 
      mkImp : V  -> Imp                -- take it
      mkImp : V2 -> NP -> Imp          -- come here now
      mkNP : Quant -> N  -> NP          -- this man
      mkNP : Quant -> CN -> NP          -- this old man
      mkNP : Quant -> Num -> CN -> NP   -- these five old men
      mkNP : Quant -> Num -> N  -> NP   -- these five men
      mkNP : Det -> CN -> NP      -- the first old man   
      mkNP : Det -> N -> NP       -- the first man   
      mkNP : Numeral -> CN -> NP      -- fifty old men   
      mkNP : Numeral -> N -> NP       -- fifty men  
      mkNP : Digits -> CN -> NP      -- 51 old men 
      mkNP : Digits -> N -> NP       -- 51 men 
      mkNP : Card -> CN -> NP     -- forty-five old men   
      mkNP : Card -> N -> NP       -- forty-five men   
      mkNP : Pron -> CN -> NP   -- my old man
      mkNP : Pron -> N  -> NP   -- my man
      mkNP : PN -> NP             -- she  
      mkNP : Pron -> NP           -- he  
      mkNP : Quant -> NP           -- this  
      mkNP : Quant -> Num -> NP    -- these five  
      mkNP : Det -> NP             -- these five best  
      mkNP : CN -> NP  -- old beer   
      mkNP : N -> NP  -- beer   
      mkNP : Predet -> NP -> NP  -- only the man   
      mkNP : NP -> V2  -> NP     -- the man seen 
      mkNP : NP -> Adv -> NP     -- Paris today 
      mkNP : NP -> RS -> NP      -- John, who lives in Paris 
      mkNP : Conj -> NP -> NP -> NP 
      mkNP : Conj -> ListNP -> 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 : Digits -> Num   -- 21 
      mkNum : Digit -> Num -- five
      mkNum : Card -> Num  -- almost ten 
      mkNum : AdN -> Card -> Num  -- almost ten
      singularNum : Num              -- singular 
      pluralNum : Num                -- plural 
      mkCard : Str -> Card   -- thirty-five (given as "35")
      mkCard : Numeral -> Card   -- twenty  
      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  
      mkAdN : CAdv -> AdN  -- more than  
      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            -- coerce 1..9  
      mkSub100 : Unit -> Unit -> Sub100    -- 10m + n  
    tenfoldSub100 : Unit -> Sub100 -- 10n  
    n1_Unit : Unit -- one 
    n2_Unit : Unit -- two  
    n3_Unit : Unit -- three  
    n4_Unit : Unit -- four  
    n5_Unit : Unit -- five  
    n6_Unit : Unit -- six  
    n7_Unit : Unit -- seven  
    n8_Unit : Unit -- eight  
    n9_Unit : Unit -- nine  
      mkDigits : Str -> Digits -- 35 (from string "35")
      mkDigits : Dig -> Digits -- 4  
      mkDigits : Dig -> Digits -> Digits -- 1,233,432  
      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 : N2 -> NP -> CN      -- mother of John   
      mkCN : N3 -> NP -> NP -> CN      -- distance from this city to Paris 
      mkCN : N2 -> CN            -- mother 
      mkCN : N3 -> CN            -- distance 
      mkCN :  A ->  N  -> CN     -- big house  
      mkCN :  A -> CN  -> CN     -- big blue house  
      mkCN : AP ->  N  -> CN     -- very big house  
      mkCN : AP -> CN  -> CN     -- very big blue house  
      mkCN :  N -> RS  -> CN     -- house that she owns 
      mkCN : CN -> RS  -> CN     -- big house that she loves 
      mkCN :  N -> Adv -> CN     -- house on the hill 
      mkCN : CN -> Adv -> CN     -- big house on the hill 
      mkCN : CN -> S   -> CN     -- rule that she sleeps 
      mkCN : CN -> QS  -> CN     -- question if she sleeps 
      mkCN : CN -> VP  -> CN     -- reason to sleep 
      mkCN : CN -> SC  -> CN     -- reason to sleep  
      mkCN :  N -> NP  -> CN     -- king John 
      mkCN : CN -> NP  -> CN     -- old king John
      mkAP : A -> AP           -- warm   
      mkAP : A -> NP -> AP     -- warmer than Paris    
      mkAP : A2 -> NP -> AP    -- married to her 
      mkAP : A2 -> AP          -- married 
      mkAP : AP -> S -> AP    -- probable that she sleeps  
      mkAP : AP -> QS -> AP    -- uncertain if she sleeps  
      mkAP : AP -> VP -> AP    -- ready to go 
      mkAP : AP -> SC -> AP    -- ready to go  
      mkAP : AdA -> A -> AP   -- very old
      mkAP : AdA -> AP -> AP   -- very very old  
      mkAP : Conj -> AP -> AP -> AP -- old and big 
      mkAP : Conj -> ListAP -> AP   -- old, big and warm 
      mkAP : Ord   -> AP              -- oldest 
      mkAP : CAdv -> AP -> NP -> AP   -- as old as she
      reflAP   : A2 -> AP             -- married to himself 
      comparAP : A -> AP              -- warmer 
      mkAdv : A -> Adv            -- warmly   
      mkAdv : Prep -> NP -> Adv          -- in the house    
      mkAdv : Subj -> S -> Adv   -- when she sleeps  
      mkAdv : CAdv -> A -> NP -> Adv   -- more warmly than she  
      mkAdv : CAdv -> A -> S -> Adv    -- more warmly than he runs 
      mkAdv : AdA -> Adv -> Adv        -- very warmly 
      mkAdv : Conj -> Adv -> Adv -> Adv  -- here and now
      mkAdv : Conj -> ListAdv -> Adv   -- with John, here and now  
      mkQS : (Tense) -> (Ant) -> (Pol) -> QCl -> QS -- who wouldn't have slept 
      mkQS : Cl -> QS                    
      mkQCl : Cl -> QCl -- does she sleep    
      mkQCl : IP -> VP -> QCl               -- who sleeps      
      mkQCl : IP -> V -> QCl                -- who sleeps   
      mkQCl : IP -> V2 -> NP -> QCl         -- who loves her
      mkQCl : IP -> V3 -> NP -> NP -> QCl   -- who sends it to her
      mkQCl : IP  -> VV -> VP -> QCl        -- who wants to sleep
      mkQCl : IP  -> VS -> S  -> QCl        -- who says that she sleeps
      mkQCl : IP  -> VQ -> QS -> QCl        -- who wonders who sleeps
      mkQCl : IP  -> VA -> AP -> QCl        -- who becomes old
      mkQCl : IP  -> V2A -> NP -> AP -> QCl -- who paints it red
      mkQCl : IP  -> V2S -> NP -> S -> QCl          -- who tells her that we sleep
      mkQCl : IP  -> V2Q -> NP -> QS -> QCl         -- who asks her who sleeps 
      mkQCl : IP  -> V2V -> NP -> VP -> QCl         -- who forces her to sleep
      mkQCl : IP -> A  -> QCl    -- who is old
      mkQCl : IP -> A -> NP -> QCl -- who is older than her   
      mkQCl : IP -> A2 -> NP -> QCl -- who is married to her 
      mkQCl : IP -> AP -> QCl    -- who is very old 
      mkQCl : IP -> NP -> QCl    -- who is the man   
      mkQCl : IP -> N -> QCl    -- who is a man   
      mkQCl : IP -> CN -> QCl    -- who is an old man   
      mkQCl : IP -> Adv -> QCl   -- who is here   
      mkQCl : IP -> NP -> V2 -> QCl        -- who does she love 
      mkQCl : IP -> ClSlash -> QCl         -- who does she today      
      mkQCl : IAdv -> Cl -> QCl            -- why does she sleep     
      mkQCl : Prep -> IP -> Cl -> QCl      -- with whom does she sleep 
      mkQCl : IAdv -> NP -> QCl   -- where is she 
      mkQCl : IComp -> NP -> QCl   -- who is this man    
      mkQCl : IP -> QCl         -- which houses are there    
      mkIP : IDet -> CN -> IP          -- which five big cities    
      mkIP : IDet -> N -> IP      -- which five cities
      mkIP : IDet -> IP      -- which five 
      mkIP : IQuant -> CN -> IP    -- which big cities
      mkIP : IQuant -> Num -> CN -> IP          -- which five cities 
      mkIP : IQuant -> N -> IP      -- which city
      mkIP : IP -> Adv -> IP        -- who in Paris 
    what_IP : IP  -- what (singular)
    who_IP : IP   -- who (singular)
      mkIAdv : Prep -> IP -> IAdv --  in which city 
      mkIAdv : IAdv -> Adv -> IAdv --  where in Paris  
      mkIDet : IQuant -> Num -> IDet          -- which (songs) 
      mkIDet : IQuant -> IDet      
    which_IDet : IDet 
    whichPl_IDet : IDet 
      mkRS : (Tense) -> (Ant) -> (Pol) -> RCl -> RS -- that wouldn't have slept 
      mkRS : Conj -> RS -> RS -> RS -- who sleeps and whose mother runsx
      mkRS : Conj -> ListRS -> RS -- who sleeps, whom I see and who sleeps 
      mkRCl : RP -> VP -> RCl        -- that loves she      
      mkRCl : RP -> ClSlash -> RCl     -- whom she loves today      
      mkRCl : RP -> NP -> V2 -> RCl     -- whom she loves 
      mkRCl : Cl -> RCl              -- such that she loves him 
    which_RP : RP                        -- which  
    mkRP : Prep -> NP -> RP -> RP    -- all the houses in which  
      mkSSlash : Temp -> Pol -> ClSlash -> SSlash  
      mkClSlash : NP -> VPSlash -> ClSlash        -- (whom) he sees here  
      mkClSlash : NP -> V2 -> ClSlash        -- (whom) he sees 
      mkClSlash : NP -> VV -> V2 -> ClSlash  -- (whom) he wants to see 
      mkClSlash : Cl -> Prep -> ClSlash      -- (with whom) he sleeps 
      mkClSlash : ClSlash -> Adv -> ClSlash    -- (whom) he sees tomorrow   
      mkClSlash : NP -> VS -> SSlash -> ClSlash -- (whom) she says that he loves 
      mkVPSlash : V2  -> VPSlash         -- (whom) (she) loves 
      mkVPSlash : V3  -> NP -> VPSlash   -- (whom) (she) gives an apple   
      mkVPSlash : V2A -> AP -> VPSlash   -- (whom) (she) paints red  
      mkVPSlash : V2Q -> QS -> VPSlash   -- (whom) (she) asks who sleeps   
      mkVPSlash : V2S -> S  -> VPSlash   -- (whom) (she) tells that we sleep  
      mkVPSlash : V2V -> VP -> VPSlash   -- (whom) (she) forces to sleep  
      mkVPSlash : VV  -> VPSlash -> VPSlash  -- want always to buy 
      mkVPSlash : V2V -> NP -> VPSlash -> VPSlash -- beg me always to buy 
