@@ -766,19 +766,20 @@ substAlt n repl (SucCase n' sc)
766 | otherwise = SucCase n' (substSC n repl sc)
766 | otherwise = SucCase n' (substSC n repl sc)
767substAlt n repl (DefaultCase sc) = DefaultCase (substSC n repl sc)
767substAlt n repl (DefaultCase sc) = DefaultCase (substSC n repl sc)
769+-- mkForce n' n t updates the tree t under the assumption that
770+-- n' = force n (so basically updating n to n')
769mkForce :: Name -> Name -> SC -> SC
771mkForce :: Name -> Name -> SC -> SC
770mkForce = mkForceSC
772mkForce = mkForceSC
772 mkForceSC n arg (Case x alts) | x == arg
774 mkForceSC n arg (Case x alts) | x == arg
773− = ProjCase (forceArg n) $ map (mkForceAlt n arg) alts
775+ = Case n $ map (mkForceAlt n arg) alts
775 mkForceSC n arg (Case x alts)
777 mkForceSC n arg (Case x alts)
776 = Case x (map (mkForceAlt n arg) alts)
778 = Case x (map (mkForceAlt n arg) alts)
778 mkForceSC n arg (ProjCase t alts)
780 mkForceSC n arg (ProjCase t alts)
779− = ProjCase (forceTm n arg t) $ map (mkForceAlt n arg) alts
781+ = ProjCase t $ map (mkForceAlt n arg) alts
781− mkForceSC n arg (STerm t) = STerm (forceTm n arg t)
782 mkForceSC n arg c = c
783 mkForceSC n arg c = c
784 mkForceAlt n arg (ConCase cn t args rhs)
785 mkForceAlt n arg (ConCase cn t args rhs)
@@ -792,7 +793,5 @@ mkForce = mkForceSC
792 mkForceAlt n arg (DefaultCase rhs)
793 mkForceAlt n arg (DefaultCase rhs)
793 = DefaultCase (mkForceSC n arg rhs)
794 = DefaultCase (mkForceSC n arg rhs)
795− forceTm n arg t = subst arg (forceArg n) t
796+ forceTm n arg t = subst n arg t
797− forceArg n = App (App (App (P Ref (sUN "Force") Erased) Erased) Erased)