8.96/3.93 YES 11.17/4.54 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 11.17/4.54 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 11.17/4.54 11.17/4.54 11.17/4.54 H-Termination with start terms of the given HASKELL could be proven: 11.17/4.54 11.17/4.54 (0) HASKELL 11.17/4.54 (1) BR [EQUIVALENT, 0 ms] 11.17/4.54 (2) HASKELL 11.17/4.54 (3) COR [EQUIVALENT, 0 ms] 11.17/4.54 (4) HASKELL 11.17/4.54 (5) Narrow [SOUND, 0 ms] 11.17/4.54 (6) AND 11.17/4.54 (7) QDP 11.17/4.54 (8) QDPSizeChangeProof [EQUIVALENT, 0 ms] 11.17/4.54 (9) YES 11.17/4.54 (10) QDP 11.17/4.54 (11) QDPSizeChangeProof [EQUIVALENT, 0 ms] 11.17/4.54 (12) YES 11.17/4.54 (13) QDP 11.17/4.54 (14) QDPSizeChangeProof [EQUIVALENT, 0 ms] 11.17/4.54 (15) YES 11.17/4.54 (16) QDP 11.17/4.54 (17) QDPSizeChangeProof [EQUIVALENT, 0 ms] 11.17/4.54 (18) YES 11.17/4.54 (19) QDP 11.17/4.54 (20) DependencyGraphProof [EQUIVALENT, 0 ms] 11.17/4.54 (21) AND 11.17/4.54 (22) QDP 11.17/4.54 (23) QDPSizeChangeProof [EQUIVALENT, 29 ms] 11.17/4.54 (24) YES 11.17/4.54 (25) QDP 11.17/4.54 (26) MRRProof [EQUIVALENT, 0 ms] 11.17/4.54 (27) QDP 11.17/4.54 (28) PisEmptyProof [EQUIVALENT, 0 ms] 11.17/4.54 (29) YES 11.17/4.54 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (0) 11.17/4.54 Obligation: 11.17/4.54 mainModule Main 11.17/4.54 module Main where { 11.17/4.54 import qualified Prelude; 11.17/4.54 data Float = Float MyInt MyInt ; 11.17/4.54 11.17/4.54 data MyBool = MyTrue | MyFalse ; 11.17/4.54 11.17/4.54 data MyInt = Pos Main.Nat | Neg Main.Nat ; 11.17/4.54 11.17/4.54 data Main.Nat = Succ Main.Nat | Zero ; 11.17/4.54 11.17/4.54 data Tup2 b a = Tup2 b a ; 11.17/4.54 11.17/4.54 error :: a; 11.17/4.54 error = stop MyTrue; 11.17/4.54 11.17/4.54 floatProperFractionFloat (Float vv vw) = Tup2 (quotMyInt vv vw) (msFloat (Float vv vw) (fromIntFloat (quotMyInt vv vw))); 11.17/4.54 11.17/4.54 fromIntFloat :: MyInt -> Float; 11.17/4.54 fromIntFloat = primIntToFloat; 11.17/4.54 11.17/4.54 msFloat :: Float -> Float -> Float; 11.17/4.54 msFloat = primMinusFloat; 11.17/4.54 11.17/4.54 msMyInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 msMyInt = primMinusInt; 11.17/4.54 11.17/4.54 primDivNatS :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primDivNatS Main.Zero Main.Zero = Main.error; 11.17/4.54 primDivNatS (Main.Succ x) Main.Zero = Main.error; 11.17/4.54 primDivNatS (Main.Succ x) (Main.Succ y) = primDivNatS0 x y (primGEqNatS x y); 11.17/4.54 primDivNatS Main.Zero (Main.Succ x) = Main.Zero; 11.17/4.54 11.17/4.54 primDivNatS0 x y MyTrue = Main.Succ (primDivNatS (primMinusNatS x y) (Main.Succ y)); 11.17/4.54 primDivNatS0 x y MyFalse = Main.Zero; 11.17/4.54 11.17/4.54 primGEqNatS :: Main.Nat -> Main.Nat -> MyBool; 11.17/4.54 primGEqNatS (Main.Succ x) Main.Zero = MyTrue; 11.17/4.54 primGEqNatS (Main.Succ x) (Main.Succ y) = primGEqNatS x y; 11.17/4.54 primGEqNatS Main.Zero (Main.Succ x) = MyFalse; 11.17/4.54 primGEqNatS Main.Zero Main.Zero = MyTrue; 11.17/4.54 11.17/4.54 primIntToFloat :: MyInt -> Float; 11.17/4.54 primIntToFloat x = Float x (Main.Pos (Main.Succ Main.Zero)); 11.17/4.54 11.17/4.54 primMinusFloat :: Float -> Float -> Float; 11.17/4.54 primMinusFloat (Float x1 x2) (Float y1 y2) = Float (msMyInt x1 y1) (srMyInt x2 y2); 11.17/4.54 11.17/4.54 primMinusInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 primMinusInt (Main.Pos x) (Main.Neg y) = Main.Pos (primPlusNat x y); 11.17/4.54 primMinusInt (Main.Neg x) (Main.Pos y) = Main.Neg (primPlusNat x y); 11.17/4.54 primMinusInt (Main.Neg x) (Main.Neg y) = primMinusNat y x; 11.17/4.54 primMinusInt (Main.Pos x) (Main.Pos y) = primMinusNat x y; 11.17/4.54 11.17/4.54 primMinusNat :: Main.Nat -> Main.Nat -> MyInt; 11.17/4.54 primMinusNat Main.Zero Main.Zero = Main.Pos Main.Zero; 11.17/4.54 primMinusNat Main.Zero (Main.Succ y) = Main.Neg (Main.Succ y); 11.17/4.54 primMinusNat (Main.Succ x) Main.Zero = Main.Pos (Main.Succ x); 11.17/4.54 primMinusNat (Main.Succ x) (Main.Succ y) = primMinusNat x y; 11.17/4.54 11.17/4.54 primMinusNatS :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primMinusNatS (Main.Succ x) (Main.Succ y) = primMinusNatS x y; 11.17/4.54 primMinusNatS Main.Zero (Main.Succ y) = Main.Zero; 11.17/4.54 primMinusNatS x Main.Zero = x; 11.17/4.54 11.17/4.54 primMulInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 primMulInt (Main.Pos x) (Main.Pos y) = Main.Pos (primMulNat x y); 11.17/4.54 primMulInt (Main.Pos x) (Main.Neg y) = Main.Neg (primMulNat x y); 11.17/4.54 primMulInt (Main.Neg x) (Main.Pos y) = Main.Neg (primMulNat x y); 11.17/4.54 primMulInt (Main.Neg x) (Main.Neg y) = Main.Pos (primMulNat x y); 11.17/4.54 11.17/4.54 primMulNat :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primMulNat Main.Zero Main.Zero = Main.Zero; 11.17/4.54 primMulNat Main.Zero (Main.Succ y) = Main.Zero; 11.17/4.54 primMulNat (Main.Succ x) Main.Zero = Main.Zero; 11.17/4.54 primMulNat (Main.Succ x) (Main.Succ y) = primPlusNat (primMulNat x (Main.Succ y)) (Main.Succ y); 11.17/4.54 11.17/4.54 primPlusNat :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primPlusNat Main.Zero Main.Zero = Main.Zero; 11.17/4.54 primPlusNat Main.Zero (Main.Succ y) = Main.Succ y; 11.17/4.54 primPlusNat (Main.Succ x) Main.Zero = Main.Succ x; 11.17/4.54 primPlusNat (Main.Succ x) (Main.Succ y) = Main.Succ (Main.Succ (primPlusNat x y)); 11.17/4.54 11.17/4.54 primQuotInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 primQuotInt (Main.Pos x) (Main.Pos (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt (Main.Pos x) (Main.Neg (Main.Succ y)) = Main.Neg (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt (Main.Neg x) (Main.Pos (Main.Succ y)) = Main.Neg (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt (Main.Neg x) (Main.Neg (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt vx vy = Main.error; 11.17/4.54 11.17/4.54 properFractionFloat :: Float -> Tup2 MyInt Float; 11.17/4.54 properFractionFloat = floatProperFractionFloat; 11.17/4.54 11.17/4.54 quotMyInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 quotMyInt = primQuotInt; 11.17/4.54 11.17/4.54 srMyInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 srMyInt = primMulInt; 11.17/4.54 11.17/4.54 stop :: MyBool -> a; 11.17/4.54 stop MyFalse = stop MyFalse; 11.17/4.54 11.17/4.54 } 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (1) BR (EQUIVALENT) 11.17/4.54 Replaced joker patterns by fresh variables and removed binding patterns. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (2) 11.17/4.54 Obligation: 11.17/4.54 mainModule Main 11.17/4.54 module Main where { 11.17/4.54 import qualified Prelude; 11.17/4.54 data Float = Float MyInt MyInt ; 11.17/4.54 11.17/4.54 data MyBool = MyTrue | MyFalse ; 11.17/4.54 11.17/4.54 data MyInt = Pos Main.Nat | Neg Main.Nat ; 11.17/4.54 11.17/4.54 data Main.Nat = Succ Main.Nat | Zero ; 11.17/4.54 11.17/4.54 data Tup2 a b = Tup2 a b ; 11.17/4.54 11.17/4.54 error :: a; 11.17/4.54 error = stop MyTrue; 11.17/4.54 11.17/4.54 floatProperFractionFloat (Float vv vw) = Tup2 (quotMyInt vv vw) (msFloat (Float vv vw) (fromIntFloat (quotMyInt vv vw))); 11.17/4.54 11.17/4.54 fromIntFloat :: MyInt -> Float; 11.17/4.54 fromIntFloat = primIntToFloat; 11.17/4.54 11.17/4.54 msFloat :: Float -> Float -> Float; 11.17/4.54 msFloat = primMinusFloat; 11.17/4.54 11.17/4.54 msMyInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 msMyInt = primMinusInt; 11.17/4.54 11.17/4.54 primDivNatS :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primDivNatS Main.Zero Main.Zero = Main.error; 11.17/4.54 primDivNatS (Main.Succ x) Main.Zero = Main.error; 11.17/4.54 primDivNatS (Main.Succ x) (Main.Succ y) = primDivNatS0 x y (primGEqNatS x y); 11.17/4.54 primDivNatS Main.Zero (Main.Succ x) = Main.Zero; 11.17/4.54 11.17/4.54 primDivNatS0 x y MyTrue = Main.Succ (primDivNatS (primMinusNatS x y) (Main.Succ y)); 11.17/4.54 primDivNatS0 x y MyFalse = Main.Zero; 11.17/4.54 11.17/4.54 primGEqNatS :: Main.Nat -> Main.Nat -> MyBool; 11.17/4.54 primGEqNatS (Main.Succ x) Main.Zero = MyTrue; 11.17/4.54 primGEqNatS (Main.Succ x) (Main.Succ y) = primGEqNatS x y; 11.17/4.54 primGEqNatS Main.Zero (Main.Succ x) = MyFalse; 11.17/4.54 primGEqNatS Main.Zero Main.Zero = MyTrue; 11.17/4.54 11.17/4.54 primIntToFloat :: MyInt -> Float; 11.17/4.54 primIntToFloat x = Float x (Main.Pos (Main.Succ Main.Zero)); 11.17/4.54 11.17/4.54 primMinusFloat :: Float -> Float -> Float; 11.17/4.54 primMinusFloat (Float x1 x2) (Float y1 y2) = Float (msMyInt x1 y1) (srMyInt x2 y2); 11.17/4.54 11.17/4.54 primMinusInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 primMinusInt (Main.Pos x) (Main.Neg y) = Main.Pos (primPlusNat x y); 11.17/4.54 primMinusInt (Main.Neg x) (Main.Pos y) = Main.Neg (primPlusNat x y); 11.17/4.54 primMinusInt (Main.Neg x) (Main.Neg y) = primMinusNat y x; 11.17/4.54 primMinusInt (Main.Pos x) (Main.Pos y) = primMinusNat x y; 11.17/4.54 11.17/4.54 primMinusNat :: Main.Nat -> Main.Nat -> MyInt; 11.17/4.54 primMinusNat Main.Zero Main.Zero = Main.Pos Main.Zero; 11.17/4.54 primMinusNat Main.Zero (Main.Succ y) = Main.Neg (Main.Succ y); 11.17/4.54 primMinusNat (Main.Succ x) Main.Zero = Main.Pos (Main.Succ x); 11.17/4.54 primMinusNat (Main.Succ x) (Main.Succ y) = primMinusNat x y; 11.17/4.54 11.17/4.54 primMinusNatS :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primMinusNatS (Main.Succ x) (Main.Succ y) = primMinusNatS x y; 11.17/4.54 primMinusNatS Main.Zero (Main.Succ y) = Main.Zero; 11.17/4.54 primMinusNatS x Main.Zero = x; 11.17/4.54 11.17/4.54 primMulInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 primMulInt (Main.Pos x) (Main.Pos y) = Main.Pos (primMulNat x y); 11.17/4.54 primMulInt (Main.Pos x) (Main.Neg y) = Main.Neg (primMulNat x y); 11.17/4.54 primMulInt (Main.Neg x) (Main.Pos y) = Main.Neg (primMulNat x y); 11.17/4.54 primMulInt (Main.Neg x) (Main.Neg y) = Main.Pos (primMulNat x y); 11.17/4.54 11.17/4.54 primMulNat :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primMulNat Main.Zero Main.Zero = Main.Zero; 11.17/4.54 primMulNat Main.Zero (Main.Succ y) = Main.Zero; 11.17/4.54 primMulNat (Main.Succ x) Main.Zero = Main.Zero; 11.17/4.54 primMulNat (Main.Succ x) (Main.Succ y) = primPlusNat (primMulNat x (Main.Succ y)) (Main.Succ y); 11.17/4.54 11.17/4.54 primPlusNat :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primPlusNat Main.Zero Main.Zero = Main.Zero; 11.17/4.54 primPlusNat Main.Zero (Main.Succ y) = Main.Succ y; 11.17/4.54 primPlusNat (Main.Succ x) Main.Zero = Main.Succ x; 11.17/4.54 primPlusNat (Main.Succ x) (Main.Succ y) = Main.Succ (Main.Succ (primPlusNat x y)); 11.17/4.54 11.17/4.54 primQuotInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 primQuotInt (Main.Pos x) (Main.Pos (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt (Main.Pos x) (Main.Neg (Main.Succ y)) = Main.Neg (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt (Main.Neg x) (Main.Pos (Main.Succ y)) = Main.Neg (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt (Main.Neg x) (Main.Neg (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt vx vy = Main.error; 11.17/4.54 11.17/4.54 properFractionFloat :: Float -> Tup2 MyInt Float; 11.17/4.54 properFractionFloat = floatProperFractionFloat; 11.17/4.54 11.17/4.54 quotMyInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 quotMyInt = primQuotInt; 11.17/4.54 11.17/4.54 srMyInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 srMyInt = primMulInt; 11.17/4.54 11.17/4.54 stop :: MyBool -> a; 11.17/4.54 stop MyFalse = stop MyFalse; 11.17/4.54 11.17/4.54 } 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (3) COR (EQUIVALENT) 11.17/4.54 Cond Reductions: 11.17/4.54 The following Function with conditions 11.17/4.54 "undefined |Falseundefined; 11.17/4.54 " 11.17/4.54 is transformed to 11.17/4.54 "undefined = undefined1; 11.17/4.54 " 11.17/4.54 "undefined0 True = undefined; 11.17/4.54 " 11.17/4.54 "undefined1 = undefined0 False; 11.17/4.54 " 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (4) 11.17/4.54 Obligation: 11.17/4.54 mainModule Main 11.17/4.54 module Main where { 11.17/4.54 import qualified Prelude; 11.17/4.54 data Float = Float MyInt MyInt ; 11.17/4.54 11.17/4.54 data MyBool = MyTrue | MyFalse ; 11.17/4.54 11.17/4.54 data MyInt = Pos Main.Nat | Neg Main.Nat ; 11.17/4.54 11.17/4.54 data Main.Nat = Succ Main.Nat | Zero ; 11.17/4.54 11.17/4.54 data Tup2 b a = Tup2 b a ; 11.17/4.54 11.17/4.54 error :: a; 11.17/4.54 error = stop MyTrue; 11.17/4.54 11.17/4.54 floatProperFractionFloat (Float vv vw) = Tup2 (quotMyInt vv vw) (msFloat (Float vv vw) (fromIntFloat (quotMyInt vv vw))); 11.17/4.54 11.17/4.54 fromIntFloat :: MyInt -> Float; 11.17/4.54 fromIntFloat = primIntToFloat; 11.17/4.54 11.17/4.54 msFloat :: Float -> Float -> Float; 11.17/4.54 msFloat = primMinusFloat; 11.17/4.54 11.17/4.54 msMyInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 msMyInt = primMinusInt; 11.17/4.54 11.17/4.54 primDivNatS :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primDivNatS Main.Zero Main.Zero = Main.error; 11.17/4.54 primDivNatS (Main.Succ x) Main.Zero = Main.error; 11.17/4.54 primDivNatS (Main.Succ x) (Main.Succ y) = primDivNatS0 x y (primGEqNatS x y); 11.17/4.54 primDivNatS Main.Zero (Main.Succ x) = Main.Zero; 11.17/4.54 11.17/4.54 primDivNatS0 x y MyTrue = Main.Succ (primDivNatS (primMinusNatS x y) (Main.Succ y)); 11.17/4.54 primDivNatS0 x y MyFalse = Main.Zero; 11.17/4.54 11.17/4.54 primGEqNatS :: Main.Nat -> Main.Nat -> MyBool; 11.17/4.54 primGEqNatS (Main.Succ x) Main.Zero = MyTrue; 11.17/4.54 primGEqNatS (Main.Succ x) (Main.Succ y) = primGEqNatS x y; 11.17/4.54 primGEqNatS Main.Zero (Main.Succ x) = MyFalse; 11.17/4.54 primGEqNatS Main.Zero Main.Zero = MyTrue; 11.17/4.54 11.17/4.54 primIntToFloat :: MyInt -> Float; 11.17/4.54 primIntToFloat x = Float x (Main.Pos (Main.Succ Main.Zero)); 11.17/4.54 11.17/4.54 primMinusFloat :: Float -> Float -> Float; 11.17/4.54 primMinusFloat (Float x1 x2) (Float y1 y2) = Float (msMyInt x1 y1) (srMyInt x2 y2); 11.17/4.54 11.17/4.54 primMinusInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 primMinusInt (Main.Pos x) (Main.Neg y) = Main.Pos (primPlusNat x y); 11.17/4.54 primMinusInt (Main.Neg x) (Main.Pos y) = Main.Neg (primPlusNat x y); 11.17/4.54 primMinusInt (Main.Neg x) (Main.Neg y) = primMinusNat y x; 11.17/4.54 primMinusInt (Main.Pos x) (Main.Pos y) = primMinusNat x y; 11.17/4.54 11.17/4.54 primMinusNat :: Main.Nat -> Main.Nat -> MyInt; 11.17/4.54 primMinusNat Main.Zero Main.Zero = Main.Pos Main.Zero; 11.17/4.54 primMinusNat Main.Zero (Main.Succ y) = Main.Neg (Main.Succ y); 11.17/4.54 primMinusNat (Main.Succ x) Main.Zero = Main.Pos (Main.Succ x); 11.17/4.54 primMinusNat (Main.Succ x) (Main.Succ y) = primMinusNat x y; 11.17/4.54 11.17/4.54 primMinusNatS :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primMinusNatS (Main.Succ x) (Main.Succ y) = primMinusNatS x y; 11.17/4.54 primMinusNatS Main.Zero (Main.Succ y) = Main.Zero; 11.17/4.54 primMinusNatS x Main.Zero = x; 11.17/4.54 11.17/4.54 primMulInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 primMulInt (Main.Pos x) (Main.Pos y) = Main.Pos (primMulNat x y); 11.17/4.54 primMulInt (Main.Pos x) (Main.Neg y) = Main.Neg (primMulNat x y); 11.17/4.54 primMulInt (Main.Neg x) (Main.Pos y) = Main.Neg (primMulNat x y); 11.17/4.54 primMulInt (Main.Neg x) (Main.Neg y) = Main.Pos (primMulNat x y); 11.17/4.54 11.17/4.54 primMulNat :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primMulNat Main.Zero Main.Zero = Main.Zero; 11.17/4.54 primMulNat Main.Zero (Main.Succ y) = Main.Zero; 11.17/4.54 primMulNat (Main.Succ x) Main.Zero = Main.Zero; 11.17/4.54 primMulNat (Main.Succ x) (Main.Succ y) = primPlusNat (primMulNat x (Main.Succ y)) (Main.Succ y); 11.17/4.54 11.17/4.54 primPlusNat :: Main.Nat -> Main.Nat -> Main.Nat; 11.17/4.54 primPlusNat Main.Zero Main.Zero = Main.Zero; 11.17/4.54 primPlusNat Main.Zero (Main.Succ y) = Main.Succ y; 11.17/4.54 primPlusNat (Main.Succ x) Main.Zero = Main.Succ x; 11.17/4.54 primPlusNat (Main.Succ x) (Main.Succ y) = Main.Succ (Main.Succ (primPlusNat x y)); 11.17/4.54 11.17/4.54 primQuotInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 primQuotInt (Main.Pos x) (Main.Pos (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt (Main.Pos x) (Main.Neg (Main.Succ y)) = Main.Neg (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt (Main.Neg x) (Main.Pos (Main.Succ y)) = Main.Neg (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt (Main.Neg x) (Main.Neg (Main.Succ y)) = Main.Pos (primDivNatS x (Main.Succ y)); 11.17/4.54 primQuotInt vx vy = Main.error; 11.17/4.54 11.17/4.54 properFractionFloat :: Float -> Tup2 MyInt Float; 11.17/4.54 properFractionFloat = floatProperFractionFloat; 11.17/4.54 11.17/4.54 quotMyInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 quotMyInt = primQuotInt; 11.17/4.54 11.17/4.54 srMyInt :: MyInt -> MyInt -> MyInt; 11.17/4.54 srMyInt = primMulInt; 11.17/4.54 11.17/4.54 stop :: MyBool -> a; 11.17/4.54 stop MyFalse = stop MyFalse; 11.17/4.54 11.17/4.54 } 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (5) Narrow (SOUND) 11.17/4.54 Haskell To QDPs 11.17/4.54 11.17/4.54 digraph dp_graph { 11.17/4.54 node [outthreshold=100, inthreshold=100];1[label="properFractionFloat",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 11.17/4.54 3[label="properFractionFloat wv3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 11.17/4.54 4[label="floatProperFractionFloat wv3",fontsize=16,color="burlywood",shape="box"];344[label="wv3/Float wv30 wv31",fontsize=10,color="white",style="solid",shape="box"];4 -> 344[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 344 -> 5[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 5[label="floatProperFractionFloat (Float wv30 wv31)",fontsize=16,color="black",shape="box"];5 -> 6[label="",style="solid", color="black", weight=3]; 11.17/4.54 6[label="Tup2 (quotMyInt wv30 wv31) (msFloat (Float wv30 wv31) (fromIntFloat (quotMyInt wv30 wv31)))",fontsize=16,color="green",shape="box"];6 -> 7[label="",style="dashed", color="green", weight=3]; 11.17/4.54 6 -> 8[label="",style="dashed", color="green", weight=3]; 11.17/4.54 7[label="quotMyInt wv30 wv31",fontsize=16,color="black",shape="triangle"];7 -> 9[label="",style="solid", color="black", weight=3]; 11.17/4.54 8 -> 10[label="",style="dashed", color="red", weight=0]; 11.17/4.54 8[label="msFloat (Float wv30 wv31) (fromIntFloat (quotMyInt wv30 wv31))",fontsize=16,color="magenta"];8 -> 11[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 9[label="primQuotInt wv30 wv31",fontsize=16,color="burlywood",shape="box"];345[label="wv30/Pos wv300",fontsize=10,color="white",style="solid",shape="box"];9 -> 345[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 345 -> 12[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 346[label="wv30/Neg wv300",fontsize=10,color="white",style="solid",shape="box"];9 -> 346[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 346 -> 13[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 11 -> 7[label="",style="dashed", color="red", weight=0]; 11.17/4.54 11[label="quotMyInt wv30 wv31",fontsize=16,color="magenta"];10[label="msFloat (Float wv30 wv31) (fromIntFloat wv4)",fontsize=16,color="black",shape="triangle"];10 -> 14[label="",style="solid", color="black", weight=3]; 11.17/4.54 12[label="primQuotInt (Pos wv300) wv31",fontsize=16,color="burlywood",shape="box"];347[label="wv31/Pos wv310",fontsize=10,color="white",style="solid",shape="box"];12 -> 347[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 347 -> 15[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 348[label="wv31/Neg wv310",fontsize=10,color="white",style="solid",shape="box"];12 -> 348[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 348 -> 16[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 13[label="primQuotInt (Neg wv300) wv31",fontsize=16,color="burlywood",shape="box"];349[label="wv31/Pos wv310",fontsize=10,color="white",style="solid",shape="box"];13 -> 349[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 349 -> 17[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 350[label="wv31/Neg wv310",fontsize=10,color="white",style="solid",shape="box"];13 -> 350[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 350 -> 18[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 14[label="primMinusFloat (Float wv30 wv31) (fromIntFloat wv4)",fontsize=16,color="black",shape="box"];14 -> 19[label="",style="solid", color="black", weight=3]; 11.17/4.54 15[label="primQuotInt (Pos wv300) (Pos wv310)",fontsize=16,color="burlywood",shape="box"];351[label="wv310/Succ wv3100",fontsize=10,color="white",style="solid",shape="box"];15 -> 351[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 351 -> 20[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 352[label="wv310/Zero",fontsize=10,color="white",style="solid",shape="box"];15 -> 352[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 352 -> 21[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 16[label="primQuotInt (Pos wv300) (Neg wv310)",fontsize=16,color="burlywood",shape="box"];353[label="wv310/Succ wv3100",fontsize=10,color="white",style="solid",shape="box"];16 -> 353[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 353 -> 22[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 354[label="wv310/Zero",fontsize=10,color="white",style="solid",shape="box"];16 -> 354[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 354 -> 23[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 17[label="primQuotInt (Neg wv300) (Pos wv310)",fontsize=16,color="burlywood",shape="box"];355[label="wv310/Succ wv3100",fontsize=10,color="white",style="solid",shape="box"];17 -> 355[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 355 -> 24[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 356[label="wv310/Zero",fontsize=10,color="white",style="solid",shape="box"];17 -> 356[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 356 -> 25[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 18[label="primQuotInt (Neg wv300) (Neg wv310)",fontsize=16,color="burlywood",shape="box"];357[label="wv310/Succ wv3100",fontsize=10,color="white",style="solid",shape="box"];18 -> 357[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 357 -> 26[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 358[label="wv310/Zero",fontsize=10,color="white",style="solid",shape="box"];18 -> 358[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 358 -> 27[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 19[label="primMinusFloat (Float wv30 wv31) (primIntToFloat wv4)",fontsize=16,color="black",shape="box"];19 -> 28[label="",style="solid", color="black", weight=3]; 11.17/4.54 20[label="primQuotInt (Pos wv300) (Pos (Succ wv3100))",fontsize=16,color="black",shape="box"];20 -> 29[label="",style="solid", color="black", weight=3]; 11.17/4.54 21[label="primQuotInt (Pos wv300) (Pos Zero)",fontsize=16,color="black",shape="box"];21 -> 30[label="",style="solid", color="black", weight=3]; 11.17/4.54 22[label="primQuotInt (Pos wv300) (Neg (Succ wv3100))",fontsize=16,color="black",shape="box"];22 -> 31[label="",style="solid", color="black", weight=3]; 11.17/4.54 23[label="primQuotInt (Pos wv300) (Neg Zero)",fontsize=16,color="black",shape="box"];23 -> 32[label="",style="solid", color="black", weight=3]; 11.17/4.54 24[label="primQuotInt (Neg wv300) (Pos (Succ wv3100))",fontsize=16,color="black",shape="box"];24 -> 33[label="",style="solid", color="black", weight=3]; 11.17/4.54 25[label="primQuotInt (Neg wv300) (Pos Zero)",fontsize=16,color="black",shape="box"];25 -> 34[label="",style="solid", color="black", weight=3]; 11.17/4.54 26[label="primQuotInt (Neg wv300) (Neg (Succ wv3100))",fontsize=16,color="black",shape="box"];26 -> 35[label="",style="solid", color="black", weight=3]; 11.17/4.54 27[label="primQuotInt (Neg wv300) (Neg Zero)",fontsize=16,color="black",shape="box"];27 -> 36[label="",style="solid", color="black", weight=3]; 11.17/4.54 28[label="primMinusFloat (Float wv30 wv31) (Float wv4 (Pos (Succ Zero)))",fontsize=16,color="black",shape="box"];28 -> 37[label="",style="solid", color="black", weight=3]; 11.17/4.54 29[label="Pos (primDivNatS wv300 (Succ wv3100))",fontsize=16,color="green",shape="box"];29 -> 38[label="",style="dashed", color="green", weight=3]; 11.17/4.54 30[label="error",fontsize=16,color="black",shape="triangle"];30 -> 39[label="",style="solid", color="black", weight=3]; 11.17/4.54 31[label="Neg (primDivNatS wv300 (Succ wv3100))",fontsize=16,color="green",shape="box"];31 -> 40[label="",style="dashed", color="green", weight=3]; 11.17/4.54 32 -> 30[label="",style="dashed", color="red", weight=0]; 11.17/4.54 32[label="error",fontsize=16,color="magenta"];33[label="Neg (primDivNatS wv300 (Succ wv3100))",fontsize=16,color="green",shape="box"];33 -> 41[label="",style="dashed", color="green", weight=3]; 11.17/4.54 34 -> 30[label="",style="dashed", color="red", weight=0]; 11.17/4.54 34[label="error",fontsize=16,color="magenta"];35[label="Pos (primDivNatS wv300 (Succ wv3100))",fontsize=16,color="green",shape="box"];35 -> 42[label="",style="dashed", color="green", weight=3]; 11.17/4.54 36 -> 30[label="",style="dashed", color="red", weight=0]; 11.17/4.54 36[label="error",fontsize=16,color="magenta"];37[label="Float (msMyInt wv30 wv4) (srMyInt wv31 (Pos (Succ Zero)))",fontsize=16,color="green",shape="box"];37 -> 43[label="",style="dashed", color="green", weight=3]; 11.17/4.54 37 -> 44[label="",style="dashed", color="green", weight=3]; 11.17/4.54 38[label="primDivNatS wv300 (Succ wv3100)",fontsize=16,color="burlywood",shape="triangle"];359[label="wv300/Succ wv3000",fontsize=10,color="white",style="solid",shape="box"];38 -> 359[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 359 -> 45[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 360[label="wv300/Zero",fontsize=10,color="white",style="solid",shape="box"];38 -> 360[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 360 -> 46[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 39[label="stop MyTrue",fontsize=16,color="black",shape="box"];39 -> 47[label="",style="solid", color="black", weight=3]; 11.17/4.54 40 -> 38[label="",style="dashed", color="red", weight=0]; 11.17/4.54 40[label="primDivNatS wv300 (Succ wv3100)",fontsize=16,color="magenta"];40 -> 48[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 41 -> 38[label="",style="dashed", color="red", weight=0]; 11.17/4.54 41[label="primDivNatS wv300 (Succ wv3100)",fontsize=16,color="magenta"];41 -> 49[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 42 -> 38[label="",style="dashed", color="red", weight=0]; 11.17/4.54 42[label="primDivNatS wv300 (Succ wv3100)",fontsize=16,color="magenta"];42 -> 50[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 42 -> 51[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 43[label="msMyInt wv30 wv4",fontsize=16,color="black",shape="box"];43 -> 52[label="",style="solid", color="black", weight=3]; 11.17/4.54 44[label="srMyInt wv31 (Pos (Succ Zero))",fontsize=16,color="black",shape="box"];44 -> 53[label="",style="solid", color="black", weight=3]; 11.17/4.54 45[label="primDivNatS (Succ wv3000) (Succ wv3100)",fontsize=16,color="black",shape="box"];45 -> 54[label="",style="solid", color="black", weight=3]; 11.17/4.54 46[label="primDivNatS Zero (Succ wv3100)",fontsize=16,color="black",shape="box"];46 -> 55[label="",style="solid", color="black", weight=3]; 11.17/4.54 47[label="error []",fontsize=16,color="red",shape="box"];48[label="wv3100",fontsize=16,color="green",shape="box"];49[label="wv300",fontsize=16,color="green",shape="box"];50[label="wv300",fontsize=16,color="green",shape="box"];51[label="wv3100",fontsize=16,color="green",shape="box"];52[label="primMinusInt wv30 wv4",fontsize=16,color="burlywood",shape="box"];361[label="wv30/Pos wv300",fontsize=10,color="white",style="solid",shape="box"];52 -> 361[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 361 -> 56[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 362[label="wv30/Neg wv300",fontsize=10,color="white",style="solid",shape="box"];52 -> 362[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 362 -> 57[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 53[label="primMulInt wv31 (Pos (Succ Zero))",fontsize=16,color="burlywood",shape="box"];363[label="wv31/Pos wv310",fontsize=10,color="white",style="solid",shape="box"];53 -> 363[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 363 -> 58[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 364[label="wv31/Neg wv310",fontsize=10,color="white",style="solid",shape="box"];53 -> 364[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 364 -> 59[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 54[label="primDivNatS0 wv3000 wv3100 (primGEqNatS wv3000 wv3100)",fontsize=16,color="burlywood",shape="box"];365[label="wv3000/Succ wv30000",fontsize=10,color="white",style="solid",shape="box"];54 -> 365[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 365 -> 60[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 366[label="wv3000/Zero",fontsize=10,color="white",style="solid",shape="box"];54 -> 366[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 366 -> 61[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 55[label="Zero",fontsize=16,color="green",shape="box"];56[label="primMinusInt (Pos wv300) wv4",fontsize=16,color="burlywood",shape="box"];367[label="wv4/Pos wv40",fontsize=10,color="white",style="solid",shape="box"];56 -> 367[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 367 -> 62[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 368[label="wv4/Neg wv40",fontsize=10,color="white",style="solid",shape="box"];56 -> 368[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 368 -> 63[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 57[label="primMinusInt (Neg wv300) wv4",fontsize=16,color="burlywood",shape="box"];369[label="wv4/Pos wv40",fontsize=10,color="white",style="solid",shape="box"];57 -> 369[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 369 -> 64[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 370[label="wv4/Neg wv40",fontsize=10,color="white",style="solid",shape="box"];57 -> 370[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 370 -> 65[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 58[label="primMulInt (Pos wv310) (Pos (Succ Zero))",fontsize=16,color="black",shape="box"];58 -> 66[label="",style="solid", color="black", weight=3]; 11.17/4.54 59[label="primMulInt (Neg wv310) (Pos (Succ Zero))",fontsize=16,color="black",shape="box"];59 -> 67[label="",style="solid", color="black", weight=3]; 11.17/4.54 60[label="primDivNatS0 (Succ wv30000) wv3100 (primGEqNatS (Succ wv30000) wv3100)",fontsize=16,color="burlywood",shape="box"];371[label="wv3100/Succ wv31000",fontsize=10,color="white",style="solid",shape="box"];60 -> 371[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 371 -> 68[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 372[label="wv3100/Zero",fontsize=10,color="white",style="solid",shape="box"];60 -> 372[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 372 -> 69[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 61[label="primDivNatS0 Zero wv3100 (primGEqNatS Zero wv3100)",fontsize=16,color="burlywood",shape="box"];373[label="wv3100/Succ wv31000",fontsize=10,color="white",style="solid",shape="box"];61 -> 373[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 373 -> 70[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 374[label="wv3100/Zero",fontsize=10,color="white",style="solid",shape="box"];61 -> 374[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 374 -> 71[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 62[label="primMinusInt (Pos wv300) (Pos wv40)",fontsize=16,color="black",shape="box"];62 -> 72[label="",style="solid", color="black", weight=3]; 11.17/4.54 63[label="primMinusInt (Pos wv300) (Neg wv40)",fontsize=16,color="black",shape="box"];63 -> 73[label="",style="solid", color="black", weight=3]; 11.17/4.54 64[label="primMinusInt (Neg wv300) (Pos wv40)",fontsize=16,color="black",shape="box"];64 -> 74[label="",style="solid", color="black", weight=3]; 11.17/4.54 65[label="primMinusInt (Neg wv300) (Neg wv40)",fontsize=16,color="black",shape="box"];65 -> 75[label="",style="solid", color="black", weight=3]; 11.17/4.54 66[label="Pos (primMulNat wv310 (Succ Zero))",fontsize=16,color="green",shape="box"];66 -> 76[label="",style="dashed", color="green", weight=3]; 11.17/4.54 67[label="Neg (primMulNat wv310 (Succ Zero))",fontsize=16,color="green",shape="box"];67 -> 77[label="",style="dashed", color="green", weight=3]; 11.17/4.54 68[label="primDivNatS0 (Succ wv30000) (Succ wv31000) (primGEqNatS (Succ wv30000) (Succ wv31000))",fontsize=16,color="black",shape="box"];68 -> 78[label="",style="solid", color="black", weight=3]; 11.17/4.54 69[label="primDivNatS0 (Succ wv30000) Zero (primGEqNatS (Succ wv30000) Zero)",fontsize=16,color="black",shape="box"];69 -> 79[label="",style="solid", color="black", weight=3]; 11.17/4.54 70[label="primDivNatS0 Zero (Succ wv31000) (primGEqNatS Zero (Succ wv31000))",fontsize=16,color="black",shape="box"];70 -> 80[label="",style="solid", color="black", weight=3]; 11.17/4.54 71[label="primDivNatS0 Zero Zero (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];71 -> 81[label="",style="solid", color="black", weight=3]; 11.17/4.54 72[label="primMinusNat wv300 wv40",fontsize=16,color="burlywood",shape="triangle"];375[label="wv300/Succ wv3000",fontsize=10,color="white",style="solid",shape="box"];72 -> 375[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 375 -> 82[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 376[label="wv300/Zero",fontsize=10,color="white",style="solid",shape="box"];72 -> 376[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 376 -> 83[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 73[label="Pos (primPlusNat wv300 wv40)",fontsize=16,color="green",shape="box"];73 -> 84[label="",style="dashed", color="green", weight=3]; 11.17/4.54 74[label="Neg (primPlusNat wv300 wv40)",fontsize=16,color="green",shape="box"];74 -> 85[label="",style="dashed", color="green", weight=3]; 11.17/4.54 75 -> 72[label="",style="dashed", color="red", weight=0]; 11.17/4.54 75[label="primMinusNat wv40 wv300",fontsize=16,color="magenta"];75 -> 86[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 75 -> 87[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 76[label="primMulNat wv310 (Succ Zero)",fontsize=16,color="burlywood",shape="triangle"];377[label="wv310/Succ wv3100",fontsize=10,color="white",style="solid",shape="box"];76 -> 377[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 377 -> 88[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 378[label="wv310/Zero",fontsize=10,color="white",style="solid",shape="box"];76 -> 378[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 378 -> 89[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 77 -> 76[label="",style="dashed", color="red", weight=0]; 11.17/4.54 77[label="primMulNat wv310 (Succ Zero)",fontsize=16,color="magenta"];77 -> 90[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 78 -> 281[label="",style="dashed", color="red", weight=0]; 11.17/4.54 78[label="primDivNatS0 (Succ wv30000) (Succ wv31000) (primGEqNatS wv30000 wv31000)",fontsize=16,color="magenta"];78 -> 282[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 78 -> 283[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 78 -> 284[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 78 -> 285[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 79[label="primDivNatS0 (Succ wv30000) Zero MyTrue",fontsize=16,color="black",shape="box"];79 -> 93[label="",style="solid", color="black", weight=3]; 11.17/4.54 80[label="primDivNatS0 Zero (Succ wv31000) MyFalse",fontsize=16,color="black",shape="box"];80 -> 94[label="",style="solid", color="black", weight=3]; 11.17/4.54 81[label="primDivNatS0 Zero Zero MyTrue",fontsize=16,color="black",shape="box"];81 -> 95[label="",style="solid", color="black", weight=3]; 11.17/4.54 82[label="primMinusNat (Succ wv3000) wv40",fontsize=16,color="burlywood",shape="box"];379[label="wv40/Succ wv400",fontsize=10,color="white",style="solid",shape="box"];82 -> 379[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 379 -> 96[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 380[label="wv40/Zero",fontsize=10,color="white",style="solid",shape="box"];82 -> 380[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 380 -> 97[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 83[label="primMinusNat Zero wv40",fontsize=16,color="burlywood",shape="box"];381[label="wv40/Succ wv400",fontsize=10,color="white",style="solid",shape="box"];83 -> 381[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 381 -> 98[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 382[label="wv40/Zero",fontsize=10,color="white",style="solid",shape="box"];83 -> 382[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 382 -> 99[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 84[label="primPlusNat wv300 wv40",fontsize=16,color="burlywood",shape="triangle"];383[label="wv300/Succ wv3000",fontsize=10,color="white",style="solid",shape="box"];84 -> 383[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 383 -> 100[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 384[label="wv300/Zero",fontsize=10,color="white",style="solid",shape="box"];84 -> 384[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 384 -> 101[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 85 -> 84[label="",style="dashed", color="red", weight=0]; 11.17/4.54 85[label="primPlusNat wv300 wv40",fontsize=16,color="magenta"];85 -> 102[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 85 -> 103[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 86[label="wv300",fontsize=16,color="green",shape="box"];87[label="wv40",fontsize=16,color="green",shape="box"];88[label="primMulNat (Succ wv3100) (Succ Zero)",fontsize=16,color="black",shape="box"];88 -> 104[label="",style="solid", color="black", weight=3]; 11.17/4.54 89[label="primMulNat Zero (Succ Zero)",fontsize=16,color="black",shape="box"];89 -> 105[label="",style="solid", color="black", weight=3]; 11.17/4.54 90[label="wv310",fontsize=16,color="green",shape="box"];282[label="wv31000",fontsize=16,color="green",shape="box"];283[label="wv30000",fontsize=16,color="green",shape="box"];284[label="wv30000",fontsize=16,color="green",shape="box"];285[label="wv31000",fontsize=16,color="green",shape="box"];281[label="primDivNatS0 (Succ wv21) (Succ wv22) (primGEqNatS wv23 wv24)",fontsize=16,color="burlywood",shape="triangle"];385[label="wv23/Succ wv230",fontsize=10,color="white",style="solid",shape="box"];281 -> 385[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 385 -> 314[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 386[label="wv23/Zero",fontsize=10,color="white",style="solid",shape="box"];281 -> 386[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 386 -> 315[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 93[label="Succ (primDivNatS (primMinusNatS (Succ wv30000) Zero) (Succ Zero))",fontsize=16,color="green",shape="box"];93 -> 110[label="",style="dashed", color="green", weight=3]; 11.17/4.54 94[label="Zero",fontsize=16,color="green",shape="box"];95[label="Succ (primDivNatS (primMinusNatS Zero Zero) (Succ Zero))",fontsize=16,color="green",shape="box"];95 -> 111[label="",style="dashed", color="green", weight=3]; 11.17/4.54 96[label="primMinusNat (Succ wv3000) (Succ wv400)",fontsize=16,color="black",shape="box"];96 -> 112[label="",style="solid", color="black", weight=3]; 11.17/4.54 97[label="primMinusNat (Succ wv3000) Zero",fontsize=16,color="black",shape="box"];97 -> 113[label="",style="solid", color="black", weight=3]; 11.17/4.54 98[label="primMinusNat Zero (Succ wv400)",fontsize=16,color="black",shape="box"];98 -> 114[label="",style="solid", color="black", weight=3]; 11.17/4.54 99[label="primMinusNat Zero Zero",fontsize=16,color="black",shape="box"];99 -> 115[label="",style="solid", color="black", weight=3]; 11.17/4.54 100[label="primPlusNat (Succ wv3000) wv40",fontsize=16,color="burlywood",shape="box"];387[label="wv40/Succ wv400",fontsize=10,color="white",style="solid",shape="box"];100 -> 387[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 387 -> 116[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 388[label="wv40/Zero",fontsize=10,color="white",style="solid",shape="box"];100 -> 388[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 388 -> 117[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 101[label="primPlusNat Zero wv40",fontsize=16,color="burlywood",shape="box"];389[label="wv40/Succ wv400",fontsize=10,color="white",style="solid",shape="box"];101 -> 389[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 389 -> 118[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 390[label="wv40/Zero",fontsize=10,color="white",style="solid",shape="box"];101 -> 390[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 390 -> 119[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 102[label="wv40",fontsize=16,color="green",shape="box"];103[label="wv300",fontsize=16,color="green",shape="box"];104 -> 84[label="",style="dashed", color="red", weight=0]; 11.17/4.54 104[label="primPlusNat (primMulNat wv3100 (Succ Zero)) (Succ Zero)",fontsize=16,color="magenta"];104 -> 120[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 104 -> 121[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 105[label="Zero",fontsize=16,color="green",shape="box"];314[label="primDivNatS0 (Succ wv21) (Succ wv22) (primGEqNatS (Succ wv230) wv24)",fontsize=16,color="burlywood",shape="box"];391[label="wv24/Succ wv240",fontsize=10,color="white",style="solid",shape="box"];314 -> 391[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 391 -> 316[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 392[label="wv24/Zero",fontsize=10,color="white",style="solid",shape="box"];314 -> 392[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 392 -> 317[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 315[label="primDivNatS0 (Succ wv21) (Succ wv22) (primGEqNatS Zero wv24)",fontsize=16,color="burlywood",shape="box"];393[label="wv24/Succ wv240",fontsize=10,color="white",style="solid",shape="box"];315 -> 393[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 393 -> 318[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 394[label="wv24/Zero",fontsize=10,color="white",style="solid",shape="box"];315 -> 394[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 394 -> 319[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 110 -> 38[label="",style="dashed", color="red", weight=0]; 11.17/4.54 110[label="primDivNatS (primMinusNatS (Succ wv30000) Zero) (Succ Zero)",fontsize=16,color="magenta"];110 -> 126[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 110 -> 127[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 111 -> 38[label="",style="dashed", color="red", weight=0]; 11.17/4.54 111[label="primDivNatS (primMinusNatS Zero Zero) (Succ Zero)",fontsize=16,color="magenta"];111 -> 128[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 111 -> 129[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 112 -> 72[label="",style="dashed", color="red", weight=0]; 11.17/4.54 112[label="primMinusNat wv3000 wv400",fontsize=16,color="magenta"];112 -> 130[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 112 -> 131[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 113[label="Pos (Succ wv3000)",fontsize=16,color="green",shape="box"];114[label="Neg (Succ wv400)",fontsize=16,color="green",shape="box"];115[label="Pos Zero",fontsize=16,color="green",shape="box"];116[label="primPlusNat (Succ wv3000) (Succ wv400)",fontsize=16,color="black",shape="box"];116 -> 132[label="",style="solid", color="black", weight=3]; 11.17/4.54 117[label="primPlusNat (Succ wv3000) Zero",fontsize=16,color="black",shape="box"];117 -> 133[label="",style="solid", color="black", weight=3]; 11.17/4.54 118[label="primPlusNat Zero (Succ wv400)",fontsize=16,color="black",shape="box"];118 -> 134[label="",style="solid", color="black", weight=3]; 11.17/4.54 119[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="box"];119 -> 135[label="",style="solid", color="black", weight=3]; 11.17/4.54 120[label="Succ Zero",fontsize=16,color="green",shape="box"];121 -> 76[label="",style="dashed", color="red", weight=0]; 11.17/4.54 121[label="primMulNat wv3100 (Succ Zero)",fontsize=16,color="magenta"];121 -> 136[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 316[label="primDivNatS0 (Succ wv21) (Succ wv22) (primGEqNatS (Succ wv230) (Succ wv240))",fontsize=16,color="black",shape="box"];316 -> 320[label="",style="solid", color="black", weight=3]; 11.17/4.54 317[label="primDivNatS0 (Succ wv21) (Succ wv22) (primGEqNatS (Succ wv230) Zero)",fontsize=16,color="black",shape="box"];317 -> 321[label="",style="solid", color="black", weight=3]; 11.17/4.54 318[label="primDivNatS0 (Succ wv21) (Succ wv22) (primGEqNatS Zero (Succ wv240))",fontsize=16,color="black",shape="box"];318 -> 322[label="",style="solid", color="black", weight=3]; 11.17/4.54 319[label="primDivNatS0 (Succ wv21) (Succ wv22) (primGEqNatS Zero Zero)",fontsize=16,color="black",shape="box"];319 -> 323[label="",style="solid", color="black", weight=3]; 11.17/4.54 126[label="primMinusNatS (Succ wv30000) Zero",fontsize=16,color="black",shape="triangle"];126 -> 142[label="",style="solid", color="black", weight=3]; 11.17/4.54 127[label="Zero",fontsize=16,color="green",shape="box"];128[label="primMinusNatS Zero Zero",fontsize=16,color="black",shape="triangle"];128 -> 143[label="",style="solid", color="black", weight=3]; 11.17/4.54 129[label="Zero",fontsize=16,color="green",shape="box"];130[label="wv400",fontsize=16,color="green",shape="box"];131[label="wv3000",fontsize=16,color="green",shape="box"];132[label="Succ (Succ (primPlusNat wv3000 wv400))",fontsize=16,color="green",shape="box"];132 -> 144[label="",style="dashed", color="green", weight=3]; 11.17/4.54 133[label="Succ wv3000",fontsize=16,color="green",shape="box"];134[label="Succ wv400",fontsize=16,color="green",shape="box"];135[label="Zero",fontsize=16,color="green",shape="box"];136[label="wv3100",fontsize=16,color="green",shape="box"];320 -> 281[label="",style="dashed", color="red", weight=0]; 11.17/4.54 320[label="primDivNatS0 (Succ wv21) (Succ wv22) (primGEqNatS wv230 wv240)",fontsize=16,color="magenta"];320 -> 324[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 320 -> 325[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 321[label="primDivNatS0 (Succ wv21) (Succ wv22) MyTrue",fontsize=16,color="black",shape="triangle"];321 -> 326[label="",style="solid", color="black", weight=3]; 11.17/4.54 322[label="primDivNatS0 (Succ wv21) (Succ wv22) MyFalse",fontsize=16,color="black",shape="box"];322 -> 327[label="",style="solid", color="black", weight=3]; 11.17/4.54 323 -> 321[label="",style="dashed", color="red", weight=0]; 11.17/4.54 323[label="primDivNatS0 (Succ wv21) (Succ wv22) MyTrue",fontsize=16,color="magenta"];142[label="Succ wv30000",fontsize=16,color="green",shape="box"];143[label="Zero",fontsize=16,color="green",shape="box"];144 -> 84[label="",style="dashed", color="red", weight=0]; 11.17/4.54 144[label="primPlusNat wv3000 wv400",fontsize=16,color="magenta"];144 -> 151[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 144 -> 152[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 324[label="wv230",fontsize=16,color="green",shape="box"];325[label="wv240",fontsize=16,color="green",shape="box"];326[label="Succ (primDivNatS (primMinusNatS (Succ wv21) (Succ wv22)) (Succ (Succ wv22)))",fontsize=16,color="green",shape="box"];326 -> 328[label="",style="dashed", color="green", weight=3]; 11.17/4.54 327[label="Zero",fontsize=16,color="green",shape="box"];151[label="wv400",fontsize=16,color="green",shape="box"];152[label="wv3000",fontsize=16,color="green",shape="box"];328 -> 38[label="",style="dashed", color="red", weight=0]; 11.17/4.54 328[label="primDivNatS (primMinusNatS (Succ wv21) (Succ wv22)) (Succ (Succ wv22))",fontsize=16,color="magenta"];328 -> 329[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 328 -> 330[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 329[label="primMinusNatS (Succ wv21) (Succ wv22)",fontsize=16,color="black",shape="box"];329 -> 331[label="",style="solid", color="black", weight=3]; 11.17/4.54 330[label="Succ wv22",fontsize=16,color="green",shape="box"];331[label="primMinusNatS wv21 wv22",fontsize=16,color="burlywood",shape="triangle"];395[label="wv21/Succ wv210",fontsize=10,color="white",style="solid",shape="box"];331 -> 395[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 395 -> 332[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 396[label="wv21/Zero",fontsize=10,color="white",style="solid",shape="box"];331 -> 396[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 396 -> 333[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 332[label="primMinusNatS (Succ wv210) wv22",fontsize=16,color="burlywood",shape="box"];397[label="wv22/Succ wv220",fontsize=10,color="white",style="solid",shape="box"];332 -> 397[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 397 -> 334[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 398[label="wv22/Zero",fontsize=10,color="white",style="solid",shape="box"];332 -> 398[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 398 -> 335[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 333[label="primMinusNatS Zero wv22",fontsize=16,color="burlywood",shape="box"];399[label="wv22/Succ wv220",fontsize=10,color="white",style="solid",shape="box"];333 -> 399[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 399 -> 336[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 400[label="wv22/Zero",fontsize=10,color="white",style="solid",shape="box"];333 -> 400[label="",style="solid", color="burlywood", weight=9]; 11.17/4.54 400 -> 337[label="",style="solid", color="burlywood", weight=3]; 11.17/4.54 334[label="primMinusNatS (Succ wv210) (Succ wv220)",fontsize=16,color="black",shape="box"];334 -> 338[label="",style="solid", color="black", weight=3]; 11.17/4.54 335[label="primMinusNatS (Succ wv210) Zero",fontsize=16,color="black",shape="box"];335 -> 339[label="",style="solid", color="black", weight=3]; 11.17/4.54 336[label="primMinusNatS Zero (Succ wv220)",fontsize=16,color="black",shape="box"];336 -> 340[label="",style="solid", color="black", weight=3]; 11.17/4.54 337[label="primMinusNatS Zero Zero",fontsize=16,color="black",shape="box"];337 -> 341[label="",style="solid", color="black", weight=3]; 11.17/4.54 338 -> 331[label="",style="dashed", color="red", weight=0]; 11.17/4.54 338[label="primMinusNatS wv210 wv220",fontsize=16,color="magenta"];338 -> 342[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 338 -> 343[label="",style="dashed", color="magenta", weight=3]; 11.17/4.54 339[label="Succ wv210",fontsize=16,color="green",shape="box"];340[label="Zero",fontsize=16,color="green",shape="box"];341[label="Zero",fontsize=16,color="green",shape="box"];342[label="wv220",fontsize=16,color="green",shape="box"];343[label="wv210",fontsize=16,color="green",shape="box"];} 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (6) 11.17/4.54 Complex Obligation (AND) 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (7) 11.17/4.54 Obligation: 11.17/4.54 Q DP problem: 11.17/4.54 The TRS P consists of the following rules: 11.17/4.54 11.17/4.54 new_primMulNat(Main.Succ(wv3100)) -> new_primMulNat(wv3100) 11.17/4.54 11.17/4.54 R is empty. 11.17/4.54 Q is empty. 11.17/4.54 We have to consider all minimal (P,Q,R)-chains. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (8) QDPSizeChangeProof (EQUIVALENT) 11.17/4.54 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. 11.17/4.54 11.17/4.54 From the DPs we obtained the following set of size-change graphs: 11.17/4.54 *new_primMulNat(Main.Succ(wv3100)) -> new_primMulNat(wv3100) 11.17/4.54 The graph contains the following edges 1 > 1 11.17/4.54 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (9) 11.17/4.54 YES 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (10) 11.17/4.54 Obligation: 11.17/4.54 Q DP problem: 11.17/4.54 The TRS P consists of the following rules: 11.17/4.54 11.17/4.54 new_primPlusNat(Main.Succ(wv3000), Main.Succ(wv400)) -> new_primPlusNat(wv3000, wv400) 11.17/4.54 11.17/4.54 R is empty. 11.17/4.54 Q is empty. 11.17/4.54 We have to consider all minimal (P,Q,R)-chains. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (11) QDPSizeChangeProof (EQUIVALENT) 11.17/4.54 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. 11.17/4.54 11.17/4.54 From the DPs we obtained the following set of size-change graphs: 11.17/4.54 *new_primPlusNat(Main.Succ(wv3000), Main.Succ(wv400)) -> new_primPlusNat(wv3000, wv400) 11.17/4.54 The graph contains the following edges 1 > 1, 2 > 2 11.17/4.54 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (12) 11.17/4.54 YES 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (13) 11.17/4.54 Obligation: 11.17/4.54 Q DP problem: 11.17/4.54 The TRS P consists of the following rules: 11.17/4.54 11.17/4.54 new_primMinusNat(Main.Succ(wv3000), Main.Succ(wv400)) -> new_primMinusNat(wv3000, wv400) 11.17/4.54 11.17/4.54 R is empty. 11.17/4.54 Q is empty. 11.17/4.54 We have to consider all minimal (P,Q,R)-chains. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (14) QDPSizeChangeProof (EQUIVALENT) 11.17/4.54 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. 11.17/4.54 11.17/4.54 From the DPs we obtained the following set of size-change graphs: 11.17/4.54 *new_primMinusNat(Main.Succ(wv3000), Main.Succ(wv400)) -> new_primMinusNat(wv3000, wv400) 11.17/4.54 The graph contains the following edges 1 > 1, 2 > 2 11.17/4.54 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (15) 11.17/4.54 YES 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (16) 11.17/4.54 Obligation: 11.17/4.54 Q DP problem: 11.17/4.54 The TRS P consists of the following rules: 11.17/4.54 11.17/4.54 new_primMinusNatS(Main.Succ(wv210), Main.Succ(wv220)) -> new_primMinusNatS(wv210, wv220) 11.17/4.54 11.17/4.54 R is empty. 11.17/4.54 Q is empty. 11.17/4.54 We have to consider all minimal (P,Q,R)-chains. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (17) QDPSizeChangeProof (EQUIVALENT) 11.17/4.54 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. 11.17/4.54 11.17/4.54 From the DPs we obtained the following set of size-change graphs: 11.17/4.54 *new_primMinusNatS(Main.Succ(wv210), Main.Succ(wv220)) -> new_primMinusNatS(wv210, wv220) 11.17/4.54 The graph contains the following edges 1 > 1, 2 > 2 11.17/4.54 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (18) 11.17/4.54 YES 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (19) 11.17/4.54 Obligation: 11.17/4.54 Q DP problem: 11.17/4.54 The TRS P consists of the following rules: 11.17/4.54 11.17/4.54 new_primDivNatS(Main.Succ(Main.Succ(wv30000)), Main.Zero) -> new_primDivNatS(new_primMinusNatS1(wv30000), Main.Zero) 11.17/4.54 new_primDivNatS0(wv21, wv22, Main.Succ(wv230), Main.Succ(wv240)) -> new_primDivNatS0(wv21, wv22, wv230, wv240) 11.17/4.54 new_primDivNatS00(wv21, wv22) -> new_primDivNatS(new_primMinusNatS0(wv21, wv22), Main.Succ(wv22)) 11.17/4.54 new_primDivNatS0(wv21, wv22, Main.Zero, Main.Zero) -> new_primDivNatS00(wv21, wv22) 11.17/4.54 new_primDivNatS(Main.Succ(Main.Succ(wv30000)), Main.Succ(wv31000)) -> new_primDivNatS0(wv30000, wv31000, wv30000, wv31000) 11.17/4.54 new_primDivNatS0(wv21, wv22, Main.Succ(wv230), Main.Zero) -> new_primDivNatS(new_primMinusNatS0(wv21, wv22), Main.Succ(wv22)) 11.17/4.54 new_primDivNatS(Main.Succ(Main.Zero), Main.Zero) -> new_primDivNatS(new_primMinusNatS2, Main.Zero) 11.17/4.54 11.17/4.54 The TRS R consists of the following rules: 11.17/4.54 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Succ(wv220)) -> new_primMinusNatS0(wv210, wv220) 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Zero) -> Main.Succ(wv210) 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Zero) -> Main.Zero 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Succ(wv220)) -> Main.Zero 11.17/4.54 new_primMinusNatS2 -> Main.Zero 11.17/4.54 new_primMinusNatS1(wv30000) -> Main.Succ(wv30000) 11.17/4.54 11.17/4.54 The set Q consists of the following terms: 11.17/4.54 11.17/4.54 new_primMinusNatS0(Main.Succ(x0), Main.Succ(x1)) 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Zero) 11.17/4.54 new_primMinusNatS2 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Succ(x0)) 11.17/4.54 new_primMinusNatS1(x0) 11.17/4.54 new_primMinusNatS0(Main.Succ(x0), Main.Zero) 11.17/4.54 11.17/4.54 We have to consider all minimal (P,Q,R)-chains. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (20) DependencyGraphProof (EQUIVALENT) 11.17/4.54 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs with 1 less node. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (21) 11.17/4.54 Complex Obligation (AND) 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (22) 11.17/4.54 Obligation: 11.17/4.54 Q DP problem: 11.17/4.54 The TRS P consists of the following rules: 11.17/4.54 11.17/4.54 new_primDivNatS0(wv21, wv22, Main.Zero, Main.Zero) -> new_primDivNatS00(wv21, wv22) 11.17/4.54 new_primDivNatS00(wv21, wv22) -> new_primDivNatS(new_primMinusNatS0(wv21, wv22), Main.Succ(wv22)) 11.17/4.54 new_primDivNatS(Main.Succ(Main.Succ(wv30000)), Main.Succ(wv31000)) -> new_primDivNatS0(wv30000, wv31000, wv30000, wv31000) 11.17/4.54 new_primDivNatS0(wv21, wv22, Main.Succ(wv230), Main.Succ(wv240)) -> new_primDivNatS0(wv21, wv22, wv230, wv240) 11.17/4.54 new_primDivNatS0(wv21, wv22, Main.Succ(wv230), Main.Zero) -> new_primDivNatS(new_primMinusNatS0(wv21, wv22), Main.Succ(wv22)) 11.17/4.54 11.17/4.54 The TRS R consists of the following rules: 11.17/4.54 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Succ(wv220)) -> new_primMinusNatS0(wv210, wv220) 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Zero) -> Main.Succ(wv210) 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Zero) -> Main.Zero 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Succ(wv220)) -> Main.Zero 11.17/4.54 new_primMinusNatS2 -> Main.Zero 11.17/4.54 new_primMinusNatS1(wv30000) -> Main.Succ(wv30000) 11.17/4.54 11.17/4.54 The set Q consists of the following terms: 11.17/4.54 11.17/4.54 new_primMinusNatS0(Main.Succ(x0), Main.Succ(x1)) 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Zero) 11.17/4.54 new_primMinusNatS2 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Succ(x0)) 11.17/4.54 new_primMinusNatS1(x0) 11.17/4.54 new_primMinusNatS0(Main.Succ(x0), Main.Zero) 11.17/4.54 11.17/4.54 We have to consider all minimal (P,Q,R)-chains. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (23) QDPSizeChangeProof (EQUIVALENT) 11.17/4.54 We used the following order together with the size-change analysis [AAECC05] to show that there are no infinite chains for this DP problem. 11.17/4.54 11.17/4.54 Order:Polynomial interpretation [POLO]: 11.17/4.54 11.17/4.54 POL(Main.Succ(x_1)) = 1 + x_1 11.17/4.54 POL(Main.Zero) = 1 11.17/4.54 POL(new_primMinusNatS0(x_1, x_2)) = x_1 11.17/4.54 11.17/4.54 11.17/4.54 11.17/4.54 11.17/4.54 From the DPs we obtained the following set of size-change graphs: 11.17/4.54 *new_primDivNatS00(wv21, wv22) -> new_primDivNatS(new_primMinusNatS0(wv21, wv22), Main.Succ(wv22)) (allowed arguments on rhs = {1, 2}) 11.17/4.54 The graph contains the following edges 1 >= 1 11.17/4.54 11.17/4.54 11.17/4.54 *new_primDivNatS(Main.Succ(Main.Succ(wv30000)), Main.Succ(wv31000)) -> new_primDivNatS0(wv30000, wv31000, wv30000, wv31000) (allowed arguments on rhs = {1, 2, 3, 4}) 11.17/4.54 The graph contains the following edges 1 > 1, 2 > 2, 1 > 3, 2 > 4 11.17/4.54 11.17/4.54 11.17/4.54 *new_primDivNatS0(wv21, wv22, Main.Succ(wv230), Main.Succ(wv240)) -> new_primDivNatS0(wv21, wv22, wv230, wv240) (allowed arguments on rhs = {1, 2, 3, 4}) 11.17/4.54 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 > 4 11.17/4.54 11.17/4.54 11.17/4.54 *new_primDivNatS0(wv21, wv22, Main.Zero, Main.Zero) -> new_primDivNatS00(wv21, wv22) (allowed arguments on rhs = {1, 2}) 11.17/4.54 The graph contains the following edges 1 >= 1, 2 >= 2 11.17/4.54 11.17/4.54 11.17/4.54 *new_primDivNatS0(wv21, wv22, Main.Succ(wv230), Main.Zero) -> new_primDivNatS(new_primMinusNatS0(wv21, wv22), Main.Succ(wv22)) (allowed arguments on rhs = {1, 2}) 11.17/4.54 The graph contains the following edges 1 >= 1 11.17/4.54 11.17/4.54 11.17/4.54 11.17/4.54 We oriented the following set of usable rules [AAECC05,FROCOS05]. 11.17/4.54 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Zero) -> Main.Zero 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Succ(wv220)) -> Main.Zero 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Zero) -> Main.Succ(wv210) 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Succ(wv220)) -> new_primMinusNatS0(wv210, wv220) 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (24) 11.17/4.54 YES 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (25) 11.17/4.54 Obligation: 11.17/4.54 Q DP problem: 11.17/4.54 The TRS P consists of the following rules: 11.17/4.54 11.17/4.54 new_primDivNatS(Main.Succ(Main.Succ(wv30000)), Main.Zero) -> new_primDivNatS(new_primMinusNatS1(wv30000), Main.Zero) 11.17/4.54 11.17/4.54 The TRS R consists of the following rules: 11.17/4.54 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Succ(wv220)) -> new_primMinusNatS0(wv210, wv220) 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Zero) -> Main.Succ(wv210) 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Zero) -> Main.Zero 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Succ(wv220)) -> Main.Zero 11.17/4.54 new_primMinusNatS2 -> Main.Zero 11.17/4.54 new_primMinusNatS1(wv30000) -> Main.Succ(wv30000) 11.17/4.54 11.17/4.54 The set Q consists of the following terms: 11.17/4.54 11.17/4.54 new_primMinusNatS0(Main.Succ(x0), Main.Succ(x1)) 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Zero) 11.17/4.54 new_primMinusNatS2 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Succ(x0)) 11.17/4.54 new_primMinusNatS1(x0) 11.17/4.54 new_primMinusNatS0(Main.Succ(x0), Main.Zero) 11.17/4.54 11.17/4.54 We have to consider all minimal (P,Q,R)-chains. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (26) MRRProof (EQUIVALENT) 11.17/4.54 By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. 11.17/4.54 11.17/4.54 Strictly oriented dependency pairs: 11.17/4.54 11.17/4.54 new_primDivNatS(Main.Succ(Main.Succ(wv30000)), Main.Zero) -> new_primDivNatS(new_primMinusNatS1(wv30000), Main.Zero) 11.17/4.54 11.17/4.54 Strictly oriented rules of the TRS R: 11.17/4.54 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Succ(wv220)) -> new_primMinusNatS0(wv210, wv220) 11.17/4.54 new_primMinusNatS0(Main.Succ(wv210), Main.Zero) -> Main.Succ(wv210) 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Zero) -> Main.Zero 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Succ(wv220)) -> Main.Zero 11.17/4.54 11.17/4.54 Used ordering: Polynomial interpretation [POLO]: 11.17/4.54 11.17/4.54 POL(Main.Succ(x_1)) = 1 + x_1 11.17/4.54 POL(Main.Zero) = 2 11.17/4.54 POL(new_primDivNatS(x_1, x_2)) = x_1 + x_2 11.17/4.54 POL(new_primMinusNatS0(x_1, x_2)) = 1 + 2*x_1 + 2*x_2 11.17/4.54 POL(new_primMinusNatS1(x_1)) = 1 + x_1 11.17/4.54 POL(new_primMinusNatS2) = 2 11.17/4.54 11.17/4.54 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (27) 11.17/4.54 Obligation: 11.17/4.54 Q DP problem: 11.17/4.54 P is empty. 11.17/4.54 The TRS R consists of the following rules: 11.17/4.54 11.17/4.54 new_primMinusNatS2 -> Main.Zero 11.17/4.54 new_primMinusNatS1(wv30000) -> Main.Succ(wv30000) 11.17/4.54 11.17/4.54 The set Q consists of the following terms: 11.17/4.54 11.17/4.54 new_primMinusNatS0(Main.Succ(x0), Main.Succ(x1)) 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Zero) 11.17/4.54 new_primMinusNatS2 11.17/4.54 new_primMinusNatS0(Main.Zero, Main.Succ(x0)) 11.17/4.54 new_primMinusNatS1(x0) 11.17/4.54 new_primMinusNatS0(Main.Succ(x0), Main.Zero) 11.17/4.54 11.17/4.54 We have to consider all minimal (P,Q,R)-chains. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (28) PisEmptyProof (EQUIVALENT) 11.17/4.54 The TRS P is empty. Hence, there is no (P,Q,R) chain. 11.17/4.54 ---------------------------------------- 11.17/4.54 11.17/4.54 (29) 11.17/4.54 YES 11.17/4.57 EOF