@@ -383,6 +383,7 @@ checkDeclTotality :: (FC, Name) -> Idris Totality
383383checkDeclTotality (fc, n)
384384 = do logLvl 2 $ "Checking " ++ show n ++ " for totality"
385385 buildSCG (fc, n)
386+ logLvl 2 $ "Built SCG"
386387 checkTotality [] fc n
387388
388389-- Calculate the size change graph for this definition
@@ -411,8 +412,9 @@ buildSCG (_, n) = do
411412 x -> error $ "buildSCG: " ++ show (n, x)
412413
413414buildSCG' :: IState -> SC -> [Name] -> [SCGEntry]
414−buildSCG' ist sc args = nub $ scg sc (zip args args)
415− (zip args (zip args (repeat Same)))
415+buildSCG' ist sc args = -- trace ("Building SCG for " ++ show sc) $
416+ nub $ scg sc (zip args args)
417+ (zip args (zip args (repeat Same)))
416418 where
417419 scg :: SC -> [(Name, Name)] -> -- local var, originating top level var
418420 [(Name, (Name, SizeChange))] -> -- orig to new, and relationship
@@ -448,7 +450,7 @@ buildSCG' ist sc args = nub $ scg sc (zip args args)
448450 = let arel = argRels n
449451 szs' = zipWith (\arg (_,t) -> (arg, (x, t))) args arel
450452 ++ szs
451− vars' = zip args (repeat tvar) ++ vars in
453+ vars' = nub (zip args (repeat tvar) ++ vars) in
452454 scg sc vars' szs'
453455 | otherwise = scg sc vars szs
454456 scgAlt x vars szs (ConstCase _ sc) = scg sc vars szs
@@ -461,13 +463,13 @@ buildSCG' ist sc args = nub $ scg sc (zip args args)
461463 = let rest = concatMap (\x -> scgTerm x vars szs) args in
462464 case lookup fn vars of
463465 Just _ -> rest
464− Nothing -> (fn, map (mkChange szs) args) : rest
466+ Nothing -> nub $ (fn, map (mkChange szs) args) : rest
465467 scgTerm (App f a) vars szs
466468 = scgTerm f vars szs ++ scgTerm a vars szs
467469 scgTerm (Bind n (Let t v) e) vars szs
468470 = scgTerm v vars szs ++ scgTerm e vars szs
469471 scgTerm (Bind n _ e) vars szs
470− = scgTerm e ((n, n) : vars) szs
472+ = scgTerm e (nub ((n, n) : vars)) szs
471473 scgTerm (P _ fn _) vars szs
472474 = case lookup fn vars of
473475 Just _ -> []