30.60/15.72 MAYBE 33.10/16.34 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 33.10/16.34 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 33.10/16.34 33.10/16.34 33.10/16.34 H-Termination with start terms of the given HASKELL could not be shown: 33.10/16.34 33.10/16.34 (0) HASKELL 33.10/16.34 (1) BR [EQUIVALENT, 0 ms] 33.10/16.34 (2) HASKELL 33.10/16.34 (3) COR [EQUIVALENT, 0 ms] 33.10/16.34 (4) HASKELL 33.10/16.34 (5) Narrow [SOUND, 0 ms] 33.10/16.34 (6) AND 33.10/16.34 (7) QDP 33.10/16.34 (8) QDPSizeChangeProof [EQUIVALENT, 0 ms] 33.10/16.34 (9) YES 33.10/16.34 (10) QDP 33.10/16.34 (11) QDPOrderProof [EQUIVALENT, 19 ms] 33.10/16.34 (12) QDP 33.10/16.34 (13) DependencyGraphProof [EQUIVALENT, 0 ms] 33.10/16.34 (14) QDP 33.10/16.34 (15) QDPSizeChangeProof [EQUIVALENT, 0 ms] 33.10/16.34 (16) YES 33.10/16.34 (17) QDP 33.10/16.34 (18) DependencyGraphProof [EQUIVALENT, 0 ms] 33.10/16.34 (19) QDP 33.10/16.34 (20) QDPOrderProof [EQUIVALENT, 12 ms] 33.10/16.34 (21) QDP 33.10/16.34 (22) DependencyGraphProof [EQUIVALENT, 0 ms] 33.10/16.34 (23) QDP 33.10/16.34 (24) QDPSizeChangeProof [EQUIVALENT, 0 ms] 33.10/16.34 (25) YES 33.10/16.34 (26) QDP 33.10/16.34 (27) DependencyGraphProof [EQUIVALENT, 0 ms] 33.10/16.34 (28) QDP 33.10/16.34 (29) TransformationProof [EQUIVALENT, 0 ms] 33.10/16.35 (30) QDP 33.10/16.35 (31) UsableRulesProof [EQUIVALENT, 0 ms] 33.10/16.35 (32) QDP 33.10/16.35 (33) QReductionProof [EQUIVALENT, 0 ms] 33.10/16.35 (34) QDP 33.10/16.35 (35) MNOCProof [EQUIVALENT, 0 ms] 33.10/16.35 (36) QDP 33.10/16.35 (37) InductionCalculusProof [EQUIVALENT, 0 ms] 33.10/16.35 (38) QDP 33.10/16.35 (39) TransformationProof [EQUIVALENT, 0 ms] 33.10/16.35 (40) QDP 33.10/16.35 (41) DependencyGraphProof [EQUIVALENT, 0 ms] 33.10/16.35 (42) QDP 33.10/16.35 (43) TransformationProof [EQUIVALENT, 0 ms] 33.10/16.35 (44) QDP 33.10/16.35 (45) DependencyGraphProof [EQUIVALENT, 0 ms] 33.10/16.35 (46) QDP 33.10/16.35 (47) TransformationProof [EQUIVALENT, 0 ms] 33.10/16.35 (48) QDP 33.10/16.35 (49) DependencyGraphProof [EQUIVALENT, 0 ms] 33.10/16.35 (50) QDP 33.10/16.35 (51) TransformationProof [EQUIVALENT, 0 ms] 33.10/16.35 (52) QDP 33.10/16.35 (53) DependencyGraphProof [EQUIVALENT, 0 ms] 33.10/16.35 (54) QDP 33.10/16.35 (55) MNOCProof [EQUIVALENT, 0 ms] 33.10/16.35 (56) QDP 33.10/16.35 (57) InductionCalculusProof [EQUIVALENT, 0 ms] 33.10/16.35 (58) QDP 33.10/16.35 (59) Narrow [COMPLETE, 0 ms] 33.10/16.35 (60) QDP 33.10/16.35 (61) DependencyGraphProof [EQUIVALENT, 0 ms] 33.10/16.35 (62) TRUE 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (0) 33.10/16.35 Obligation: 33.10/16.35 mainModule Main 33.10/16.35 module Main where { 33.10/16.35 import qualified Prelude; 33.10/16.35 data Main.Char = Char MyInt ; 33.10/16.35 33.10/16.35 data List a = Cons a (List a) | Nil ; 33.10/16.35 33.10/16.35 data MyBool = MyTrue | MyFalse ; 33.10/16.35 33.10/16.35 data MyInt = Pos Main.Nat | Neg Main.Nat ; 33.10/16.35 33.10/16.35 data Main.Nat = Succ Main.Nat | Zero ; 33.10/16.35 33.10/16.35 divMyInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 divMyInt = primDivInt; 33.10/16.35 33.10/16.35 error :: a; 33.10/16.35 error = stop MyTrue; 33.10/16.35 33.10/16.35 modMyInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 modMyInt = primModInt; 33.10/16.35 33.10/16.35 primDivInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 primDivInt (Main.Pos x) (Main.Pos (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 33.10/16.35 primDivInt (Main.Pos x) (Main.Neg (Main.Succ y)) = Main.Neg (primDivNatP x (Main.Succ y)); 33.10/16.35 primDivInt (Main.Neg x) (Main.Pos (Main.Succ y)) = Main.Neg (primDivNatP x (Main.Succ y)); 33.10/16.35 primDivInt (Main.Neg x) (Main.Neg (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 33.10/16.35 primDivInt vv vw = Main.error; 33.10/16.35 33.10/16.35 primDivNatP :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primDivNatP Main.Zero Main.Zero = Main.error; 33.10/16.35 primDivNatP (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primDivNatP (Main.Succ x) (Main.Succ y) = Main.Succ (primDivNatP (primMinusNatS x y) (Main.Succ y)); 33.10/16.35 primDivNatP Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 33.10/16.35 primDivNatS :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primDivNatS Main.Zero Main.Zero = Main.error; 33.10/16.35 primDivNatS (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primDivNatS (Main.Succ x) (Main.Succ y) = primDivNatS0 x y (primGEqNatS x y); 33.10/16.35 primDivNatS Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 33.10/16.35 primDivNatS0 x y MyTrue = Main.Succ (primDivNatS (primMinusNatS x y) (Main.Succ y)); 33.10/16.35 primDivNatS0 x y MyFalse = Main.Zero; 33.10/16.35 33.10/16.35 primGEqNatS :: Main.Nat -> Main.Nat -> MyBool; 33.10/16.35 primGEqNatS (Main.Succ x) Main.Zero = MyTrue; 33.10/16.35 primGEqNatS (Main.Succ x) (Main.Succ y) = primGEqNatS x y; 33.10/16.35 primGEqNatS Main.Zero (Main.Succ x) = MyFalse; 33.10/16.35 primGEqNatS Main.Zero Main.Zero = MyTrue; 33.10/16.35 33.10/16.35 primIntToChar :: MyInt -> Main.Char; 33.10/16.35 primIntToChar x = Main.Char x; 33.10/16.35 33.10/16.35 primMinusNatS :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primMinusNatS (Main.Succ x) (Main.Succ y) = primMinusNatS x y; 33.10/16.35 primMinusNatS Main.Zero (Main.Succ y) = Main.Zero; 33.10/16.35 primMinusNatS x Main.Zero = x; 33.10/16.35 33.10/16.35 primModInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 primModInt (Main.Pos x) (Main.Pos (Main.Succ y)) = Main.Pos (primModNatS x (Main.Succ y)); 33.10/16.35 primModInt (Main.Pos x) (Main.Neg (Main.Succ y)) = Main.Neg (primModNatP x (Main.Succ y)); 33.10/16.35 primModInt (Main.Neg x) (Main.Pos (Main.Succ y)) = Main.Pos (primModNatP x (Main.Succ y)); 33.10/16.35 primModInt (Main.Neg x) (Main.Neg (Main.Succ y)) = Main.Neg (primModNatS x (Main.Succ y)); 33.10/16.35 primModInt vx vy = Main.error; 33.10/16.35 33.10/16.35 primModNatP :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primModNatP Main.Zero Main.Zero = Main.error; 33.10/16.35 primModNatP Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 primModNatP (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primModNatP (Main.Succ x) (Main.Succ Main.Zero) = Main.Zero; 33.10/16.35 primModNatP (Main.Succ x) (Main.Succ (Main.Succ y)) = primModNatP0 x y (primGEqNatS x y); 33.10/16.35 33.10/16.35 primModNatP0 x y MyTrue = primModNatP (primMinusNatS x (Main.Succ y)) (Main.Succ (Main.Succ y)); 33.10/16.35 primModNatP0 x y MyFalse = primMinusNatS (Main.Succ y) x; 33.10/16.35 33.10/16.35 primModNatS :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primModNatS Main.Zero Main.Zero = Main.error; 33.10/16.35 primModNatS Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 primModNatS (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primModNatS (Main.Succ x) (Main.Succ Main.Zero) = Main.Zero; 33.10/16.35 primModNatS (Main.Succ x) (Main.Succ (Main.Succ y)) = primModNatS0 x y (primGEqNatS x (Main.Succ y)); 33.10/16.35 33.10/16.35 primModNatS0 x y MyTrue = primModNatS (primMinusNatS x (Main.Succ y)) (Main.Succ (Main.Succ y)); 33.10/16.35 primModNatS0 x y MyFalse = Main.Succ x; 33.10/16.35 33.10/16.35 primShowInt :: MyInt -> List Main.Char; 33.10/16.35 primShowInt (Main.Pos Main.Zero) = Cons (Main.Char (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))))))))))))))))))))))))))))))))))))))))) Nil; 33.10/16.35 primShowInt (Main.Pos (Main.Succ x)) = psPs (primShowInt (divMyInt (Main.Pos (Main.Succ x)) (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero))))))))))))) (Cons (toEnumChar (modMyInt (Main.Pos (Main.Succ x)) (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero))))))))))))) Nil); 33.10/16.35 primShowInt (Main.Neg x) = Cons (Main.Char (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero))))))))))))))))))))))))))))))))))))))))))))))) (primShowInt (Main.Pos x)); 33.10/16.35 33.10/16.35 psPs :: List a -> List a -> List a; 33.10/16.35 psPs Nil ys = ys; 33.10/16.35 psPs (Cons x xs) ys = Cons x (psPs xs ys); 33.10/16.35 33.10/16.35 showMyInt :: MyInt -> List Main.Char; 33.10/16.35 showMyInt = primShowInt; 33.10/16.35 33.10/16.35 stop :: MyBool -> a; 33.10/16.35 stop MyFalse = stop MyFalse; 33.10/16.35 33.10/16.35 toEnumChar :: MyInt -> Main.Char; 33.10/16.35 toEnumChar = primIntToChar; 33.10/16.35 33.10/16.35 } 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (1) BR (EQUIVALENT) 33.10/16.35 Replaced joker patterns by fresh variables and removed binding patterns. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (2) 33.10/16.35 Obligation: 33.10/16.35 mainModule Main 33.10/16.35 module Main where { 33.10/16.35 import qualified Prelude; 33.10/16.35 data Main.Char = Char MyInt ; 33.10/16.35 33.10/16.35 data List a = Cons a (List a) | Nil ; 33.10/16.35 33.10/16.35 data MyBool = MyTrue | MyFalse ; 33.10/16.35 33.10/16.35 data MyInt = Pos Main.Nat | Neg Main.Nat ; 33.10/16.35 33.10/16.35 data Main.Nat = Succ Main.Nat | Zero ; 33.10/16.35 33.10/16.35 divMyInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 divMyInt = primDivInt; 33.10/16.35 33.10/16.35 error :: a; 33.10/16.35 error = stop MyTrue; 33.10/16.35 33.10/16.35 modMyInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 modMyInt = primModInt; 33.10/16.35 33.10/16.35 primDivInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 primDivInt (Main.Pos x) (Main.Pos (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 33.10/16.35 primDivInt (Main.Pos x) (Main.Neg (Main.Succ y)) = Main.Neg (primDivNatP x (Main.Succ y)); 33.10/16.35 primDivInt (Main.Neg x) (Main.Pos (Main.Succ y)) = Main.Neg (primDivNatP x (Main.Succ y)); 33.10/16.35 primDivInt (Main.Neg x) (Main.Neg (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 33.10/16.35 primDivInt vv vw = Main.error; 33.10/16.35 33.10/16.35 primDivNatP :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primDivNatP Main.Zero Main.Zero = Main.error; 33.10/16.35 primDivNatP (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primDivNatP (Main.Succ x) (Main.Succ y) = Main.Succ (primDivNatP (primMinusNatS x y) (Main.Succ y)); 33.10/16.35 primDivNatP Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 33.10/16.35 primDivNatS :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primDivNatS Main.Zero Main.Zero = Main.error; 33.10/16.35 primDivNatS (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primDivNatS (Main.Succ x) (Main.Succ y) = primDivNatS0 x y (primGEqNatS x y); 33.10/16.35 primDivNatS Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 33.10/16.35 primDivNatS0 x y MyTrue = Main.Succ (primDivNatS (primMinusNatS x y) (Main.Succ y)); 33.10/16.35 primDivNatS0 x y MyFalse = Main.Zero; 33.10/16.35 33.10/16.35 primGEqNatS :: Main.Nat -> Main.Nat -> MyBool; 33.10/16.35 primGEqNatS (Main.Succ x) Main.Zero = MyTrue; 33.10/16.35 primGEqNatS (Main.Succ x) (Main.Succ y) = primGEqNatS x y; 33.10/16.35 primGEqNatS Main.Zero (Main.Succ x) = MyFalse; 33.10/16.35 primGEqNatS Main.Zero Main.Zero = MyTrue; 33.10/16.35 33.10/16.35 primIntToChar :: MyInt -> Main.Char; 33.10/16.35 primIntToChar x = Main.Char x; 33.10/16.35 33.10/16.35 primMinusNatS :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primMinusNatS (Main.Succ x) (Main.Succ y) = primMinusNatS x y; 33.10/16.35 primMinusNatS Main.Zero (Main.Succ y) = Main.Zero; 33.10/16.35 primMinusNatS x Main.Zero = x; 33.10/16.35 33.10/16.35 primModInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 primModInt (Main.Pos x) (Main.Pos (Main.Succ y)) = Main.Pos (primModNatS x (Main.Succ y)); 33.10/16.35 primModInt (Main.Pos x) (Main.Neg (Main.Succ y)) = Main.Neg (primModNatP x (Main.Succ y)); 33.10/16.35 primModInt (Main.Neg x) (Main.Pos (Main.Succ y)) = Main.Pos (primModNatP x (Main.Succ y)); 33.10/16.35 primModInt (Main.Neg x) (Main.Neg (Main.Succ y)) = Main.Neg (primModNatS x (Main.Succ y)); 33.10/16.35 primModInt vx vy = Main.error; 33.10/16.35 33.10/16.35 primModNatP :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primModNatP Main.Zero Main.Zero = Main.error; 33.10/16.35 primModNatP Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 primModNatP (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primModNatP (Main.Succ x) (Main.Succ Main.Zero) = Main.Zero; 33.10/16.35 primModNatP (Main.Succ x) (Main.Succ (Main.Succ y)) = primModNatP0 x y (primGEqNatS x y); 33.10/16.35 33.10/16.35 primModNatP0 x y MyTrue = primModNatP (primMinusNatS x (Main.Succ y)) (Main.Succ (Main.Succ y)); 33.10/16.35 primModNatP0 x y MyFalse = primMinusNatS (Main.Succ y) x; 33.10/16.35 33.10/16.35 primModNatS :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primModNatS Main.Zero Main.Zero = Main.error; 33.10/16.35 primModNatS Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 primModNatS (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primModNatS (Main.Succ x) (Main.Succ Main.Zero) = Main.Zero; 33.10/16.35 primModNatS (Main.Succ x) (Main.Succ (Main.Succ y)) = primModNatS0 x y (primGEqNatS x (Main.Succ y)); 33.10/16.35 33.10/16.35 primModNatS0 x y MyTrue = primModNatS (primMinusNatS x (Main.Succ y)) (Main.Succ (Main.Succ y)); 33.10/16.35 primModNatS0 x y MyFalse = Main.Succ x; 33.10/16.35 33.10/16.35 primShowInt :: MyInt -> List Main.Char; 33.10/16.35 primShowInt (Main.Pos Main.Zero) = Cons (Main.Char (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))))))))))))))))))))))))))))))))))))))))) Nil; 33.10/16.35 primShowInt (Main.Pos (Main.Succ x)) = psPs (primShowInt (divMyInt (Main.Pos (Main.Succ x)) (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero))))))))))))) (Cons (toEnumChar (modMyInt (Main.Pos (Main.Succ x)) (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero))))))))))))) Nil); 33.10/16.35 primShowInt (Main.Neg x) = Cons (Main.Char (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero))))))))))))))))))))))))))))))))))))))))))))))) (primShowInt (Main.Pos x)); 33.10/16.35 33.10/16.35 psPs :: List a -> List a -> List a; 33.10/16.35 psPs Nil ys = ys; 33.10/16.35 psPs (Cons x xs) ys = Cons x (psPs xs ys); 33.10/16.35 33.10/16.35 showMyInt :: MyInt -> List Main.Char; 33.10/16.35 showMyInt = primShowInt; 33.10/16.35 33.10/16.35 stop :: MyBool -> a; 33.10/16.35 stop MyFalse = stop MyFalse; 33.10/16.35 33.10/16.35 toEnumChar :: MyInt -> Main.Char; 33.10/16.35 toEnumChar = primIntToChar; 33.10/16.35 33.10/16.35 } 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (3) COR (EQUIVALENT) 33.10/16.35 Cond Reductions: 33.10/16.35 The following Function with conditions 33.10/16.35 "undefined |Falseundefined; 33.10/16.35 " 33.10/16.35 is transformed to 33.10/16.35 "undefined = undefined1; 33.10/16.35 " 33.10/16.35 "undefined0 True = undefined; 33.10/16.35 " 33.10/16.35 "undefined1 = undefined0 False; 33.10/16.35 " 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (4) 33.10/16.35 Obligation: 33.10/16.35 mainModule Main 33.10/16.35 module Main where { 33.10/16.35 import qualified Prelude; 33.10/16.35 data Main.Char = Char MyInt ; 33.10/16.35 33.10/16.35 data List a = Cons a (List a) | Nil ; 33.10/16.35 33.10/16.35 data MyBool = MyTrue | MyFalse ; 33.10/16.35 33.10/16.35 data MyInt = Pos Main.Nat | Neg Main.Nat ; 33.10/16.35 33.10/16.35 data Main.Nat = Succ Main.Nat | Zero ; 33.10/16.35 33.10/16.35 divMyInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 divMyInt = primDivInt; 33.10/16.35 33.10/16.35 error :: a; 33.10/16.35 error = stop MyTrue; 33.10/16.35 33.10/16.35 modMyInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 modMyInt = primModInt; 33.10/16.35 33.10/16.35 primDivInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 primDivInt (Main.Pos x) (Main.Pos (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 33.10/16.35 primDivInt (Main.Pos x) (Main.Neg (Main.Succ y)) = Main.Neg (primDivNatP x (Main.Succ y)); 33.10/16.35 primDivInt (Main.Neg x) (Main.Pos (Main.Succ y)) = Main.Neg (primDivNatP x (Main.Succ y)); 33.10/16.35 primDivInt (Main.Neg x) (Main.Neg (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 33.10/16.35 primDivInt vv vw = Main.error; 33.10/16.35 33.10/16.35 primDivNatP :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primDivNatP Main.Zero Main.Zero = Main.error; 33.10/16.35 primDivNatP (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primDivNatP (Main.Succ x) (Main.Succ y) = Main.Succ (primDivNatP (primMinusNatS x y) (Main.Succ y)); 33.10/16.35 primDivNatP Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 33.10/16.35 primDivNatS :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primDivNatS Main.Zero Main.Zero = Main.error; 33.10/16.35 primDivNatS (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primDivNatS (Main.Succ x) (Main.Succ y) = primDivNatS0 x y (primGEqNatS x y); 33.10/16.35 primDivNatS Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 33.10/16.35 primDivNatS0 x y MyTrue = Main.Succ (primDivNatS (primMinusNatS x y) (Main.Succ y)); 33.10/16.35 primDivNatS0 x y MyFalse = Main.Zero; 33.10/16.35 33.10/16.35 primGEqNatS :: Main.Nat -> Main.Nat -> MyBool; 33.10/16.35 primGEqNatS (Main.Succ x) Main.Zero = MyTrue; 33.10/16.35 primGEqNatS (Main.Succ x) (Main.Succ y) = primGEqNatS x y; 33.10/16.35 primGEqNatS Main.Zero (Main.Succ x) = MyFalse; 33.10/16.35 primGEqNatS Main.Zero Main.Zero = MyTrue; 33.10/16.35 33.10/16.35 primIntToChar :: MyInt -> Main.Char; 33.10/16.35 primIntToChar x = Main.Char x; 33.10/16.35 33.10/16.35 primMinusNatS :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primMinusNatS (Main.Succ x) (Main.Succ y) = primMinusNatS x y; 33.10/16.35 primMinusNatS Main.Zero (Main.Succ y) = Main.Zero; 33.10/16.35 primMinusNatS x Main.Zero = x; 33.10/16.35 33.10/16.35 primModInt :: MyInt -> MyInt -> MyInt; 33.10/16.35 primModInt (Main.Pos x) (Main.Pos (Main.Succ y)) = Main.Pos (primModNatS x (Main.Succ y)); 33.10/16.35 primModInt (Main.Pos x) (Main.Neg (Main.Succ y)) = Main.Neg (primModNatP x (Main.Succ y)); 33.10/16.35 primModInt (Main.Neg x) (Main.Pos (Main.Succ y)) = Main.Pos (primModNatP x (Main.Succ y)); 33.10/16.35 primModInt (Main.Neg x) (Main.Neg (Main.Succ y)) = Main.Neg (primModNatS x (Main.Succ y)); 33.10/16.35 primModInt vx vy = Main.error; 33.10/16.35 33.10/16.35 primModNatP :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primModNatP Main.Zero Main.Zero = Main.error; 33.10/16.35 primModNatP Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 primModNatP (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primModNatP (Main.Succ x) (Main.Succ Main.Zero) = Main.Zero; 33.10/16.35 primModNatP (Main.Succ x) (Main.Succ (Main.Succ y)) = primModNatP0 x y (primGEqNatS x y); 33.10/16.35 33.10/16.35 primModNatP0 x y MyTrue = primModNatP (primMinusNatS x (Main.Succ y)) (Main.Succ (Main.Succ y)); 33.10/16.35 primModNatP0 x y MyFalse = primMinusNatS (Main.Succ y) x; 33.10/16.35 33.10/16.35 primModNatS :: Main.Nat -> Main.Nat -> Main.Nat; 33.10/16.35 primModNatS Main.Zero Main.Zero = Main.error; 33.10/16.35 primModNatS Main.Zero (Main.Succ x) = Main.Zero; 33.10/16.35 primModNatS (Main.Succ x) Main.Zero = Main.error; 33.10/16.35 primModNatS (Main.Succ x) (Main.Succ Main.Zero) = Main.Zero; 33.10/16.35 primModNatS (Main.Succ x) (Main.Succ (Main.Succ y)) = primModNatS0 x y (primGEqNatS x (Main.Succ y)); 33.10/16.35 33.10/16.35 primModNatS0 x y MyTrue = primModNatS (primMinusNatS x (Main.Succ y)) (Main.Succ (Main.Succ y)); 33.10/16.35 primModNatS0 x y MyFalse = Main.Succ x; 33.10/16.35 33.10/16.35 primShowInt :: MyInt -> List Main.Char; 33.10/16.35 primShowInt (Main.Pos Main.Zero) = Cons (Main.Char (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero)))))))))))))))))))))))))))))))))))))))))))))))))) Nil; 33.10/16.35 primShowInt (Main.Pos (Main.Succ x)) = psPs (primShowInt (divMyInt (Main.Pos (Main.Succ x)) (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero))))))))))))) (Cons (toEnumChar (modMyInt (Main.Pos (Main.Succ x)) (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero))))))))))))) Nil); 33.10/16.35 primShowInt (Main.Neg x) = Cons (Main.Char (Main.Pos (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ (Main.Succ Main.Zero))))))))))))))))))))))))))))))))))))))))))))))) (primShowInt (Main.Pos x)); 33.10/16.35 33.10/16.35 psPs :: List a -> List a -> List a; 33.10/16.35 psPs Nil ys = ys; 33.10/16.35 psPs (Cons x xs) ys = Cons x (psPs xs ys); 33.10/16.35 33.10/16.35 showMyInt :: MyInt -> List Main.Char; 33.10/16.35 showMyInt = primShowInt; 33.10/16.35 33.10/16.35 stop :: MyBool -> a; 33.10/16.35 stop MyFalse = stop MyFalse; 33.10/16.35 33.10/16.35 toEnumChar :: MyInt -> Main.Char; 33.10/16.35 toEnumChar = primIntToChar; 33.10/16.35 33.10/16.35 } 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (5) Narrow (SOUND) 33.10/16.35 Haskell To QDPs 33.10/16.35 33.10/16.35 digraph dp_graph { 33.10/16.35 node [outthreshold=100, inthreshold=100];1[label="showMyInt",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 33.10/16.35 3[label="showMyInt wv3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 33.10/16.35 4[label="primShowInt wv3",fontsize=16,color="burlywood",shape="triangle"];721[label="wv3/Pos wv30",fontsize=10,color="white",style="solid",shape="box"];4 -> 721[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 721 -> 5[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 722[label="wv3/Neg wv30",fontsize=10,color="white",style="solid",shape="box"];4 -> 722[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 722 -> 6[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 5[label="primShowInt (Pos wv30)",fontsize=16,color="burlywood",shape="box"];723[label="wv30/Succ wv300",fontsize=10,color="white",style="solid",shape="box"];5 -> 723[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 723 -> 7[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 724[label="wv30/Zero",fontsize=10,color="white",style="solid",shape="box"];5 -> 724[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 724 -> 8[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 6[label="primShowInt (Neg wv30)",fontsize=16,color="black",shape="box"];6 -> 9[label="",style="solid", color="black", weight=3]; 33.10/16.35 7[label="primShowInt (Pos (Succ wv300))",fontsize=16,color="black",shape="box"];7 -> 10[label="",style="solid", color="black", weight=3]; 33.10/16.35 8[label="primShowInt (Pos Zero)",fontsize=16,color="black",shape="box"];8 -> 11[label="",style="solid", color="black", weight=3]; 33.10/16.35 9[label="Cons (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))) (primShowInt (Pos wv30))",fontsize=16,color="green",shape="box"];9 -> 12[label="",style="dashed", color="green", weight=3]; 33.10/16.35 10 -> 24[label="",style="dashed", color="red", weight=0]; 33.10/16.35 10[label="psPs (primShowInt (divMyInt (Pos (Succ wv300)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))) (Cons (toEnumChar (modMyInt (Pos (Succ wv300)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))) Nil)",fontsize=16,color="magenta"];10 -> 25[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 10 -> 26[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 10 -> 27[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 11[label="Cons (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))) Nil",fontsize=16,color="green",shape="box"];12 -> 4[label="",style="dashed", color="red", weight=0]; 33.10/16.35 12[label="primShowInt (Pos wv30)",fontsize=16,color="magenta"];12 -> 16[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 25[label="wv300",fontsize=16,color="green",shape="box"];26 -> 4[label="",style="dashed", color="red", weight=0]; 33.10/16.35 26[label="primShowInt (divMyInt (Pos (Succ wv300)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))",fontsize=16,color="magenta"];26 -> 29[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 27[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];24[label="psPs wv11 (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil)",fontsize=16,color="burlywood",shape="triangle"];725[label="wv11/Cons wv110 wv111",fontsize=10,color="white",style="solid",shape="box"];24 -> 725[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 725 -> 30[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 726[label="wv11/Nil",fontsize=10,color="white",style="solid",shape="box"];24 -> 726[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 726 -> 31[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 16[label="Pos wv30",fontsize=16,color="green",shape="box"];29 -> 32[label="",style="dashed", color="red", weight=0]; 33.10/16.35 29[label="divMyInt (Pos (Succ wv300)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))",fontsize=16,color="magenta"];29 -> 33[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 29 -> 34[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 30[label="psPs (Cons wv110 wv111) (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil)",fontsize=16,color="black",shape="box"];30 -> 35[label="",style="solid", color="black", weight=3]; 33.10/16.35 31[label="psPs Nil (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil)",fontsize=16,color="black",shape="box"];31 -> 36[label="",style="solid", color="black", weight=3]; 33.10/16.35 33[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];34[label="wv300",fontsize=16,color="green",shape="box"];32[label="divMyInt (Pos (Succ wv13)) (Pos (Succ wv14))",fontsize=16,color="black",shape="triangle"];32 -> 37[label="",style="solid", color="black", weight=3]; 33.10/16.35 35[label="Cons wv110 (psPs wv111 (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil))",fontsize=16,color="green",shape="box"];35 -> 38[label="",style="dashed", color="green", weight=3]; 33.10/16.35 36[label="Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil",fontsize=16,color="green",shape="box"];36 -> 39[label="",style="dashed", color="green", weight=3]; 33.10/16.35 37[label="primDivInt (Pos (Succ wv13)) (Pos (Succ wv14))",fontsize=16,color="black",shape="box"];37 -> 40[label="",style="solid", color="black", weight=3]; 33.10/16.35 38 -> 24[label="",style="dashed", color="red", weight=0]; 33.10/16.35 38[label="psPs wv111 (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil)",fontsize=16,color="magenta"];38 -> 41[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 39[label="toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))",fontsize=16,color="black",shape="box"];39 -> 42[label="",style="solid", color="black", weight=3]; 33.10/16.35 40[label="Pos (primDivNatS (Succ wv13) (Succ wv14))",fontsize=16,color="green",shape="box"];40 -> 43[label="",style="dashed", color="green", weight=3]; 33.10/16.35 41[label="wv111",fontsize=16,color="green",shape="box"];42[label="primIntToChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))",fontsize=16,color="black",shape="box"];42 -> 44[label="",style="solid", color="black", weight=3]; 33.10/16.35 43[label="primDivNatS (Succ wv13) (Succ wv14)",fontsize=16,color="black",shape="triangle"];43 -> 45[label="",style="solid", color="black", weight=3]; 33.10/16.35 44[label="Char (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))",fontsize=16,color="green",shape="box"];44 -> 46[label="",style="dashed", color="green", weight=3]; 33.10/16.35 45[label="primDivNatS0 wv13 wv14 (primGEqNatS wv13 wv14)",fontsize=16,color="burlywood",shape="box"];727[label="wv13/Succ wv130",fontsize=10,color="white",style="solid",shape="box"];45 -> 727[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 727 -> 47[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 728[label="wv13/Zero",fontsize=10,color="white",style="solid",shape="box"];45 -> 728[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 728 -> 48[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 46[label="modMyInt (Pos (Succ wv8)) (Pos (Succ wv10))",fontsize=16,color="black",shape="box"];46 -> 49[label="",style="solid", color="black", weight=3]; 33.10/16.35 47[label="primDivNatS0 (Succ wv130) wv14 (primGEqNatS (Succ wv130) wv14)",fontsize=16,color="burlywood",shape="box"];729[label="wv14/Succ wv140",fontsize=10,color="white",style="solid",shape="box"];47 -> 729[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 729 -> 50[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 730[label="wv14/Zero",fontsize=10,color="white",style="solid",shape="box"];47 -> 730[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 730 -> 51[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 48[label="primDivNatS0 Zero wv14 (primGEqNatS Zero wv14)",fontsize=16,color="burlywood",shape="box"];731[label="wv14/Succ wv140",fontsize=10,color="white",style="solid",shape="box"];48 -> 731[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 731 -> 52[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 732[label="wv14/Zero",fontsize=10,color="white",style="solid",shape="box"];48 -> 732[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 732 -> 53[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 49[label="primModInt (Pos (Succ wv8)) (Pos (Succ wv10))",fontsize=16,color="black",shape="box"];49 -> 54[label="",style="solid", color="black", weight=3]; 33.10/16.35 50[label="primDivNatS0 (Succ wv130) (Succ wv140) (primGEqNatS (Succ wv130) (Succ wv140))",fontsize=16,color="black",shape="box"];50 -> 55[label="",style="solid", color="black", weight=3]; 33.10/16.35 51[label="primDivNatS0 (Succ wv130) Zero (primGEqNatS (Succ wv130) Zero)",fontsize=16,color="black",shape="box"];51 -> 56[label="",style="solid", color="black", weight=3]; 33.10/16.35 52[label="primDivNatS0 Zero (Succ wv140) (primGEqNatS Zero (Succ wv140))",fontsize=16,color="black",shape="box"];52 -> 57[label="",style="solid", color="black", weight=3]; 33.10/16.35 53[label="primDivNatS0 Zero Zero (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];53 -> 58[label="",style="solid", color="black", weight=3]; 33.10/16.35 54[label="Pos (primModNatS (Succ wv8) (Succ wv10))",fontsize=16,color="green",shape="box"];54 -> 59[label="",style="dashed", color="green", weight=3]; 33.10/16.35 55 -> 324[label="",style="dashed", color="red", weight=0]; 33.10/16.35 55[label="primDivNatS0 (Succ wv130) (Succ wv140) (primGEqNatS wv130 wv140)",fontsize=16,color="magenta"];55 -> 325[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 55 -> 326[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 55 -> 327[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 55 -> 328[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 56[label="primDivNatS0 (Succ wv130) Zero MyTrue",fontsize=16,color="black",shape="box"];56 -> 62[label="",style="solid", color="black", weight=3]; 33.10/16.35 57[label="primDivNatS0 Zero (Succ wv140) MyFalse",fontsize=16,color="black",shape="box"];57 -> 63[label="",style="solid", color="black", weight=3]; 33.10/16.35 58[label="primDivNatS0 Zero Zero MyTrue",fontsize=16,color="black",shape="box"];58 -> 64[label="",style="solid", color="black", weight=3]; 33.10/16.35 59[label="primModNatS (Succ wv8) (Succ wv10)",fontsize=16,color="burlywood",shape="triangle"];733[label="wv10/Succ wv100",fontsize=10,color="white",style="solid",shape="box"];59 -> 733[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 733 -> 65[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 734[label="wv10/Zero",fontsize=10,color="white",style="solid",shape="box"];59 -> 734[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 734 -> 66[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 325[label="wv130",fontsize=16,color="green",shape="box"];326[label="wv130",fontsize=16,color="green",shape="box"];327[label="wv140",fontsize=16,color="green",shape="box"];328[label="wv140",fontsize=16,color="green",shape="box"];324[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS wv33 wv34)",fontsize=16,color="burlywood",shape="triangle"];735[label="wv33/Succ wv330",fontsize=10,color="white",style="solid",shape="box"];324 -> 735[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 735 -> 357[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 736[label="wv33/Zero",fontsize=10,color="white",style="solid",shape="box"];324 -> 736[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 736 -> 358[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 62[label="Succ (primDivNatS (primMinusNatS (Succ wv130) Zero) (Succ Zero))",fontsize=16,color="green",shape="box"];62 -> 71[label="",style="dashed", color="green", weight=3]; 33.10/16.35 63[label="Zero",fontsize=16,color="green",shape="box"];64[label="Succ (primDivNatS (primMinusNatS Zero Zero) (Succ Zero))",fontsize=16,color="green",shape="box"];64 -> 72[label="",style="dashed", color="green", weight=3]; 33.10/16.35 65[label="primModNatS (Succ wv8) (Succ (Succ wv100))",fontsize=16,color="black",shape="box"];65 -> 73[label="",style="solid", color="black", weight=3]; 33.10/16.35 66[label="primModNatS (Succ wv8) (Succ Zero)",fontsize=16,color="black",shape="box"];66 -> 74[label="",style="solid", color="black", weight=3]; 33.10/16.35 357[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS (Succ wv330) wv34)",fontsize=16,color="burlywood",shape="box"];737[label="wv34/Succ wv340",fontsize=10,color="white",style="solid",shape="box"];357 -> 737[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 737 -> 364[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 738[label="wv34/Zero",fontsize=10,color="white",style="solid",shape="box"];357 -> 738[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 738 -> 365[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 358[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS Zero wv34)",fontsize=16,color="burlywood",shape="box"];739[label="wv34/Succ wv340",fontsize=10,color="white",style="solid",shape="box"];358 -> 739[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 739 -> 366[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 740[label="wv34/Zero",fontsize=10,color="white",style="solid",shape="box"];358 -> 740[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 740 -> 367[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 71 -> 591[label="",style="dashed", color="red", weight=0]; 33.10/16.35 71[label="primDivNatS (primMinusNatS (Succ wv130) Zero) (Succ Zero)",fontsize=16,color="magenta"];71 -> 592[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 71 -> 593[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 71 -> 594[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 72 -> 591[label="",style="dashed", color="red", weight=0]; 33.10/16.35 72[label="primDivNatS (primMinusNatS Zero Zero) (Succ Zero)",fontsize=16,color="magenta"];72 -> 595[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 72 -> 596[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 72 -> 597[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 73[label="primModNatS0 wv8 wv100 (primGEqNatS wv8 (Succ wv100))",fontsize=16,color="burlywood",shape="box"];741[label="wv8/Succ wv80",fontsize=10,color="white",style="solid",shape="box"];73 -> 741[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 741 -> 81[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 742[label="wv8/Zero",fontsize=10,color="white",style="solid",shape="box"];73 -> 742[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 742 -> 82[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 74[label="Zero",fontsize=16,color="green",shape="box"];364[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS (Succ wv330) (Succ wv340))",fontsize=16,color="black",shape="box"];364 -> 376[label="",style="solid", color="black", weight=3]; 33.10/16.35 365[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS (Succ wv330) Zero)",fontsize=16,color="black",shape="box"];365 -> 377[label="",style="solid", color="black", weight=3]; 33.10/16.35 366[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS Zero (Succ wv340))",fontsize=16,color="black",shape="box"];366 -> 378[label="",style="solid", color="black", weight=3]; 33.10/16.35 367[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];367 -> 379[label="",style="solid", color="black", weight=3]; 33.10/16.35 592[label="Succ wv130",fontsize=16,color="green",shape="box"];593[label="Zero",fontsize=16,color="green",shape="box"];594[label="Zero",fontsize=16,color="green",shape="box"];591[label="primDivNatS (primMinusNatS wv65 wv66) (Succ wv67)",fontsize=16,color="burlywood",shape="triangle"];743[label="wv65/Succ wv650",fontsize=10,color="white",style="solid",shape="box"];591 -> 743[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 743 -> 616[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 744[label="wv65/Zero",fontsize=10,color="white",style="solid",shape="box"];591 -> 744[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 744 -> 617[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 595[label="Zero",fontsize=16,color="green",shape="box"];596[label="Zero",fontsize=16,color="green",shape="box"];597[label="Zero",fontsize=16,color="green",shape="box"];81[label="primModNatS0 (Succ wv80) wv100 (primGEqNatS (Succ wv80) (Succ wv100))",fontsize=16,color="black",shape="box"];81 -> 91[label="",style="solid", color="black", weight=3]; 33.10/16.35 82[label="primModNatS0 Zero wv100 (primGEqNatS Zero (Succ wv100))",fontsize=16,color="black",shape="box"];82 -> 92[label="",style="solid", color="black", weight=3]; 33.10/16.35 376 -> 324[label="",style="dashed", color="red", weight=0]; 33.10/16.35 376[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS wv330 wv340)",fontsize=16,color="magenta"];376 -> 389[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 376 -> 390[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 377[label="primDivNatS0 (Succ wv31) (Succ wv32) MyTrue",fontsize=16,color="black",shape="triangle"];377 -> 391[label="",style="solid", color="black", weight=3]; 33.10/16.35 378[label="primDivNatS0 (Succ wv31) (Succ wv32) MyFalse",fontsize=16,color="black",shape="box"];378 -> 392[label="",style="solid", color="black", weight=3]; 33.10/16.35 379 -> 377[label="",style="dashed", color="red", weight=0]; 33.10/16.35 379[label="primDivNatS0 (Succ wv31) (Succ wv32) MyTrue",fontsize=16,color="magenta"];616[label="primDivNatS (primMinusNatS (Succ wv650) wv66) (Succ wv67)",fontsize=16,color="burlywood",shape="box"];745[label="wv66/Succ wv660",fontsize=10,color="white",style="solid",shape="box"];616 -> 745[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 745 -> 619[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 746[label="wv66/Zero",fontsize=10,color="white",style="solid",shape="box"];616 -> 746[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 746 -> 620[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 617[label="primDivNatS (primMinusNatS Zero wv66) (Succ wv67)",fontsize=16,color="burlywood",shape="box"];747[label="wv66/Succ wv660",fontsize=10,color="white",style="solid",shape="box"];617 -> 747[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 747 -> 621[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 748[label="wv66/Zero",fontsize=10,color="white",style="solid",shape="box"];617 -> 748[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 748 -> 622[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 91[label="primModNatS0 (Succ wv80) wv100 (primGEqNatS wv80 wv100)",fontsize=16,color="burlywood",shape="box"];749[label="wv80/Succ wv800",fontsize=10,color="white",style="solid",shape="box"];91 -> 749[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 749 -> 99[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 750[label="wv80/Zero",fontsize=10,color="white",style="solid",shape="box"];91 -> 750[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 750 -> 100[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 92[label="primModNatS0 Zero wv100 MyFalse",fontsize=16,color="black",shape="box"];92 -> 101[label="",style="solid", color="black", weight=3]; 33.10/16.35 389[label="wv330",fontsize=16,color="green",shape="box"];390[label="wv340",fontsize=16,color="green",shape="box"];391[label="Succ (primDivNatS (primMinusNatS (Succ wv31) (Succ wv32)) (Succ (Succ wv32)))",fontsize=16,color="green",shape="box"];391 -> 400[label="",style="dashed", color="green", weight=3]; 33.10/16.35 392[label="Zero",fontsize=16,color="green",shape="box"];619[label="primDivNatS (primMinusNatS (Succ wv650) (Succ wv660)) (Succ wv67)",fontsize=16,color="black",shape="box"];619 -> 625[label="",style="solid", color="black", weight=3]; 33.10/16.35 620[label="primDivNatS (primMinusNatS (Succ wv650) Zero) (Succ wv67)",fontsize=16,color="black",shape="box"];620 -> 626[label="",style="solid", color="black", weight=3]; 33.10/16.35 621[label="primDivNatS (primMinusNatS Zero (Succ wv660)) (Succ wv67)",fontsize=16,color="black",shape="box"];621 -> 627[label="",style="solid", color="black", weight=3]; 33.10/16.35 622[label="primDivNatS (primMinusNatS Zero Zero) (Succ wv67)",fontsize=16,color="black",shape="box"];622 -> 628[label="",style="solid", color="black", weight=3]; 33.10/16.35 99[label="primModNatS0 (Succ (Succ wv800)) wv100 (primGEqNatS (Succ wv800) wv100)",fontsize=16,color="burlywood",shape="box"];751[label="wv100/Succ wv1000",fontsize=10,color="white",style="solid",shape="box"];99 -> 751[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 751 -> 108[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 752[label="wv100/Zero",fontsize=10,color="white",style="solid",shape="box"];99 -> 752[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 752 -> 109[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 100[label="primModNatS0 (Succ Zero) wv100 (primGEqNatS Zero wv100)",fontsize=16,color="burlywood",shape="box"];753[label="wv100/Succ wv1000",fontsize=10,color="white",style="solid",shape="box"];100 -> 753[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 753 -> 110[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 754[label="wv100/Zero",fontsize=10,color="white",style="solid",shape="box"];100 -> 754[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 754 -> 111[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 101[label="Succ Zero",fontsize=16,color="green",shape="box"];400 -> 591[label="",style="dashed", color="red", weight=0]; 33.10/16.35 400[label="primDivNatS (primMinusNatS (Succ wv31) (Succ wv32)) (Succ (Succ wv32))",fontsize=16,color="magenta"];400 -> 598[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 400 -> 599[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 400 -> 600[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 625 -> 591[label="",style="dashed", color="red", weight=0]; 33.10/16.35 625[label="primDivNatS (primMinusNatS wv650 wv660) (Succ wv67)",fontsize=16,color="magenta"];625 -> 631[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 625 -> 632[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 626 -> 43[label="",style="dashed", color="red", weight=0]; 33.10/16.35 626[label="primDivNatS (Succ wv650) (Succ wv67)",fontsize=16,color="magenta"];626 -> 633[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 626 -> 634[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 627[label="primDivNatS Zero (Succ wv67)",fontsize=16,color="black",shape="triangle"];627 -> 635[label="",style="solid", color="black", weight=3]; 33.10/16.35 628 -> 627[label="",style="dashed", color="red", weight=0]; 33.10/16.35 628[label="primDivNatS Zero (Succ wv67)",fontsize=16,color="magenta"];108[label="primModNatS0 (Succ (Succ wv800)) (Succ wv1000) (primGEqNatS (Succ wv800) (Succ wv1000))",fontsize=16,color="black",shape="box"];108 -> 119[label="",style="solid", color="black", weight=3]; 33.10/16.35 109[label="primModNatS0 (Succ (Succ wv800)) Zero (primGEqNatS (Succ wv800) Zero)",fontsize=16,color="black",shape="box"];109 -> 120[label="",style="solid", color="black", weight=3]; 33.10/16.35 110[label="primModNatS0 (Succ Zero) (Succ wv1000) (primGEqNatS Zero (Succ wv1000))",fontsize=16,color="black",shape="box"];110 -> 121[label="",style="solid", color="black", weight=3]; 33.10/16.35 111[label="primModNatS0 (Succ Zero) Zero (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];111 -> 122[label="",style="solid", color="black", weight=3]; 33.10/16.35 598[label="Succ wv31",fontsize=16,color="green",shape="box"];599[label="Succ wv32",fontsize=16,color="green",shape="box"];600[label="Succ wv32",fontsize=16,color="green",shape="box"];631[label="wv650",fontsize=16,color="green",shape="box"];632[label="wv660",fontsize=16,color="green",shape="box"];633[label="wv67",fontsize=16,color="green",shape="box"];634[label="wv650",fontsize=16,color="green",shape="box"];635[label="Zero",fontsize=16,color="green",shape="box"];119 -> 526[label="",style="dashed", color="red", weight=0]; 33.10/16.35 119[label="primModNatS0 (Succ (Succ wv800)) (Succ wv1000) (primGEqNatS wv800 wv1000)",fontsize=16,color="magenta"];119 -> 527[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 119 -> 528[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 119 -> 529[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 119 -> 530[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 120[label="primModNatS0 (Succ (Succ wv800)) Zero MyTrue",fontsize=16,color="black",shape="box"];120 -> 134[label="",style="solid", color="black", weight=3]; 33.10/16.35 121[label="primModNatS0 (Succ Zero) (Succ wv1000) MyFalse",fontsize=16,color="black",shape="box"];121 -> 135[label="",style="solid", color="black", weight=3]; 33.10/16.35 122[label="primModNatS0 (Succ Zero) Zero MyTrue",fontsize=16,color="black",shape="box"];122 -> 136[label="",style="solid", color="black", weight=3]; 33.10/16.35 527[label="Succ wv800",fontsize=16,color="green",shape="box"];528[label="wv1000",fontsize=16,color="green",shape="box"];529[label="wv800",fontsize=16,color="green",shape="box"];530[label="wv1000",fontsize=16,color="green",shape="box"];526[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS wv62 wv63)",fontsize=16,color="burlywood",shape="triangle"];755[label="wv62/Succ wv620",fontsize=10,color="white",style="solid",shape="box"];526 -> 755[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 755 -> 563[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 756[label="wv62/Zero",fontsize=10,color="white",style="solid",shape="box"];526 -> 756[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 756 -> 564[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 134 -> 675[label="",style="dashed", color="red", weight=0]; 33.10/16.35 134[label="primModNatS (primMinusNatS (Succ (Succ wv800)) (Succ Zero)) (Succ (Succ Zero))",fontsize=16,color="magenta"];134 -> 676[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 134 -> 677[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 134 -> 678[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 135[label="Succ (Succ Zero)",fontsize=16,color="green",shape="box"];136 -> 675[label="",style="dashed", color="red", weight=0]; 33.10/16.35 136[label="primModNatS (primMinusNatS (Succ Zero) (Succ Zero)) (Succ (Succ Zero))",fontsize=16,color="magenta"];136 -> 679[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 136 -> 680[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 136 -> 681[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 563[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS (Succ wv620) wv63)",fontsize=16,color="burlywood",shape="box"];757[label="wv63/Succ wv630",fontsize=10,color="white",style="solid",shape="box"];563 -> 757[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 757 -> 571[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 758[label="wv63/Zero",fontsize=10,color="white",style="solid",shape="box"];563 -> 758[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 758 -> 572[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 564[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS Zero wv63)",fontsize=16,color="burlywood",shape="box"];759[label="wv63/Succ wv630",fontsize=10,color="white",style="solid",shape="box"];564 -> 759[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 759 -> 573[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 760[label="wv63/Zero",fontsize=10,color="white",style="solid",shape="box"];564 -> 760[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 760 -> 574[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 676[label="Succ Zero",fontsize=16,color="green",shape="box"];677[label="Succ Zero",fontsize=16,color="green",shape="box"];678[label="Succ (Succ wv800)",fontsize=16,color="green",shape="box"];675[label="primModNatS (primMinusNatS wv69 wv70) (Succ wv71)",fontsize=16,color="burlywood",shape="triangle"];761[label="wv69/Succ wv690",fontsize=10,color="white",style="solid",shape="box"];675 -> 761[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 761 -> 706[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 762[label="wv69/Zero",fontsize=10,color="white",style="solid",shape="box"];675 -> 762[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 762 -> 707[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 679[label="Succ Zero",fontsize=16,color="green",shape="box"];680[label="Succ Zero",fontsize=16,color="green",shape="box"];681[label="Succ Zero",fontsize=16,color="green",shape="box"];571[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS (Succ wv620) (Succ wv630))",fontsize=16,color="black",shape="box"];571 -> 579[label="",style="solid", color="black", weight=3]; 33.10/16.35 572[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS (Succ wv620) Zero)",fontsize=16,color="black",shape="box"];572 -> 580[label="",style="solid", color="black", weight=3]; 33.10/16.35 573[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS Zero (Succ wv630))",fontsize=16,color="black",shape="box"];573 -> 581[label="",style="solid", color="black", weight=3]; 33.10/16.35 574[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];574 -> 582[label="",style="solid", color="black", weight=3]; 33.10/16.35 706[label="primModNatS (primMinusNatS (Succ wv690) wv70) (Succ wv71)",fontsize=16,color="burlywood",shape="box"];763[label="wv70/Succ wv700",fontsize=10,color="white",style="solid",shape="box"];706 -> 763[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 763 -> 708[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 764[label="wv70/Zero",fontsize=10,color="white",style="solid",shape="box"];706 -> 764[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 764 -> 709[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 707[label="primModNatS (primMinusNatS Zero wv70) (Succ wv71)",fontsize=16,color="burlywood",shape="box"];765[label="wv70/Succ wv700",fontsize=10,color="white",style="solid",shape="box"];707 -> 765[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 765 -> 710[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 766[label="wv70/Zero",fontsize=10,color="white",style="solid",shape="box"];707 -> 766[label="",style="solid", color="burlywood", weight=9]; 33.10/16.35 766 -> 711[label="",style="solid", color="burlywood", weight=3]; 33.10/16.35 579 -> 526[label="",style="dashed", color="red", weight=0]; 33.10/16.35 579[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS wv620 wv630)",fontsize=16,color="magenta"];579 -> 587[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 579 -> 588[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 580[label="primModNatS0 (Succ wv60) (Succ wv61) MyTrue",fontsize=16,color="black",shape="triangle"];580 -> 589[label="",style="solid", color="black", weight=3]; 33.10/16.35 581[label="primModNatS0 (Succ wv60) (Succ wv61) MyFalse",fontsize=16,color="black",shape="box"];581 -> 590[label="",style="solid", color="black", weight=3]; 33.10/16.35 582 -> 580[label="",style="dashed", color="red", weight=0]; 33.10/16.35 582[label="primModNatS0 (Succ wv60) (Succ wv61) MyTrue",fontsize=16,color="magenta"];708[label="primModNatS (primMinusNatS (Succ wv690) (Succ wv700)) (Succ wv71)",fontsize=16,color="black",shape="box"];708 -> 712[label="",style="solid", color="black", weight=3]; 33.10/16.35 709[label="primModNatS (primMinusNatS (Succ wv690) Zero) (Succ wv71)",fontsize=16,color="black",shape="box"];709 -> 713[label="",style="solid", color="black", weight=3]; 33.10/16.35 710[label="primModNatS (primMinusNatS Zero (Succ wv700)) (Succ wv71)",fontsize=16,color="black",shape="box"];710 -> 714[label="",style="solid", color="black", weight=3]; 33.10/16.35 711[label="primModNatS (primMinusNatS Zero Zero) (Succ wv71)",fontsize=16,color="black",shape="box"];711 -> 715[label="",style="solid", color="black", weight=3]; 33.10/16.35 587[label="wv630",fontsize=16,color="green",shape="box"];588[label="wv620",fontsize=16,color="green",shape="box"];589 -> 675[label="",style="dashed", color="red", weight=0]; 33.10/16.35 589[label="primModNatS (primMinusNatS (Succ wv60) (Succ (Succ wv61))) (Succ (Succ (Succ wv61)))",fontsize=16,color="magenta"];589 -> 688[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 589 -> 689[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 589 -> 690[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 590[label="Succ (Succ wv60)",fontsize=16,color="green",shape="box"];712 -> 675[label="",style="dashed", color="red", weight=0]; 33.10/16.35 712[label="primModNatS (primMinusNatS wv690 wv700) (Succ wv71)",fontsize=16,color="magenta"];712 -> 716[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 712 -> 717[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 713 -> 59[label="",style="dashed", color="red", weight=0]; 33.10/16.35 713[label="primModNatS (Succ wv690) (Succ wv71)",fontsize=16,color="magenta"];713 -> 718[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 713 -> 719[label="",style="dashed", color="magenta", weight=3]; 33.10/16.35 714[label="primModNatS Zero (Succ wv71)",fontsize=16,color="black",shape="triangle"];714 -> 720[label="",style="solid", color="black", weight=3]; 33.10/16.35 715 -> 714[label="",style="dashed", color="red", weight=0]; 33.10/16.35 715[label="primModNatS Zero (Succ wv71)",fontsize=16,color="magenta"];688[label="Succ (Succ wv61)",fontsize=16,color="green",shape="box"];689[label="Succ (Succ wv61)",fontsize=16,color="green",shape="box"];690[label="Succ wv60",fontsize=16,color="green",shape="box"];716[label="wv700",fontsize=16,color="green",shape="box"];717[label="wv690",fontsize=16,color="green",shape="box"];718[label="wv690",fontsize=16,color="green",shape="box"];719[label="wv71",fontsize=16,color="green",shape="box"];720[label="Zero",fontsize=16,color="green",shape="box"];} 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (6) 33.10/16.35 Complex Obligation (AND) 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (7) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_psPs(Cons(wv110, wv111), wv8, wv10) -> new_psPs(wv111, wv8, wv10) 33.10/16.35 33.10/16.35 R is empty. 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (8) QDPSizeChangeProof (EQUIVALENT) 33.10/16.35 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 33.10/16.35 33.10/16.35 From the DPs we obtained the following set of size-change graphs: 33.10/16.35 *new_psPs(Cons(wv110, wv111), wv8, wv10) -> new_psPs(wv111, wv8, wv10) 33.10/16.35 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (9) 33.10/16.35 YES 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (10) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primModNatS0(wv60, wv61, Main.Zero, Main.Zero) -> new_primModNatS00(wv60, wv61) 33.10/16.35 new_primModNatS1(Main.Succ(Main.Succ(wv800)), Main.Succ(Main.Succ(wv1000))) -> new_primModNatS0(Main.Succ(wv800), wv1000, wv800, wv1000) 33.10/16.35 new_primModNatS1(Main.Succ(Main.Zero), Main.Succ(Main.Zero)) -> new_primModNatS(Main.Succ(Main.Zero), Main.Succ(Main.Zero), Main.Succ(Main.Zero)) 33.10/16.35 new_primModNatS0(wv60, wv61, Main.Succ(wv620), Main.Succ(wv630)) -> new_primModNatS0(wv60, wv61, wv620, wv630) 33.10/16.35 new_primModNatS(Main.Succ(wv690), Main.Succ(wv700), wv71) -> new_primModNatS(wv690, wv700, wv71) 33.10/16.35 new_primModNatS(Main.Succ(wv690), Main.Zero, wv71) -> new_primModNatS1(wv690, wv71) 33.10/16.35 new_primModNatS0(wv60, wv61, Main.Succ(wv620), Main.Zero) -> new_primModNatS(Main.Succ(wv60), Main.Succ(Main.Succ(wv61)), Main.Succ(Main.Succ(wv61))) 33.10/16.35 new_primModNatS1(Main.Succ(Main.Succ(wv800)), Main.Succ(Main.Zero)) -> new_primModNatS(Main.Succ(Main.Succ(wv800)), Main.Succ(Main.Zero), Main.Succ(Main.Zero)) 33.10/16.35 new_primModNatS00(wv60, wv61) -> new_primModNatS(Main.Succ(wv60), Main.Succ(Main.Succ(wv61)), Main.Succ(Main.Succ(wv61))) 33.10/16.35 33.10/16.35 R is empty. 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (11) QDPOrderProof (EQUIVALENT) 33.10/16.35 We use the reduction pair processor [LPAR04,JAR06]. 33.10/16.35 33.10/16.35 33.10/16.35 The following pairs can be oriented strictly and are deleted. 33.10/16.35 33.10/16.35 new_primModNatS(Main.Succ(wv690), Main.Succ(wv700), wv71) -> new_primModNatS(wv690, wv700, wv71) 33.10/16.35 new_primModNatS(Main.Succ(wv690), Main.Zero, wv71) -> new_primModNatS1(wv690, wv71) 33.10/16.35 The remaining pairs can at least be oriented weakly. 33.10/16.35 Used ordering: Polynomial interpretation [POLO]: 33.10/16.35 33.10/16.35 POL(Main.Succ(x_1)) = 1 + x_1 33.10/16.35 POL(Main.Zero) = 0 33.10/16.35 POL(new_primModNatS(x_1, x_2, x_3)) = x_1 33.10/16.35 POL(new_primModNatS0(x_1, x_2, x_3, x_4)) = 1 + x_1 33.10/16.35 POL(new_primModNatS00(x_1, x_2)) = 1 + x_1 33.10/16.35 POL(new_primModNatS1(x_1, x_2)) = x_1 33.10/16.35 33.10/16.35 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 33.10/16.35 none 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (12) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primModNatS0(wv60, wv61, Main.Zero, Main.Zero) -> new_primModNatS00(wv60, wv61) 33.10/16.35 new_primModNatS1(Main.Succ(Main.Succ(wv800)), Main.Succ(Main.Succ(wv1000))) -> new_primModNatS0(Main.Succ(wv800), wv1000, wv800, wv1000) 33.10/16.35 new_primModNatS1(Main.Succ(Main.Zero), Main.Succ(Main.Zero)) -> new_primModNatS(Main.Succ(Main.Zero), Main.Succ(Main.Zero), Main.Succ(Main.Zero)) 33.10/16.35 new_primModNatS0(wv60, wv61, Main.Succ(wv620), Main.Succ(wv630)) -> new_primModNatS0(wv60, wv61, wv620, wv630) 33.10/16.35 new_primModNatS0(wv60, wv61, Main.Succ(wv620), Main.Zero) -> new_primModNatS(Main.Succ(wv60), Main.Succ(Main.Succ(wv61)), Main.Succ(Main.Succ(wv61))) 33.10/16.35 new_primModNatS1(Main.Succ(Main.Succ(wv800)), Main.Succ(Main.Zero)) -> new_primModNatS(Main.Succ(Main.Succ(wv800)), Main.Succ(Main.Zero), Main.Succ(Main.Zero)) 33.10/16.35 new_primModNatS00(wv60, wv61) -> new_primModNatS(Main.Succ(wv60), Main.Succ(Main.Succ(wv61)), Main.Succ(Main.Succ(wv61))) 33.10/16.35 33.10/16.35 R is empty. 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (13) DependencyGraphProof (EQUIVALENT) 33.10/16.35 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 6 less nodes. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (14) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primModNatS0(wv60, wv61, Main.Succ(wv620), Main.Succ(wv630)) -> new_primModNatS0(wv60, wv61, wv620, wv630) 33.10/16.35 33.10/16.35 R is empty. 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (15) QDPSizeChangeProof (EQUIVALENT) 33.10/16.35 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 33.10/16.35 33.10/16.35 From the DPs we obtained the following set of size-change graphs: 33.10/16.35 *new_primModNatS0(wv60, wv61, Main.Succ(wv620), Main.Succ(wv630)) -> new_primModNatS0(wv60, wv61, wv620, wv630) 33.10/16.35 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 > 4 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (16) 33.10/16.35 YES 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (17) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS1(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS0(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS0(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS1(Main.Zero, Main.Zero) -> new_primDivNatS(Main.Zero, Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS00(wv31, wv32) -> new_primDivNatS(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32)) 33.10/16.35 new_primDivNatS(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS1(wv650, wv67) 33.10/16.35 new_primDivNatS1(Main.Succ(wv130), Main.Zero) -> new_primDivNatS(Main.Succ(wv130), Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32)) 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS00(wv31, wv32) 33.10/16.35 33.10/16.35 R is empty. 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (18) DependencyGraphProof (EQUIVALENT) 33.10/16.35 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (19) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS1(wv650, wv67) 33.10/16.35 new_primDivNatS1(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS0(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS0(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32)) 33.10/16.35 new_primDivNatS(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS00(wv31, wv32) 33.10/16.35 new_primDivNatS00(wv31, wv32) -> new_primDivNatS(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32)) 33.10/16.35 new_primDivNatS1(Main.Succ(wv130), Main.Zero) -> new_primDivNatS(Main.Succ(wv130), Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 R is empty. 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (20) QDPOrderProof (EQUIVALENT) 33.10/16.35 We use the reduction pair processor [LPAR04,JAR06]. 33.10/16.35 33.10/16.35 33.10/16.35 The following pairs can be oriented strictly and are deleted. 33.10/16.35 33.10/16.35 new_primDivNatS(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS1(wv650, wv67) 33.10/16.35 new_primDivNatS(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS(wv650, wv660, wv67) 33.10/16.35 The remaining pairs can at least be oriented weakly. 33.10/16.35 Used ordering: Polynomial interpretation [POLO]: 33.10/16.35 33.10/16.35 POL(Main.Succ(x_1)) = 1 + x_1 33.10/16.35 POL(Main.Zero) = 0 33.10/16.35 POL(new_primDivNatS(x_1, x_2, x_3)) = x_1 33.10/16.35 POL(new_primDivNatS0(x_1, x_2, x_3, x_4)) = 1 + x_1 33.10/16.35 POL(new_primDivNatS00(x_1, x_2)) = 1 + x_1 33.10/16.35 POL(new_primDivNatS1(x_1, x_2)) = x_1 33.10/16.35 33.10/16.35 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 33.10/16.35 none 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (21) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS1(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS0(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS0(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32)) 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS00(wv31, wv32) 33.10/16.35 new_primDivNatS00(wv31, wv32) -> new_primDivNatS(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32)) 33.10/16.35 new_primDivNatS1(Main.Succ(wv130), Main.Zero) -> new_primDivNatS(Main.Succ(wv130), Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 R is empty. 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (22) DependencyGraphProof (EQUIVALENT) 33.10/16.35 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 5 less nodes. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (23) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS0(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS0(wv31, wv32, wv330, wv340) 33.10/16.35 33.10/16.35 R is empty. 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (24) QDPSizeChangeProof (EQUIVALENT) 33.10/16.35 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 33.10/16.35 33.10/16.35 From the DPs we obtained the following set of size-change graphs: 33.10/16.35 *new_primDivNatS0(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS0(wv31, wv32, wv330, wv340) 33.10/16.35 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 > 4 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (25) 33.10/16.35 YES 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (26) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Neg(wv30)) -> new_primShowInt(Main.Pos(wv30)) 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(new_divMyInt(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_divMyInt(wv13, wv14) -> Main.Pos(new_primDivNatS2(wv13, wv14)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_divMyInt(x0, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (27) DependencyGraphProof (EQUIVALENT) 33.10/16.35 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (28) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(new_divMyInt(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_divMyInt(wv13, wv14) -> Main.Pos(new_primDivNatS2(wv13, wv14)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_divMyInt(x0, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (29) TransformationProof (EQUIVALENT) 33.10/16.35 By rewriting [LPAR04] the rule new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(new_divMyInt(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))) at position [0] we obtained the following new rules [LPAR04]: 33.10/16.35 33.10/16.35 (new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))),new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (30) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_divMyInt(wv13, wv14) -> Main.Pos(new_primDivNatS2(wv13, wv14)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_divMyInt(x0, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (31) UsableRulesProof (EQUIVALENT) 33.10/16.35 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (32) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_divMyInt(x0, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (33) QReductionProof (EQUIVALENT) 33.10/16.35 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 33.10/16.35 33.10/16.35 new_divMyInt(x0, x1) 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (34) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (35) MNOCProof (EQUIVALENT) 33.10/16.35 We use the modular non-overlap check [FROCOS05] to decrease Q to the empty set. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (36) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (37) InductionCalculusProof (EQUIVALENT) 33.10/16.35 Note that final constraints are written in bold face. 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 For Pair new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) the following chains were created: 33.10/16.35 *We consider the chain new_primShowInt(Main.Pos(Main.Succ(x0))) -> new_primShowInt(Main.Pos(new_primDivNatS2(x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))), new_primShowInt(Main.Pos(Main.Succ(x1))) -> new_primShowInt(Main.Pos(new_primDivNatS2(x1, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) which results in the following constraint: 33.10/16.35 33.10/16.35 (1) (new_primShowInt(Main.Pos(new_primDivNatS2(x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))=new_primShowInt(Main.Pos(Main.Succ(x1))) ==> new_primShowInt(Main.Pos(Main.Succ(x0)))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We simplified constraint (1) using rules (I), (II), (VII) which results in the following new constraint: 33.10/16.35 33.10/16.35 (2) (Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))=x2 & new_primDivNatS2(x0, x2)=Main.Succ(x1) ==> new_primShowInt(Main.Pos(Main.Succ(x0)))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_primDivNatS2(x0, x2)=Main.Succ(x1) which results in the following new constraints: 33.10/16.35 33.10/16.35 (3) (new_primDivNatS02(x4, x3, x4, x3)=Main.Succ(x1) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))=Main.Succ(x3) ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x4))))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Succ(x4), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 (4) (Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero))=Main.Succ(x1) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))=Main.Zero ==> new_primShowInt(Main.Pos(Main.Succ(Main.Zero)))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Zero, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 (5) (Main.Succ(new_primDivNatS3(Main.Succ(x6), Main.Zero, Main.Zero))=Main.Succ(x1) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))=Main.Zero ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x6))))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Succ(x6), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We simplified constraint (3) using rules (I), (II), (VII) which results in the following new constraint: 33.10/16.35 33.10/16.35 (6) (x4=x7 & x3=x8 & new_primDivNatS02(x4, x3, x7, x8)=Main.Succ(x1) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x3 ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x4))))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Succ(x4), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We solved constraint (4) using rules (I), (II).We solved constraint (5) using rules (I), (II).We simplified constraint (6) using rule (V) (with possible (I) afterwards) using induction on new_primDivNatS02(x4, x3, x7, x8)=Main.Succ(x1) which results in the following new constraints: 33.10/16.35 33.10/16.35 (7) (new_primDivNatS02(x12, x11, x10, x9)=Main.Succ(x1) & x12=Main.Succ(x10) & x11=Main.Succ(x9) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x11 & (\/x13:new_primDivNatS02(x12, x11, x10, x9)=Main.Succ(x13) & x12=x10 & x11=x9 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x11 ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x12))))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Succ(x12), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x12))))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Succ(x12), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 (8) (new_primDivNatS01(x15, x14)=Main.Succ(x1) & x15=Main.Zero & x14=Main.Zero & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x14 ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x15))))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Succ(x15), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 (9) (new_primDivNatS01(x18, x17)=Main.Succ(x1) & x18=Main.Succ(x16) & x17=Main.Zero & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x17 ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x18))))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Succ(x18), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We simplified constraint (7) using rules (I), (II), (III), (IV), (VII) which results in the following new constraint: 33.10/16.35 33.10/16.35 (10) (new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(x10)))))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Succ(Main.Succ(x10)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We solved constraint (8) using rules (I), (II), (III).We solved constraint (9) using rules (I), (II), (III). 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 To summarize, we get the following constraints P__>=_ for the following pairs. 33.10/16.35 33.10/16.35 *new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) 33.10/16.35 33.10/16.35 *(new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(x10)))))_>=_new_primShowInt(Main.Pos(new_primDivNatS2(Main.Succ(Main.Succ(x10)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (38) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (39) TransformationProof (EQUIVALENT) 33.10/16.35 By narrowing [LPAR04] the rule new_primShowInt(Main.Pos(Main.Succ(wv300))) -> new_primShowInt(Main.Pos(new_primDivNatS2(wv300, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) at position [0,0] we obtained the following new rules [LPAR04]: 33.10/16.35 33.10/16.35 (new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x0)))) -> new_primShowInt(Main.Pos(new_primDivNatS02(x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))),new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x0)))) -> new_primShowInt(Main.Pos(new_primDivNatS02(x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))))) 33.10/16.35 (new_primShowInt(Main.Pos(Main.Succ(Main.Zero))) -> new_primShowInt(Main.Pos(Main.Zero)),new_primShowInt(Main.Pos(Main.Succ(Main.Zero))) -> new_primShowInt(Main.Pos(Main.Zero))) 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (40) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x0)))) -> new_primShowInt(Main.Pos(new_primDivNatS02(x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))) 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Zero))) -> new_primShowInt(Main.Pos(Main.Zero)) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (41) DependencyGraphProof (EQUIVALENT) 33.10/16.35 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (42) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x0)))) -> new_primShowInt(Main.Pos(new_primDivNatS02(x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (43) TransformationProof (EQUIVALENT) 33.10/16.35 By narrowing [LPAR04] the rule new_primShowInt(Main.Pos(Main.Succ(Main.Succ(x0)))) -> new_primShowInt(Main.Pos(new_primDivNatS02(x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))) at position [0,0] we obtained the following new rules [LPAR04]: 33.10/16.35 33.10/16.35 (new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(x2))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(x2), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))),new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(x2))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(x2), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))))) 33.10/16.35 (new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Zero)))) -> new_primShowInt(Main.Pos(Main.Zero)),new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Zero)))) -> new_primShowInt(Main.Pos(Main.Zero))) 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (44) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(x2))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(x2), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))) 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Zero)))) -> new_primShowInt(Main.Pos(Main.Zero)) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (45) DependencyGraphProof (EQUIVALENT) 33.10/16.35 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (46) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(x2))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(x2), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (47) TransformationProof (EQUIVALENT) 33.10/16.35 By narrowing [LPAR04] the rule new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(x2))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(x2), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))) at position [0,0] we obtained the following new rules [LPAR04]: 33.10/16.35 33.10/16.35 (new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2)))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(x2)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))),new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2)))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(x2)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))))) 33.10/16.35 (new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))) -> new_primShowInt(Main.Pos(Main.Zero)),new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))) -> new_primShowInt(Main.Pos(Main.Zero))) 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (48) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2)))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(x2)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))) -> new_primShowInt(Main.Pos(Main.Zero)) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (49) DependencyGraphProof (EQUIVALENT) 33.10/16.35 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (50) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2)))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(x2)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (51) TransformationProof (EQUIVALENT) 33.10/16.35 By narrowing [LPAR04] the rule new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2)))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(x2)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) at position [0,0] we obtained the following new rules [LPAR04]: 33.10/16.35 33.10/16.35 (new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x2))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))),new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x2))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 (new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))) -> new_primShowInt(Main.Pos(Main.Zero)),new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))) -> new_primShowInt(Main.Pos(Main.Zero))) 33.10/16.35 33.10/16.35 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (52) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x2))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))) 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))) -> new_primShowInt(Main.Pos(Main.Zero)) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (53) DependencyGraphProof (EQUIVALENT) 33.10/16.35 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (54) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x2))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (55) MNOCProof (EQUIVALENT) 33.10/16.35 We use the modular non-overlap check [FROCOS05] to decrease Q to the empty set. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (56) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x2))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 Q is empty. 33.10/16.35 We have to consider all (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (57) InductionCalculusProof (EQUIVALENT) 33.10/16.35 Note that final constraints are written in bold face. 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 For Pair new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x2))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))) the following chains were created: 33.10/16.35 *We consider the chain new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x0))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x0))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x1))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x1, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))) which results in the following constraint: 33.10/16.35 33.10/16.35 (1) (new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x0))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))))) ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x0)))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x0))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We simplified constraint (1) using rules (I), (II), (VII) which results in the following new constraint: 33.10/16.35 33.10/16.35 (2) (Main.Succ(Main.Succ(Main.Succ(x0)))=x2 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x3 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))=x4 & new_primDivNatS02(x2, x3, x0, x4)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x0)))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x0))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x0, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_primDivNatS02(x2, x3, x0, x4)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) which results in the following new constraints: 33.10/16.35 33.10/16.35 (3) (new_primDivNatS02(x8, x7, x6, x5)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(x6))))=x8 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x7 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))=Main.Succ(x5) & (\/x9:new_primDivNatS02(x8, x7, x6, x5)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x9))))) & Main.Succ(Main.Succ(Main.Succ(x6)))=x8 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x7 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))=x5 ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x6)))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x6))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x6, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x6))))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x6)))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Succ(x6), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 (4) (new_primDivNatS01(x11, x10)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) & Main.Succ(Main.Succ(Main.Succ(Main.Zero)))=x11 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x10 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))=Main.Zero ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Zero))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Zero, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 (5) (new_primDivNatS01(x14, x13)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(x12))))=x14 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x13 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))=Main.Zero ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x12))))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x12)))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Succ(x12), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We simplified constraint (3) using rules (I), (II), (IV) which results in the following new constraint: 33.10/16.35 33.10/16.35 (6) (new_primDivNatS02(x8, x7, x6, x5)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(x6))))=x8 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x7 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))=x5 ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x6))))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x6)))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Succ(x6), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We solved constraint (4) using rules (I), (II).We solved constraint (5) using rules (I), (II).We simplified constraint (6) using rule (V) (with possible (I) afterwards) using induction on new_primDivNatS02(x8, x7, x6, x5)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) which results in the following new constraints: 33.10/16.35 33.10/16.35 (7) (new_primDivNatS02(x21, x20, x19, x18)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19)))))=x21 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x20 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))=Main.Succ(x18) & (\/x22:new_primDivNatS02(x21, x20, x19, x18)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x22))))) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19))))=x21 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x20 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))=x18 ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19))))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19)))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Succ(x19), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19)))))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19))))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Succ(Main.Succ(x19)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 (8) (new_primDivNatS01(x24, x23)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))=x24 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x23 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))=Main.Zero ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Succ(Main.Zero), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 (9) (new_primDivNatS01(x27, x26)=Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x1))))) & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x25)))))=x27 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))=x26 & Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))=Main.Zero ==> new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x25)))))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x25))))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Succ(Main.Succ(x25)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We simplified constraint (7) using rules (I), (II), (III), (IV) which results in the following new constraint: 33.10/16.35 33.10/16.35 (10) (new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19)))))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19))))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Succ(Main.Succ(x19)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 We solved constraint (8) using rules (I), (II).We solved constraint (9) using rules (I), (II). 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 To summarize, we get the following constraints P__>=_ for the following pairs. 33.10/16.35 33.10/16.35 *new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x2))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))) 33.10/16.35 33.10/16.35 *(new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19)))))))))_>=_new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x19))))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), Main.Succ(Main.Succ(x19)), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero))))))))) 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 33.10/16.35 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (58) 33.10/16.35 Obligation: 33.10/16.35 Q DP problem: 33.10/16.35 The TRS P consists of the following rules: 33.10/16.35 33.10/16.35 new_primShowInt(Main.Pos(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(x2))))))) -> new_primShowInt(Main.Pos(new_primDivNatS02(Main.Succ(Main.Succ(Main.Succ(x2))), Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))), x2, Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Succ(Main.Zero)))))))) 33.10/16.35 33.10/16.35 The TRS R consists of the following rules: 33.10/16.35 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Succ(wv140)) -> new_primDivNatS02(wv130, wv140, wv130, wv140) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(wv140)) -> Main.Zero 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Succ(wv340)) -> new_primDivNatS02(wv31, wv32, wv330, wv340) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Succ(wv330), Main.Zero) -> new_primDivNatS01(wv31, wv32) 33.10/16.35 new_primDivNatS02(wv31, wv32, Main.Zero, Main.Succ(wv340)) -> Main.Zero 33.10/16.35 new_primDivNatS01(wv31, wv32) -> Main.Succ(new_primDivNatS3(Main.Succ(wv31), Main.Succ(wv32), Main.Succ(wv32))) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Succ(wv660), wv67) -> new_primDivNatS3(wv650, wv660, wv67) 33.10/16.35 new_primDivNatS3(Main.Succ(wv650), Main.Zero, wv67) -> new_primDivNatS2(wv650, wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(wv660), wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, wv67) -> new_primDivNatS4(wv67) 33.10/16.35 new_primDivNatS4(wv67) -> Main.Zero 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Zero, Main.Zero, Main.Zero)) 33.10/16.35 new_primDivNatS2(Main.Succ(wv130), Main.Zero) -> Main.Succ(new_primDivNatS3(Main.Succ(wv130), Main.Zero, Main.Zero)) 33.10/16.35 33.10/16.35 The set Q consists of the following terms: 33.10/16.35 33.10/16.35 new_primDivNatS4(x0) 33.10/16.35 new_primDivNatS01(x0, x1) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Succ(x0), x1) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Succ(x2)) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Succ(x1)) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Zero, x1) 33.10/16.35 new_primDivNatS2(Main.Succ(x0), Main.Zero) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Zero) 33.10/16.35 new_primDivNatS3(Main.Succ(x0), Main.Succ(x1), x2) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Succ(x2), Main.Succ(x3)) 33.10/16.35 new_primDivNatS3(Main.Zero, Main.Zero, x0) 33.10/16.35 new_primDivNatS2(Main.Zero, Main.Succ(x0)) 33.10/16.35 new_primDivNatS02(x0, x1, Main.Zero, Main.Zero) 33.10/16.35 33.10/16.35 We have to consider all minimal (P,Q,R)-chains. 33.10/16.35 ---------------------------------------- 33.10/16.35 33.10/16.35 (59) Narrow (COMPLETE) 33.10/16.35 Haskell To QDPs 33.10/16.35 33.10/16.35 digraph dp_graph { 33.10/16.35 node [outthreshold=100, inthreshold=100];1[label="showMyInt",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 33.10/16.35 3[label="showMyInt wv3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 33.10/16.35 4[label="primShowInt wv3",fontsize=16,color="burlywood",shape="triangle"];721[label="wv3/Pos wv30",fontsize=10,color="white",style="solid",shape="box"];4 -> 721[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 721 -> 5[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 722[label="wv3/Neg wv30",fontsize=10,color="white",style="solid",shape="box"];4 -> 722[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 722 -> 6[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 5[label="primShowInt (Pos wv30)",fontsize=16,color="burlywood",shape="box"];723[label="wv30/Succ wv300",fontsize=10,color="white",style="solid",shape="box"];5 -> 723[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 723 -> 7[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 724[label="wv30/Zero",fontsize=10,color="white",style="solid",shape="box"];5 -> 724[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 724 -> 8[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 6[label="primShowInt (Neg wv30)",fontsize=16,color="black",shape="box"];6 -> 9[label="",style="solid", color="black", weight=3]; 33.10/16.36 7[label="primShowInt (Pos (Succ wv300))",fontsize=16,color="black",shape="box"];7 -> 10[label="",style="solid", color="black", weight=3]; 33.10/16.36 8[label="primShowInt (Pos Zero)",fontsize=16,color="black",shape="box"];8 -> 11[label="",style="solid", color="black", weight=3]; 33.10/16.36 9[label="Cons (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))) (primShowInt (Pos wv30))",fontsize=16,color="green",shape="box"];9 -> 12[label="",style="dashed", color="green", weight=3]; 33.10/16.36 10 -> 24[label="",style="dashed", color="red", weight=0]; 33.10/16.36 10[label="psPs (primShowInt (divMyInt (Pos (Succ wv300)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))) (Cons (toEnumChar (modMyInt (Pos (Succ wv300)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))) Nil)",fontsize=16,color="magenta"];10 -> 25[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 10 -> 26[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 10 -> 27[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 11[label="Cons (Char (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))) Nil",fontsize=16,color="green",shape="box"];12 -> 4[label="",style="dashed", color="red", weight=0]; 33.10/16.36 12[label="primShowInt (Pos wv30)",fontsize=16,color="magenta"];12 -> 16[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 25[label="wv300",fontsize=16,color="green",shape="box"];26 -> 4[label="",style="dashed", color="red", weight=0]; 33.10/16.36 26[label="primShowInt (divMyInt (Pos (Succ wv300)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))",fontsize=16,color="magenta"];26 -> 29[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 27[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];24[label="psPs wv11 (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil)",fontsize=16,color="burlywood",shape="triangle"];725[label="wv11/Cons wv110 wv111",fontsize=10,color="white",style="solid",shape="box"];24 -> 725[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 725 -> 30[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 726[label="wv11/Nil",fontsize=10,color="white",style="solid",shape="box"];24 -> 726[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 726 -> 31[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 16[label="Pos wv30",fontsize=16,color="green",shape="box"];29 -> 32[label="",style="dashed", color="red", weight=0]; 33.10/16.36 29[label="divMyInt (Pos (Succ wv300)) (Pos (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))",fontsize=16,color="magenta"];29 -> 33[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 29 -> 34[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 30[label="psPs (Cons wv110 wv111) (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil)",fontsize=16,color="black",shape="box"];30 -> 35[label="",style="solid", color="black", weight=3]; 33.10/16.36 31[label="psPs Nil (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil)",fontsize=16,color="black",shape="box"];31 -> 36[label="",style="solid", color="black", weight=3]; 33.10/16.36 33[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))",fontsize=16,color="green",shape="box"];34[label="wv300",fontsize=16,color="green",shape="box"];32[label="divMyInt (Pos (Succ wv13)) (Pos (Succ wv14))",fontsize=16,color="black",shape="triangle"];32 -> 37[label="",style="solid", color="black", weight=3]; 33.10/16.36 35[label="Cons wv110 (psPs wv111 (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil))",fontsize=16,color="green",shape="box"];35 -> 38[label="",style="dashed", color="green", weight=3]; 33.10/16.36 36[label="Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil",fontsize=16,color="green",shape="box"];36 -> 39[label="",style="dashed", color="green", weight=3]; 33.10/16.36 37[label="primDivInt (Pos (Succ wv13)) (Pos (Succ wv14))",fontsize=16,color="black",shape="box"];37 -> 40[label="",style="solid", color="black", weight=3]; 33.10/16.36 38 -> 24[label="",style="dashed", color="red", weight=0]; 33.10/16.36 38[label="psPs wv111 (Cons (toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))) Nil)",fontsize=16,color="magenta"];38 -> 41[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 39[label="toEnumChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))",fontsize=16,color="black",shape="box"];39 -> 42[label="",style="solid", color="black", weight=3]; 33.10/16.36 40[label="Pos (primDivNatS (Succ wv13) (Succ wv14))",fontsize=16,color="green",shape="box"];40 -> 43[label="",style="dashed", color="green", weight=3]; 33.10/16.36 41[label="wv111",fontsize=16,color="green",shape="box"];42[label="primIntToChar (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))",fontsize=16,color="black",shape="box"];42 -> 44[label="",style="solid", color="black", weight=3]; 33.10/16.36 43[label="primDivNatS (Succ wv13) (Succ wv14)",fontsize=16,color="black",shape="triangle"];43 -> 45[label="",style="solid", color="black", weight=3]; 33.10/16.36 44[label="Char (modMyInt (Pos (Succ wv8)) (Pos (Succ wv10)))",fontsize=16,color="green",shape="box"];44 -> 46[label="",style="dashed", color="green", weight=3]; 33.10/16.36 45[label="primDivNatS0 wv13 wv14 (primGEqNatS wv13 wv14)",fontsize=16,color="burlywood",shape="box"];727[label="wv13/Succ wv130",fontsize=10,color="white",style="solid",shape="box"];45 -> 727[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 727 -> 47[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 728[label="wv13/Zero",fontsize=10,color="white",style="solid",shape="box"];45 -> 728[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 728 -> 48[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 46[label="modMyInt (Pos (Succ wv8)) (Pos (Succ wv10))",fontsize=16,color="black",shape="box"];46 -> 49[label="",style="solid", color="black", weight=3]; 33.10/16.36 47[label="primDivNatS0 (Succ wv130) wv14 (primGEqNatS (Succ wv130) wv14)",fontsize=16,color="burlywood",shape="box"];729[label="wv14/Succ wv140",fontsize=10,color="white",style="solid",shape="box"];47 -> 729[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 729 -> 50[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 730[label="wv14/Zero",fontsize=10,color="white",style="solid",shape="box"];47 -> 730[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 730 -> 51[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 48[label="primDivNatS0 Zero wv14 (primGEqNatS Zero wv14)",fontsize=16,color="burlywood",shape="box"];731[label="wv14/Succ wv140",fontsize=10,color="white",style="solid",shape="box"];48 -> 731[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 731 -> 52[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 732[label="wv14/Zero",fontsize=10,color="white",style="solid",shape="box"];48 -> 732[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 732 -> 53[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 49[label="primModInt (Pos (Succ wv8)) (Pos (Succ wv10))",fontsize=16,color="black",shape="box"];49 -> 54[label="",style="solid", color="black", weight=3]; 33.10/16.36 50[label="primDivNatS0 (Succ wv130) (Succ wv140) (primGEqNatS (Succ wv130) (Succ wv140))",fontsize=16,color="black",shape="box"];50 -> 55[label="",style="solid", color="black", weight=3]; 33.10/16.36 51[label="primDivNatS0 (Succ wv130) Zero (primGEqNatS (Succ wv130) Zero)",fontsize=16,color="black",shape="box"];51 -> 56[label="",style="solid", color="black", weight=3]; 33.10/16.36 52[label="primDivNatS0 Zero (Succ wv140) (primGEqNatS Zero (Succ wv140))",fontsize=16,color="black",shape="box"];52 -> 57[label="",style="solid", color="black", weight=3]; 33.10/16.36 53[label="primDivNatS0 Zero Zero (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];53 -> 58[label="",style="solid", color="black", weight=3]; 33.10/16.36 54[label="Pos (primModNatS (Succ wv8) (Succ wv10))",fontsize=16,color="green",shape="box"];54 -> 59[label="",style="dashed", color="green", weight=3]; 33.10/16.36 55 -> 324[label="",style="dashed", color="red", weight=0]; 33.10/16.36 55[label="primDivNatS0 (Succ wv130) (Succ wv140) (primGEqNatS wv130 wv140)",fontsize=16,color="magenta"];55 -> 325[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 55 -> 326[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 55 -> 327[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 55 -> 328[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 56[label="primDivNatS0 (Succ wv130) Zero MyTrue",fontsize=16,color="black",shape="box"];56 -> 62[label="",style="solid", color="black", weight=3]; 33.10/16.36 57[label="primDivNatS0 Zero (Succ wv140) MyFalse",fontsize=16,color="black",shape="box"];57 -> 63[label="",style="solid", color="black", weight=3]; 33.10/16.36 58[label="primDivNatS0 Zero Zero MyTrue",fontsize=16,color="black",shape="box"];58 -> 64[label="",style="solid", color="black", weight=3]; 33.10/16.36 59[label="primModNatS (Succ wv8) (Succ wv10)",fontsize=16,color="burlywood",shape="triangle"];733[label="wv10/Succ wv100",fontsize=10,color="white",style="solid",shape="box"];59 -> 733[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 733 -> 65[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 734[label="wv10/Zero",fontsize=10,color="white",style="solid",shape="box"];59 -> 734[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 734 -> 66[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 325[label="wv130",fontsize=16,color="green",shape="box"];326[label="wv130",fontsize=16,color="green",shape="box"];327[label="wv140",fontsize=16,color="green",shape="box"];328[label="wv140",fontsize=16,color="green",shape="box"];324[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS wv33 wv34)",fontsize=16,color="burlywood",shape="triangle"];735[label="wv33/Succ wv330",fontsize=10,color="white",style="solid",shape="box"];324 -> 735[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 735 -> 357[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 736[label="wv33/Zero",fontsize=10,color="white",style="solid",shape="box"];324 -> 736[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 736 -> 358[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 62[label="Succ (primDivNatS (primMinusNatS (Succ wv130) Zero) (Succ Zero))",fontsize=16,color="green",shape="box"];62 -> 71[label="",style="dashed", color="green", weight=3]; 33.10/16.36 63[label="Zero",fontsize=16,color="green",shape="box"];64[label="Succ (primDivNatS (primMinusNatS Zero Zero) (Succ Zero))",fontsize=16,color="green",shape="box"];64 -> 72[label="",style="dashed", color="green", weight=3]; 33.10/16.36 65[label="primModNatS (Succ wv8) (Succ (Succ wv100))",fontsize=16,color="black",shape="box"];65 -> 73[label="",style="solid", color="black", weight=3]; 33.10/16.36 66[label="primModNatS (Succ wv8) (Succ Zero)",fontsize=16,color="black",shape="box"];66 -> 74[label="",style="solid", color="black", weight=3]; 33.10/16.36 357[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS (Succ wv330) wv34)",fontsize=16,color="burlywood",shape="box"];737[label="wv34/Succ wv340",fontsize=10,color="white",style="solid",shape="box"];357 -> 737[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 737 -> 364[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 738[label="wv34/Zero",fontsize=10,color="white",style="solid",shape="box"];357 -> 738[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 738 -> 365[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 358[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS Zero wv34)",fontsize=16,color="burlywood",shape="box"];739[label="wv34/Succ wv340",fontsize=10,color="white",style="solid",shape="box"];358 -> 739[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 739 -> 366[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 740[label="wv34/Zero",fontsize=10,color="white",style="solid",shape="box"];358 -> 740[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 740 -> 367[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 71 -> 591[label="",style="dashed", color="red", weight=0]; 33.10/16.36 71[label="primDivNatS (primMinusNatS (Succ wv130) Zero) (Succ Zero)",fontsize=16,color="magenta"];71 -> 592[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 71 -> 593[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 71 -> 594[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 72 -> 591[label="",style="dashed", color="red", weight=0]; 33.10/16.36 72[label="primDivNatS (primMinusNatS Zero Zero) (Succ Zero)",fontsize=16,color="magenta"];72 -> 595[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 72 -> 596[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 72 -> 597[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 73[label="primModNatS0 wv8 wv100 (primGEqNatS wv8 (Succ wv100))",fontsize=16,color="burlywood",shape="box"];741[label="wv8/Succ wv80",fontsize=10,color="white",style="solid",shape="box"];73 -> 741[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 741 -> 81[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 742[label="wv8/Zero",fontsize=10,color="white",style="solid",shape="box"];73 -> 742[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 742 -> 82[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 74[label="Zero",fontsize=16,color="green",shape="box"];364[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS (Succ wv330) (Succ wv340))",fontsize=16,color="black",shape="box"];364 -> 376[label="",style="solid", color="black", weight=3]; 33.10/16.36 365[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS (Succ wv330) Zero)",fontsize=16,color="black",shape="box"];365 -> 377[label="",style="solid", color="black", weight=3]; 33.10/16.36 366[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS Zero (Succ wv340))",fontsize=16,color="black",shape="box"];366 -> 378[label="",style="solid", color="black", weight=3]; 33.10/16.36 367[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];367 -> 379[label="",style="solid", color="black", weight=3]; 33.10/16.36 592[label="Succ wv130",fontsize=16,color="green",shape="box"];593[label="Zero",fontsize=16,color="green",shape="box"];594[label="Zero",fontsize=16,color="green",shape="box"];591[label="primDivNatS (primMinusNatS wv65 wv66) (Succ wv67)",fontsize=16,color="burlywood",shape="triangle"];743[label="wv65/Succ wv650",fontsize=10,color="white",style="solid",shape="box"];591 -> 743[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 743 -> 616[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 744[label="wv65/Zero",fontsize=10,color="white",style="solid",shape="box"];591 -> 744[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 744 -> 617[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 595[label="Zero",fontsize=16,color="green",shape="box"];596[label="Zero",fontsize=16,color="green",shape="box"];597[label="Zero",fontsize=16,color="green",shape="box"];81[label="primModNatS0 (Succ wv80) wv100 (primGEqNatS (Succ wv80) (Succ wv100))",fontsize=16,color="black",shape="box"];81 -> 91[label="",style="solid", color="black", weight=3]; 33.10/16.36 82[label="primModNatS0 Zero wv100 (primGEqNatS Zero (Succ wv100))",fontsize=16,color="black",shape="box"];82 -> 92[label="",style="solid", color="black", weight=3]; 33.10/16.36 376 -> 324[label="",style="dashed", color="red", weight=0]; 33.10/16.36 376[label="primDivNatS0 (Succ wv31) (Succ wv32) (primGEqNatS wv330 wv340)",fontsize=16,color="magenta"];376 -> 389[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 376 -> 390[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 377[label="primDivNatS0 (Succ wv31) (Succ wv32) MyTrue",fontsize=16,color="black",shape="triangle"];377 -> 391[label="",style="solid", color="black", weight=3]; 33.10/16.36 378[label="primDivNatS0 (Succ wv31) (Succ wv32) MyFalse",fontsize=16,color="black",shape="box"];378 -> 392[label="",style="solid", color="black", weight=3]; 33.10/16.36 379 -> 377[label="",style="dashed", color="red", weight=0]; 33.10/16.36 379[label="primDivNatS0 (Succ wv31) (Succ wv32) MyTrue",fontsize=16,color="magenta"];616[label="primDivNatS (primMinusNatS (Succ wv650) wv66) (Succ wv67)",fontsize=16,color="burlywood",shape="box"];745[label="wv66/Succ wv660",fontsize=10,color="white",style="solid",shape="box"];616 -> 745[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 745 -> 619[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 746[label="wv66/Zero",fontsize=10,color="white",style="solid",shape="box"];616 -> 746[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 746 -> 620[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 617[label="primDivNatS (primMinusNatS Zero wv66) (Succ wv67)",fontsize=16,color="burlywood",shape="box"];747[label="wv66/Succ wv660",fontsize=10,color="white",style="solid",shape="box"];617 -> 747[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 747 -> 621[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 748[label="wv66/Zero",fontsize=10,color="white",style="solid",shape="box"];617 -> 748[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 748 -> 622[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 91[label="primModNatS0 (Succ wv80) wv100 (primGEqNatS wv80 wv100)",fontsize=16,color="burlywood",shape="box"];749[label="wv80/Succ wv800",fontsize=10,color="white",style="solid",shape="box"];91 -> 749[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 749 -> 99[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 750[label="wv80/Zero",fontsize=10,color="white",style="solid",shape="box"];91 -> 750[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 750 -> 100[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 92[label="primModNatS0 Zero wv100 MyFalse",fontsize=16,color="black",shape="box"];92 -> 101[label="",style="solid", color="black", weight=3]; 33.10/16.36 389[label="wv330",fontsize=16,color="green",shape="box"];390[label="wv340",fontsize=16,color="green",shape="box"];391[label="Succ (primDivNatS (primMinusNatS (Succ wv31) (Succ wv32)) (Succ (Succ wv32)))",fontsize=16,color="green",shape="box"];391 -> 400[label="",style="dashed", color="green", weight=3]; 33.10/16.36 392[label="Zero",fontsize=16,color="green",shape="box"];619[label="primDivNatS (primMinusNatS (Succ wv650) (Succ wv660)) (Succ wv67)",fontsize=16,color="black",shape="box"];619 -> 625[label="",style="solid", color="black", weight=3]; 33.10/16.36 620[label="primDivNatS (primMinusNatS (Succ wv650) Zero) (Succ wv67)",fontsize=16,color="black",shape="box"];620 -> 626[label="",style="solid", color="black", weight=3]; 33.10/16.36 621[label="primDivNatS (primMinusNatS Zero (Succ wv660)) (Succ wv67)",fontsize=16,color="black",shape="box"];621 -> 627[label="",style="solid", color="black", weight=3]; 33.10/16.36 622[label="primDivNatS (primMinusNatS Zero Zero) (Succ wv67)",fontsize=16,color="black",shape="box"];622 -> 628[label="",style="solid", color="black", weight=3]; 33.10/16.36 99[label="primModNatS0 (Succ (Succ wv800)) wv100 (primGEqNatS (Succ wv800) wv100)",fontsize=16,color="burlywood",shape="box"];751[label="wv100/Succ wv1000",fontsize=10,color="white",style="solid",shape="box"];99 -> 751[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 751 -> 108[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 752[label="wv100/Zero",fontsize=10,color="white",style="solid",shape="box"];99 -> 752[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 752 -> 109[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 100[label="primModNatS0 (Succ Zero) wv100 (primGEqNatS Zero wv100)",fontsize=16,color="burlywood",shape="box"];753[label="wv100/Succ wv1000",fontsize=10,color="white",style="solid",shape="box"];100 -> 753[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 753 -> 110[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 754[label="wv100/Zero",fontsize=10,color="white",style="solid",shape="box"];100 -> 754[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 754 -> 111[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 101[label="Succ Zero",fontsize=16,color="green",shape="box"];400 -> 591[label="",style="dashed", color="red", weight=0]; 33.10/16.36 400[label="primDivNatS (primMinusNatS (Succ wv31) (Succ wv32)) (Succ (Succ wv32))",fontsize=16,color="magenta"];400 -> 598[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 400 -> 599[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 400 -> 600[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 625 -> 591[label="",style="dashed", color="red", weight=0]; 33.10/16.36 625[label="primDivNatS (primMinusNatS wv650 wv660) (Succ wv67)",fontsize=16,color="magenta"];625 -> 631[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 625 -> 632[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 626 -> 43[label="",style="dashed", color="red", weight=0]; 33.10/16.36 626[label="primDivNatS (Succ wv650) (Succ wv67)",fontsize=16,color="magenta"];626 -> 633[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 626 -> 634[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 627[label="primDivNatS Zero (Succ wv67)",fontsize=16,color="black",shape="triangle"];627 -> 635[label="",style="solid", color="black", weight=3]; 33.10/16.36 628 -> 627[label="",style="dashed", color="red", weight=0]; 33.10/16.36 628[label="primDivNatS Zero (Succ wv67)",fontsize=16,color="magenta"];108[label="primModNatS0 (Succ (Succ wv800)) (Succ wv1000) (primGEqNatS (Succ wv800) (Succ wv1000))",fontsize=16,color="black",shape="box"];108 -> 119[label="",style="solid", color="black", weight=3]; 33.10/16.36 109[label="primModNatS0 (Succ (Succ wv800)) Zero (primGEqNatS (Succ wv800) Zero)",fontsize=16,color="black",shape="box"];109 -> 120[label="",style="solid", color="black", weight=3]; 33.10/16.36 110[label="primModNatS0 (Succ Zero) (Succ wv1000) (primGEqNatS Zero (Succ wv1000))",fontsize=16,color="black",shape="box"];110 -> 121[label="",style="solid", color="black", weight=3]; 33.10/16.36 111[label="primModNatS0 (Succ Zero) Zero (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];111 -> 122[label="",style="solid", color="black", weight=3]; 33.10/16.36 598[label="Succ wv31",fontsize=16,color="green",shape="box"];599[label="Succ wv32",fontsize=16,color="green",shape="box"];600[label="Succ wv32",fontsize=16,color="green",shape="box"];631[label="wv650",fontsize=16,color="green",shape="box"];632[label="wv660",fontsize=16,color="green",shape="box"];633[label="wv67",fontsize=16,color="green",shape="box"];634[label="wv650",fontsize=16,color="green",shape="box"];635[label="Zero",fontsize=16,color="green",shape="box"];119 -> 526[label="",style="dashed", color="red", weight=0]; 33.10/16.36 119[label="primModNatS0 (Succ (Succ wv800)) (Succ wv1000) (primGEqNatS wv800 wv1000)",fontsize=16,color="magenta"];119 -> 527[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 119 -> 528[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 119 -> 529[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 119 -> 530[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 120[label="primModNatS0 (Succ (Succ wv800)) Zero MyTrue",fontsize=16,color="black",shape="box"];120 -> 134[label="",style="solid", color="black", weight=3]; 33.10/16.36 121[label="primModNatS0 (Succ Zero) (Succ wv1000) MyFalse",fontsize=16,color="black",shape="box"];121 -> 135[label="",style="solid", color="black", weight=3]; 33.10/16.36 122[label="primModNatS0 (Succ Zero) Zero MyTrue",fontsize=16,color="black",shape="box"];122 -> 136[label="",style="solid", color="black", weight=3]; 33.10/16.36 527[label="Succ wv800",fontsize=16,color="green",shape="box"];528[label="wv1000",fontsize=16,color="green",shape="box"];529[label="wv800",fontsize=16,color="green",shape="box"];530[label="wv1000",fontsize=16,color="green",shape="box"];526[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS wv62 wv63)",fontsize=16,color="burlywood",shape="triangle"];755[label="wv62/Succ wv620",fontsize=10,color="white",style="solid",shape="box"];526 -> 755[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 755 -> 563[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 756[label="wv62/Zero",fontsize=10,color="white",style="solid",shape="box"];526 -> 756[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 756 -> 564[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 134 -> 675[label="",style="dashed", color="red", weight=0]; 33.10/16.36 134[label="primModNatS (primMinusNatS (Succ (Succ wv800)) (Succ Zero)) (Succ (Succ Zero))",fontsize=16,color="magenta"];134 -> 676[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 134 -> 677[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 134 -> 678[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 135[label="Succ (Succ Zero)",fontsize=16,color="green",shape="box"];136 -> 675[label="",style="dashed", color="red", weight=0]; 33.10/16.36 136[label="primModNatS (primMinusNatS (Succ Zero) (Succ Zero)) (Succ (Succ Zero))",fontsize=16,color="magenta"];136 -> 679[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 136 -> 680[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 136 -> 681[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 563[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS (Succ wv620) wv63)",fontsize=16,color="burlywood",shape="box"];757[label="wv63/Succ wv630",fontsize=10,color="white",style="solid",shape="box"];563 -> 757[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 757 -> 571[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 758[label="wv63/Zero",fontsize=10,color="white",style="solid",shape="box"];563 -> 758[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 758 -> 572[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 564[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS Zero wv63)",fontsize=16,color="burlywood",shape="box"];759[label="wv63/Succ wv630",fontsize=10,color="white",style="solid",shape="box"];564 -> 759[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 759 -> 573[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 760[label="wv63/Zero",fontsize=10,color="white",style="solid",shape="box"];564 -> 760[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 760 -> 574[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 676[label="Succ Zero",fontsize=16,color="green",shape="box"];677[label="Succ Zero",fontsize=16,color="green",shape="box"];678[label="Succ (Succ wv800)",fontsize=16,color="green",shape="box"];675[label="primModNatS (primMinusNatS wv69 wv70) (Succ wv71)",fontsize=16,color="burlywood",shape="triangle"];761[label="wv69/Succ wv690",fontsize=10,color="white",style="solid",shape="box"];675 -> 761[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 761 -> 706[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 762[label="wv69/Zero",fontsize=10,color="white",style="solid",shape="box"];675 -> 762[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 762 -> 707[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 679[label="Succ Zero",fontsize=16,color="green",shape="box"];680[label="Succ Zero",fontsize=16,color="green",shape="box"];681[label="Succ Zero",fontsize=16,color="green",shape="box"];571[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS (Succ wv620) (Succ wv630))",fontsize=16,color="black",shape="box"];571 -> 579[label="",style="solid", color="black", weight=3]; 33.10/16.36 572[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS (Succ wv620) Zero)",fontsize=16,color="black",shape="box"];572 -> 580[label="",style="solid", color="black", weight=3]; 33.10/16.36 573[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS Zero (Succ wv630))",fontsize=16,color="black",shape="box"];573 -> 581[label="",style="solid", color="black", weight=3]; 33.10/16.36 574[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];574 -> 582[label="",style="solid", color="black", weight=3]; 33.10/16.36 706[label="primModNatS (primMinusNatS (Succ wv690) wv70) (Succ wv71)",fontsize=16,color="burlywood",shape="box"];763[label="wv70/Succ wv700",fontsize=10,color="white",style="solid",shape="box"];706 -> 763[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 763 -> 708[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 764[label="wv70/Zero",fontsize=10,color="white",style="solid",shape="box"];706 -> 764[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 764 -> 709[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 707[label="primModNatS (primMinusNatS Zero wv70) (Succ wv71)",fontsize=16,color="burlywood",shape="box"];765[label="wv70/Succ wv700",fontsize=10,color="white",style="solid",shape="box"];707 -> 765[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 765 -> 710[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 766[label="wv70/Zero",fontsize=10,color="white",style="solid",shape="box"];707 -> 766[label="",style="solid", color="burlywood", weight=9]; 33.10/16.36 766 -> 711[label="",style="solid", color="burlywood", weight=3]; 33.10/16.36 579 -> 526[label="",style="dashed", color="red", weight=0]; 33.10/16.36 579[label="primModNatS0 (Succ wv60) (Succ wv61) (primGEqNatS wv620 wv630)",fontsize=16,color="magenta"];579 -> 587[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 579 -> 588[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 580[label="primModNatS0 (Succ wv60) (Succ wv61) MyTrue",fontsize=16,color="black",shape="triangle"];580 -> 589[label="",style="solid", color="black", weight=3]; 33.10/16.36 581[label="primModNatS0 (Succ wv60) (Succ wv61) MyFalse",fontsize=16,color="black",shape="box"];581 -> 590[label="",style="solid", color="black", weight=3]; 33.10/16.36 582 -> 580[label="",style="dashed", color="red", weight=0]; 33.10/16.36 582[label="primModNatS0 (Succ wv60) (Succ wv61) MyTrue",fontsize=16,color="magenta"];708[label="primModNatS (primMinusNatS (Succ wv690) (Succ wv700)) (Succ wv71)",fontsize=16,color="black",shape="box"];708 -> 712[label="",style="solid", color="black", weight=3]; 33.10/16.36 709[label="primModNatS (primMinusNatS (Succ wv690) Zero) (Succ wv71)",fontsize=16,color="black",shape="box"];709 -> 713[label="",style="solid", color="black", weight=3]; 33.10/16.36 710[label="primModNatS (primMinusNatS Zero (Succ wv700)) (Succ wv71)",fontsize=16,color="black",shape="box"];710 -> 714[label="",style="solid", color="black", weight=3]; 33.10/16.36 711[label="primModNatS (primMinusNatS Zero Zero) (Succ wv71)",fontsize=16,color="black",shape="box"];711 -> 715[label="",style="solid", color="black", weight=3]; 33.10/16.36 587[label="wv630",fontsize=16,color="green",shape="box"];588[label="wv620",fontsize=16,color="green",shape="box"];589 -> 675[label="",style="dashed", color="red", weight=0]; 33.10/16.36 589[label="primModNatS (primMinusNatS (Succ wv60) (Succ (Succ wv61))) (Succ (Succ (Succ wv61)))",fontsize=16,color="magenta"];589 -> 688[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 589 -> 689[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 589 -> 690[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 590[label="Succ (Succ wv60)",fontsize=16,color="green",shape="box"];712 -> 675[label="",style="dashed", color="red", weight=0]; 33.10/16.36 712[label="primModNatS (primMinusNatS wv690 wv700) (Succ wv71)",fontsize=16,color="magenta"];712 -> 716[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 712 -> 717[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 713 -> 59[label="",style="dashed", color="red", weight=0]; 33.10/16.36 713[label="primModNatS (Succ wv690) (Succ wv71)",fontsize=16,color="magenta"];713 -> 718[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 713 -> 719[label="",style="dashed", color="magenta", weight=3]; 33.10/16.36 714[label="primModNatS Zero (Succ wv71)",fontsize=16,color="black",shape="triangle"];714 -> 720[label="",style="solid", color="black", weight=3]; 33.10/16.36 715 -> 714[label="",style="dashed", color="red", weight=0]; 33.10/16.36 715[label="primModNatS Zero (Succ wv71)",fontsize=16,color="magenta"];688[label="Succ (Succ wv61)",fontsize=16,color="green",shape="box"];689[label="Succ (Succ wv61)",fontsize=16,color="green",shape="box"];690[label="Succ wv60",fontsize=16,color="green",shape="box"];716[label="wv700",fontsize=16,color="green",shape="box"];717[label="wv690",fontsize=16,color="green",shape="box"];718[label="wv690",fontsize=16,color="green",shape="box"];719[label="wv71",fontsize=16,color="green",shape="box"];720[label="Zero",fontsize=16,color="green",shape="box"];} 33.10/16.36 33.10/16.36 ---------------------------------------- 33.10/16.36 33.10/16.36 (60) 33.10/16.36 Obligation: 33.10/16.36 Q DP problem: 33.10/16.36 The TRS P consists of the following rules: 33.10/16.36 33.10/16.36 new_primShowInt(Main.Neg(wv30), []) -> new_primShowInt(Main.Pos(wv30), []) 33.10/16.36 33.10/16.36 R is empty. 33.10/16.36 Q is empty. 33.10/16.36 We have to consider all (P,Q,R)-chains. 33.10/16.36 ---------------------------------------- 33.10/16.36 33.10/16.36 (61) DependencyGraphProof (EQUIVALENT) 33.10/16.36 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. 33.10/16.36 ---------------------------------------- 33.10/16.36 33.10/16.36 (62) 33.10/16.36 TRUE 33.21/16.40 EOF