8.41/3.68 YES 10.42/4.21 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 10.42/4.21 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 10.42/4.21 10.42/4.21 10.42/4.21 H-Termination with start terms of the given HASKELL could be proven: 10.42/4.21 10.42/4.21 (0) HASKELL 10.42/4.21 (1) BR [EQUIVALENT, 0 ms] 10.42/4.21 (2) HASKELL 10.42/4.21 (3) COR [EQUIVALENT, 0 ms] 10.42/4.21 (4) HASKELL 10.42/4.21 (5) NumRed [SOUND, 0 ms] 10.42/4.21 (6) HASKELL 10.42/4.21 (7) Narrow [SOUND, 0 ms] 10.42/4.21 (8) AND 10.42/4.21 (9) QDP 10.42/4.21 (10) TransformationProof [EQUIVALENT, 0 ms] 10.42/4.21 (11) QDP 10.42/4.21 (12) TransformationProof [EQUIVALENT, 0 ms] 10.42/4.21 (13) QDP 10.42/4.21 (14) UsableRulesProof [EQUIVALENT, 0 ms] 10.42/4.21 (15) QDP 10.42/4.21 (16) QReductionProof [EQUIVALENT, 0 ms] 10.42/4.21 (17) QDP 10.42/4.21 (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] 10.42/4.21 (19) YES 10.42/4.21 (20) QDP 10.42/4.21 (21) QDPSizeChangeProof [EQUIVALENT, 0 ms] 10.42/4.21 (22) YES 10.42/4.21 (23) QDP 10.42/4.21 (24) QDPSizeChangeProof [EQUIVALENT, 0 ms] 10.42/4.21 (25) YES 10.42/4.21 (26) QDP 10.42/4.21 (27) QDPSizeChangeProof [EQUIVALENT, 0 ms] 10.42/4.21 (28) YES 10.42/4.21 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (0) 10.42/4.21 Obligation: 10.42/4.21 mainModule Main 10.42/4.21 module Main where { 10.42/4.21 import qualified Prelude; 10.42/4.21 } 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (1) BR (EQUIVALENT) 10.42/4.21 Replaced joker patterns by fresh variables and removed binding patterns. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (2) 10.42/4.21 Obligation: 10.42/4.21 mainModule Main 10.42/4.21 module Main where { 10.42/4.21 import qualified Prelude; 10.42/4.21 } 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (3) COR (EQUIVALENT) 10.42/4.21 Cond Reductions: 10.42/4.21 The following Function with conditions 10.42/4.21 "undefined |Falseundefined; 10.42/4.21 " 10.42/4.21 is transformed to 10.42/4.21 "undefined = undefined1; 10.42/4.21 " 10.42/4.21 "undefined0 True = undefined; 10.42/4.21 " 10.42/4.21 "undefined1 = undefined0 False; 10.42/4.21 " 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (4) 10.42/4.21 Obligation: 10.42/4.21 mainModule Main 10.42/4.21 module Main where { 10.42/4.21 import qualified Prelude; 10.42/4.21 } 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (5) NumRed (SOUND) 10.42/4.21 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (6) 10.42/4.21 Obligation: 10.42/4.21 mainModule Main 10.42/4.21 module Main where { 10.42/4.21 import qualified Prelude; 10.42/4.21 } 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (7) Narrow (SOUND) 10.42/4.21 Haskell To QDPs 10.42/4.21 10.42/4.21 digraph dp_graph { 10.42/4.21 node [outthreshold=100, inthreshold=100];1[label="sum",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 10.42/4.21 3[label="sum vx3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 10.42/4.21 4[label="foldl' (+) (fromInt (Pos Zero)) vx3",fontsize=16,color="burlywood",shape="box"];118[label="vx3/vx30 : vx31",fontsize=10,color="white",style="solid",shape="box"];4 -> 118[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 118 -> 5[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 119[label="vx3/[]",fontsize=10,color="white",style="solid",shape="box"];4 -> 119[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 119 -> 6[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 5[label="foldl' (+) (fromInt (Pos Zero)) (vx30 : vx31)",fontsize=16,color="black",shape="box"];5 -> 7[label="",style="solid", color="black", weight=3]; 10.42/4.21 6[label="foldl' (+) (fromInt (Pos Zero)) []",fontsize=16,color="black",shape="box"];6 -> 8[label="",style="solid", color="black", weight=3]; 10.42/4.21 7[label="(foldl' (+) $! (+) fromInt (Pos Zero) vx30)",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 10.42/4.21 8[label="fromInt (Pos Zero)",fontsize=16,color="black",shape="triangle"];8 -> 10[label="",style="solid", color="black", weight=3]; 10.42/4.21 9 -> 11[label="",style="dashed", color="red", weight=0]; 10.42/4.21 9[label="((+) fromInt (Pos Zero) vx30 `seq` foldl' (+) ((+) fromInt (Pos Zero) vx30))",fontsize=16,color="magenta"];9 -> 12[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 9 -> 13[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 10[label="primIntToFloat (Pos Zero)",fontsize=16,color="black",shape="box"];10 -> 14[label="",style="solid", color="black", weight=3]; 10.42/4.21 12 -> 8[label="",style="dashed", color="red", weight=0]; 10.42/4.21 12[label="fromInt (Pos Zero)",fontsize=16,color="magenta"];13 -> 8[label="",style="dashed", color="red", weight=0]; 10.42/4.21 13[label="fromInt (Pos Zero)",fontsize=16,color="magenta"];11[label="((+) vx4 vx30 `seq` foldl' (+) ((+) vx5 vx30))",fontsize=16,color="black",shape="triangle"];11 -> 15[label="",style="solid", color="black", weight=3]; 10.42/4.21 14[label="Float (Pos Zero) (Pos (Succ Zero))",fontsize=16,color="green",shape="box"];15[label="enforceWHNF (WHNF ((+) vx4 vx30)) (foldl' (+) ((+) vx5 vx30)) vx31",fontsize=16,color="black",shape="box"];15 -> 16[label="",style="solid", color="black", weight=3]; 10.42/4.21 16[label="enforceWHNF (WHNF (primPlusFloat vx4 vx30)) (foldl' primPlusFloat (primPlusFloat vx5 vx30)) vx31",fontsize=16,color="burlywood",shape="triangle"];120[label="vx4/Float vx40 vx41",fontsize=10,color="white",style="solid",shape="box"];16 -> 120[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 120 -> 17[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 17[label="enforceWHNF (WHNF (primPlusFloat (Float vx40 vx41) vx30)) (foldl' primPlusFloat (primPlusFloat vx5 vx30)) vx31",fontsize=16,color="burlywood",shape="box"];121[label="vx30/Float vx300 vx301",fontsize=10,color="white",style="solid",shape="box"];17 -> 121[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 121 -> 18[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 18[label="enforceWHNF (WHNF (primPlusFloat (Float vx40 vx41) (Float vx300 vx301))) (foldl' primPlusFloat (primPlusFloat vx5 (Float vx300 vx301))) vx31",fontsize=16,color="black",shape="box"];18 -> 19[label="",style="solid", color="black", weight=3]; 10.42/4.21 19[label="enforceWHNF (WHNF (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301))) (foldl' primPlusFloat (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301))) vx31",fontsize=16,color="black",shape="box"];19 -> 20[label="",style="solid", color="black", weight=3]; 10.42/4.21 20[label="foldl' primPlusFloat (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)) vx31",fontsize=16,color="burlywood",shape="box"];122[label="vx31/vx310 : vx311",fontsize=10,color="white",style="solid",shape="box"];20 -> 122[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 122 -> 21[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 123[label="vx31/[]",fontsize=10,color="white",style="solid",shape="box"];20 -> 123[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 123 -> 22[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 21[label="foldl' primPlusFloat (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)) (vx310 : vx311)",fontsize=16,color="black",shape="box"];21 -> 23[label="",style="solid", color="black", weight=3]; 10.42/4.21 22[label="foldl' primPlusFloat (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)) []",fontsize=16,color="black",shape="box"];22 -> 24[label="",style="solid", color="black", weight=3]; 10.42/4.21 23[label="(foldl' primPlusFloat $! primPlusFloat (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)) vx310)",fontsize=16,color="black",shape="box"];23 -> 25[label="",style="solid", color="black", weight=3]; 10.42/4.21 24[label="Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)",fontsize=16,color="green",shape="box"];24 -> 26[label="",style="dashed", color="green", weight=3]; 10.42/4.21 24 -> 27[label="",style="dashed", color="green", weight=3]; 10.42/4.21 25[label="(primPlusFloat (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)) vx310 `seq` foldl' primPlusFloat (primPlusFloat (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)) vx310))",fontsize=16,color="black",shape="box"];25 -> 28[label="",style="solid", color="black", weight=3]; 10.42/4.21 26[label="vx40 * vx301 + vx300 * vx41",fontsize=16,color="black",shape="triangle"];26 -> 29[label="",style="solid", color="black", weight=3]; 10.42/4.21 27[label="vx41 * vx301",fontsize=16,color="black",shape="triangle"];27 -> 30[label="",style="solid", color="black", weight=3]; 10.42/4.21 28 -> 16[label="",style="dashed", color="red", weight=0]; 10.42/4.21 28[label="enforceWHNF (WHNF (primPlusFloat (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)) vx310)) (foldl' primPlusFloat (primPlusFloat (Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)) vx310)) vx311",fontsize=16,color="magenta"];28 -> 31[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 28 -> 32[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 28 -> 33[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 28 -> 34[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 29 -> 35[label="",style="dashed", color="red", weight=0]; 10.42/4.21 29[label="primPlusInt (vx40 * vx301) (vx300 * vx41)",fontsize=16,color="magenta"];29 -> 36[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 29 -> 37[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 30[label="primMulInt vx41 vx301",fontsize=16,color="burlywood",shape="box"];124[label="vx41/Pos vx410",fontsize=10,color="white",style="solid",shape="box"];30 -> 124[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 124 -> 38[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 125[label="vx41/Neg vx410",fontsize=10,color="white",style="solid",shape="box"];30 -> 125[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 125 -> 39[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 31[label="Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)",fontsize=16,color="green",shape="box"];31 -> 40[label="",style="dashed", color="green", weight=3]; 10.42/4.21 31 -> 41[label="",style="dashed", color="green", weight=3]; 10.42/4.21 32[label="vx310",fontsize=16,color="green",shape="box"];33[label="Float (vx40 * vx301 + vx300 * vx41) (vx41 * vx301)",fontsize=16,color="green",shape="box"];33 -> 42[label="",style="dashed", color="green", weight=3]; 10.42/4.21 33 -> 43[label="",style="dashed", color="green", weight=3]; 10.42/4.21 34[label="vx311",fontsize=16,color="green",shape="box"];36 -> 27[label="",style="dashed", color="red", weight=0]; 10.42/4.21 36[label="vx40 * vx301",fontsize=16,color="magenta"];36 -> 44[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 37 -> 27[label="",style="dashed", color="red", weight=0]; 10.42/4.21 37[label="vx300 * vx41",fontsize=16,color="magenta"];37 -> 45[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 37 -> 46[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 35[label="primPlusInt vx7 vx6",fontsize=16,color="burlywood",shape="triangle"];126[label="vx7/Pos vx70",fontsize=10,color="white",style="solid",shape="box"];35 -> 126[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 126 -> 47[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 127[label="vx7/Neg vx70",fontsize=10,color="white",style="solid",shape="box"];35 -> 127[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 127 -> 48[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 38[label="primMulInt (Pos vx410) vx301",fontsize=16,color="burlywood",shape="box"];128[label="vx301/Pos vx3010",fontsize=10,color="white",style="solid",shape="box"];38 -> 128[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 128 -> 49[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 129[label="vx301/Neg vx3010",fontsize=10,color="white",style="solid",shape="box"];38 -> 129[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 129 -> 50[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 39[label="primMulInt (Neg vx410) vx301",fontsize=16,color="burlywood",shape="box"];130[label="vx301/Pos vx3010",fontsize=10,color="white",style="solid",shape="box"];39 -> 130[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 130 -> 51[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 131[label="vx301/Neg vx3010",fontsize=10,color="white",style="solid",shape="box"];39 -> 131[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 131 -> 52[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 40 -> 26[label="",style="dashed", color="red", weight=0]; 10.42/4.21 40[label="vx40 * vx301 + vx300 * vx41",fontsize=16,color="magenta"];41 -> 27[label="",style="dashed", color="red", weight=0]; 10.42/4.21 41[label="vx41 * vx301",fontsize=16,color="magenta"];42 -> 26[label="",style="dashed", color="red", weight=0]; 10.42/4.21 42[label="vx40 * vx301 + vx300 * vx41",fontsize=16,color="magenta"];43 -> 27[label="",style="dashed", color="red", weight=0]; 10.42/4.21 43[label="vx41 * vx301",fontsize=16,color="magenta"];44[label="vx40",fontsize=16,color="green",shape="box"];45[label="vx41",fontsize=16,color="green",shape="box"];46[label="vx300",fontsize=16,color="green",shape="box"];47[label="primPlusInt (Pos vx70) vx6",fontsize=16,color="burlywood",shape="box"];132[label="vx6/Pos vx60",fontsize=10,color="white",style="solid",shape="box"];47 -> 132[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 132 -> 53[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 133[label="vx6/Neg vx60",fontsize=10,color="white",style="solid",shape="box"];47 -> 133[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 133 -> 54[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 48[label="primPlusInt (Neg vx70) vx6",fontsize=16,color="burlywood",shape="box"];134[label="vx6/Pos vx60",fontsize=10,color="white",style="solid",shape="box"];48 -> 134[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 134 -> 55[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 135[label="vx6/Neg vx60",fontsize=10,color="white",style="solid",shape="box"];48 -> 135[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 135 -> 56[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 49[label="primMulInt (Pos vx410) (Pos vx3010)",fontsize=16,color="black",shape="box"];49 -> 57[label="",style="solid", color="black", weight=3]; 10.42/4.21 50[label="primMulInt (Pos vx410) (Neg vx3010)",fontsize=16,color="black",shape="box"];50 -> 58[label="",style="solid", color="black", weight=3]; 10.42/4.21 51[label="primMulInt (Neg vx410) (Pos vx3010)",fontsize=16,color="black",shape="box"];51 -> 59[label="",style="solid", color="black", weight=3]; 10.42/4.21 52[label="primMulInt (Neg vx410) (Neg vx3010)",fontsize=16,color="black",shape="box"];52 -> 60[label="",style="solid", color="black", weight=3]; 10.42/4.21 53[label="primPlusInt (Pos vx70) (Pos vx60)",fontsize=16,color="black",shape="box"];53 -> 61[label="",style="solid", color="black", weight=3]; 10.42/4.21 54[label="primPlusInt (Pos vx70) (Neg vx60)",fontsize=16,color="black",shape="box"];54 -> 62[label="",style="solid", color="black", weight=3]; 10.42/4.21 55[label="primPlusInt (Neg vx70) (Pos vx60)",fontsize=16,color="black",shape="box"];55 -> 63[label="",style="solid", color="black", weight=3]; 10.42/4.21 56[label="primPlusInt (Neg vx70) (Neg vx60)",fontsize=16,color="black",shape="box"];56 -> 64[label="",style="solid", color="black", weight=3]; 10.42/4.21 57[label="Pos (primMulNat vx410 vx3010)",fontsize=16,color="green",shape="box"];57 -> 65[label="",style="dashed", color="green", weight=3]; 10.42/4.21 58[label="Neg (primMulNat vx410 vx3010)",fontsize=16,color="green",shape="box"];58 -> 66[label="",style="dashed", color="green", weight=3]; 10.42/4.21 59[label="Neg (primMulNat vx410 vx3010)",fontsize=16,color="green",shape="box"];59 -> 67[label="",style="dashed", color="green", weight=3]; 10.42/4.21 60[label="Pos (primMulNat vx410 vx3010)",fontsize=16,color="green",shape="box"];60 -> 68[label="",style="dashed", color="green", weight=3]; 10.42/4.21 61[label="Pos (primPlusNat vx70 vx60)",fontsize=16,color="green",shape="box"];61 -> 69[label="",style="dashed", color="green", weight=3]; 10.42/4.21 62[label="primMinusNat vx70 vx60",fontsize=16,color="burlywood",shape="triangle"];136[label="vx70/Succ vx700",fontsize=10,color="white",style="solid",shape="box"];62 -> 136[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 136 -> 70[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 137[label="vx70/Zero",fontsize=10,color="white",style="solid",shape="box"];62 -> 137[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 137 -> 71[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 63 -> 62[label="",style="dashed", color="red", weight=0]; 10.42/4.21 63[label="primMinusNat vx60 vx70",fontsize=16,color="magenta"];63 -> 72[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 63 -> 73[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 64[label="Neg (primPlusNat vx70 vx60)",fontsize=16,color="green",shape="box"];64 -> 74[label="",style="dashed", color="green", weight=3]; 10.42/4.21 65[label="primMulNat vx410 vx3010",fontsize=16,color="burlywood",shape="triangle"];138[label="vx410/Succ vx4100",fontsize=10,color="white",style="solid",shape="box"];65 -> 138[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 138 -> 75[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 139[label="vx410/Zero",fontsize=10,color="white",style="solid",shape="box"];65 -> 139[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 139 -> 76[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 66 -> 65[label="",style="dashed", color="red", weight=0]; 10.42/4.21 66[label="primMulNat vx410 vx3010",fontsize=16,color="magenta"];66 -> 77[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 67 -> 65[label="",style="dashed", color="red", weight=0]; 10.42/4.21 67[label="primMulNat vx410 vx3010",fontsize=16,color="magenta"];67 -> 78[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 68 -> 65[label="",style="dashed", color="red", weight=0]; 10.42/4.21 68[label="primMulNat vx410 vx3010",fontsize=16,color="magenta"];68 -> 79[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 68 -> 80[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 69[label="primPlusNat vx70 vx60",fontsize=16,color="burlywood",shape="triangle"];140[label="vx70/Succ vx700",fontsize=10,color="white",style="solid",shape="box"];69 -> 140[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 140 -> 81[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 141[label="vx70/Zero",fontsize=10,color="white",style="solid",shape="box"];69 -> 141[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 141 -> 82[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 70[label="primMinusNat (Succ vx700) vx60",fontsize=16,color="burlywood",shape="box"];142[label="vx60/Succ vx600",fontsize=10,color="white",style="solid",shape="box"];70 -> 142[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 142 -> 83[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 143[label="vx60/Zero",fontsize=10,color="white",style="solid",shape="box"];70 -> 143[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 143 -> 84[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 71[label="primMinusNat Zero vx60",fontsize=16,color="burlywood",shape="box"];144[label="vx60/Succ vx600",fontsize=10,color="white",style="solid",shape="box"];71 -> 144[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 144 -> 85[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 145[label="vx60/Zero",fontsize=10,color="white",style="solid",shape="box"];71 -> 145[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 145 -> 86[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 72[label="vx60",fontsize=16,color="green",shape="box"];73[label="vx70",fontsize=16,color="green",shape="box"];74 -> 69[label="",style="dashed", color="red", weight=0]; 10.42/4.21 74[label="primPlusNat vx70 vx60",fontsize=16,color="magenta"];74 -> 87[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 74 -> 88[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 75[label="primMulNat (Succ vx4100) vx3010",fontsize=16,color="burlywood",shape="box"];146[label="vx3010/Succ vx30100",fontsize=10,color="white",style="solid",shape="box"];75 -> 146[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 146 -> 89[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 147[label="vx3010/Zero",fontsize=10,color="white",style="solid",shape="box"];75 -> 147[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 147 -> 90[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 76[label="primMulNat Zero vx3010",fontsize=16,color="burlywood",shape="box"];148[label="vx3010/Succ vx30100",fontsize=10,color="white",style="solid",shape="box"];76 -> 148[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 148 -> 91[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 149[label="vx3010/Zero",fontsize=10,color="white",style="solid",shape="box"];76 -> 149[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 149 -> 92[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 77[label="vx3010",fontsize=16,color="green",shape="box"];78[label="vx410",fontsize=16,color="green",shape="box"];79[label="vx3010",fontsize=16,color="green",shape="box"];80[label="vx410",fontsize=16,color="green",shape="box"];81[label="primPlusNat (Succ vx700) vx60",fontsize=16,color="burlywood",shape="box"];150[label="vx60/Succ vx600",fontsize=10,color="white",style="solid",shape="box"];81 -> 150[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 150 -> 93[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 151[label="vx60/Zero",fontsize=10,color="white",style="solid",shape="box"];81 -> 151[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 151 -> 94[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 82[label="primPlusNat Zero vx60",fontsize=16,color="burlywood",shape="box"];152[label="vx60/Succ vx600",fontsize=10,color="white",style="solid",shape="box"];82 -> 152[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 152 -> 95[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 153[label="vx60/Zero",fontsize=10,color="white",style="solid",shape="box"];82 -> 153[label="",style="solid", color="burlywood", weight=9]; 10.42/4.21 153 -> 96[label="",style="solid", color="burlywood", weight=3]; 10.42/4.21 83[label="primMinusNat (Succ vx700) (Succ vx600)",fontsize=16,color="black",shape="box"];83 -> 97[label="",style="solid", color="black", weight=3]; 10.42/4.21 84[label="primMinusNat (Succ vx700) Zero",fontsize=16,color="black",shape="box"];84 -> 98[label="",style="solid", color="black", weight=3]; 10.42/4.21 85[label="primMinusNat Zero (Succ vx600)",fontsize=16,color="black",shape="box"];85 -> 99[label="",style="solid", color="black", weight=3]; 10.42/4.21 86[label="primMinusNat Zero Zero",fontsize=16,color="black",shape="box"];86 -> 100[label="",style="solid", color="black", weight=3]; 10.42/4.21 87[label="vx70",fontsize=16,color="green",shape="box"];88[label="vx60",fontsize=16,color="green",shape="box"];89[label="primMulNat (Succ vx4100) (Succ vx30100)",fontsize=16,color="black",shape="box"];89 -> 101[label="",style="solid", color="black", weight=3]; 10.42/4.21 90[label="primMulNat (Succ vx4100) Zero",fontsize=16,color="black",shape="box"];90 -> 102[label="",style="solid", color="black", weight=3]; 10.42/4.21 91[label="primMulNat Zero (Succ vx30100)",fontsize=16,color="black",shape="box"];91 -> 103[label="",style="solid", color="black", weight=3]; 10.42/4.21 92[label="primMulNat Zero Zero",fontsize=16,color="black",shape="box"];92 -> 104[label="",style="solid", color="black", weight=3]; 10.42/4.21 93[label="primPlusNat (Succ vx700) (Succ vx600)",fontsize=16,color="black",shape="box"];93 -> 105[label="",style="solid", color="black", weight=3]; 10.42/4.21 94[label="primPlusNat (Succ vx700) Zero",fontsize=16,color="black",shape="box"];94 -> 106[label="",style="solid", color="black", weight=3]; 10.42/4.21 95[label="primPlusNat Zero (Succ vx600)",fontsize=16,color="black",shape="box"];95 -> 107[label="",style="solid", color="black", weight=3]; 10.42/4.21 96[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="box"];96 -> 108[label="",style="solid", color="black", weight=3]; 10.42/4.21 97 -> 62[label="",style="dashed", color="red", weight=0]; 10.42/4.21 97[label="primMinusNat vx700 vx600",fontsize=16,color="magenta"];97 -> 109[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 97 -> 110[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 98[label="Pos (Succ vx700)",fontsize=16,color="green",shape="box"];99[label="Neg (Succ vx600)",fontsize=16,color="green",shape="box"];100[label="Pos Zero",fontsize=16,color="green",shape="box"];101 -> 69[label="",style="dashed", color="red", weight=0]; 10.42/4.21 101[label="primPlusNat (primMulNat vx4100 (Succ vx30100)) (Succ vx30100)",fontsize=16,color="magenta"];101 -> 111[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 101 -> 112[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 102[label="Zero",fontsize=16,color="green",shape="box"];103[label="Zero",fontsize=16,color="green",shape="box"];104[label="Zero",fontsize=16,color="green",shape="box"];105[label="Succ (Succ (primPlusNat vx700 vx600))",fontsize=16,color="green",shape="box"];105 -> 113[label="",style="dashed", color="green", weight=3]; 10.42/4.21 106[label="Succ vx700",fontsize=16,color="green",shape="box"];107[label="Succ vx600",fontsize=16,color="green",shape="box"];108[label="Zero",fontsize=16,color="green",shape="box"];109[label="vx700",fontsize=16,color="green",shape="box"];110[label="vx600",fontsize=16,color="green",shape="box"];111 -> 65[label="",style="dashed", color="red", weight=0]; 10.42/4.21 111[label="primMulNat vx4100 (Succ vx30100)",fontsize=16,color="magenta"];111 -> 114[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 111 -> 115[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 112[label="Succ vx30100",fontsize=16,color="green",shape="box"];113 -> 69[label="",style="dashed", color="red", weight=0]; 10.42/4.21 113[label="primPlusNat vx700 vx600",fontsize=16,color="magenta"];113 -> 116[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 113 -> 117[label="",style="dashed", color="magenta", weight=3]; 10.42/4.21 114[label="Succ vx30100",fontsize=16,color="green",shape="box"];115[label="vx4100",fontsize=16,color="green",shape="box"];116[label="vx700",fontsize=16,color="green",shape="box"];117[label="vx600",fontsize=16,color="green",shape="box"];} 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (8) 10.42/4.21 Complex Obligation (AND) 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (9) 10.42/4.21 Obligation: 10.42/4.21 Q DP problem: 10.42/4.21 The TRS P consists of the following rules: 10.42/4.21 10.42/4.21 new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_ps(vx40, vx301, vx300, vx41), new_sr(vx41, vx301)), vx310, Float(new_ps(vx40, vx301, vx300, vx41), new_sr(vx41, vx301)), vx311) 10.42/4.21 10.42/4.21 The TRS R consists of the following rules: 10.42/4.21 10.42/4.21 new_primMinusNat0(Zero, Zero) -> Pos(Zero) 10.42/4.21 new_primPlusNat0(Succ(vx700), Zero) -> Succ(vx700) 10.42/4.21 new_primPlusNat0(Zero, Succ(vx600)) -> Succ(vx600) 10.42/4.21 new_sr(Pos(vx410), Neg(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_sr(Neg(vx410), Pos(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primMulNat0(Zero, Zero) -> Zero 10.42/4.21 new_ps(vx40, vx301, vx300, vx41) -> new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)) 10.42/4.21 new_primPlusNat0(Zero, Zero) -> Zero 10.42/4.21 new_primPlusInt(Neg(vx70), Neg(vx60)) -> Neg(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primPlusInt(Pos(vx70), Pos(vx60)) -> Pos(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primMinusNat0(Zero, Succ(vx600)) -> Neg(Succ(vx600)) 10.42/4.21 new_primPlusInt(Pos(vx70), Neg(vx60)) -> new_primMinusNat0(vx70, vx60) 10.42/4.21 new_primPlusInt(Neg(vx70), Pos(vx60)) -> new_primMinusNat0(vx60, vx70) 10.42/4.21 new_primMulNat0(Succ(vx4100), Zero) -> Zero 10.42/4.21 new_primMulNat0(Zero, Succ(vx30100)) -> Zero 10.42/4.21 new_sr(Pos(vx410), Pos(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primMulNat0(Succ(vx4100), Succ(vx30100)) -> new_primPlusNat0(new_primMulNat0(vx4100, Succ(vx30100)), Succ(vx30100)) 10.42/4.21 new_primPlusNat0(Succ(vx700), Succ(vx600)) -> Succ(Succ(new_primPlusNat0(vx700, vx600))) 10.42/4.21 new_sr(Neg(vx410), Neg(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primMinusNat0(Succ(vx700), Succ(vx600)) -> new_primMinusNat0(vx700, vx600) 10.42/4.21 new_primMinusNat0(Succ(vx700), Zero) -> Pos(Succ(vx700)) 10.42/4.21 10.42/4.21 The set Q consists of the following terms: 10.42/4.21 10.42/4.21 new_primMulNat0(Succ(x0), Zero) 10.42/4.21 new_primMinusNat0(Zero, Succ(x0)) 10.42/4.21 new_primPlusInt(Neg(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Neg(x1)) 10.42/4.21 new_primMulNat0(Zero, Zero) 10.42/4.21 new_primMinusNat0(Zero, Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primMulNat0(Zero, Succ(x0)) 10.42/4.21 new_primMinusNat0(Succ(x0), Zero) 10.42/4.21 new_sr(Pos(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Pos(x1)) 10.42/4.21 new_primPlusInt(Pos(x0), Neg(x1)) 10.42/4.21 new_primPlusInt(Neg(x0), Pos(x1)) 10.42/4.21 new_ps(x0, x1, x2, x3) 10.42/4.21 new_primMinusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Zero) 10.42/4.21 new_primPlusInt(Pos(x0), Pos(x1)) 10.42/4.21 new_sr(Pos(x0), Pos(x1)) 10.42/4.21 new_primMulNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Succ(x0)) 10.42/4.21 10.42/4.21 We have to consider all minimal (P,Q,R)-chains. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (10) TransformationProof (EQUIVALENT) 10.42/4.21 By rewriting [LPAR04] the rule new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_ps(vx40, vx301, vx300, vx41), new_sr(vx41, vx301)), vx310, Float(new_ps(vx40, vx301, vx300, vx41), new_sr(vx41, vx301)), vx311) at position [0,0] we obtained the following new rules [LPAR04]: 10.42/4.21 10.42/4.21 (new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_ps(vx40, vx301, vx300, vx41), new_sr(vx41, vx301)), vx311),new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_ps(vx40, vx301, vx300, vx41), new_sr(vx41, vx301)), vx311)) 10.42/4.21 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (11) 10.42/4.21 Obligation: 10.42/4.21 Q DP problem: 10.42/4.21 The TRS P consists of the following rules: 10.42/4.21 10.42/4.21 new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_ps(vx40, vx301, vx300, vx41), new_sr(vx41, vx301)), vx311) 10.42/4.21 10.42/4.21 The TRS R consists of the following rules: 10.42/4.21 10.42/4.21 new_primMinusNat0(Zero, Zero) -> Pos(Zero) 10.42/4.21 new_primPlusNat0(Succ(vx700), Zero) -> Succ(vx700) 10.42/4.21 new_primPlusNat0(Zero, Succ(vx600)) -> Succ(vx600) 10.42/4.21 new_sr(Pos(vx410), Neg(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_sr(Neg(vx410), Pos(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primMulNat0(Zero, Zero) -> Zero 10.42/4.21 new_ps(vx40, vx301, vx300, vx41) -> new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)) 10.42/4.21 new_primPlusNat0(Zero, Zero) -> Zero 10.42/4.21 new_primPlusInt(Neg(vx70), Neg(vx60)) -> Neg(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primPlusInt(Pos(vx70), Pos(vx60)) -> Pos(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primMinusNat0(Zero, Succ(vx600)) -> Neg(Succ(vx600)) 10.42/4.21 new_primPlusInt(Pos(vx70), Neg(vx60)) -> new_primMinusNat0(vx70, vx60) 10.42/4.21 new_primPlusInt(Neg(vx70), Pos(vx60)) -> new_primMinusNat0(vx60, vx70) 10.42/4.21 new_primMulNat0(Succ(vx4100), Zero) -> Zero 10.42/4.21 new_primMulNat0(Zero, Succ(vx30100)) -> Zero 10.42/4.21 new_sr(Pos(vx410), Pos(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primMulNat0(Succ(vx4100), Succ(vx30100)) -> new_primPlusNat0(new_primMulNat0(vx4100, Succ(vx30100)), Succ(vx30100)) 10.42/4.21 new_primPlusNat0(Succ(vx700), Succ(vx600)) -> Succ(Succ(new_primPlusNat0(vx700, vx600))) 10.42/4.21 new_sr(Neg(vx410), Neg(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primMinusNat0(Succ(vx700), Succ(vx600)) -> new_primMinusNat0(vx700, vx600) 10.42/4.21 new_primMinusNat0(Succ(vx700), Zero) -> Pos(Succ(vx700)) 10.42/4.21 10.42/4.21 The set Q consists of the following terms: 10.42/4.21 10.42/4.21 new_primMulNat0(Succ(x0), Zero) 10.42/4.21 new_primMinusNat0(Zero, Succ(x0)) 10.42/4.21 new_primPlusInt(Neg(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Neg(x1)) 10.42/4.21 new_primMulNat0(Zero, Zero) 10.42/4.21 new_primMinusNat0(Zero, Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primMulNat0(Zero, Succ(x0)) 10.42/4.21 new_primMinusNat0(Succ(x0), Zero) 10.42/4.21 new_sr(Pos(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Pos(x1)) 10.42/4.21 new_primPlusInt(Pos(x0), Neg(x1)) 10.42/4.21 new_primPlusInt(Neg(x0), Pos(x1)) 10.42/4.21 new_ps(x0, x1, x2, x3) 10.42/4.21 new_primMinusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Zero) 10.42/4.21 new_primPlusInt(Pos(x0), Pos(x1)) 10.42/4.21 new_sr(Pos(x0), Pos(x1)) 10.42/4.21 new_primMulNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Succ(x0)) 10.42/4.21 10.42/4.21 We have to consider all minimal (P,Q,R)-chains. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (12) TransformationProof (EQUIVALENT) 10.42/4.21 By rewriting [LPAR04] the rule new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_ps(vx40, vx301, vx300, vx41), new_sr(vx41, vx301)), vx311) at position [2,0] we obtained the following new rules [LPAR04]: 10.42/4.21 10.42/4.21 (new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx311),new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx311)) 10.42/4.21 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (13) 10.42/4.21 Obligation: 10.42/4.21 Q DP problem: 10.42/4.21 The TRS P consists of the following rules: 10.42/4.21 10.42/4.21 new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx311) 10.42/4.21 10.42/4.21 The TRS R consists of the following rules: 10.42/4.21 10.42/4.21 new_primMinusNat0(Zero, Zero) -> Pos(Zero) 10.42/4.21 new_primPlusNat0(Succ(vx700), Zero) -> Succ(vx700) 10.42/4.21 new_primPlusNat0(Zero, Succ(vx600)) -> Succ(vx600) 10.42/4.21 new_sr(Pos(vx410), Neg(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_sr(Neg(vx410), Pos(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primMulNat0(Zero, Zero) -> Zero 10.42/4.21 new_ps(vx40, vx301, vx300, vx41) -> new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)) 10.42/4.21 new_primPlusNat0(Zero, Zero) -> Zero 10.42/4.21 new_primPlusInt(Neg(vx70), Neg(vx60)) -> Neg(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primPlusInt(Pos(vx70), Pos(vx60)) -> Pos(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primMinusNat0(Zero, Succ(vx600)) -> Neg(Succ(vx600)) 10.42/4.21 new_primPlusInt(Pos(vx70), Neg(vx60)) -> new_primMinusNat0(vx70, vx60) 10.42/4.21 new_primPlusInt(Neg(vx70), Pos(vx60)) -> new_primMinusNat0(vx60, vx70) 10.42/4.21 new_primMulNat0(Succ(vx4100), Zero) -> Zero 10.42/4.21 new_primMulNat0(Zero, Succ(vx30100)) -> Zero 10.42/4.21 new_sr(Pos(vx410), Pos(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primMulNat0(Succ(vx4100), Succ(vx30100)) -> new_primPlusNat0(new_primMulNat0(vx4100, Succ(vx30100)), Succ(vx30100)) 10.42/4.21 new_primPlusNat0(Succ(vx700), Succ(vx600)) -> Succ(Succ(new_primPlusNat0(vx700, vx600))) 10.42/4.21 new_sr(Neg(vx410), Neg(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primMinusNat0(Succ(vx700), Succ(vx600)) -> new_primMinusNat0(vx700, vx600) 10.42/4.21 new_primMinusNat0(Succ(vx700), Zero) -> Pos(Succ(vx700)) 10.42/4.21 10.42/4.21 The set Q consists of the following terms: 10.42/4.21 10.42/4.21 new_primMulNat0(Succ(x0), Zero) 10.42/4.21 new_primMinusNat0(Zero, Succ(x0)) 10.42/4.21 new_primPlusInt(Neg(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Neg(x1)) 10.42/4.21 new_primMulNat0(Zero, Zero) 10.42/4.21 new_primMinusNat0(Zero, Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primMulNat0(Zero, Succ(x0)) 10.42/4.21 new_primMinusNat0(Succ(x0), Zero) 10.42/4.21 new_sr(Pos(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Pos(x1)) 10.42/4.21 new_primPlusInt(Pos(x0), Neg(x1)) 10.42/4.21 new_primPlusInt(Neg(x0), Pos(x1)) 10.42/4.21 new_ps(x0, x1, x2, x3) 10.42/4.21 new_primMinusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Zero) 10.42/4.21 new_primPlusInt(Pos(x0), Pos(x1)) 10.42/4.21 new_sr(Pos(x0), Pos(x1)) 10.42/4.21 new_primMulNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Succ(x0)) 10.42/4.21 10.42/4.21 We have to consider all minimal (P,Q,R)-chains. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (14) UsableRulesProof (EQUIVALENT) 10.42/4.21 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (15) 10.42/4.21 Obligation: 10.42/4.21 Q DP problem: 10.42/4.21 The TRS P consists of the following rules: 10.42/4.21 10.42/4.21 new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx311) 10.42/4.21 10.42/4.21 The TRS R consists of the following rules: 10.42/4.21 10.42/4.21 new_sr(Pos(vx410), Neg(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_sr(Neg(vx410), Pos(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_sr(Pos(vx410), Pos(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_sr(Neg(vx410), Neg(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primPlusInt(Neg(vx70), Neg(vx60)) -> Neg(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primPlusInt(Pos(vx70), Pos(vx60)) -> Pos(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primPlusInt(Pos(vx70), Neg(vx60)) -> new_primMinusNat0(vx70, vx60) 10.42/4.21 new_primPlusInt(Neg(vx70), Pos(vx60)) -> new_primMinusNat0(vx60, vx70) 10.42/4.21 new_primMinusNat0(Zero, Zero) -> Pos(Zero) 10.42/4.21 new_primMinusNat0(Zero, Succ(vx600)) -> Neg(Succ(vx600)) 10.42/4.21 new_primMinusNat0(Succ(vx700), Succ(vx600)) -> new_primMinusNat0(vx700, vx600) 10.42/4.21 new_primMinusNat0(Succ(vx700), Zero) -> Pos(Succ(vx700)) 10.42/4.21 new_primPlusNat0(Succ(vx700), Zero) -> Succ(vx700) 10.42/4.21 new_primPlusNat0(Zero, Succ(vx600)) -> Succ(vx600) 10.42/4.21 new_primPlusNat0(Zero, Zero) -> Zero 10.42/4.21 new_primPlusNat0(Succ(vx700), Succ(vx600)) -> Succ(Succ(new_primPlusNat0(vx700, vx600))) 10.42/4.21 new_primMulNat0(Zero, Zero) -> Zero 10.42/4.21 new_primMulNat0(Succ(vx4100), Zero) -> Zero 10.42/4.21 new_primMulNat0(Zero, Succ(vx30100)) -> Zero 10.42/4.21 new_primMulNat0(Succ(vx4100), Succ(vx30100)) -> new_primPlusNat0(new_primMulNat0(vx4100, Succ(vx30100)), Succ(vx30100)) 10.42/4.21 10.42/4.21 The set Q consists of the following terms: 10.42/4.21 10.42/4.21 new_primMulNat0(Succ(x0), Zero) 10.42/4.21 new_primMinusNat0(Zero, Succ(x0)) 10.42/4.21 new_primPlusInt(Neg(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Neg(x1)) 10.42/4.21 new_primMulNat0(Zero, Zero) 10.42/4.21 new_primMinusNat0(Zero, Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primMulNat0(Zero, Succ(x0)) 10.42/4.21 new_primMinusNat0(Succ(x0), Zero) 10.42/4.21 new_sr(Pos(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Pos(x1)) 10.42/4.21 new_primPlusInt(Pos(x0), Neg(x1)) 10.42/4.21 new_primPlusInt(Neg(x0), Pos(x1)) 10.42/4.21 new_ps(x0, x1, x2, x3) 10.42/4.21 new_primMinusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Zero) 10.42/4.21 new_primPlusInt(Pos(x0), Pos(x1)) 10.42/4.21 new_sr(Pos(x0), Pos(x1)) 10.42/4.21 new_primMulNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Succ(x0)) 10.42/4.21 10.42/4.21 We have to consider all minimal (P,Q,R)-chains. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (16) QReductionProof (EQUIVALENT) 10.42/4.21 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 10.42/4.21 10.42/4.21 new_ps(x0, x1, x2, x3) 10.42/4.21 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (17) 10.42/4.21 Obligation: 10.42/4.21 Q DP problem: 10.42/4.21 The TRS P consists of the following rules: 10.42/4.21 10.42/4.21 new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx311) 10.42/4.21 10.42/4.21 The TRS R consists of the following rules: 10.42/4.21 10.42/4.21 new_sr(Pos(vx410), Neg(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_sr(Neg(vx410), Pos(vx3010)) -> Neg(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_sr(Pos(vx410), Pos(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_sr(Neg(vx410), Neg(vx3010)) -> Pos(new_primMulNat0(vx410, vx3010)) 10.42/4.21 new_primPlusInt(Neg(vx70), Neg(vx60)) -> Neg(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primPlusInt(Pos(vx70), Pos(vx60)) -> Pos(new_primPlusNat0(vx70, vx60)) 10.42/4.21 new_primPlusInt(Pos(vx70), Neg(vx60)) -> new_primMinusNat0(vx70, vx60) 10.42/4.21 new_primPlusInt(Neg(vx70), Pos(vx60)) -> new_primMinusNat0(vx60, vx70) 10.42/4.21 new_primMinusNat0(Zero, Zero) -> Pos(Zero) 10.42/4.21 new_primMinusNat0(Zero, Succ(vx600)) -> Neg(Succ(vx600)) 10.42/4.21 new_primMinusNat0(Succ(vx700), Succ(vx600)) -> new_primMinusNat0(vx700, vx600) 10.42/4.21 new_primMinusNat0(Succ(vx700), Zero) -> Pos(Succ(vx700)) 10.42/4.21 new_primPlusNat0(Succ(vx700), Zero) -> Succ(vx700) 10.42/4.21 new_primPlusNat0(Zero, Succ(vx600)) -> Succ(vx600) 10.42/4.21 new_primPlusNat0(Zero, Zero) -> Zero 10.42/4.21 new_primPlusNat0(Succ(vx700), Succ(vx600)) -> Succ(Succ(new_primPlusNat0(vx700, vx600))) 10.42/4.21 new_primMulNat0(Zero, Zero) -> Zero 10.42/4.21 new_primMulNat0(Succ(vx4100), Zero) -> Zero 10.42/4.21 new_primMulNat0(Zero, Succ(vx30100)) -> Zero 10.42/4.21 new_primMulNat0(Succ(vx4100), Succ(vx30100)) -> new_primPlusNat0(new_primMulNat0(vx4100, Succ(vx30100)), Succ(vx30100)) 10.42/4.21 10.42/4.21 The set Q consists of the following terms: 10.42/4.21 10.42/4.21 new_primMulNat0(Succ(x0), Zero) 10.42/4.21 new_primMinusNat0(Zero, Succ(x0)) 10.42/4.21 new_primPlusInt(Neg(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Neg(x1)) 10.42/4.21 new_primMulNat0(Zero, Zero) 10.42/4.21 new_primMinusNat0(Zero, Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Zero) 10.42/4.21 new_primPlusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primMulNat0(Zero, Succ(x0)) 10.42/4.21 new_primMinusNat0(Succ(x0), Zero) 10.42/4.21 new_sr(Pos(x0), Neg(x1)) 10.42/4.21 new_sr(Neg(x0), Pos(x1)) 10.42/4.21 new_primPlusInt(Pos(x0), Neg(x1)) 10.42/4.21 new_primPlusInt(Neg(x0), Pos(x1)) 10.42/4.21 new_primMinusNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Zero) 10.42/4.21 new_primPlusInt(Pos(x0), Pos(x1)) 10.42/4.21 new_sr(Pos(x0), Pos(x1)) 10.42/4.21 new_primMulNat0(Succ(x0), Succ(x1)) 10.42/4.21 new_primPlusNat0(Zero, Succ(x0)) 10.42/4.21 10.42/4.21 We have to consider all minimal (P,Q,R)-chains. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (18) QDPSizeChangeProof (EQUIVALENT) 10.42/4.21 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. 10.42/4.21 10.42/4.21 From the DPs we obtained the following set of size-change graphs: 10.42/4.21 *new_enforceWHNF(Float(vx40, vx41), Float(vx300, vx301), vx5, :(vx310, vx311)) -> new_enforceWHNF(Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx310, Float(new_primPlusInt(new_sr(vx40, vx301), new_sr(vx300, vx41)), new_sr(vx41, vx301)), vx311) 10.42/4.21 The graph contains the following edges 4 > 2, 4 > 4 10.42/4.21 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (19) 10.42/4.21 YES 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (20) 10.42/4.21 Obligation: 10.42/4.21 Q DP problem: 10.42/4.21 The TRS P consists of the following rules: 10.42/4.21 10.42/4.21 new_primMulNat(Succ(vx4100), Succ(vx30100)) -> new_primMulNat(vx4100, Succ(vx30100)) 10.42/4.21 10.42/4.21 R is empty. 10.42/4.21 Q is empty. 10.42/4.21 We have to consider all minimal (P,Q,R)-chains. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (21) QDPSizeChangeProof (EQUIVALENT) 10.42/4.21 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. 10.42/4.21 10.42/4.21 From the DPs we obtained the following set of size-change graphs: 10.42/4.21 *new_primMulNat(Succ(vx4100), Succ(vx30100)) -> new_primMulNat(vx4100, Succ(vx30100)) 10.42/4.21 The graph contains the following edges 1 > 1, 2 >= 2 10.42/4.21 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (22) 10.42/4.21 YES 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (23) 10.42/4.21 Obligation: 10.42/4.21 Q DP problem: 10.42/4.21 The TRS P consists of the following rules: 10.42/4.21 10.42/4.21 new_primMinusNat(Succ(vx700), Succ(vx600)) -> new_primMinusNat(vx700, vx600) 10.42/4.21 10.42/4.21 R is empty. 10.42/4.21 Q is empty. 10.42/4.21 We have to consider all minimal (P,Q,R)-chains. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (24) QDPSizeChangeProof (EQUIVALENT) 10.42/4.21 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. 10.42/4.21 10.42/4.21 From the DPs we obtained the following set of size-change graphs: 10.42/4.21 *new_primMinusNat(Succ(vx700), Succ(vx600)) -> new_primMinusNat(vx700, vx600) 10.42/4.21 The graph contains the following edges 1 > 1, 2 > 2 10.42/4.21 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (25) 10.42/4.21 YES 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (26) 10.42/4.21 Obligation: 10.42/4.21 Q DP problem: 10.42/4.21 The TRS P consists of the following rules: 10.42/4.21 10.42/4.21 new_primPlusNat(Succ(vx700), Succ(vx600)) -> new_primPlusNat(vx700, vx600) 10.42/4.21 10.42/4.21 R is empty. 10.42/4.21 Q is empty. 10.42/4.21 We have to consider all minimal (P,Q,R)-chains. 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (27) QDPSizeChangeProof (EQUIVALENT) 10.42/4.21 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. 10.42/4.21 10.42/4.21 From the DPs we obtained the following set of size-change graphs: 10.42/4.21 *new_primPlusNat(Succ(vx700), Succ(vx600)) -> new_primPlusNat(vx700, vx600) 10.42/4.21 The graph contains the following edges 1 > 1, 2 > 2 10.42/4.21 10.42/4.21 10.42/4.21 ---------------------------------------- 10.42/4.21 10.42/4.21 (28) 10.42/4.21 YES 10.53/4.27 EOF