28.46/15.34 YES 30.71/15.90 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 30.71/15.90 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 30.71/15.90 30.71/15.90 30.71/15.90 H-Termination with start terms of the given HASKELL could be proven: 30.71/15.90 30.71/15.90 (0) HASKELL 30.71/15.90 (1) BR [EQUIVALENT, 0 ms] 30.71/15.90 (2) HASKELL 30.71/15.90 (3) COR [EQUIVALENT, 0 ms] 30.71/15.90 (4) HASKELL 30.71/15.90 (5) NumRed [SOUND, 0 ms] 30.71/15.90 (6) HASKELL 30.71/15.90 (7) Narrow [SOUND, 0 ms] 30.71/15.90 (8) QDP 30.71/15.90 (9) QDPPairToRuleProof [EQUIVALENT, 0 ms] 30.71/15.90 (10) AND 30.71/15.90 (11) QDP 30.71/15.90 (12) DependencyGraphProof [EQUIVALENT, 0 ms] 30.71/15.90 (13) QDP 30.71/15.90 (14) TransformationProof [EQUIVALENT, 0 ms] 30.71/15.90 (15) QDP 30.71/15.90 (16) UsableRulesProof [EQUIVALENT, 0 ms] 30.71/15.90 (17) QDP 30.71/15.90 (18) QReductionProof [EQUIVALENT, 0 ms] 30.71/15.90 (19) QDP 30.71/15.90 (20) InductionCalculusProof [EQUIVALENT, 0 ms] 30.71/15.90 (21) QDP 30.71/15.90 (22) NonInfProof [EQUIVALENT, 33 ms] 30.71/15.90 (23) AND 30.71/15.90 (24) QDP 30.71/15.90 (25) DependencyGraphProof [EQUIVALENT, 0 ms] 30.71/15.90 (26) TRUE 30.71/15.90 (27) QDP 30.71/15.90 (28) DependencyGraphProof [EQUIVALENT, 0 ms] 30.71/15.90 (29) TRUE 30.71/15.90 (30) QDP 30.71/15.90 (31) QDPSizeChangeProof [EQUIVALENT, 0 ms] 30.71/15.90 (32) YES 30.71/15.90 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (0) 30.71/15.90 Obligation: 30.71/15.90 mainModule Main 30.71/15.90 module Main where { 30.71/15.90 import qualified Prelude; 30.71/15.90 } 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (1) BR (EQUIVALENT) 30.71/15.90 Replaced joker patterns by fresh variables and removed binding patterns. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (2) 30.71/15.90 Obligation: 30.71/15.90 mainModule Main 30.71/15.90 module Main where { 30.71/15.90 import qualified Prelude; 30.71/15.90 } 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (3) COR (EQUIVALENT) 30.71/15.90 Cond Reductions: 30.71/15.90 The following Function with conditions 30.71/15.90 "takeWhile p [] = []; 30.71/15.90 takeWhile p (x : xs)|p xx : takeWhile p xs|otherwise[]; 30.71/15.90 " 30.71/15.90 is transformed to 30.71/15.90 "takeWhile p [] = takeWhile3 p []; 30.71/15.90 takeWhile p (x : xs) = takeWhile2 p (x : xs); 30.71/15.90 " 30.71/15.90 "takeWhile1 p x xs True = x : takeWhile p xs; 30.71/15.90 takeWhile1 p x xs False = takeWhile0 p x xs otherwise; 30.71/15.90 " 30.71/15.90 "takeWhile0 p x xs True = []; 30.71/15.90 " 30.71/15.90 "takeWhile2 p (x : xs) = takeWhile1 p x xs (p x); 30.71/15.90 " 30.71/15.90 "takeWhile3 p [] = []; 30.71/15.90 takeWhile3 vz wu = takeWhile2 vz wu; 30.71/15.90 " 30.71/15.90 The following Function with conditions 30.71/15.90 "undefined |Falseundefined; 30.71/15.90 " 30.71/15.90 is transformed to 30.71/15.90 "undefined = undefined1; 30.71/15.90 " 30.71/15.90 "undefined0 True = undefined; 30.71/15.90 " 30.71/15.90 "undefined1 = undefined0 False; 30.71/15.90 " 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (4) 30.71/15.90 Obligation: 30.71/15.90 mainModule Main 30.71/15.90 module Main where { 30.71/15.90 import qualified Prelude; 30.71/15.90 } 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (5) NumRed (SOUND) 30.71/15.90 Num Reduction:All numbers are transformed to their corresponding representation with Succ, Pred and Zero. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (6) 30.71/15.90 Obligation: 30.71/15.90 mainModule Main 30.71/15.90 module Main where { 30.71/15.90 import qualified Prelude; 30.71/15.90 } 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (7) Narrow (SOUND) 30.71/15.90 Haskell To QDPs 30.71/15.90 30.71/15.90 digraph dp_graph { 30.71/15.90 node [outthreshold=100, inthreshold=100];1[label="enumFrom",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 30.71/15.90 3[label="enumFrom wv3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 30.71/15.90 4[label="map toEnum (enumFromTo (fromEnum wv3) (fromEnum maxBound))",fontsize=16,color="black",shape="box"];4 -> 5[label="",style="solid", color="black", weight=3]; 30.71/15.90 5[label="map toEnum (numericEnumFromTo (fromEnum wv3) (fromEnum maxBound))",fontsize=16,color="black",shape="box"];5 -> 6[label="",style="solid", color="black", weight=3]; 30.71/15.90 6[label="map toEnum (takeWhile (flip (<=) (fromEnum maxBound)) (numericEnumFrom (fromEnum wv3)))",fontsize=16,color="black",shape="box"];6 -> 7[label="",style="solid", color="black", weight=3]; 30.71/15.90 7[label="map toEnum (takeWhile (flip (<=) (fromEnum maxBound)) (fromEnum wv3 : (numericEnumFrom $! fromEnum wv3 + fromInt (Pos (Succ Zero)))))",fontsize=16,color="black",shape="box"];7 -> 8[label="",style="solid", color="black", weight=3]; 30.71/15.90 8[label="map toEnum (takeWhile2 (flip (<=) (fromEnum maxBound)) (fromEnum wv3 : (numericEnumFrom $! fromEnum wv3 + fromInt (Pos (Succ Zero)))))",fontsize=16,color="black",shape="box"];8 -> 9[label="",style="solid", color="black", weight=3]; 30.71/15.90 9[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (fromEnum wv3) (numericEnumFrom $! fromEnum wv3 + fromInt (Pos (Succ Zero))) (flip (<=) (fromEnum maxBound) (fromEnum wv3)))",fontsize=16,color="black",shape="box"];9 -> 10[label="",style="solid", color="black", weight=3]; 30.71/15.90 10[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (fromEnum wv3) (numericEnumFrom $! fromEnum wv3 + fromInt (Pos (Succ Zero))) ((<=) fromEnum wv3 fromEnum maxBound))",fontsize=16,color="black",shape="box"];10 -> 11[label="",style="solid", color="black", weight=3]; 30.71/15.90 11[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (fromEnum wv3) (numericEnumFrom $! fromEnum wv3 + fromInt (Pos (Succ Zero))) (compare (fromEnum wv3) (fromEnum maxBound) /= GT))",fontsize=16,color="black",shape="box"];11 -> 12[label="",style="solid", color="black", weight=3]; 30.71/15.90 12[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (fromEnum wv3) (numericEnumFrom $! fromEnum wv3 + fromInt (Pos (Succ Zero))) (not (compare (fromEnum wv3) (fromEnum maxBound) == GT)))",fontsize=16,color="black",shape="box"];12 -> 13[label="",style="solid", color="black", weight=3]; 30.71/15.90 13[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (fromEnum wv3) (numericEnumFrom $! fromEnum wv3 + fromInt (Pos (Succ Zero))) (not (primCmpInt (fromEnum wv3) (fromEnum maxBound) == GT)))",fontsize=16,color="black",shape="box"];13 -> 14[label="",style="solid", color="black", weight=3]; 30.71/15.90 14[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (primCharToInt wv3) (numericEnumFrom $! primCharToInt wv3 + fromInt (Pos (Succ Zero))) (not (primCmpInt (primCharToInt wv3) (fromEnum maxBound) == GT)))",fontsize=16,color="burlywood",shape="box"];716[label="wv3/Char wv30",fontsize=10,color="white",style="solid",shape="box"];14 -> 716[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 716 -> 15[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 15[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (primCharToInt (Char wv30)) (numericEnumFrom $! primCharToInt (Char wv30) + fromInt (Pos (Succ Zero))) (not (primCmpInt (primCharToInt (Char wv30)) (fromEnum maxBound) == GT)))",fontsize=16,color="black",shape="box"];15 -> 16[label="",style="solid", color="black", weight=3]; 30.71/15.90 16[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (Pos wv30) (numericEnumFrom $! Pos wv30 + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos wv30) (fromEnum maxBound) == GT)))",fontsize=16,color="burlywood",shape="box"];717[label="wv30/Succ wv300",fontsize=10,color="white",style="solid",shape="box"];16 -> 717[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 717 -> 17[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 718[label="wv30/Zero",fontsize=10,color="white",style="solid",shape="box"];16 -> 718[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 718 -> 18[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 17[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (Pos (Succ wv300)) (numericEnumFrom $! Pos (Succ wv300) + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos (Succ wv300)) (fromEnum maxBound) == GT)))",fontsize=16,color="black",shape="box"];17 -> 19[label="",style="solid", color="black", weight=3]; 30.71/15.90 18[label="map toEnum (takeWhile1 (flip (<=) (fromEnum maxBound)) (Pos Zero) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos Zero) (fromEnum maxBound) == GT)))",fontsize=16,color="black",shape="box"];18 -> 20[label="",style="solid", color="black", weight=3]; 30.71/15.90 19[label="map toEnum (takeWhile1 (flip (<=) (primCharToInt maxBound)) (Pos (Succ wv300)) (numericEnumFrom $! Pos (Succ wv300) + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos (Succ wv300)) (primCharToInt maxBound) == GT)))",fontsize=16,color="black",shape="box"];19 -> 21[label="",style="solid", color="black", weight=3]; 30.71/15.90 20[label="map toEnum (takeWhile1 (flip (<=) (primCharToInt maxBound)) (Pos Zero) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos Zero) (primCharToInt maxBound) == GT)))",fontsize=16,color="black",shape="box"];20 -> 22[label="",style="solid", color="black", weight=3]; 30.71/15.90 21 -> 23[label="",style="dashed", color="red", weight=0]; 30.71/15.90 21[label="map toEnum (takeWhile1 (flip (<=) (primCharToInt (Char (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (Pos (Succ wv300)) (numericEnumFrom $! Pos (Succ wv300) + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos (Succ wv300)) (primCharToInt (Char (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) == GT)))",fontsize=16,color="magenta"];21 -> 24[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 21 -> 25[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 22 -> 26[label="",style="dashed", color="red", weight=0]; 30.71/15.90 22[label="map toEnum (takeWhile1 (flip (<=) (primCharToInt (Char (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (Pos Zero) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos Zero) (primCharToInt (Char (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) == GT)))",fontsize=16,color="magenta"];22 -> 27[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 24[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];25[label="wv300",fontsize=16,color="green",shape="box"];23[label="map toEnum (takeWhile1 (flip (<=) (primCharToInt (Char (Succ wv5)))) (Pos (Succ wv6)) (numericEnumFrom $! Pos (Succ wv6) + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos (Succ wv6)) (primCharToInt (Char (Succ wv5))) == GT)))",fontsize=16,color="black",shape="triangle"];23 -> 28[label="",style="solid", color="black", weight=3]; 30.71/15.90 27[label="Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",fontsize=16,color="green",shape="box"];26[label="map toEnum (takeWhile1 (flip (<=) (primCharToInt (Char (Succ wv8)))) (Pos Zero) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos Zero) (primCharToInt (Char (Succ wv8))) == GT)))",fontsize=16,color="black",shape="triangle"];26 -> 29[label="",style="solid", color="black", weight=3]; 30.71/15.90 28[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv5))) (Pos (Succ wv6)) (numericEnumFrom $! Pos (Succ wv6) + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos (Succ wv6)) (Pos (Succ wv5)) == GT)))",fontsize=16,color="black",shape="triangle"];28 -> 30[label="",style="solid", color="black", weight=3]; 30.71/15.90 29[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos Zero) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos Zero) (Pos (Succ wv8)) == GT)))",fontsize=16,color="black",shape="box"];29 -> 31[label="",style="solid", color="black", weight=3]; 30.71/15.90 30 -> 606[label="",style="dashed", color="red", weight=0]; 30.71/15.90 30[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv5))) (Pos (Succ wv6)) (numericEnumFrom $! Pos (Succ wv6) + fromInt (Pos (Succ Zero))) (not (primCmpNat (Succ wv6) (Succ wv5) == GT)))",fontsize=16,color="magenta"];30 -> 607[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 30 -> 608[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 30 -> 609[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 30 -> 610[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 31[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos Zero) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))) (not (primCmpNat Zero (Succ wv8) == GT)))",fontsize=16,color="black",shape="box"];31 -> 33[label="",style="solid", color="black", weight=3]; 30.71/15.90 607[label="Succ wv6",fontsize=16,color="green",shape="box"];608[label="Succ wv5",fontsize=16,color="green",shape="box"];609[label="wv5",fontsize=16,color="green",shape="box"];610[label="wv6",fontsize=16,color="green",shape="box"];606[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (primCmpNat wv28 wv29 == GT)))",fontsize=16,color="burlywood",shape="triangle"];719[label="wv28/Succ wv280",fontsize=10,color="white",style="solid",shape="box"];606 -> 719[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 719 -> 651[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 720[label="wv28/Zero",fontsize=10,color="white",style="solid",shape="box"];606 -> 720[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 720 -> 652[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 33[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos Zero) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))) (not (LT == GT)))",fontsize=16,color="black",shape="box"];33 -> 36[label="",style="solid", color="black", weight=3]; 30.71/15.90 651[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (primCmpNat (Succ wv280) wv29 == GT)))",fontsize=16,color="burlywood",shape="box"];721[label="wv29/Succ wv290",fontsize=10,color="white",style="solid",shape="box"];651 -> 721[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 721 -> 653[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 722[label="wv29/Zero",fontsize=10,color="white",style="solid",shape="box"];651 -> 722[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 722 -> 654[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 652[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (primCmpNat Zero wv29 == GT)))",fontsize=16,color="burlywood",shape="box"];723[label="wv29/Succ wv290",fontsize=10,color="white",style="solid",shape="box"];652 -> 723[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 723 -> 655[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 724[label="wv29/Zero",fontsize=10,color="white",style="solid",shape="box"];652 -> 724[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 724 -> 656[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 36[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos Zero) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))) (not False))",fontsize=16,color="black",shape="box"];36 -> 41[label="",style="solid", color="black", weight=3]; 30.71/15.90 653[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (primCmpNat (Succ wv280) (Succ wv290) == GT)))",fontsize=16,color="black",shape="box"];653 -> 657[label="",style="solid", color="black", weight=3]; 30.71/15.90 654[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (primCmpNat (Succ wv280) Zero == GT)))",fontsize=16,color="black",shape="box"];654 -> 658[label="",style="solid", color="black", weight=3]; 30.71/15.90 655[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (primCmpNat Zero (Succ wv290) == GT)))",fontsize=16,color="black",shape="box"];655 -> 659[label="",style="solid", color="black", weight=3]; 30.71/15.90 656[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (primCmpNat Zero Zero == GT)))",fontsize=16,color="black",shape="box"];656 -> 660[label="",style="solid", color="black", weight=3]; 30.71/15.90 41[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos Zero) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))) True)",fontsize=16,color="black",shape="box"];41 -> 46[label="",style="solid", color="black", weight=3]; 30.71/15.90 657 -> 606[label="",style="dashed", color="red", weight=0]; 30.71/15.90 657[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (primCmpNat wv280 wv290 == GT)))",fontsize=16,color="magenta"];657 -> 661[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 657 -> 662[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 658[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (GT == GT)))",fontsize=16,color="black",shape="box"];658 -> 663[label="",style="solid", color="black", weight=3]; 30.71/15.90 659[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (LT == GT)))",fontsize=16,color="black",shape="box"];659 -> 664[label="",style="solid", color="black", weight=3]; 30.71/15.90 660[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not (EQ == GT)))",fontsize=16,color="black",shape="box"];660 -> 665[label="",style="solid", color="black", weight=3]; 30.71/15.90 46[label="map toEnum (Pos Zero : takeWhile (flip (<=) (Pos (Succ wv8))) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))",fontsize=16,color="black",shape="box"];46 -> 52[label="",style="solid", color="black", weight=3]; 30.71/15.90 661[label="wv280",fontsize=16,color="green",shape="box"];662[label="wv290",fontsize=16,color="green",shape="box"];663[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not True))",fontsize=16,color="black",shape="box"];663 -> 666[label="",style="solid", color="black", weight=3]; 30.71/15.90 664[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not False))",fontsize=16,color="black",shape="triangle"];664 -> 667[label="",style="solid", color="black", weight=3]; 30.71/15.90 665 -> 664[label="",style="dashed", color="red", weight=0]; 30.71/15.90 665[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) (not False))",fontsize=16,color="magenta"];52[label="toEnum (Pos Zero) : map toEnum (takeWhile (flip (<=) (Pos (Succ wv8))) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))",fontsize=16,color="green",shape="box"];52 -> 60[label="",style="dashed", color="green", weight=3]; 30.71/15.90 52 -> 61[label="",style="dashed", color="green", weight=3]; 30.71/15.90 666[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) False)",fontsize=16,color="black",shape="box"];666 -> 668[label="",style="solid", color="black", weight=3]; 30.71/15.90 667[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) True)",fontsize=16,color="black",shape="box"];667 -> 669[label="",style="solid", color="black", weight=3]; 30.71/15.90 60[label="toEnum (Pos Zero)",fontsize=16,color="blue",shape="box"];725[label="toEnum :: Int -> Int",fontsize=10,color="white",style="solid",shape="box"];60 -> 725[label="",style="solid", color="blue", weight=9]; 30.71/15.90 725 -> 69[label="",style="solid", color="blue", weight=3]; 30.71/15.90 726[label="toEnum :: Int -> Char",fontsize=10,color="white",style="solid",shape="box"];60 -> 726[label="",style="solid", color="blue", weight=9]; 30.71/15.90 726 -> 70[label="",style="solid", color="blue", weight=3]; 30.71/15.90 727[label="toEnum :: Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];60 -> 727[label="",style="solid", color="blue", weight=9]; 30.71/15.90 727 -> 71[label="",style="solid", color="blue", weight=3]; 30.71/15.90 728[label="toEnum :: Int -> Double",fontsize=10,color="white",style="solid",shape="box"];60 -> 728[label="",style="solid", color="blue", weight=9]; 30.71/15.90 728 -> 72[label="",style="solid", color="blue", weight=3]; 30.71/15.90 729[label="toEnum :: Int -> Ordering",fontsize=10,color="white",style="solid",shape="box"];60 -> 729[label="",style="solid", color="blue", weight=9]; 30.71/15.90 729 -> 73[label="",style="solid", color="blue", weight=3]; 30.71/15.90 730[label="toEnum :: Int -> ()",fontsize=10,color="white",style="solid",shape="box"];60 -> 730[label="",style="solid", color="blue", weight=9]; 30.71/15.90 730 -> 74[label="",style="solid", color="blue", weight=3]; 30.71/15.90 731[label="toEnum :: Int -> Float",fontsize=10,color="white",style="solid",shape="box"];60 -> 731[label="",style="solid", color="blue", weight=9]; 30.71/15.90 731 -> 75[label="",style="solid", color="blue", weight=3]; 30.71/15.90 732[label="toEnum :: Int -> Integer",fontsize=10,color="white",style="solid",shape="box"];60 -> 732[label="",style="solid", color="blue", weight=9]; 30.71/15.90 732 -> 76[label="",style="solid", color="blue", weight=3]; 30.71/15.90 733[label="toEnum :: Int -> Ratio a",fontsize=10,color="white",style="solid",shape="box"];60 -> 733[label="",style="solid", color="blue", weight=9]; 30.71/15.90 733 -> 77[label="",style="solid", color="blue", weight=3]; 30.71/15.90 61[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv8))) (numericEnumFrom $! Pos Zero + fromInt (Pos (Succ Zero))))",fontsize=16,color="black",shape="box"];61 -> 78[label="",style="solid", color="black", weight=3]; 30.71/15.90 668[label="map toEnum (takeWhile0 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) otherwise)",fontsize=16,color="black",shape="box"];668 -> 670[label="",style="solid", color="black", weight=3]; 30.71/15.90 669[label="map toEnum (Pos (Succ wv27) : takeWhile (flip (<=) (Pos (Succ wv26))) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))))",fontsize=16,color="black",shape="box"];669 -> 671[label="",style="solid", color="black", weight=3]; 30.71/15.90 69[label="toEnum (Pos Zero)",fontsize=16,color="black",shape="box"];69 -> 87[label="",style="solid", color="black", weight=3]; 30.71/15.90 70[label="toEnum (Pos Zero)",fontsize=16,color="black",shape="box"];70 -> 88[label="",style="solid", color="black", weight=3]; 30.71/15.90 71[label="toEnum (Pos Zero)",fontsize=16,color="black",shape="box"];71 -> 89[label="",style="solid", color="black", weight=3]; 30.71/15.90 72[label="toEnum (Pos Zero)",fontsize=16,color="black",shape="box"];72 -> 90[label="",style="solid", color="black", weight=3]; 30.71/15.90 73[label="toEnum (Pos Zero)",fontsize=16,color="black",shape="box"];73 -> 91[label="",style="solid", color="black", weight=3]; 30.71/15.90 74[label="toEnum (Pos Zero)",fontsize=16,color="black",shape="box"];74 -> 92[label="",style="solid", color="black", weight=3]; 30.71/15.90 75[label="toEnum (Pos Zero)",fontsize=16,color="black",shape="box"];75 -> 93[label="",style="solid", color="black", weight=3]; 30.71/15.90 76[label="toEnum (Pos Zero)",fontsize=16,color="black",shape="box"];76 -> 94[label="",style="solid", color="black", weight=3]; 30.71/15.90 77[label="toEnum (Pos Zero)",fontsize=16,color="black",shape="box"];77 -> 95[label="",style="solid", color="black", weight=3]; 30.71/15.90 78[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv8))) (Pos Zero + fromInt (Pos (Succ Zero)) `seq` numericEnumFrom (Pos Zero + fromInt (Pos (Succ Zero)))))",fontsize=16,color="black",shape="box"];78 -> 96[label="",style="solid", color="black", weight=3]; 30.71/15.90 670[label="map toEnum (takeWhile0 (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27)) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))) True)",fontsize=16,color="black",shape="box"];670 -> 672[label="",style="solid", color="black", weight=3]; 30.71/15.90 671[label="toEnum (Pos (Succ wv27)) : map toEnum (takeWhile (flip (<=) (Pos (Succ wv26))) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))))",fontsize=16,color="green",shape="box"];671 -> 673[label="",style="dashed", color="green", weight=3]; 30.71/15.90 671 -> 674[label="",style="dashed", color="green", weight=3]; 30.71/15.90 87[label="error []",fontsize=16,color="red",shape="box"];88[label="primIntToChar (Pos Zero)",fontsize=16,color="black",shape="box"];88 -> 109[label="",style="solid", color="black", weight=3]; 30.71/15.90 89[label="error []",fontsize=16,color="red",shape="box"];90[label="error []",fontsize=16,color="red",shape="box"];91[label="error []",fontsize=16,color="red",shape="box"];92[label="error []",fontsize=16,color="red",shape="box"];93[label="error []",fontsize=16,color="red",shape="box"];94[label="error []",fontsize=16,color="red",shape="box"];95[label="error []",fontsize=16,color="red",shape="box"];96[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv8))) (enforceWHNF (WHNF (Pos Zero + fromInt (Pos (Succ Zero)))) (numericEnumFrom (Pos Zero + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];96 -> 110[label="",style="solid", color="black", weight=3]; 30.71/15.90 672[label="map toEnum []",fontsize=16,color="black",shape="box"];672 -> 675[label="",style="solid", color="black", weight=3]; 30.71/15.90 673[label="toEnum (Pos (Succ wv27))",fontsize=16,color="blue",shape="box"];734[label="toEnum :: Int -> Int",fontsize=10,color="white",style="solid",shape="box"];673 -> 734[label="",style="solid", color="blue", weight=9]; 30.71/15.90 734 -> 676[label="",style="solid", color="blue", weight=3]; 30.71/15.90 735[label="toEnum :: Int -> Char",fontsize=10,color="white",style="solid",shape="box"];673 -> 735[label="",style="solid", color="blue", weight=9]; 30.71/15.90 735 -> 677[label="",style="solid", color="blue", weight=3]; 30.71/15.90 736[label="toEnum :: Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];673 -> 736[label="",style="solid", color="blue", weight=9]; 30.71/15.90 736 -> 678[label="",style="solid", color="blue", weight=3]; 30.71/15.90 737[label="toEnum :: Int -> Double",fontsize=10,color="white",style="solid",shape="box"];673 -> 737[label="",style="solid", color="blue", weight=9]; 30.71/15.90 737 -> 679[label="",style="solid", color="blue", weight=3]; 30.71/15.90 738[label="toEnum :: Int -> Ordering",fontsize=10,color="white",style="solid",shape="box"];673 -> 738[label="",style="solid", color="blue", weight=9]; 30.71/15.90 738 -> 680[label="",style="solid", color="blue", weight=3]; 30.71/15.90 739[label="toEnum :: Int -> ()",fontsize=10,color="white",style="solid",shape="box"];673 -> 739[label="",style="solid", color="blue", weight=9]; 30.71/15.90 739 -> 681[label="",style="solid", color="blue", weight=3]; 30.71/15.90 740[label="toEnum :: Int -> Float",fontsize=10,color="white",style="solid",shape="box"];673 -> 740[label="",style="solid", color="blue", weight=9]; 30.71/15.90 740 -> 682[label="",style="solid", color="blue", weight=3]; 30.71/15.90 741[label="toEnum :: Int -> Integer",fontsize=10,color="white",style="solid",shape="box"];673 -> 741[label="",style="solid", color="blue", weight=9]; 30.71/15.90 741 -> 683[label="",style="solid", color="blue", weight=3]; 30.71/15.90 742[label="toEnum :: Int -> Ratio a",fontsize=10,color="white",style="solid",shape="box"];673 -> 742[label="",style="solid", color="blue", weight=9]; 30.71/15.90 742 -> 684[label="",style="solid", color="blue", weight=3]; 30.71/15.90 674[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv26))) (numericEnumFrom $! Pos (Succ wv27) + fromInt (Pos (Succ Zero))))",fontsize=16,color="black",shape="box"];674 -> 685[label="",style="solid", color="black", weight=3]; 30.71/15.90 109[label="Char Zero",fontsize=16,color="green",shape="box"];110[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv8))) (enforceWHNF (WHNF (primPlusInt (Pos Zero) (fromInt (Pos (Succ Zero))))) (numericEnumFrom (primPlusInt (Pos Zero) (fromInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];110 -> 139[label="",style="solid", color="black", weight=3]; 30.71/15.90 675[label="[]",fontsize=16,color="green",shape="box"];676[label="toEnum (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];676 -> 686[label="",style="solid", color="black", weight=3]; 30.71/15.90 677[label="toEnum (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];677 -> 687[label="",style="solid", color="black", weight=3]; 30.71/15.90 678[label="toEnum (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];678 -> 688[label="",style="solid", color="black", weight=3]; 30.71/15.90 679[label="toEnum (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];679 -> 689[label="",style="solid", color="black", weight=3]; 30.71/15.90 680[label="toEnum (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];680 -> 690[label="",style="solid", color="black", weight=3]; 30.71/15.90 681[label="toEnum (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];681 -> 691[label="",style="solid", color="black", weight=3]; 30.71/15.90 682[label="toEnum (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];682 -> 692[label="",style="solid", color="black", weight=3]; 30.71/15.90 683[label="toEnum (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];683 -> 693[label="",style="solid", color="black", weight=3]; 30.71/15.90 684[label="toEnum (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];684 -> 694[label="",style="solid", color="black", weight=3]; 30.71/15.90 685[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv26))) (Pos (Succ wv27) + fromInt (Pos (Succ Zero)) `seq` numericEnumFrom (Pos (Succ wv27) + fromInt (Pos (Succ Zero)))))",fontsize=16,color="black",shape="box"];685 -> 695[label="",style="solid", color="black", weight=3]; 30.71/15.90 139[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv8))) (enforceWHNF (WHNF (primPlusInt (Pos Zero) (Pos (Succ Zero)))) (numericEnumFrom (primPlusInt (Pos Zero) (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];139 -> 159[label="",style="solid", color="black", weight=3]; 30.71/15.90 686[label="error []",fontsize=16,color="red",shape="box"];687[label="primIntToChar (Pos (Succ wv27))",fontsize=16,color="black",shape="box"];687 -> 696[label="",style="solid", color="black", weight=3]; 30.71/15.90 688[label="error []",fontsize=16,color="red",shape="box"];689[label="error []",fontsize=16,color="red",shape="box"];690[label="error []",fontsize=16,color="red",shape="box"];691[label="error []",fontsize=16,color="red",shape="box"];692[label="error []",fontsize=16,color="red",shape="box"];693[label="error []",fontsize=16,color="red",shape="box"];694[label="error []",fontsize=16,color="red",shape="box"];695[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv26))) (enforceWHNF (WHNF (Pos (Succ wv27) + fromInt (Pos (Succ Zero)))) (numericEnumFrom (Pos (Succ wv27) + fromInt (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];695 -> 697[label="",style="solid", color="black", weight=3]; 30.71/15.90 159[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv8))) (enforceWHNF (WHNF (Pos (primPlusNat Zero (Succ Zero)))) (numericEnumFrom (Pos (primPlusNat Zero (Succ Zero))))))",fontsize=16,color="black",shape="box"];159 -> 175[label="",style="solid", color="black", weight=3]; 30.71/15.90 696[label="Char (Succ wv27)",fontsize=16,color="green",shape="box"];697[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv26))) (enforceWHNF (WHNF (primPlusInt (Pos (Succ wv27)) (fromInt (Pos (Succ Zero))))) (numericEnumFrom (primPlusInt (Pos (Succ wv27)) (fromInt (Pos (Succ Zero)))))))",fontsize=16,color="black",shape="box"];697 -> 698[label="",style="solid", color="black", weight=3]; 30.71/15.90 175[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv8))) (numericEnumFrom (Pos (primPlusNat Zero (Succ Zero)))))",fontsize=16,color="black",shape="box"];175 -> 205[label="",style="solid", color="black", weight=3]; 30.71/15.90 698[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv26))) (enforceWHNF (WHNF (primPlusInt (Pos (Succ wv27)) (Pos (Succ Zero)))) (numericEnumFrom (primPlusInt (Pos (Succ wv27)) (Pos (Succ Zero))))))",fontsize=16,color="black",shape="box"];698 -> 699[label="",style="solid", color="black", weight=3]; 30.71/15.90 205[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv8))) (Pos (primPlusNat Zero (Succ Zero)) : (numericEnumFrom $! Pos (primPlusNat Zero (Succ Zero)) + fromInt (Pos (Succ Zero)))))",fontsize=16,color="black",shape="box"];205 -> 227[label="",style="solid", color="black", weight=3]; 30.71/15.90 699[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv26))) (enforceWHNF (WHNF (Pos (primPlusNat (Succ wv27) (Succ Zero)))) (numericEnumFrom (Pos (primPlusNat (Succ wv27) (Succ Zero))))))",fontsize=16,color="black",shape="box"];699 -> 700[label="",style="solid", color="black", weight=3]; 30.71/15.90 227[label="map toEnum (takeWhile2 (flip (<=) (Pos (Succ wv8))) (Pos (primPlusNat Zero (Succ Zero)) : (numericEnumFrom $! Pos (primPlusNat Zero (Succ Zero)) + fromInt (Pos (Succ Zero)))))",fontsize=16,color="black",shape="box"];227 -> 245[label="",style="solid", color="black", weight=3]; 30.71/15.90 700[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv26))) (numericEnumFrom (Pos (primPlusNat (Succ wv27) (Succ Zero)))))",fontsize=16,color="black",shape="box"];700 -> 701[label="",style="solid", color="black", weight=3]; 30.71/15.90 245[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos (primPlusNat Zero (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat Zero (Succ Zero)) + fromInt (Pos (Succ Zero))) (flip (<=) (Pos (Succ wv8)) (Pos (primPlusNat Zero (Succ Zero)))))",fontsize=16,color="black",shape="box"];245 -> 277[label="",style="solid", color="black", weight=3]; 30.71/15.90 701[label="map toEnum (takeWhile (flip (<=) (Pos (Succ wv26))) (Pos (primPlusNat (Succ wv27) (Succ Zero)) : (numericEnumFrom $! Pos (primPlusNat (Succ wv27) (Succ Zero)) + fromInt (Pos (Succ Zero)))))",fontsize=16,color="black",shape="box"];701 -> 702[label="",style="solid", color="black", weight=3]; 30.71/15.90 277[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos (primPlusNat Zero (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat Zero (Succ Zero)) + fromInt (Pos (Succ Zero))) ((<=) Pos (primPlusNat Zero (Succ Zero)) Pos (Succ wv8)))",fontsize=16,color="black",shape="box"];277 -> 301[label="",style="solid", color="black", weight=3]; 30.71/15.90 702[label="map toEnum (takeWhile2 (flip (<=) (Pos (Succ wv26))) (Pos (primPlusNat (Succ wv27) (Succ Zero)) : (numericEnumFrom $! Pos (primPlusNat (Succ wv27) (Succ Zero)) + fromInt (Pos (Succ Zero)))))",fontsize=16,color="black",shape="box"];702 -> 703[label="",style="solid", color="black", weight=3]; 30.71/15.90 301[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos (primPlusNat Zero (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat Zero (Succ Zero)) + fromInt (Pos (Succ Zero))) (compare (Pos (primPlusNat Zero (Succ Zero))) (Pos (Succ wv8)) /= GT))",fontsize=16,color="black",shape="box"];301 -> 323[label="",style="solid", color="black", weight=3]; 30.71/15.90 703[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (primPlusNat (Succ wv27) (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat (Succ wv27) (Succ Zero)) + fromInt (Pos (Succ Zero))) (flip (<=) (Pos (Succ wv26)) (Pos (primPlusNat (Succ wv27) (Succ Zero)))))",fontsize=16,color="black",shape="box"];703 -> 704[label="",style="solid", color="black", weight=3]; 30.71/15.90 323[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos (primPlusNat Zero (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat Zero (Succ Zero)) + fromInt (Pos (Succ Zero))) (not (compare (Pos (primPlusNat Zero (Succ Zero))) (Pos (Succ wv8)) == GT)))",fontsize=16,color="black",shape="box"];323 -> 356[label="",style="solid", color="black", weight=3]; 30.71/15.90 704[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (primPlusNat (Succ wv27) (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat (Succ wv27) (Succ Zero)) + fromInt (Pos (Succ Zero))) ((<=) Pos (primPlusNat (Succ wv27) (Succ Zero)) Pos (Succ wv26)))",fontsize=16,color="black",shape="box"];704 -> 705[label="",style="solid", color="black", weight=3]; 30.71/15.90 356[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos (primPlusNat Zero (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat Zero (Succ Zero)) + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos (primPlusNat Zero (Succ Zero))) (Pos (Succ wv8)) == GT)))",fontsize=16,color="black",shape="box"];356 -> 381[label="",style="solid", color="black", weight=3]; 30.71/15.90 705[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (primPlusNat (Succ wv27) (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat (Succ wv27) (Succ Zero)) + fromInt (Pos (Succ Zero))) (compare (Pos (primPlusNat (Succ wv27) (Succ Zero))) (Pos (Succ wv26)) /= GT))",fontsize=16,color="black",shape="box"];705 -> 706[label="",style="solid", color="black", weight=3]; 30.71/15.90 381 -> 28[label="",style="dashed", color="red", weight=0]; 30.71/15.90 381[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv8))) (Pos (Succ Zero)) (numericEnumFrom $! Pos (Succ Zero) + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos (Succ Zero)) (Pos (Succ wv8)) == GT)))",fontsize=16,color="magenta"];381 -> 402[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 381 -> 403[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 706[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (primPlusNat (Succ wv27) (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat (Succ wv27) (Succ Zero)) + fromInt (Pos (Succ Zero))) (not (compare (Pos (primPlusNat (Succ wv27) (Succ Zero))) (Pos (Succ wv26)) == GT)))",fontsize=16,color="black",shape="box"];706 -> 707[label="",style="solid", color="black", weight=3]; 30.71/15.90 402[label="wv8",fontsize=16,color="green",shape="box"];403[label="Zero",fontsize=16,color="green",shape="box"];707[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (primPlusNat (Succ wv27) (Succ Zero))) (numericEnumFrom $! Pos (primPlusNat (Succ wv27) (Succ Zero)) + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos (primPlusNat (Succ wv27) (Succ Zero))) (Pos (Succ wv26)) == GT)))",fontsize=16,color="black",shape="box"];707 -> 708[label="",style="solid", color="black", weight=3]; 30.71/15.90 708 -> 28[label="",style="dashed", color="red", weight=0]; 30.71/15.90 708[label="map toEnum (takeWhile1 (flip (<=) (Pos (Succ wv26))) (Pos (Succ (Succ (primPlusNat wv27 Zero)))) (numericEnumFrom $! Pos (Succ (Succ (primPlusNat wv27 Zero))) + fromInt (Pos (Succ Zero))) (not (primCmpInt (Pos (Succ (Succ (primPlusNat wv27 Zero)))) (Pos (Succ wv26)) == GT)))",fontsize=16,color="magenta"];708 -> 709[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 708 -> 710[label="",style="dashed", color="magenta", weight=3]; 30.71/15.90 709[label="wv26",fontsize=16,color="green",shape="box"];710[label="Succ (primPlusNat wv27 Zero)",fontsize=16,color="green",shape="box"];710 -> 711[label="",style="dashed", color="green", weight=3]; 30.71/15.90 711[label="primPlusNat wv27 Zero",fontsize=16,color="burlywood",shape="box"];743[label="wv27/Succ wv270",fontsize=10,color="white",style="solid",shape="box"];711 -> 743[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 743 -> 712[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 744[label="wv27/Zero",fontsize=10,color="white",style="solid",shape="box"];711 -> 744[label="",style="solid", color="burlywood", weight=9]; 30.71/15.90 744 -> 713[label="",style="solid", color="burlywood", weight=3]; 30.71/15.90 712[label="primPlusNat (Succ wv270) Zero",fontsize=16,color="black",shape="box"];712 -> 714[label="",style="solid", color="black", weight=3]; 30.71/15.90 713[label="primPlusNat Zero Zero",fontsize=16,color="black",shape="box"];713 -> 715[label="",style="solid", color="black", weight=3]; 30.71/15.90 714[label="Succ wv270",fontsize=16,color="green",shape="box"];715[label="Zero",fontsize=16,color="green",shape="box"];} 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (8) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 new_map(wv26, wv27, Succ(wv280), Succ(wv290), h) -> new_map(wv26, wv27, wv280, wv290, h) 30.71/15.90 new_map0(wv5, wv6, ba) -> new_map(wv5, wv6, Succ(wv6), Succ(wv5), ba) 30.71/15.90 new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 30.71/15.90 The TRS R consists of the following rules: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) -> Zero 30.71/15.90 new_primPlusNat(Succ(wv270)) -> Succ(wv270) 30.71/15.90 30.71/15.90 The set Q consists of the following terms: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) 30.71/15.90 new_primPlusNat(Succ(x0)) 30.71/15.90 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (9) QDPPairToRuleProof (EQUIVALENT) 30.71/15.90 The dependency pair new_map(wv26, wv27, Succ(wv280), Succ(wv290), h) -> new_map(wv26, wv27, wv280, wv290, h) was transformed to the following new rules: 30.71/15.90 anew_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Zero, Succ(wv290)) -> cons_new_map(Zero, Succ(wv290)) 30.71/15.90 new_new_map(Zero, Zero) -> cons_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 the following new pairs maintain the fan-in: 30.71/15.90 new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, anew_new_map(Succ(wv6), Succ(wv5))) 30.71/15.90 30.71/15.90 the following new pairs maintain the fan-out: 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (10) 30.71/15.90 Complex Obligation (AND) 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (11) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 new_map0(wv5, wv6, ba) -> new_map(wv5, wv6, Succ(wv6), Succ(wv5), ba) 30.71/15.90 new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, anew_new_map(Succ(wv6), Succ(wv5))) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 30.71/15.90 The TRS R consists of the following rules: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) -> Zero 30.71/15.90 new_primPlusNat(Succ(wv270)) -> Succ(wv270) 30.71/15.90 anew_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Zero, Succ(wv290)) -> cons_new_map(Zero, Succ(wv290)) 30.71/15.90 new_new_map(Zero, Zero) -> cons_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 The set Q consists of the following terms: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) 30.71/15.90 new_primPlusNat(Succ(x0)) 30.71/15.90 new_new_map(Succ(x0), Succ(x1)) 30.71/15.90 anew_new_map(Succ(x0), Succ(x1)) 30.71/15.90 new_new_map(Zero, Succ(x0)) 30.71/15.90 new_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (12) DependencyGraphProof (EQUIVALENT) 30.71/15.90 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (13) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, anew_new_map(Succ(wv6), Succ(wv5))) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 30.71/15.90 The TRS R consists of the following rules: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) -> Zero 30.71/15.90 new_primPlusNat(Succ(wv270)) -> Succ(wv270) 30.71/15.90 anew_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Zero, Succ(wv290)) -> cons_new_map(Zero, Succ(wv290)) 30.71/15.90 new_new_map(Zero, Zero) -> cons_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 The set Q consists of the following terms: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) 30.71/15.90 new_primPlusNat(Succ(x0)) 30.71/15.90 new_new_map(Succ(x0), Succ(x1)) 30.71/15.90 anew_new_map(Succ(x0), Succ(x1)) 30.71/15.90 new_new_map(Zero, Succ(x0)) 30.71/15.90 new_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (14) TransformationProof (EQUIVALENT) 30.71/15.90 By rewriting [LPAR04] the rule new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, anew_new_map(Succ(wv6), Succ(wv5))) at position [3] we obtained the following new rules [LPAR04]: 30.71/15.90 30.71/15.90 (new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)),new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5))) 30.71/15.90 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (15) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) 30.71/15.90 30.71/15.90 The TRS R consists of the following rules: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) -> Zero 30.71/15.90 new_primPlusNat(Succ(wv270)) -> Succ(wv270) 30.71/15.90 anew_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Zero, Succ(wv290)) -> cons_new_map(Zero, Succ(wv290)) 30.71/15.90 new_new_map(Zero, Zero) -> cons_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 The set Q consists of the following terms: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) 30.71/15.90 new_primPlusNat(Succ(x0)) 30.71/15.90 new_new_map(Succ(x0), Succ(x1)) 30.71/15.90 anew_new_map(Succ(x0), Succ(x1)) 30.71/15.90 new_new_map(Zero, Succ(x0)) 30.71/15.90 new_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (16) UsableRulesProof (EQUIVALENT) 30.71/15.90 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. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (17) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) 30.71/15.90 30.71/15.90 The TRS R consists of the following rules: 30.71/15.90 30.71/15.90 new_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Zero, Succ(wv290)) -> cons_new_map(Zero, Succ(wv290)) 30.71/15.90 new_new_map(Zero, Zero) -> cons_new_map(Zero, Zero) 30.71/15.90 new_primPlusNat(Zero) -> Zero 30.71/15.90 new_primPlusNat(Succ(wv270)) -> Succ(wv270) 30.71/15.90 30.71/15.90 The set Q consists of the following terms: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) 30.71/15.90 new_primPlusNat(Succ(x0)) 30.71/15.90 new_new_map(Succ(x0), Succ(x1)) 30.71/15.90 anew_new_map(Succ(x0), Succ(x1)) 30.71/15.90 new_new_map(Zero, Succ(x0)) 30.71/15.90 new_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (18) QReductionProof (EQUIVALENT) 30.71/15.90 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 30.71/15.90 30.71/15.90 anew_new_map(Succ(x0), Succ(x1)) 30.71/15.90 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (19) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) 30.71/15.90 30.71/15.90 The TRS R consists of the following rules: 30.71/15.90 30.71/15.90 new_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Zero, Succ(wv290)) -> cons_new_map(Zero, Succ(wv290)) 30.71/15.90 new_new_map(Zero, Zero) -> cons_new_map(Zero, Zero) 30.71/15.90 new_primPlusNat(Zero) -> Zero 30.71/15.90 new_primPlusNat(Succ(wv270)) -> Succ(wv270) 30.71/15.90 30.71/15.90 The set Q consists of the following terms: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) 30.71/15.90 new_primPlusNat(Succ(x0)) 30.71/15.90 new_new_map(Succ(x0), Succ(x1)) 30.71/15.90 new_new_map(Zero, Succ(x0)) 30.71/15.90 new_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (20) InductionCalculusProof (EQUIVALENT) 30.71/15.90 Note that final constraints are written in bold face. 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) the following chains were created: 30.71/15.90 *We consider the chain H(x4, x5, x6, cons_new_map(Zero, Succ(x7))) -> new_map(x4, x5, Zero, Succ(x7), x6), new_map(x8, x9, Zero, Succ(x10), x11) -> new_map0(x8, Succ(new_primPlusNat(x9)), x11) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map(x4, x5, Zero, Succ(x7), x6)=new_map(x8, x9, Zero, Succ(x10), x11) ==> H(x4, x5, x6, cons_new_map(Zero, Succ(x7)))_>=_new_map(x4, x5, Zero, Succ(x7), x6)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (H(x4, x5, x6, cons_new_map(Zero, Succ(x7)))_>=_new_map(x4, x5, Zero, Succ(x7), x6)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) the following chains were created: 30.71/15.90 *We consider the chain new_map(x48, x49, Zero, Succ(x50), x51) -> new_map0(x48, Succ(new_primPlusNat(x49)), x51), new_map0(x52, x53, x54) -> H(x52, x53, x54, new_new_map(x53, x52)) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map0(x48, Succ(new_primPlusNat(x49)), x51)=new_map0(x52, x53, x54) ==> new_map(x48, x49, Zero, Succ(x50), x51)_>=_new_map0(x48, Succ(new_primPlusNat(x49)), x51)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_map(x48, x49, Zero, Succ(x50), x51)_>=_new_map0(x48, Succ(new_primPlusNat(x49)), x51)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) the following chains were created: 30.71/15.90 *We consider the chain H(x64, x65, x66, cons_new_map(Zero, Zero)) -> new_map(x64, x65, Zero, Zero, x66), new_map(x67, x68, Zero, Zero, x69) -> new_map1(x67, x68, x69) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map(x64, x65, Zero, Zero, x66)=new_map(x67, x68, Zero, Zero, x69) ==> H(x64, x65, x66, cons_new_map(Zero, Zero))_>=_new_map(x64, x65, Zero, Zero, x66)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (H(x64, x65, x66, cons_new_map(Zero, Zero))_>=_new_map(x64, x65, Zero, Zero, x66)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) the following chains were created: 30.71/15.90 *We consider the chain new_map(x88, x89, Zero, Zero, x90) -> new_map1(x88, x89, x90), new_map1(x91, x92, x93) -> new_map0(x91, Succ(new_primPlusNat(x92)), x93) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map1(x88, x89, x90)=new_map1(x91, x92, x93) ==> new_map(x88, x89, Zero, Zero, x90)_>=_new_map1(x88, x89, x90)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_map(x88, x89, Zero, Zero, x90)_>=_new_map1(x88, x89, x90)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) the following chains were created: 30.71/15.90 *We consider the chain new_map1(x112, x113, x114) -> new_map0(x112, Succ(new_primPlusNat(x113)), x114), new_map0(x115, x116, x117) -> H(x115, x116, x117, new_new_map(x116, x115)) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map0(x112, Succ(new_primPlusNat(x113)), x114)=new_map0(x115, x116, x117) ==> new_map1(x112, x113, x114)_>=_new_map0(x112, Succ(new_primPlusNat(x113)), x114)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_map1(x112, x113, x114)_>=_new_map0(x112, Succ(new_primPlusNat(x113)), x114)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) the following chains were created: 30.71/15.90 *We consider the chain new_map0(x118, x119, x120) -> H(x118, x119, x120, new_new_map(x119, x118)), H(x121, x122, x123, cons_new_map(Zero, Succ(x124))) -> new_map(x121, x122, Zero, Succ(x124), x123) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (H(x118, x119, x120, new_new_map(x119, x118))=H(x121, x122, x123, cons_new_map(Zero, Succ(x124))) ==> new_map0(x118, x119, x120)_>=_H(x118, x119, x120, new_new_map(x119, x118))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_new_map(x119, x118)=cons_new_map(Zero, Succ(x124)) ==> new_map0(x118, x119, x120)_>=_H(x118, x119, x120, new_new_map(x119, x118))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_new_map(x119, x118)=cons_new_map(Zero, Succ(x124)) which results in the following new constraints: 30.71/15.90 30.71/15.90 (3) (new_new_map(x144, x143)=cons_new_map(Zero, Succ(x124)) & (\/x145,x146:new_new_map(x144, x143)=cons_new_map(Zero, Succ(x145)) ==> new_map0(x143, x144, x146)_>=_H(x143, x144, x146, new_new_map(x144, x143))) ==> new_map0(Succ(x143), Succ(x144), x120)_>=_H(Succ(x143), Succ(x144), x120, new_new_map(Succ(x144), Succ(x143)))) 30.71/15.90 30.71/15.90 (4) (cons_new_map(Zero, Succ(x147))=cons_new_map(Zero, Succ(x124)) ==> new_map0(Succ(x147), Zero, x120)_>=_H(Succ(x147), Zero, x120, new_new_map(Zero, Succ(x147)))) 30.71/15.90 30.71/15.90 (5) (cons_new_map(Zero, Zero)=cons_new_map(Zero, Succ(x124)) ==> new_map0(Zero, Zero, x120)_>=_H(Zero, Zero, x120, new_new_map(Zero, Zero))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (3) using rule (VI) where we applied the induction hypothesis (\/x145,x146:new_new_map(x144, x143)=cons_new_map(Zero, Succ(x145)) ==> new_map0(x143, x144, x146)_>=_H(x143, x144, x146, new_new_map(x144, x143))) with sigma = [x145 / x124, x146 / x120] which results in the following new constraint: 30.71/15.90 30.71/15.90 (6) (new_map0(x143, x144, x120)_>=_H(x143, x144, x120, new_new_map(x144, x143)) ==> new_map0(Succ(x143), Succ(x144), x120)_>=_H(Succ(x143), Succ(x144), x120, new_new_map(Succ(x144), Succ(x143)))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (4) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (7) (new_map0(Succ(x147), Zero, x120)_>=_H(Succ(x147), Zero, x120, new_new_map(Zero, Succ(x147)))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We solved constraint (5) using rules (I), (II). 30.71/15.90 *We consider the chain new_map0(x128, x129, x130) -> H(x128, x129, x130, new_new_map(x129, x128)), H(x131, x132, x133, cons_new_map(Zero, Zero)) -> new_map(x131, x132, Zero, Zero, x133) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (H(x128, x129, x130, new_new_map(x129, x128))=H(x131, x132, x133, cons_new_map(Zero, Zero)) ==> new_map0(x128, x129, x130)_>=_H(x128, x129, x130, new_new_map(x129, x128))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_new_map(x129, x128)=cons_new_map(Zero, Zero) ==> new_map0(x128, x129, x130)_>=_H(x128, x129, x130, new_new_map(x129, x128))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_new_map(x129, x128)=cons_new_map(Zero, Zero) which results in the following new constraints: 30.71/15.90 30.71/15.90 (3) (new_new_map(x149, x148)=cons_new_map(Zero, Zero) & (\/x150:new_new_map(x149, x148)=cons_new_map(Zero, Zero) ==> new_map0(x148, x149, x150)_>=_H(x148, x149, x150, new_new_map(x149, x148))) ==> new_map0(Succ(x148), Succ(x149), x130)_>=_H(Succ(x148), Succ(x149), x130, new_new_map(Succ(x149), Succ(x148)))) 30.71/15.90 30.71/15.90 (4) (cons_new_map(Zero, Succ(x151))=cons_new_map(Zero, Zero) ==> new_map0(Succ(x151), Zero, x130)_>=_H(Succ(x151), Zero, x130, new_new_map(Zero, Succ(x151)))) 30.71/15.90 30.71/15.90 (5) (cons_new_map(Zero, Zero)=cons_new_map(Zero, Zero) ==> new_map0(Zero, Zero, x130)_>=_H(Zero, Zero, x130, new_new_map(Zero, Zero))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (3) using rule (VI) where we applied the induction hypothesis (\/x150:new_new_map(x149, x148)=cons_new_map(Zero, Zero) ==> new_map0(x148, x149, x150)_>=_H(x148, x149, x150, new_new_map(x149, x148))) with sigma = [x150 / x130] which results in the following new constraint: 30.71/15.90 30.71/15.90 (6) (new_map0(x148, x149, x130)_>=_H(x148, x149, x130, new_new_map(x149, x148)) ==> new_map0(Succ(x148), Succ(x149), x130)_>=_H(Succ(x148), Succ(x149), x130, new_new_map(Succ(x149), Succ(x148)))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We solved constraint (4) using rules (I), (II).We simplified constraint (5) using rules (I), (II) which results in the following new constraint: 30.71/15.90 30.71/15.90 (7) (new_map0(Zero, Zero, x130)_>=_H(Zero, Zero, x130, new_new_map(Zero, Zero))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 To summarize, we get the following constraints P__>=_ for the following pairs. 30.71/15.90 30.71/15.90 *H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 30.71/15.90 *(H(x4, x5, x6, cons_new_map(Zero, Succ(x7)))_>=_new_map(x4, x5, Zero, Succ(x7), x6)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 30.71/15.90 *(new_map(x48, x49, Zero, Succ(x50), x51)_>=_new_map0(x48, Succ(new_primPlusNat(x49)), x51)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 30.71/15.90 *(H(x64, x65, x66, cons_new_map(Zero, Zero))_>=_new_map(x64, x65, Zero, Zero, x66)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 30.71/15.90 *(new_map(x88, x89, Zero, Zero, x90)_>=_new_map1(x88, x89, x90)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 30.71/15.90 *(new_map1(x112, x113, x114)_>=_new_map0(x112, Succ(new_primPlusNat(x113)), x114)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) 30.71/15.90 30.71/15.90 *(new_map0(x143, x144, x120)_>=_H(x143, x144, x120, new_new_map(x144, x143)) ==> new_map0(Succ(x143), Succ(x144), x120)_>=_H(Succ(x143), Succ(x144), x120, new_new_map(Succ(x144), Succ(x143)))) 30.71/15.90 30.71/15.90 30.71/15.90 *(new_map0(Succ(x147), Zero, x120)_>=_H(Succ(x147), Zero, x120, new_new_map(Zero, Succ(x147)))) 30.71/15.90 30.71/15.90 30.71/15.90 *(new_map0(x148, x149, x130)_>=_H(x148, x149, x130, new_new_map(x149, x148)) ==> new_map0(Succ(x148), Succ(x149), x130)_>=_H(Succ(x148), Succ(x149), x130, new_new_map(Succ(x149), Succ(x148)))) 30.71/15.90 30.71/15.90 30.71/15.90 *(new_map0(Zero, Zero, x130)_>=_H(Zero, Zero, x130, new_new_map(Zero, Zero))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (21) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) 30.71/15.90 30.71/15.90 The TRS R consists of the following rules: 30.71/15.90 30.71/15.90 new_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Zero, Succ(wv290)) -> cons_new_map(Zero, Succ(wv290)) 30.71/15.90 new_new_map(Zero, Zero) -> cons_new_map(Zero, Zero) 30.71/15.90 new_primPlusNat(Zero) -> Zero 30.71/15.90 new_primPlusNat(Succ(wv270)) -> Succ(wv270) 30.71/15.90 30.71/15.90 The set Q consists of the following terms: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) 30.71/15.90 new_primPlusNat(Succ(x0)) 30.71/15.90 new_new_map(Succ(x0), Succ(x1)) 30.71/15.90 new_new_map(Zero, Succ(x0)) 30.71/15.90 new_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (22) NonInfProof (EQUIVALENT) 30.71/15.90 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 30.71/15.90 30.71/15.90 Note that final constraints are written in bold face. 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) the following chains were created: 30.71/15.90 *We consider the chain H(x4, x5, x6, cons_new_map(Zero, Succ(x7))) -> new_map(x4, x5, Zero, Succ(x7), x6), new_map(x8, x9, Zero, Succ(x10), x11) -> new_map0(x8, Succ(new_primPlusNat(x9)), x11) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map(x4, x5, Zero, Succ(x7), x6)=new_map(x8, x9, Zero, Succ(x10), x11) ==> H(x4, x5, x6, cons_new_map(Zero, Succ(x7)))_>=_new_map(x4, x5, Zero, Succ(x7), x6)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (H(x4, x5, x6, cons_new_map(Zero, Succ(x7)))_>=_new_map(x4, x5, Zero, Succ(x7), x6)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) the following chains were created: 30.71/15.90 *We consider the chain new_map(x48, x49, Zero, Succ(x50), x51) -> new_map0(x48, Succ(new_primPlusNat(x49)), x51), new_map0(x52, x53, x54) -> H(x52, x53, x54, new_new_map(x53, x52)) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map0(x48, Succ(new_primPlusNat(x49)), x51)=new_map0(x52, x53, x54) ==> new_map(x48, x49, Zero, Succ(x50), x51)_>=_new_map0(x48, Succ(new_primPlusNat(x49)), x51)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_map(x48, x49, Zero, Succ(x50), x51)_>=_new_map0(x48, Succ(new_primPlusNat(x49)), x51)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) the following chains were created: 30.71/15.90 *We consider the chain H(x64, x65, x66, cons_new_map(Zero, Zero)) -> new_map(x64, x65, Zero, Zero, x66), new_map(x67, x68, Zero, Zero, x69) -> new_map1(x67, x68, x69) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map(x64, x65, Zero, Zero, x66)=new_map(x67, x68, Zero, Zero, x69) ==> H(x64, x65, x66, cons_new_map(Zero, Zero))_>=_new_map(x64, x65, Zero, Zero, x66)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (H(x64, x65, x66, cons_new_map(Zero, Zero))_>=_new_map(x64, x65, Zero, Zero, x66)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) the following chains were created: 30.71/15.90 *We consider the chain new_map(x88, x89, Zero, Zero, x90) -> new_map1(x88, x89, x90), new_map1(x91, x92, x93) -> new_map0(x91, Succ(new_primPlusNat(x92)), x93) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map1(x88, x89, x90)=new_map1(x91, x92, x93) ==> new_map(x88, x89, Zero, Zero, x90)_>=_new_map1(x88, x89, x90)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_map(x88, x89, Zero, Zero, x90)_>=_new_map1(x88, x89, x90)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) the following chains were created: 30.71/15.90 *We consider the chain new_map1(x112, x113, x114) -> new_map0(x112, Succ(new_primPlusNat(x113)), x114), new_map0(x115, x116, x117) -> H(x115, x116, x117, new_new_map(x116, x115)) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (new_map0(x112, Succ(new_primPlusNat(x113)), x114)=new_map0(x115, x116, x117) ==> new_map1(x112, x113, x114)_>=_new_map0(x112, Succ(new_primPlusNat(x113)), x114)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_map1(x112, x113, x114)_>=_new_map0(x112, Succ(new_primPlusNat(x113)), x114)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 For Pair new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) the following chains were created: 30.71/15.90 *We consider the chain new_map0(x118, x119, x120) -> H(x118, x119, x120, new_new_map(x119, x118)), H(x121, x122, x123, cons_new_map(Zero, Succ(x124))) -> new_map(x121, x122, Zero, Succ(x124), x123) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (H(x118, x119, x120, new_new_map(x119, x118))=H(x121, x122, x123, cons_new_map(Zero, Succ(x124))) ==> new_map0(x118, x119, x120)_>=_H(x118, x119, x120, new_new_map(x119, x118))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_new_map(x119, x118)=cons_new_map(Zero, Succ(x124)) ==> new_map0(x118, x119, x120)_>=_H(x118, x119, x120, new_new_map(x119, x118))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_new_map(x119, x118)=cons_new_map(Zero, Succ(x124)) which results in the following new constraints: 30.71/15.90 30.71/15.90 (3) (new_new_map(x144, x143)=cons_new_map(Zero, Succ(x124)) & (\/x145,x146:new_new_map(x144, x143)=cons_new_map(Zero, Succ(x145)) ==> new_map0(x143, x144, x146)_>=_H(x143, x144, x146, new_new_map(x144, x143))) ==> new_map0(Succ(x143), Succ(x144), x120)_>=_H(Succ(x143), Succ(x144), x120, new_new_map(Succ(x144), Succ(x143)))) 30.71/15.90 30.71/15.90 (4) (cons_new_map(Zero, Succ(x147))=cons_new_map(Zero, Succ(x124)) ==> new_map0(Succ(x147), Zero, x120)_>=_H(Succ(x147), Zero, x120, new_new_map(Zero, Succ(x147)))) 30.71/15.90 30.71/15.90 (5) (cons_new_map(Zero, Zero)=cons_new_map(Zero, Succ(x124)) ==> new_map0(Zero, Zero, x120)_>=_H(Zero, Zero, x120, new_new_map(Zero, Zero))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (3) using rule (VI) where we applied the induction hypothesis (\/x145,x146:new_new_map(x144, x143)=cons_new_map(Zero, Succ(x145)) ==> new_map0(x143, x144, x146)_>=_H(x143, x144, x146, new_new_map(x144, x143))) with sigma = [x145 / x124, x146 / x120] which results in the following new constraint: 30.71/15.90 30.71/15.90 (6) (new_map0(x143, x144, x120)_>=_H(x143, x144, x120, new_new_map(x144, x143)) ==> new_map0(Succ(x143), Succ(x144), x120)_>=_H(Succ(x143), Succ(x144), x120, new_new_map(Succ(x144), Succ(x143)))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (4) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (7) (new_map0(Succ(x147), Zero, x120)_>=_H(Succ(x147), Zero, x120, new_new_map(Zero, Succ(x147)))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We solved constraint (5) using rules (I), (II). 30.71/15.90 *We consider the chain new_map0(x128, x129, x130) -> H(x128, x129, x130, new_new_map(x129, x128)), H(x131, x132, x133, cons_new_map(Zero, Zero)) -> new_map(x131, x132, Zero, Zero, x133) which results in the following constraint: 30.71/15.90 30.71/15.90 (1) (H(x128, x129, x130, new_new_map(x129, x128))=H(x131, x132, x133, cons_new_map(Zero, Zero)) ==> new_map0(x128, x129, x130)_>=_H(x128, x129, x130, new_new_map(x129, x128))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (1) using rules (I), (II), (IV) which results in the following new constraint: 30.71/15.90 30.71/15.90 (2) (new_new_map(x129, x128)=cons_new_map(Zero, Zero) ==> new_map0(x128, x129, x130)_>=_H(x128, x129, x130, new_new_map(x129, x128))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on new_new_map(x129, x128)=cons_new_map(Zero, Zero) which results in the following new constraints: 30.71/15.90 30.71/15.90 (3) (new_new_map(x149, x148)=cons_new_map(Zero, Zero) & (\/x150:new_new_map(x149, x148)=cons_new_map(Zero, Zero) ==> new_map0(x148, x149, x150)_>=_H(x148, x149, x150, new_new_map(x149, x148))) ==> new_map0(Succ(x148), Succ(x149), x130)_>=_H(Succ(x148), Succ(x149), x130, new_new_map(Succ(x149), Succ(x148)))) 30.71/15.90 30.71/15.90 (4) (cons_new_map(Zero, Succ(x151))=cons_new_map(Zero, Zero) ==> new_map0(Succ(x151), Zero, x130)_>=_H(Succ(x151), Zero, x130, new_new_map(Zero, Succ(x151)))) 30.71/15.90 30.71/15.90 (5) (cons_new_map(Zero, Zero)=cons_new_map(Zero, Zero) ==> new_map0(Zero, Zero, x130)_>=_H(Zero, Zero, x130, new_new_map(Zero, Zero))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We simplified constraint (3) using rule (VI) where we applied the induction hypothesis (\/x150:new_new_map(x149, x148)=cons_new_map(Zero, Zero) ==> new_map0(x148, x149, x150)_>=_H(x148, x149, x150, new_new_map(x149, x148))) with sigma = [x150 / x130] which results in the following new constraint: 30.71/15.90 30.71/15.90 (6) (new_map0(x148, x149, x130)_>=_H(x148, x149, x130, new_new_map(x149, x148)) ==> new_map0(Succ(x148), Succ(x149), x130)_>=_H(Succ(x148), Succ(x149), x130, new_new_map(Succ(x149), Succ(x148)))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 We solved constraint (4) using rules (I), (II).We simplified constraint (5) using rules (I), (II) which results in the following new constraint: 30.71/15.90 30.71/15.90 (7) (new_map0(Zero, Zero, x130)_>=_H(Zero, Zero, x130, new_new_map(Zero, Zero))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 To summarize, we get the following constraints P__>=_ for the following pairs. 30.71/15.90 30.71/15.90 *H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 30.71/15.90 *(H(x4, x5, x6, cons_new_map(Zero, Succ(x7)))_>=_new_map(x4, x5, Zero, Succ(x7), x6)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 30.71/15.90 *(new_map(x48, x49, Zero, Succ(x50), x51)_>=_new_map0(x48, Succ(new_primPlusNat(x49)), x51)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 30.71/15.90 *(H(x64, x65, x66, cons_new_map(Zero, Zero))_>=_new_map(x64, x65, Zero, Zero, x66)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 30.71/15.90 *(new_map(x88, x89, Zero, Zero, x90)_>=_new_map1(x88, x89, x90)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 30.71/15.90 *(new_map1(x112, x113, x114)_>=_new_map0(x112, Succ(new_primPlusNat(x113)), x114)) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 *new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) 30.71/15.90 30.71/15.90 *(new_map0(x143, x144, x120)_>=_H(x143, x144, x120, new_new_map(x144, x143)) ==> new_map0(Succ(x143), Succ(x144), x120)_>=_H(Succ(x143), Succ(x144), x120, new_new_map(Succ(x144), Succ(x143)))) 30.71/15.90 30.71/15.90 30.71/15.90 *(new_map0(Succ(x147), Zero, x120)_>=_H(Succ(x147), Zero, x120, new_new_map(Zero, Succ(x147)))) 30.71/15.90 30.71/15.90 30.71/15.90 *(new_map0(x148, x149, x130)_>=_H(x148, x149, x130, new_new_map(x149, x148)) ==> new_map0(Succ(x148), Succ(x149), x130)_>=_H(Succ(x148), Succ(x149), x130, new_new_map(Succ(x149), Succ(x148)))) 30.71/15.90 30.71/15.90 30.71/15.90 *(new_map0(Zero, Zero, x130)_>=_H(Zero, Zero, x130, new_new_map(Zero, Zero))) 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 30.71/15.90 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 30.71/15.90 30.71/15.90 Using the following integer polynomial ordering the resulting constraints can be solved 30.71/15.90 30.71/15.90 Polynomial interpretation [NONINF]: 30.71/15.90 30.71/15.90 POL(H(x_1, x_2, x_3, x_4)) = -1 + x_1 - x_2 - x_4 30.71/15.90 POL(Succ(x_1)) = 1 + x_1 30.71/15.90 POL(Zero) = 0 30.71/15.90 POL(c) = -1 30.71/15.90 POL(cons_new_map(x_1, x_2)) = 0 30.71/15.90 POL(new_map(x_1, x_2, x_3, x_4, x_5)) = -1 + x_1 - x_2 + x_3 30.71/15.90 POL(new_map0(x_1, x_2, x_3)) = -1 + x_1 - x_2 30.71/15.90 POL(new_map1(x_1, x_2, x_3)) = -1 + x_1 - x_2 30.71/15.90 POL(new_new_map(x_1, x_2)) = 0 30.71/15.90 POL(new_primPlusNat(x_1)) = x_1 30.71/15.90 30.71/15.90 30.71/15.90 The following pairs are in P_>: 30.71/15.90 new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 The following pairs are in P_bound: 30.71/15.90 new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) 30.71/15.90 The following rules are usable: 30.71/15.90 Zero -> new_primPlusNat(Zero) 30.71/15.90 Succ(wv270) -> new_primPlusNat(Succ(wv270)) 30.71/15.90 new_new_map(wv280, wv290) -> new_new_map(Succ(wv280), Succ(wv290)) 30.71/15.90 cons_new_map(Zero, Succ(wv290)) -> new_new_map(Zero, Succ(wv290)) 30.71/15.90 cons_new_map(Zero, Zero) -> new_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (23) 30.71/15.90 Complex Obligation (AND) 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (24) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 new_map0(wv5, wv6, ba) -> H(wv5, wv6, ba, new_new_map(wv6, wv5)) 30.71/15.90 30.71/15.90 The TRS R consists of the following rules: 30.71/15.90 30.71/15.90 new_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Zero, Succ(wv290)) -> cons_new_map(Zero, Succ(wv290)) 30.71/15.90 new_new_map(Zero, Zero) -> cons_new_map(Zero, Zero) 30.71/15.90 new_primPlusNat(Zero) -> Zero 30.71/15.90 new_primPlusNat(Succ(wv270)) -> Succ(wv270) 30.71/15.90 30.71/15.90 The set Q consists of the following terms: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) 30.71/15.90 new_primPlusNat(Succ(x0)) 30.71/15.90 new_new_map(Succ(x0), Succ(x1)) 30.71/15.90 new_new_map(Zero, Succ(x0)) 30.71/15.90 new_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (25) DependencyGraphProof (EQUIVALENT) 30.71/15.90 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (26) 30.71/15.90 TRUE 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (27) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Succ(wv290))) -> new_map(wv26, wv27, Zero, Succ(wv290), h) 30.71/15.90 new_map(wv26, wv27, Zero, Succ(wv290), h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 H(wv26, wv27, h, cons_new_map(Zero, Zero)) -> new_map(wv26, wv27, Zero, Zero, h) 30.71/15.90 new_map(wv26, wv27, Zero, Zero, h) -> new_map1(wv26, wv27, h) 30.71/15.90 new_map1(wv26, wv27, h) -> new_map0(wv26, Succ(new_primPlusNat(wv27)), h) 30.71/15.90 30.71/15.90 The TRS R consists of the following rules: 30.71/15.90 30.71/15.90 new_new_map(Succ(wv280), Succ(wv290)) -> new_new_map(wv280, wv290) 30.71/15.90 new_new_map(Zero, Succ(wv290)) -> cons_new_map(Zero, Succ(wv290)) 30.71/15.90 new_new_map(Zero, Zero) -> cons_new_map(Zero, Zero) 30.71/15.90 new_primPlusNat(Zero) -> Zero 30.71/15.90 new_primPlusNat(Succ(wv270)) -> Succ(wv270) 30.71/15.90 30.71/15.90 The set Q consists of the following terms: 30.71/15.90 30.71/15.90 new_primPlusNat(Zero) 30.71/15.90 new_primPlusNat(Succ(x0)) 30.71/15.90 new_new_map(Succ(x0), Succ(x1)) 30.71/15.90 new_new_map(Zero, Succ(x0)) 30.71/15.90 new_new_map(Zero, Zero) 30.71/15.90 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (28) DependencyGraphProof (EQUIVALENT) 30.71/15.90 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (29) 30.71/15.90 TRUE 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (30) 30.71/15.90 Obligation: 30.71/15.90 Q DP problem: 30.71/15.90 The TRS P consists of the following rules: 30.71/15.90 30.71/15.90 new_map(wv26, wv27, Succ(wv280), Succ(wv290), h) -> new_map(wv26, wv27, wv280, wv290, h) 30.71/15.90 30.71/15.90 R is empty. 30.71/15.90 Q is empty. 30.71/15.90 We have to consider all minimal (P,Q,R)-chains. 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (31) QDPSizeChangeProof (EQUIVALENT) 30.71/15.90 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. 30.71/15.90 30.71/15.90 From the DPs we obtained the following set of size-change graphs: 30.71/15.90 *new_map(wv26, wv27, Succ(wv280), Succ(wv290), h) -> new_map(wv26, wv27, wv280, wv290, h) 30.71/15.90 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 > 4, 5 >= 5 30.71/15.90 30.71/15.90 30.71/15.90 ---------------------------------------- 30.71/15.90 30.71/15.90 (32) 30.71/15.90 YES 30.71/15.95 EOF