@@ -1008,6 +1008,9 @@ data TT n = P NameType n (TT n) -- ^ named references with type
10081008 -- (-1) is a special case for 'subtract one from BI'
10091009 | Erased -- ^ an erased term
10101010 | Impossible -- ^ special case for totality checking
1011+ | Inferred (TT n) -- ^ For building case trees when coverage checkimg only.
1012+ -- Marks a term as being inferred by the machine, rather than
1013+ -- given by the programmer
10111014 | TType UExp -- ^ the type of types at some level
10121015 | UType Universe -- ^ Uniqueness type universe (disjoint from TType)
10131016 deriving (Ord, Functor, Data, Generic, Typeable)
@@ -1055,6 +1058,7 @@ instance Sized a => Sized (TT a) where
10551058 size (TType u) = 1 + size u
10561059 size (Proj a _) = 1 + size a
10571060 size Impossible = 1
1061+ size (Inferred t) = size t
10581062 size (UType u) = 1 + size u
10591063
10601064instance Pretty a o => Pretty (TT a) o where
@@ -1379,6 +1383,7 @@ termSmallerThan x (V i) = True
13791383termSmallerThan x (Constant c) = True
13801384termSmallerThan x Erased = True
13811385termSmallerThan x Impossible = True
1386+termSmallerThan x (Inferred t) = termSmallerThan x t
13821387termSmallerThan x (TType u) = True
13831388termSmallerThan x (UType u) = True
13841389
@@ -1421,6 +1426,7 @@ safeForgetEnv env (UType u) = Just $ RUType u
14211426safeForgetEnv env Erased = Just $ RConstant Forgot
14221427safeForgetEnv env (Proj tm i) = error "Don't know how to forget a projection"
14231428safeForgetEnv env Impossible = error "Don't know how to forget Impossible"
1429+safeForgetEnv env (Inferred t) = safeForgetEnv env t
14241430
14251431-- | Introduce a 'Bind' into the given term for each element of the
14261432-- given list of (name, binder) pairs.
@@ -1583,6 +1589,7 @@ prettyEnv env t = prettyEnv' env t False
15831589 prettySe p env Erased debug = text "[_]"
15841590 prettySe p env (TType i) debug = text "Type" <+> (text . show $ i)
15851591 prettySe p env Impossible debug = text "Impossible"
1592+ prettySe p env (Inferred tm) debug = text "<" <+> prettySe p env tm debug <+> text ">"
15861593 prettySe p env (UType u) debug = text (show u)
15871594
15881595 -- Render a `Binder` and its name
@@ -1628,6 +1635,7 @@ showEnv' env t dbg = se 10 env t where
16281635 se p env (Constant c) = show c
16291636 se p env Erased = "[__]"
16301637 se p env Impossible = "[impossible]"
1638+ se p env (Inferred t) = "<" ++ se p env t ++ ">"
16311639 se p env (TType i) = "Type " ++ show i
16321640 se p env (UType u) = show u
16331641
@@ -1736,6 +1744,7 @@ pprintTT bound tm = pp startPrec bound tm
17361744 text "!" <> text (show i)
17371745 pp p bound Erased = text "<<<erased>>>"
17381746 pp p bound Impossible = text "<<<impossible>>>"
1747+ pp p bound (Inferred t) = text "<" <+> pp p bound t <+> text ">"
17391748 pp p bound (TType ue) = annotate (AnnType "Type" "The type of types") $
17401749 text "Type"
17411750 pp p bound (UType u) = text (show u)