@@ -138,6 +138,7 @@ unbindEnv (_:bs) (Bind n b sc) = unbindEnv bs sc
139usable :: Bool -> Name -> [(Name, Int)] -> (Bool, [(Name, Int)])
139usable :: Bool -> Name -> [(Name, Int)] -> (Bool, [(Name, Int)])
140usable _ _ ns@((MN 0 "STOP", _) : _) = (False, ns)
140usable _ _ ns@((MN 0 "STOP", _) : _) = (False, ns)
141+usable True (UN "io_bind") ns = (False, ns)
141usable s n [] = (True, [])
142usable s n [] = (True, [])
142usable s n ns = case lookup n ns of
143usable s n ns = case lookup n ns of
143 Just 0 -> (False, ns)
144 Just 0 -> (False, ns)
@@ -188,7 +189,7 @@ eval traceon ctxt maxred ntimes genv tm opts = ev ntimes [] True [] tm where
188 ev ntimes stk top env (V i) | i < length env = return $ env !! i
189 ev ntimes stk top env (V i) | i < length env = return $ env !! i
189 | otherwise = return $ VV i
190 | otherwise = return $ VV i
190 ev ntimes stk top env (Bind n (Let t v) sc)
191 ev ntimes stk top env (Bind n (Let t v) sc)
191− | not simpl || vinstances 0 sc < 2
192+ | not simpl -- || vinstances 0 sc < 2
192 = do v' <- ev ntimes stk top env v --(finalise v)
193 = do v' <- ev ntimes stk top env v --(finalise v)
193 when (not atRepl) $ step maxred
194 when (not atRepl) $ step maxred
194 sc' <- ev ntimes stk top (v' : env) sc
195 sc' <- ev ntimes stk top (v' : env) sc
@@ -626,7 +627,7 @@ data Totality = Total [Int] -- well-founded arguments
626 deriving Eq
627 deriving Eq
628data PReason = Other [Name] | Itself | NotCovering | NotPositive | UseUndef Name
629data PReason = Other [Name] | Itself | NotCovering | NotPositive | UseUndef Name
629− | Mutual [Name] | NotProductive
630+ | BelieveMe | Mutual [Name] | NotProductive
630 deriving (Show, Eq)
631 deriving (Show, Eq)
632instance Show Totality where
633instance Show Totality where
@@ -637,6 +638,7 @@ instance Show Totality where
637 show (Partial NotCovering) = "not total as there are missing cases"
638 show (Partial NotCovering) = "not total as there are missing cases"
638 show (Partial NotPositive) = "not strictly positive"
639 show (Partial NotPositive) = "not strictly positive"
639 show (Partial NotProductive) = "not productive"
640 show (Partial NotProductive) = "not productive"
641+ show (Partial BelieveMe) = "not total due to use of believe_me in proof"
640 show (Partial (Other ns)) = "possibly not total due to: " ++ showSep ", " (map show ns)
642 show (Partial (Other ns)) = "possibly not total due to: " ++ showSep ", " (map show ns)
641 show (Partial (Mutual ns)) = "possibly not total due to recursive path " ++
643 show (Partial (Mutual ns)) = "possibly not total due to recursive path " ++
642 showSep " --> " (map show ns)
644 showSep " --> " (map show ns)