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