11.71/4.79 YES 14.12/5.42 proof of /export/starexec/sandbox2/benchmark/theBenchmark.hs 14.12/5.42 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 14.12/5.42 14.12/5.42 14.12/5.42 H-Termination with start terms of the given HASKELL could be proven: 14.12/5.42 14.12/5.42 (0) HASKELL 14.12/5.42 (1) CR [EQUIVALENT, 0 ms] 14.12/5.42 (2) HASKELL 14.12/5.42 (3) BR [EQUIVALENT, 0 ms] 14.12/5.42 (4) HASKELL 14.12/5.42 (5) COR [EQUIVALENT, 22 ms] 14.12/5.42 (6) HASKELL 14.12/5.42 (7) Narrow [SOUND, 0 ms] 14.12/5.42 (8) AND 14.12/5.42 (9) QDP 14.12/5.42 (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] 14.12/5.42 (11) YES 14.12/5.42 (12) QDP 14.12/5.42 (13) QDPSizeChangeProof [EQUIVALENT, 0 ms] 14.12/5.42 (14) YES 14.12/5.42 (15) QDP 14.12/5.42 (16) DependencyGraphProof [EQUIVALENT, 0 ms] 14.12/5.42 (17) QDP 14.12/5.42 (18) TransformationProof [EQUIVALENT, 0 ms] 14.12/5.42 (19) QDP 14.12/5.42 (20) DependencyGraphProof [EQUIVALENT, 0 ms] 14.12/5.42 (21) QDP 14.12/5.42 (22) UsableRulesProof [EQUIVALENT, 0 ms] 14.12/5.42 (23) QDP 14.12/5.42 (24) QReductionProof [EQUIVALENT, 0 ms] 14.12/5.42 (25) QDP 14.12/5.42 (26) TransformationProof [EQUIVALENT, 0 ms] 14.12/5.42 (27) QDP 14.12/5.42 (28) UsableRulesProof [EQUIVALENT, 0 ms] 14.12/5.42 (29) QDP 14.12/5.42 (30) QReductionProof [EQUIVALENT, 0 ms] 14.12/5.42 (31) QDP 14.12/5.42 (32) TransformationProof [EQUIVALENT, 0 ms] 14.12/5.42 (33) QDP 14.12/5.42 (34) QDPSizeChangeProof [EQUIVALENT, 0 ms] 14.12/5.42 (35) YES 14.12/5.42 (36) QDP 14.12/5.42 (37) DependencyGraphProof [EQUIVALENT, 0 ms] 14.12/5.42 (38) QDP 14.12/5.42 (39) QDPSizeChangeProof [EQUIVALENT, 1 ms] 14.12/5.42 (40) YES 14.12/5.42 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (0) 14.12/5.42 Obligation: 14.12/5.42 mainModule Main 14.12/5.42 module Maybe where { 14.12/5.42 import qualified List; 14.12/5.42 import qualified Main; 14.12/5.42 import qualified Prelude; 14.12/5.42 } 14.12/5.42 module List where { 14.12/5.42 import qualified Main; 14.12/5.42 import qualified Maybe; 14.12/5.42 import qualified Prelude; 14.12/5.42 merge :: (a -> a -> Ordering) -> [a] -> [a] -> [a]; 14.12/5.42 merge cmp xs [] = xs; 14.12/5.42 merge cmp [] ys = ys; 14.12/5.42 merge cmp (x : xs) (y : ys) = case x `cmp` y of { 14.12/5.42 GT-> y : merge cmp (x : xs) ys; 14.12/5.42 _-> x : merge cmp xs (y : ys); 14.12/5.42 } ; 14.12/5.42 14.12/5.42 merge_pairs :: (a -> a -> Ordering) -> [[a]] -> [[a]]; 14.12/5.42 merge_pairs cmp [] = []; 14.12/5.42 merge_pairs cmp (xs : []) = xs : []; 14.12/5.42 merge_pairs cmp (xs : ys : xss) = merge cmp xs ys : merge_pairs cmp xss; 14.12/5.42 14.12/5.42 mergesort :: (a -> a -> Ordering) -> [a] -> [a]; 14.12/5.42 mergesort cmp = mergesort' cmp . map wrap; 14.12/5.42 14.12/5.42 mergesort' :: (a -> a -> Ordering) -> [[a]] -> [a]; 14.12/5.42 mergesort' cmp [] = []; 14.12/5.42 mergesort' cmp (xs : []) = xs; 14.12/5.42 mergesort' cmp xss = mergesort' cmp (merge_pairs cmp xss); 14.12/5.42 14.12/5.42 sort :: Ord a => [a] -> [a]; 14.12/5.42 sort l = mergesort compare l; 14.12/5.42 14.12/5.42 wrap :: a -> [a]; 14.12/5.42 wrap x = x : []; 14.12/5.42 14.12/5.42 } 14.12/5.42 module Main where { 14.12/5.42 import qualified List; 14.12/5.42 import qualified Maybe; 14.12/5.42 import qualified Prelude; 14.12/5.42 } 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (1) CR (EQUIVALENT) 14.12/5.42 Case Reductions: 14.12/5.42 The following Case expression 14.12/5.42 "case cmp x y of { 14.12/5.42 GT -> y : merge cmp (x : xs) ys; 14.12/5.42 _ -> x : merge cmp xs (y : ys)} 14.12/5.42 " 14.12/5.42 is transformed to 14.12/5.42 "merge0 y cmp x xs ys GT = y : merge cmp (x : xs) ys; 14.12/5.42 merge0 y cmp x xs ys _ = x : merge cmp xs (y : ys); 14.12/5.42 " 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (2) 14.12/5.42 Obligation: 14.12/5.42 mainModule Main 14.12/5.42 module Maybe where { 14.12/5.42 import qualified List; 14.12/5.42 import qualified Main; 14.12/5.42 import qualified Prelude; 14.12/5.42 } 14.12/5.42 module List where { 14.12/5.42 import qualified Main; 14.12/5.42 import qualified Maybe; 14.12/5.42 import qualified Prelude; 14.12/5.42 merge :: (a -> a -> Ordering) -> [a] -> [a] -> [a]; 14.12/5.42 merge cmp xs [] = xs; 14.12/5.42 merge cmp [] ys = ys; 14.12/5.42 merge cmp (x : xs) (y : ys) = merge0 y cmp x xs ys (x `cmp` y); 14.12/5.42 14.12/5.42 merge0 y cmp x xs ys GT = y : merge cmp (x : xs) ys; 14.12/5.42 merge0 y cmp x xs ys _ = x : merge cmp xs (y : ys); 14.12/5.42 14.12/5.42 merge_pairs :: (a -> a -> Ordering) -> [[a]] -> [[a]]; 14.12/5.42 merge_pairs cmp [] = []; 14.12/5.42 merge_pairs cmp (xs : []) = xs : []; 14.12/5.42 merge_pairs cmp (xs : ys : xss) = merge cmp xs ys : merge_pairs cmp xss; 14.12/5.42 14.12/5.42 mergesort :: (a -> a -> Ordering) -> [a] -> [a]; 14.12/5.42 mergesort cmp = mergesort' cmp . map wrap; 14.12/5.42 14.12/5.42 mergesort' :: (a -> a -> Ordering) -> [[a]] -> [a]; 14.12/5.42 mergesort' cmp [] = []; 14.12/5.42 mergesort' cmp (xs : []) = xs; 14.12/5.42 mergesort' cmp xss = mergesort' cmp (merge_pairs cmp xss); 14.12/5.42 14.12/5.42 sort :: Ord a => [a] -> [a]; 14.12/5.42 sort l = mergesort compare l; 14.12/5.42 14.12/5.42 wrap :: a -> [a]; 14.12/5.42 wrap x = x : []; 14.12/5.42 14.12/5.42 } 14.12/5.42 module Main where { 14.12/5.42 import qualified List; 14.12/5.42 import qualified Maybe; 14.12/5.42 import qualified Prelude; 14.12/5.42 } 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (3) BR (EQUIVALENT) 14.12/5.42 Replaced joker patterns by fresh variables and removed binding patterns. 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (4) 14.12/5.42 Obligation: 14.12/5.42 mainModule Main 14.12/5.42 module Maybe where { 14.12/5.42 import qualified List; 14.12/5.42 import qualified Main; 14.12/5.42 import qualified Prelude; 14.12/5.42 } 14.12/5.42 module List where { 14.12/5.42 import qualified Main; 14.12/5.42 import qualified Maybe; 14.12/5.42 import qualified Prelude; 14.12/5.42 merge :: (a -> a -> Ordering) -> [a] -> [a] -> [a]; 14.12/5.42 merge cmp xs [] = xs; 14.12/5.42 merge cmp [] ys = ys; 14.12/5.42 merge cmp (x : xs) (y : ys) = merge0 y cmp x xs ys (x `cmp` y); 14.12/5.42 14.12/5.42 merge0 y cmp x xs ys GT = y : merge cmp (x : xs) ys; 14.12/5.42 merge0 y cmp x xs ys vy = x : merge cmp xs (y : ys); 14.12/5.42 14.12/5.42 merge_pairs :: (a -> a -> Ordering) -> [[a]] -> [[a]]; 14.12/5.42 merge_pairs cmp [] = []; 14.12/5.42 merge_pairs cmp (xs : []) = xs : []; 14.12/5.42 merge_pairs cmp (xs : ys : xss) = merge cmp xs ys : merge_pairs cmp xss; 14.12/5.42 14.12/5.42 mergesort :: (a -> a -> Ordering) -> [a] -> [a]; 14.12/5.42 mergesort cmp = mergesort' cmp . map wrap; 14.12/5.42 14.12/5.42 mergesort' :: (a -> a -> Ordering) -> [[a]] -> [a]; 14.12/5.42 mergesort' cmp [] = []; 14.12/5.42 mergesort' cmp (xs : []) = xs; 14.12/5.42 mergesort' cmp xss = mergesort' cmp (merge_pairs cmp xss); 14.12/5.42 14.12/5.42 sort :: Ord a => [a] -> [a]; 14.12/5.42 sort l = mergesort compare l; 14.12/5.42 14.12/5.42 wrap :: a -> [a]; 14.12/5.42 wrap x = x : []; 14.12/5.42 14.12/5.42 } 14.12/5.42 module Main where { 14.12/5.42 import qualified List; 14.12/5.42 import qualified Maybe; 14.12/5.42 import qualified Prelude; 14.12/5.42 } 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (5) COR (EQUIVALENT) 14.12/5.42 Cond Reductions: 14.12/5.42 The following Function with conditions 14.12/5.42 "undefined |Falseundefined; 14.12/5.42 " 14.12/5.42 is transformed to 14.12/5.42 "undefined = undefined1; 14.12/5.42 " 14.12/5.42 "undefined0 True = undefined; 14.12/5.42 " 14.12/5.42 "undefined1 = undefined0 False; 14.12/5.42 " 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (6) 14.12/5.42 Obligation: 14.12/5.42 mainModule Main 14.12/5.42 module Maybe where { 14.12/5.42 import qualified List; 14.12/5.42 import qualified Main; 14.12/5.42 import qualified Prelude; 14.12/5.42 } 14.12/5.42 module List where { 14.12/5.42 import qualified Main; 14.12/5.42 import qualified Maybe; 14.12/5.42 import qualified Prelude; 14.12/5.42 merge :: (a -> a -> Ordering) -> [a] -> [a] -> [a]; 14.12/5.42 merge cmp xs [] = xs; 14.12/5.42 merge cmp [] ys = ys; 14.12/5.42 merge cmp (x : xs) (y : ys) = merge0 y cmp x xs ys (x `cmp` y); 14.12/5.42 14.12/5.42 merge0 y cmp x xs ys GT = y : merge cmp (x : xs) ys; 14.12/5.42 merge0 y cmp x xs ys vy = x : merge cmp xs (y : ys); 14.12/5.42 14.12/5.42 merge_pairs :: (a -> a -> Ordering) -> [[a]] -> [[a]]; 14.12/5.42 merge_pairs cmp [] = []; 14.12/5.42 merge_pairs cmp (xs : []) = xs : []; 14.12/5.42 merge_pairs cmp (xs : ys : xss) = merge cmp xs ys : merge_pairs cmp xss; 14.12/5.42 14.12/5.42 mergesort :: (a -> a -> Ordering) -> [a] -> [a]; 14.12/5.42 mergesort cmp = mergesort' cmp . map wrap; 14.12/5.42 14.12/5.42 mergesort' :: (a -> a -> Ordering) -> [[a]] -> [a]; 14.12/5.42 mergesort' cmp [] = []; 14.12/5.42 mergesort' cmp (xs : []) = xs; 14.12/5.42 mergesort' cmp xss = mergesort' cmp (merge_pairs cmp xss); 14.12/5.42 14.12/5.42 sort :: Ord a => [a] -> [a]; 14.12/5.42 sort l = mergesort compare l; 14.12/5.42 14.12/5.42 wrap :: a -> [a]; 14.12/5.42 wrap x = x : []; 14.12/5.42 14.12/5.42 } 14.12/5.42 module Main where { 14.12/5.42 import qualified List; 14.12/5.42 import qualified Maybe; 14.12/5.42 import qualified Prelude; 14.12/5.42 } 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (7) Narrow (SOUND) 14.12/5.42 Haskell To QDPs 14.12/5.42 14.12/5.42 digraph dp_graph { 14.12/5.42 node [outthreshold=100, inthreshold=100];1[label="List.sort",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 14.12/5.42 3[label="List.sort vz3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 14.12/5.42 4[label="List.mergesort compare vz3",fontsize=16,color="black",shape="box"];4 -> 5[label="",style="solid", color="black", weight=3]; 14.12/5.42 5[label="(List.mergesort' compare) . map List.wrap",fontsize=16,color="black",shape="box"];5 -> 6[label="",style="solid", color="black", weight=3]; 14.12/5.42 6[label="List.mergesort' compare (map List.wrap vz3)",fontsize=16,color="burlywood",shape="box"];580[label="vz3/vz30 : vz31",fontsize=10,color="white",style="solid",shape="box"];6 -> 580[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 580 -> 7[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 581[label="vz3/[]",fontsize=10,color="white",style="solid",shape="box"];6 -> 581[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 581 -> 8[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 7[label="List.mergesort' compare (map List.wrap (vz30 : vz31))",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 14.12/5.42 8[label="List.mergesort' compare (map List.wrap [])",fontsize=16,color="black",shape="box"];8 -> 10[label="",style="solid", color="black", weight=3]; 14.12/5.42 9[label="List.mergesort' compare (List.wrap vz30 : map List.wrap vz31)",fontsize=16,color="burlywood",shape="box"];582[label="vz31/vz310 : vz311",fontsize=10,color="white",style="solid",shape="box"];9 -> 582[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 582 -> 11[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 583[label="vz31/[]",fontsize=10,color="white",style="solid",shape="box"];9 -> 583[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 583 -> 12[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 10[label="List.mergesort' compare []",fontsize=16,color="black",shape="box"];10 -> 13[label="",style="solid", color="black", weight=3]; 14.12/5.42 11[label="List.mergesort' compare (List.wrap vz30 : map List.wrap (vz310 : vz311))",fontsize=16,color="black",shape="box"];11 -> 14[label="",style="solid", color="black", weight=3]; 14.12/5.42 12[label="List.mergesort' compare (List.wrap vz30 : map List.wrap [])",fontsize=16,color="black",shape="box"];12 -> 15[label="",style="solid", color="black", weight=3]; 14.12/5.42 13[label="[]",fontsize=16,color="green",shape="box"];14[label="List.mergesort' compare (List.wrap vz30 : List.wrap vz310 : map List.wrap vz311)",fontsize=16,color="black",shape="box"];14 -> 16[label="",style="solid", color="black", weight=3]; 14.12/5.42 15[label="List.mergesort' compare (List.wrap vz30 : [])",fontsize=16,color="black",shape="box"];15 -> 17[label="",style="solid", color="black", weight=3]; 14.12/5.42 16[label="List.mergesort' compare (List.merge_pairs compare (List.wrap vz30 : List.wrap vz310 : map List.wrap vz311))",fontsize=16,color="black",shape="box"];16 -> 18[label="",style="solid", color="black", weight=3]; 14.12/5.42 17[label="List.wrap vz30",fontsize=16,color="black",shape="triangle"];17 -> 19[label="",style="solid", color="black", weight=3]; 14.12/5.42 18 -> 245[label="",style="dashed", color="red", weight=0]; 14.12/5.42 18[label="List.mergesort' compare (List.merge compare (List.wrap vz30) (List.wrap vz310) : List.merge_pairs compare (map List.wrap vz311))",fontsize=16,color="magenta"];18 -> 246[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 18 -> 247[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 19[label="vz30 : []",fontsize=16,color="green",shape="box"];246[label="map List.wrap vz311",fontsize=16,color="burlywood",shape="triangle"];584[label="vz311/vz3110 : vz3111",fontsize=10,color="white",style="solid",shape="box"];246 -> 584[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 584 -> 400[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 585[label="vz311/[]",fontsize=10,color="white",style="solid",shape="box"];246 -> 585[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 585 -> 401[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 247 -> 402[label="",style="dashed", color="red", weight=0]; 14.12/5.42 247[label="List.merge compare (List.wrap vz30) (List.wrap vz310)",fontsize=16,color="magenta"];247 -> 403[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 247 -> 404[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 245[label="List.mergesort' compare (vz34 : List.merge_pairs compare vz35)",fontsize=16,color="burlywood",shape="triangle"];586[label="vz35/vz350 : vz351",fontsize=10,color="white",style="solid",shape="box"];245 -> 586[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 586 -> 405[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 587[label="vz35/[]",fontsize=10,color="white",style="solid",shape="box"];245 -> 587[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 587 -> 406[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 400[label="map List.wrap (vz3110 : vz3111)",fontsize=16,color="black",shape="box"];400 -> 407[label="",style="solid", color="black", weight=3]; 14.12/5.42 401[label="map List.wrap []",fontsize=16,color="black",shape="box"];401 -> 408[label="",style="solid", color="black", weight=3]; 14.12/5.42 403 -> 17[label="",style="dashed", color="red", weight=0]; 14.12/5.42 403[label="List.wrap vz310",fontsize=16,color="magenta"];403 -> 409[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 404 -> 17[label="",style="dashed", color="red", weight=0]; 14.12/5.42 404[label="List.wrap vz30",fontsize=16,color="magenta"];402[label="List.merge compare vz37 vz36",fontsize=16,color="burlywood",shape="triangle"];588[label="vz36/vz360 : vz361",fontsize=10,color="white",style="solid",shape="box"];402 -> 588[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 588 -> 410[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 589[label="vz36/[]",fontsize=10,color="white",style="solid",shape="box"];402 -> 589[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 589 -> 411[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 405[label="List.mergesort' compare (vz34 : List.merge_pairs compare (vz350 : vz351))",fontsize=16,color="burlywood",shape="box"];590[label="vz351/vz3510 : vz3511",fontsize=10,color="white",style="solid",shape="box"];405 -> 590[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 590 -> 412[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 591[label="vz351/[]",fontsize=10,color="white",style="solid",shape="box"];405 -> 591[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 591 -> 413[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 406[label="List.mergesort' compare (vz34 : List.merge_pairs compare [])",fontsize=16,color="black",shape="box"];406 -> 414[label="",style="solid", color="black", weight=3]; 14.12/5.42 407[label="List.wrap vz3110 : map List.wrap vz3111",fontsize=16,color="green",shape="box"];407 -> 415[label="",style="dashed", color="green", weight=3]; 14.12/5.42 407 -> 416[label="",style="dashed", color="green", weight=3]; 14.12/5.42 408[label="[]",fontsize=16,color="green",shape="box"];409[label="vz310",fontsize=16,color="green",shape="box"];410[label="List.merge compare vz37 (vz360 : vz361)",fontsize=16,color="burlywood",shape="box"];592[label="vz37/vz370 : vz371",fontsize=10,color="white",style="solid",shape="box"];410 -> 592[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 592 -> 417[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 593[label="vz37/[]",fontsize=10,color="white",style="solid",shape="box"];410 -> 593[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 593 -> 418[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 411[label="List.merge compare vz37 []",fontsize=16,color="black",shape="box"];411 -> 419[label="",style="solid", color="black", weight=3]; 14.12/5.42 412[label="List.mergesort' compare (vz34 : List.merge_pairs compare (vz350 : vz3510 : vz3511))",fontsize=16,color="black",shape="box"];412 -> 420[label="",style="solid", color="black", weight=3]; 14.12/5.42 413[label="List.mergesort' compare (vz34 : List.merge_pairs compare (vz350 : []))",fontsize=16,color="black",shape="box"];413 -> 421[label="",style="solid", color="black", weight=3]; 14.12/5.42 414[label="List.mergesort' compare (vz34 : [])",fontsize=16,color="black",shape="box"];414 -> 422[label="",style="solid", color="black", weight=3]; 14.12/5.42 415 -> 17[label="",style="dashed", color="red", weight=0]; 14.12/5.42 415[label="List.wrap vz3110",fontsize=16,color="magenta"];415 -> 423[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 416 -> 246[label="",style="dashed", color="red", weight=0]; 14.12/5.42 416[label="map List.wrap vz3111",fontsize=16,color="magenta"];416 -> 424[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 417[label="List.merge compare (vz370 : vz371) (vz360 : vz361)",fontsize=16,color="black",shape="box"];417 -> 425[label="",style="solid", color="black", weight=3]; 14.12/5.42 418[label="List.merge compare [] (vz360 : vz361)",fontsize=16,color="black",shape="box"];418 -> 426[label="",style="solid", color="black", weight=3]; 14.12/5.42 419[label="vz37",fontsize=16,color="green",shape="box"];420[label="List.mergesort' compare (vz34 : List.merge compare vz350 vz3510 : List.merge_pairs compare vz3511)",fontsize=16,color="black",shape="box"];420 -> 427[label="",style="solid", color="black", weight=3]; 14.12/5.42 421[label="List.mergesort' compare (vz34 : vz350 : [])",fontsize=16,color="black",shape="box"];421 -> 428[label="",style="solid", color="black", weight=3]; 14.12/5.42 422[label="vz34",fontsize=16,color="green",shape="box"];423[label="vz3110",fontsize=16,color="green",shape="box"];424[label="vz3111",fontsize=16,color="green",shape="box"];425 -> 467[label="",style="dashed", color="red", weight=0]; 14.12/5.42 425[label="List.merge0 vz360 compare vz370 vz371 vz361 (compare vz370 vz360)",fontsize=16,color="magenta"];425 -> 468[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 425 -> 469[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 425 -> 470[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 425 -> 471[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 425 -> 472[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 426[label="vz360 : vz361",fontsize=16,color="green",shape="box"];427[label="List.mergesort' compare (List.merge_pairs compare (vz34 : List.merge compare vz350 vz3510 : List.merge_pairs compare vz3511))",fontsize=16,color="black",shape="box"];427 -> 430[label="",style="solid", color="black", weight=3]; 14.12/5.42 428[label="List.mergesort' compare (List.merge_pairs compare (vz34 : vz350 : []))",fontsize=16,color="black",shape="box"];428 -> 431[label="",style="solid", color="black", weight=3]; 14.12/5.42 468[label="vz361",fontsize=16,color="green",shape="box"];469[label="vz360",fontsize=16,color="green",shape="box"];470[label="compare vz370 vz360",fontsize=16,color="burlywood",shape="triangle"];594[label="vz370/()",fontsize=10,color="white",style="solid",shape="box"];470 -> 594[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 594 -> 488[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 471[label="vz370",fontsize=16,color="green",shape="box"];472[label="vz371",fontsize=16,color="green",shape="box"];467[label="List.merge0 vz44 compare vz45 vz46 vz47 vz48",fontsize=16,color="burlywood",shape="triangle"];595[label="vz48/LT",fontsize=10,color="white",style="solid",shape="box"];467 -> 595[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 595 -> 489[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 596[label="vz48/EQ",fontsize=10,color="white",style="solid",shape="box"];467 -> 596[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 596 -> 490[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 597[label="vz48/GT",fontsize=10,color="white",style="solid",shape="box"];467 -> 597[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 597 -> 491[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 430 -> 245[label="",style="dashed", color="red", weight=0]; 14.12/5.42 430[label="List.mergesort' compare (List.merge compare vz34 (List.merge compare vz350 vz3510) : List.merge_pairs compare (List.merge_pairs compare vz3511))",fontsize=16,color="magenta"];430 -> 433[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 430 -> 434[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 431 -> 245[label="",style="dashed", color="red", weight=0]; 14.12/5.42 431[label="List.mergesort' compare (List.merge compare vz34 vz350 : List.merge_pairs compare [])",fontsize=16,color="magenta"];431 -> 435[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 431 -> 436[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 488[label="compare () vz360",fontsize=16,color="burlywood",shape="box"];598[label="vz360/()",fontsize=10,color="white",style="solid",shape="box"];488 -> 598[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 598 -> 523[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 489[label="List.merge0 vz44 compare vz45 vz46 vz47 LT",fontsize=16,color="black",shape="box"];489 -> 524[label="",style="solid", color="black", weight=3]; 14.12/5.42 490[label="List.merge0 vz44 compare vz45 vz46 vz47 EQ",fontsize=16,color="black",shape="box"];490 -> 525[label="",style="solid", color="black", weight=3]; 14.12/5.42 491[label="List.merge0 vz44 compare vz45 vz46 vz47 GT",fontsize=16,color="black",shape="box"];491 -> 526[label="",style="solid", color="black", weight=3]; 14.12/5.42 433[label="List.merge_pairs compare vz3511",fontsize=16,color="burlywood",shape="triangle"];599[label="vz3511/vz35110 : vz35111",fontsize=10,color="white",style="solid",shape="box"];433 -> 599[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 599 -> 438[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 600[label="vz3511/[]",fontsize=10,color="white",style="solid",shape="box"];433 -> 600[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 600 -> 439[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 434[label="List.merge compare vz34 (List.merge compare vz350 vz3510)",fontsize=16,color="burlywood",shape="box"];601[label="vz3510/vz35100 : vz35101",fontsize=10,color="white",style="solid",shape="box"];434 -> 601[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 601 -> 440[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 602[label="vz3510/[]",fontsize=10,color="white",style="solid",shape="box"];434 -> 602[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 602 -> 441[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 435[label="[]",fontsize=16,color="green",shape="box"];436[label="List.merge compare vz34 vz350",fontsize=16,color="burlywood",shape="triangle"];603[label="vz350/vz3500 : vz3501",fontsize=10,color="white",style="solid",shape="box"];436 -> 603[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 603 -> 442[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 604[label="vz350/[]",fontsize=10,color="white",style="solid",shape="box"];436 -> 604[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 604 -> 443[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 523[label="compare () ()",fontsize=16,color="black",shape="box"];523 -> 570[label="",style="solid", color="black", weight=3]; 14.12/5.42 524[label="vz45 : List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="green",shape="box"];524 -> 571[label="",style="dashed", color="green", weight=3]; 14.12/5.42 525[label="vz45 : List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="green",shape="box"];525 -> 572[label="",style="dashed", color="green", weight=3]; 14.12/5.42 526[label="vz44 : List.merge compare (vz45 : vz46) vz47",fontsize=16,color="green",shape="box"];526 -> 573[label="",style="dashed", color="green", weight=3]; 14.12/5.42 438[label="List.merge_pairs compare (vz35110 : vz35111)",fontsize=16,color="burlywood",shape="box"];605[label="vz35111/vz351110 : vz351111",fontsize=10,color="white",style="solid",shape="box"];438 -> 605[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 605 -> 445[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 606[label="vz35111/[]",fontsize=10,color="white",style="solid",shape="box"];438 -> 606[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 606 -> 446[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 439[label="List.merge_pairs compare []",fontsize=16,color="black",shape="box"];439 -> 447[label="",style="solid", color="black", weight=3]; 14.12/5.42 440[label="List.merge compare vz34 (List.merge compare vz350 (vz35100 : vz35101))",fontsize=16,color="burlywood",shape="box"];607[label="vz350/vz3500 : vz3501",fontsize=10,color="white",style="solid",shape="box"];440 -> 607[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 607 -> 448[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 608[label="vz350/[]",fontsize=10,color="white",style="solid",shape="box"];440 -> 608[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 608 -> 449[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 441[label="List.merge compare vz34 (List.merge compare vz350 [])",fontsize=16,color="black",shape="box"];441 -> 450[label="",style="solid", color="black", weight=3]; 14.12/5.42 442[label="List.merge compare vz34 (vz3500 : vz3501)",fontsize=16,color="burlywood",shape="box"];609[label="vz34/vz340 : vz341",fontsize=10,color="white",style="solid",shape="box"];442 -> 609[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 609 -> 451[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 610[label="vz34/[]",fontsize=10,color="white",style="solid",shape="box"];442 -> 610[label="",style="solid", color="burlywood", weight=9]; 14.12/5.42 610 -> 452[label="",style="solid", color="burlywood", weight=3]; 14.12/5.42 443[label="List.merge compare vz34 []",fontsize=16,color="black",shape="box"];443 -> 453[label="",style="solid", color="black", weight=3]; 14.12/5.42 570[label="EQ",fontsize=16,color="green",shape="box"];571 -> 436[label="",style="dashed", color="red", weight=0]; 14.12/5.42 571[label="List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="magenta"];571 -> 574[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 571 -> 575[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 572 -> 436[label="",style="dashed", color="red", weight=0]; 14.12/5.42 572[label="List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="magenta"];572 -> 576[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 572 -> 577[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 573 -> 436[label="",style="dashed", color="red", weight=0]; 14.12/5.42 573[label="List.merge compare (vz45 : vz46) vz47",fontsize=16,color="magenta"];573 -> 578[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 573 -> 579[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 445[label="List.merge_pairs compare (vz35110 : vz351110 : vz351111)",fontsize=16,color="black",shape="box"];445 -> 455[label="",style="solid", color="black", weight=3]; 14.12/5.42 446[label="List.merge_pairs compare (vz35110 : [])",fontsize=16,color="black",shape="box"];446 -> 456[label="",style="solid", color="black", weight=3]; 14.12/5.42 447[label="[]",fontsize=16,color="green",shape="box"];448[label="List.merge compare vz34 (List.merge compare (vz3500 : vz3501) (vz35100 : vz35101))",fontsize=16,color="black",shape="box"];448 -> 457[label="",style="solid", color="black", weight=3]; 14.12/5.42 449[label="List.merge compare vz34 (List.merge compare [] (vz35100 : vz35101))",fontsize=16,color="black",shape="box"];449 -> 458[label="",style="solid", color="black", weight=3]; 14.12/5.42 450 -> 436[label="",style="dashed", color="red", weight=0]; 14.12/5.42 450[label="List.merge compare vz34 vz350",fontsize=16,color="magenta"];451[label="List.merge compare (vz340 : vz341) (vz3500 : vz3501)",fontsize=16,color="black",shape="box"];451 -> 459[label="",style="solid", color="black", weight=3]; 14.12/5.42 452[label="List.merge compare [] (vz3500 : vz3501)",fontsize=16,color="black",shape="box"];452 -> 460[label="",style="solid", color="black", weight=3]; 14.12/5.42 453[label="vz34",fontsize=16,color="green",shape="box"];574[label="vz44 : vz47",fontsize=16,color="green",shape="box"];575[label="vz46",fontsize=16,color="green",shape="box"];576[label="vz44 : vz47",fontsize=16,color="green",shape="box"];577[label="vz46",fontsize=16,color="green",shape="box"];578[label="vz47",fontsize=16,color="green",shape="box"];579[label="vz45 : vz46",fontsize=16,color="green",shape="box"];455[label="List.merge compare vz35110 vz351110 : List.merge_pairs compare vz351111",fontsize=16,color="green",shape="box"];455 -> 463[label="",style="dashed", color="green", weight=3]; 14.12/5.42 455 -> 464[label="",style="dashed", color="green", weight=3]; 14.12/5.42 456[label="vz35110 : []",fontsize=16,color="green",shape="box"];457 -> 436[label="",style="dashed", color="red", weight=0]; 14.12/5.42 457[label="List.merge compare vz34 (List.merge0 vz35100 compare vz3500 vz3501 vz35101 (compare vz3500 vz35100))",fontsize=16,color="magenta"];457 -> 465[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 458 -> 436[label="",style="dashed", color="red", weight=0]; 14.12/5.42 458[label="List.merge compare vz34 (vz35100 : vz35101)",fontsize=16,color="magenta"];458 -> 466[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 459 -> 467[label="",style="dashed", color="red", weight=0]; 14.12/5.42 459[label="List.merge0 vz3500 compare vz340 vz341 vz3501 (compare vz340 vz3500)",fontsize=16,color="magenta"];459 -> 478[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 459 -> 479[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 459 -> 480[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 459 -> 481[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 459 -> 482[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 460[label="vz3500 : vz3501",fontsize=16,color="green",shape="box"];463 -> 436[label="",style="dashed", color="red", weight=0]; 14.12/5.42 463[label="List.merge compare vz35110 vz351110",fontsize=16,color="magenta"];463 -> 492[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 463 -> 493[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 464 -> 433[label="",style="dashed", color="red", weight=0]; 14.12/5.42 464[label="List.merge_pairs compare vz351111",fontsize=16,color="magenta"];464 -> 494[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 465 -> 467[label="",style="dashed", color="red", weight=0]; 14.12/5.42 465[label="List.merge0 vz35100 compare vz3500 vz3501 vz35101 (compare vz3500 vz35100)",fontsize=16,color="magenta"];465 -> 483[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 465 -> 484[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 465 -> 485[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 465 -> 486[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 465 -> 487[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 466[label="vz35100 : vz35101",fontsize=16,color="green",shape="box"];478[label="vz3501",fontsize=16,color="green",shape="box"];479[label="vz3500",fontsize=16,color="green",shape="box"];480[label="compare vz340 vz3500",fontsize=16,color="blue",shape="box"];611[label="compare :: Double -> Double -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 611[label="",style="solid", color="blue", weight=9]; 14.12/5.42 611 -> 495[label="",style="solid", color="blue", weight=3]; 14.12/5.42 612[label="compare :: (Either a b) -> (Either a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 612[label="",style="solid", color="blue", weight=9]; 14.12/5.42 612 -> 496[label="",style="solid", color="blue", weight=3]; 14.12/5.42 613[label="compare :: Integer -> Integer -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 613[label="",style="solid", color="blue", weight=9]; 14.12/5.42 613 -> 497[label="",style="solid", color="blue", weight=3]; 14.12/5.42 614[label="compare :: ([] a) -> ([] a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 614[label="",style="solid", color="blue", weight=9]; 14.12/5.42 614 -> 498[label="",style="solid", color="blue", weight=3]; 14.12/5.42 615[label="compare :: Bool -> Bool -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 615[label="",style="solid", color="blue", weight=9]; 14.12/5.42 615 -> 499[label="",style="solid", color="blue", weight=3]; 14.12/5.42 616[label="compare :: () -> () -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 616[label="",style="solid", color="blue", weight=9]; 14.12/5.42 616 -> 500[label="",style="solid", color="blue", weight=3]; 14.12/5.42 617[label="compare :: ((@3) a b c) -> ((@3) a b c) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 617[label="",style="solid", color="blue", weight=9]; 14.12/5.42 617 -> 501[label="",style="solid", color="blue", weight=3]; 14.12/5.42 618[label="compare :: ((@2) a b) -> ((@2) a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 618[label="",style="solid", color="blue", weight=9]; 14.12/5.42 618 -> 502[label="",style="solid", color="blue", weight=3]; 14.12/5.42 619[label="compare :: Int -> Int -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 619[label="",style="solid", color="blue", weight=9]; 14.12/5.42 619 -> 503[label="",style="solid", color="blue", weight=3]; 14.12/5.42 620[label="compare :: Ordering -> Ordering -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 620[label="",style="solid", color="blue", weight=9]; 14.12/5.42 620 -> 504[label="",style="solid", color="blue", weight=3]; 14.12/5.42 621[label="compare :: (Maybe a) -> (Maybe a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 621[label="",style="solid", color="blue", weight=9]; 14.12/5.42 621 -> 505[label="",style="solid", color="blue", weight=3]; 14.12/5.42 622[label="compare :: Float -> Float -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 622[label="",style="solid", color="blue", weight=9]; 14.12/5.42 622 -> 506[label="",style="solid", color="blue", weight=3]; 14.12/5.42 623[label="compare :: (Ratio a) -> (Ratio a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 623[label="",style="solid", color="blue", weight=9]; 14.12/5.42 623 -> 507[label="",style="solid", color="blue", weight=3]; 14.12/5.42 624[label="compare :: Char -> Char -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 624[label="",style="solid", color="blue", weight=9]; 14.12/5.42 624 -> 508[label="",style="solid", color="blue", weight=3]; 14.12/5.42 481[label="vz340",fontsize=16,color="green",shape="box"];482[label="vz341",fontsize=16,color="green",shape="box"];492[label="vz351110",fontsize=16,color="green",shape="box"];493[label="vz35110",fontsize=16,color="green",shape="box"];494[label="vz351111",fontsize=16,color="green",shape="box"];483[label="vz35101",fontsize=16,color="green",shape="box"];484[label="vz35100",fontsize=16,color="green",shape="box"];485[label="compare vz3500 vz35100",fontsize=16,color="blue",shape="box"];625[label="compare :: Double -> Double -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 625[label="",style="solid", color="blue", weight=9]; 14.12/5.42 625 -> 509[label="",style="solid", color="blue", weight=3]; 14.12/5.42 626[label="compare :: (Either a b) -> (Either a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 626[label="",style="solid", color="blue", weight=9]; 14.12/5.42 626 -> 510[label="",style="solid", color="blue", weight=3]; 14.12/5.42 627[label="compare :: Integer -> Integer -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 627[label="",style="solid", color="blue", weight=9]; 14.12/5.42 627 -> 511[label="",style="solid", color="blue", weight=3]; 14.12/5.42 628[label="compare :: ([] a) -> ([] a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 628[label="",style="solid", color="blue", weight=9]; 14.12/5.42 628 -> 512[label="",style="solid", color="blue", weight=3]; 14.12/5.42 629[label="compare :: Bool -> Bool -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 629[label="",style="solid", color="blue", weight=9]; 14.12/5.42 629 -> 513[label="",style="solid", color="blue", weight=3]; 14.12/5.42 630[label="compare :: () -> () -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 630[label="",style="solid", color="blue", weight=9]; 14.12/5.42 630 -> 514[label="",style="solid", color="blue", weight=3]; 14.12/5.42 631[label="compare :: ((@3) a b c) -> ((@3) a b c) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 631[label="",style="solid", color="blue", weight=9]; 14.12/5.42 631 -> 515[label="",style="solid", color="blue", weight=3]; 14.12/5.42 632[label="compare :: ((@2) a b) -> ((@2) a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 632[label="",style="solid", color="blue", weight=9]; 14.12/5.42 632 -> 516[label="",style="solid", color="blue", weight=3]; 14.12/5.42 633[label="compare :: Int -> Int -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 633[label="",style="solid", color="blue", weight=9]; 14.12/5.42 633 -> 517[label="",style="solid", color="blue", weight=3]; 14.12/5.42 634[label="compare :: Ordering -> Ordering -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 634[label="",style="solid", color="blue", weight=9]; 14.12/5.42 634 -> 518[label="",style="solid", color="blue", weight=3]; 14.12/5.42 635[label="compare :: (Maybe a) -> (Maybe a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 635[label="",style="solid", color="blue", weight=9]; 14.12/5.42 635 -> 519[label="",style="solid", color="blue", weight=3]; 14.12/5.42 636[label="compare :: Float -> Float -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 636[label="",style="solid", color="blue", weight=9]; 14.12/5.42 636 -> 520[label="",style="solid", color="blue", weight=3]; 14.12/5.42 637[label="compare :: (Ratio a) -> (Ratio a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 637[label="",style="solid", color="blue", weight=9]; 14.12/5.42 637 -> 521[label="",style="solid", color="blue", weight=3]; 14.12/5.42 638[label="compare :: Char -> Char -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 638[label="",style="solid", color="blue", weight=9]; 14.12/5.42 638 -> 522[label="",style="solid", color="blue", weight=3]; 14.12/5.42 486[label="vz3500",fontsize=16,color="green",shape="box"];487[label="vz3501",fontsize=16,color="green",shape="box"];495[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];495 -> 527[label="",style="solid", color="black", weight=3]; 14.12/5.42 496[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];496 -> 528[label="",style="solid", color="black", weight=3]; 14.12/5.42 497[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];497 -> 529[label="",style="solid", color="black", weight=3]; 14.12/5.42 498[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];498 -> 530[label="",style="solid", color="black", weight=3]; 14.12/5.42 499[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];499 -> 531[label="",style="solid", color="black", weight=3]; 14.12/5.42 500 -> 470[label="",style="dashed", color="red", weight=0]; 14.12/5.42 500[label="compare vz340 vz3500",fontsize=16,color="magenta"];500 -> 532[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 500 -> 533[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 501[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];501 -> 534[label="",style="solid", color="black", weight=3]; 14.12/5.42 502[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];502 -> 535[label="",style="solid", color="black", weight=3]; 14.12/5.42 503[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];503 -> 536[label="",style="solid", color="black", weight=3]; 14.12/5.42 504[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];504 -> 537[label="",style="solid", color="black", weight=3]; 14.12/5.42 505[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];505 -> 538[label="",style="solid", color="black", weight=3]; 14.12/5.42 506[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];506 -> 539[label="",style="solid", color="black", weight=3]; 14.12/5.42 507[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];507 -> 540[label="",style="solid", color="black", weight=3]; 14.12/5.42 508[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];508 -> 541[label="",style="solid", color="black", weight=3]; 14.12/5.42 509 -> 495[label="",style="dashed", color="red", weight=0]; 14.12/5.42 509[label="compare vz3500 vz35100",fontsize=16,color="magenta"];509 -> 542[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 509 -> 543[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 510 -> 496[label="",style="dashed", color="red", weight=0]; 14.12/5.42 510[label="compare vz3500 vz35100",fontsize=16,color="magenta"];510 -> 544[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 510 -> 545[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 511 -> 497[label="",style="dashed", color="red", weight=0]; 14.12/5.42 511[label="compare vz3500 vz35100",fontsize=16,color="magenta"];511 -> 546[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 511 -> 547[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 512 -> 498[label="",style="dashed", color="red", weight=0]; 14.12/5.42 512[label="compare vz3500 vz35100",fontsize=16,color="magenta"];512 -> 548[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 512 -> 549[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 513 -> 499[label="",style="dashed", color="red", weight=0]; 14.12/5.42 513[label="compare vz3500 vz35100",fontsize=16,color="magenta"];513 -> 550[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 513 -> 551[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 514 -> 470[label="",style="dashed", color="red", weight=0]; 14.12/5.42 514[label="compare vz3500 vz35100",fontsize=16,color="magenta"];514 -> 552[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 514 -> 553[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 515 -> 501[label="",style="dashed", color="red", weight=0]; 14.12/5.42 515[label="compare vz3500 vz35100",fontsize=16,color="magenta"];515 -> 554[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 515 -> 555[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 516 -> 502[label="",style="dashed", color="red", weight=0]; 14.12/5.42 516[label="compare vz3500 vz35100",fontsize=16,color="magenta"];516 -> 556[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 516 -> 557[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 517 -> 503[label="",style="dashed", color="red", weight=0]; 14.12/5.42 517[label="compare vz3500 vz35100",fontsize=16,color="magenta"];517 -> 558[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 517 -> 559[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 518 -> 504[label="",style="dashed", color="red", weight=0]; 14.12/5.42 518[label="compare vz3500 vz35100",fontsize=16,color="magenta"];518 -> 560[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 518 -> 561[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 519 -> 505[label="",style="dashed", color="red", weight=0]; 14.12/5.42 519[label="compare vz3500 vz35100",fontsize=16,color="magenta"];519 -> 562[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 519 -> 563[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 520 -> 506[label="",style="dashed", color="red", weight=0]; 14.12/5.42 520[label="compare vz3500 vz35100",fontsize=16,color="magenta"];520 -> 564[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 520 -> 565[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 521 -> 507[label="",style="dashed", color="red", weight=0]; 14.12/5.42 521[label="compare vz3500 vz35100",fontsize=16,color="magenta"];521 -> 566[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 521 -> 567[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 522 -> 508[label="",style="dashed", color="red", weight=0]; 14.12/5.42 522[label="compare vz3500 vz35100",fontsize=16,color="magenta"];522 -> 568[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 522 -> 569[label="",style="dashed", color="magenta", weight=3]; 14.12/5.42 527[label="error []",fontsize=16,color="red",shape="box"];528[label="error []",fontsize=16,color="red",shape="box"];529[label="error []",fontsize=16,color="red",shape="box"];530[label="error []",fontsize=16,color="red",shape="box"];531[label="error []",fontsize=16,color="red",shape="box"];532[label="vz340",fontsize=16,color="green",shape="box"];533[label="vz3500",fontsize=16,color="green",shape="box"];534[label="error []",fontsize=16,color="red",shape="box"];535[label="error []",fontsize=16,color="red",shape="box"];536[label="error []",fontsize=16,color="red",shape="box"];537[label="error []",fontsize=16,color="red",shape="box"];538[label="error []",fontsize=16,color="red",shape="box"];539[label="error []",fontsize=16,color="red",shape="box"];540[label="error []",fontsize=16,color="red",shape="box"];541[label="error []",fontsize=16,color="red",shape="box"];542[label="vz3500",fontsize=16,color="green",shape="box"];543[label="vz35100",fontsize=16,color="green",shape="box"];544[label="vz3500",fontsize=16,color="green",shape="box"];545[label="vz35100",fontsize=16,color="green",shape="box"];546[label="vz3500",fontsize=16,color="green",shape="box"];547[label="vz35100",fontsize=16,color="green",shape="box"];548[label="vz3500",fontsize=16,color="green",shape="box"];549[label="vz35100",fontsize=16,color="green",shape="box"];550[label="vz3500",fontsize=16,color="green",shape="box"];551[label="vz35100",fontsize=16,color="green",shape="box"];552[label="vz3500",fontsize=16,color="green",shape="box"];553[label="vz35100",fontsize=16,color="green",shape="box"];554[label="vz3500",fontsize=16,color="green",shape="box"];555[label="vz35100",fontsize=16,color="green",shape="box"];556[label="vz3500",fontsize=16,color="green",shape="box"];557[label="vz35100",fontsize=16,color="green",shape="box"];558[label="vz3500",fontsize=16,color="green",shape="box"];559[label="vz35100",fontsize=16,color="green",shape="box"];560[label="vz3500",fontsize=16,color="green",shape="box"];561[label="vz35100",fontsize=16,color="green",shape="box"];562[label="vz3500",fontsize=16,color="green",shape="box"];563[label="vz35100",fontsize=16,color="green",shape="box"];564[label="vz3500",fontsize=16,color="green",shape="box"];565[label="vz35100",fontsize=16,color="green",shape="box"];566[label="vz3500",fontsize=16,color="green",shape="box"];567[label="vz35100",fontsize=16,color="green",shape="box"];568[label="vz3500",fontsize=16,color="green",shape="box"];569[label="vz35100",fontsize=16,color="green",shape="box"];} 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (8) 14.12/5.42 Complex Obligation (AND) 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (9) 14.12/5.42 Obligation: 14.12/5.42 Q DP problem: 14.12/5.42 The TRS P consists of the following rules: 14.12/5.42 14.12/5.42 new_merge_pairs(:(vz35110, :(vz351110, vz351111)), ba) -> new_merge_pairs(vz351111, ba) 14.12/5.42 14.12/5.42 R is empty. 14.12/5.42 Q is empty. 14.12/5.42 We have to consider all minimal (P,Q,R)-chains. 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (10) QDPSizeChangeProof (EQUIVALENT) 14.12/5.42 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. 14.12/5.42 14.12/5.42 From the DPs we obtained the following set of size-change graphs: 14.12/5.42 *new_merge_pairs(:(vz35110, :(vz351110, vz351111)), ba) -> new_merge_pairs(vz351111, ba) 14.12/5.42 The graph contains the following edges 1 > 1, 2 >= 2 14.12/5.42 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (11) 14.12/5.42 YES 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (12) 14.12/5.42 Obligation: 14.12/5.42 Q DP problem: 14.12/5.42 The TRS P consists of the following rules: 14.12/5.42 14.12/5.42 new_map(:(vz3110, vz3111)) -> new_map(vz3111) 14.12/5.42 14.12/5.42 R is empty. 14.12/5.42 Q is empty. 14.12/5.42 We have to consider all minimal (P,Q,R)-chains. 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (13) QDPSizeChangeProof (EQUIVALENT) 14.12/5.42 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. 14.12/5.42 14.12/5.42 From the DPs we obtained the following set of size-change graphs: 14.12/5.42 *new_map(:(vz3110, vz3111)) -> new_map(vz3111) 14.12/5.42 The graph contains the following edges 1 > 1 14.12/5.42 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (14) 14.12/5.42 YES 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (15) 14.12/5.42 Obligation: 14.12/5.42 Q DP problem: 14.12/5.42 The TRS P consists of the following rules: 14.12/5.42 14.12/5.42 new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.42 new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) 14.12/5.42 new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.42 new_merge(:(vz340, vz341), :(vz3500, vz3501), bb) -> new_merge0(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, bb), bb) 14.12/5.42 14.12/5.42 The TRS R consists of the following rules: 14.12/5.42 14.12/5.42 new_compare1(vz340, vz3500, bd, be) -> error([]) 14.12/5.42 new_compare10(vz340, vz3500, bh, ca) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Bool) -> new_compare9(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, app(ty_Maybe, bg)) -> new_compare8(vz340, vz3500, bg) 14.12/5.42 new_compare13(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, app(app(app(ty_@3, cb), cc), cd)) -> new_compare11(vz340, vz3500, cb, cc, cd) 14.12/5.42 new_compare2(vz340, vz3500) -> error([]) 14.12/5.42 new_compare11(vz340, vz3500, cb, cc, cd) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, app(ty_Ratio, bf)) -> new_compare6(vz340, vz3500, bf) 14.12/5.42 new_compare(vz340, vz3500, ty_Int) -> new_compare12(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) 14.12/5.42 new_compare5(vz340, vz3500) -> error([]) 14.12/5.42 new_compare12(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, app(app(ty_Either, bh), ca)) -> new_compare10(vz340, vz3500, bh, ca) 14.12/5.42 new_compare(vz340, vz3500, ty_Char) -> new_compare7(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, app(ty_[], bc)) -> new_compare0(vz340, vz3500, bc) 14.12/5.42 new_compare6(vz340, vz3500, bf) -> error([]) 14.12/5.42 new_compare0(vz340, vz3500, bc) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, app(app(ty_@2, bd), be)) -> new_compare1(vz340, vz3500, bd, be) 14.12/5.42 new_compare(vz340, vz3500, ty_Double) -> new_compare13(vz340, vz3500) 14.12/5.42 new_compare3(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Ordering) -> new_compare5(vz340, vz3500) 14.12/5.42 new_compare8(vz340, vz3500, bg) -> error([]) 14.12/5.42 new_compare4(@0, @0) -> EQ 14.12/5.42 new_compare9(vz340, vz3500) -> error([]) 14.12/5.42 new_compare7(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Float) -> new_compare3(vz340, vz3500) 14.12/5.42 14.12/5.42 The set Q consists of the following terms: 14.12/5.42 14.12/5.42 new_compare(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.42 new_compare11(x0, x1, x2, x3, x4) 14.12/5.42 new_compare5(x0, x1) 14.12/5.42 new_compare10(x0, x1, x2, x3) 14.12/5.42 new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.42 new_compare(x0, x1, ty_Integer) 14.12/5.42 new_compare(x0, x1, ty_Bool) 14.12/5.42 new_compare4(@0, @0) 14.12/5.42 new_compare2(x0, x1) 14.12/5.42 new_compare(x0, x1, ty_Float) 14.12/5.42 new_compare8(x0, x1, x2) 14.12/5.42 new_compare12(x0, x1) 14.12/5.42 new_compare7(x0, x1) 14.12/5.42 new_compare13(x0, x1) 14.12/5.42 new_compare(x0, x1, ty_Int) 14.12/5.42 new_compare3(x0, x1) 14.12/5.42 new_compare(x0, x1, ty_Char) 14.12/5.42 new_compare0(x0, x1, x2) 14.12/5.42 new_compare6(x0, x1, x2) 14.12/5.42 new_compare(x0, x1, app(ty_Maybe, x2)) 14.12/5.42 new_compare(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.42 new_compare(x0, x1, app(ty_Ratio, x2)) 14.12/5.42 new_compare(x0, x1, ty_Double) 14.12/5.42 new_compare9(x0, x1) 14.12/5.42 new_compare1(x0, x1, x2, x3) 14.12/5.42 new_compare(x0, x1, ty_@0) 14.12/5.42 new_compare(x0, x1, app(ty_[], x2)) 14.12/5.42 new_compare(x0, x1, ty_Ordering) 14.12/5.42 14.12/5.42 We have to consider all minimal (P,Q,R)-chains. 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (16) DependencyGraphProof (EQUIVALENT) 14.12/5.42 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (17) 14.12/5.42 Obligation: 14.12/5.42 Q DP problem: 14.12/5.42 The TRS P consists of the following rules: 14.12/5.42 14.12/5.42 new_merge(:(vz340, vz341), :(vz3500, vz3501), bb) -> new_merge0(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, bb), bb) 14.12/5.42 new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.42 14.12/5.42 The TRS R consists of the following rules: 14.12/5.42 14.12/5.42 new_compare1(vz340, vz3500, bd, be) -> error([]) 14.12/5.42 new_compare10(vz340, vz3500, bh, ca) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Bool) -> new_compare9(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, app(ty_Maybe, bg)) -> new_compare8(vz340, vz3500, bg) 14.12/5.42 new_compare13(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, app(app(app(ty_@3, cb), cc), cd)) -> new_compare11(vz340, vz3500, cb, cc, cd) 14.12/5.42 new_compare2(vz340, vz3500) -> error([]) 14.12/5.42 new_compare11(vz340, vz3500, cb, cc, cd) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, app(ty_Ratio, bf)) -> new_compare6(vz340, vz3500, bf) 14.12/5.42 new_compare(vz340, vz3500, ty_Int) -> new_compare12(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) 14.12/5.42 new_compare5(vz340, vz3500) -> error([]) 14.12/5.42 new_compare12(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, app(app(ty_Either, bh), ca)) -> new_compare10(vz340, vz3500, bh, ca) 14.12/5.42 new_compare(vz340, vz3500, ty_Char) -> new_compare7(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, app(ty_[], bc)) -> new_compare0(vz340, vz3500, bc) 14.12/5.42 new_compare6(vz340, vz3500, bf) -> error([]) 14.12/5.42 new_compare0(vz340, vz3500, bc) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, app(app(ty_@2, bd), be)) -> new_compare1(vz340, vz3500, bd, be) 14.12/5.42 new_compare(vz340, vz3500, ty_Double) -> new_compare13(vz340, vz3500) 14.12/5.42 new_compare3(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Ordering) -> new_compare5(vz340, vz3500) 14.12/5.42 new_compare8(vz340, vz3500, bg) -> error([]) 14.12/5.42 new_compare4(@0, @0) -> EQ 14.12/5.42 new_compare9(vz340, vz3500) -> error([]) 14.12/5.42 new_compare7(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Float) -> new_compare3(vz340, vz3500) 14.12/5.42 14.12/5.42 The set Q consists of the following terms: 14.12/5.42 14.12/5.42 new_compare(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.42 new_compare11(x0, x1, x2, x3, x4) 14.12/5.42 new_compare5(x0, x1) 14.12/5.42 new_compare10(x0, x1, x2, x3) 14.12/5.42 new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.42 new_compare(x0, x1, ty_Integer) 14.12/5.42 new_compare(x0, x1, ty_Bool) 14.12/5.42 new_compare4(@0, @0) 14.12/5.42 new_compare2(x0, x1) 14.12/5.42 new_compare(x0, x1, ty_Float) 14.12/5.42 new_compare8(x0, x1, x2) 14.12/5.42 new_compare12(x0, x1) 14.12/5.42 new_compare7(x0, x1) 14.12/5.42 new_compare13(x0, x1) 14.12/5.42 new_compare(x0, x1, ty_Int) 14.12/5.42 new_compare3(x0, x1) 14.12/5.42 new_compare(x0, x1, ty_Char) 14.12/5.42 new_compare0(x0, x1, x2) 14.12/5.42 new_compare6(x0, x1, x2) 14.12/5.42 new_compare(x0, x1, app(ty_Maybe, x2)) 14.12/5.42 new_compare(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.42 new_compare(x0, x1, app(ty_Ratio, x2)) 14.12/5.42 new_compare(x0, x1, ty_Double) 14.12/5.42 new_compare9(x0, x1) 14.12/5.42 new_compare1(x0, x1, x2, x3) 14.12/5.42 new_compare(x0, x1, ty_@0) 14.12/5.42 new_compare(x0, x1, app(ty_[], x2)) 14.12/5.42 new_compare(x0, x1, ty_Ordering) 14.12/5.42 14.12/5.42 We have to consider all minimal (P,Q,R)-chains. 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (18) TransformationProof (EQUIVALENT) 14.12/5.42 By narrowing [LPAR04] the rule new_merge(:(vz340, vz341), :(vz3500, vz3501), bb) -> new_merge0(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, bb), bb) at position [4] we obtained the following new rules [LPAR04]: 14.12/5.42 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), ty_Bool) -> new_merge0(x1, x0, y1, y3, new_compare9(x0, x1), ty_Bool),new_merge(:(x0, y1), :(x1, y3), ty_Bool) -> new_merge0(x1, x0, y1, y3, new_compare9(x0, x1), ty_Bool)) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), app(ty_Maybe, x2)) -> new_merge0(x1, x0, y1, y3, new_compare8(x0, x1, x2), app(ty_Maybe, x2)),new_merge(:(x0, y1), :(x1, y3), app(ty_Maybe, x2)) -> new_merge0(x1, x0, y1, y3, new_compare8(x0, x1, x2), app(ty_Maybe, x2))) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), ty_Integer) -> new_merge0(x1, x0, y1, y3, new_compare2(x0, x1), ty_Integer),new_merge(:(x0, y1), :(x1, y3), ty_Integer) -> new_merge0(x1, x0, y1, y3, new_compare2(x0, x1), ty_Integer)) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), app(app(app(ty_@3, x2), x3), x4)) -> new_merge0(x1, x0, y1, y3, new_compare11(x0, x1, x2, x3, x4), app(app(app(ty_@3, x2), x3), x4)),new_merge(:(x0, y1), :(x1, y3), app(app(app(ty_@3, x2), x3), x4)) -> new_merge0(x1, x0, y1, y3, new_compare11(x0, x1, x2, x3, x4), app(app(app(ty_@3, x2), x3), x4))) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), app(ty_Ratio, x2)) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1, x2), app(ty_Ratio, x2)),new_merge(:(x0, y1), :(x1, y3), app(ty_Ratio, x2)) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1, x2), app(ty_Ratio, x2))) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), ty_Int) -> new_merge0(x1, x0, y1, y3, new_compare12(x0, x1), ty_Int),new_merge(:(x0, y1), :(x1, y3), ty_Int) -> new_merge0(x1, x0, y1, y3, new_compare12(x0, x1), ty_Int)) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0),new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0)) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), app(app(ty_Either, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare10(x0, x1, x2, x3), app(app(ty_Either, x2), x3)),new_merge(:(x0, y1), :(x1, y3), app(app(ty_Either, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare10(x0, x1, x2, x3), app(app(ty_Either, x2), x3))) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), ty_Char) -> new_merge0(x1, x0, y1, y3, new_compare7(x0, x1), ty_Char),new_merge(:(x0, y1), :(x1, y3), ty_Char) -> new_merge0(x1, x0, y1, y3, new_compare7(x0, x1), ty_Char)) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), app(ty_[], x2)) -> new_merge0(x1, x0, y1, y3, new_compare0(x0, x1, x2), app(ty_[], x2)),new_merge(:(x0, y1), :(x1, y3), app(ty_[], x2)) -> new_merge0(x1, x0, y1, y3, new_compare0(x0, x1, x2), app(ty_[], x2))) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), app(app(ty_@2, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare1(x0, x1, x2, x3), app(app(ty_@2, x2), x3)),new_merge(:(x0, y1), :(x1, y3), app(app(ty_@2, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare1(x0, x1, x2, x3), app(app(ty_@2, x2), x3))) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), ty_Double) -> new_merge0(x1, x0, y1, y3, new_compare13(x0, x1), ty_Double),new_merge(:(x0, y1), :(x1, y3), ty_Double) -> new_merge0(x1, x0, y1, y3, new_compare13(x0, x1), ty_Double)) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare5(x0, x1), ty_Ordering),new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare5(x0, x1), ty_Ordering)) 14.12/5.42 (new_merge(:(x0, y1), :(x1, y3), ty_Float) -> new_merge0(x1, x0, y1, y3, new_compare3(x0, x1), ty_Float),new_merge(:(x0, y1), :(x1, y3), ty_Float) -> new_merge0(x1, x0, y1, y3, new_compare3(x0, x1), ty_Float)) 14.12/5.42 14.12/5.42 14.12/5.42 ---------------------------------------- 14.12/5.42 14.12/5.42 (19) 14.12/5.42 Obligation: 14.12/5.42 Q DP problem: 14.12/5.42 The TRS P consists of the following rules: 14.12/5.42 14.12/5.42 new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), ty_Bool) -> new_merge0(x1, x0, y1, y3, new_compare9(x0, x1), ty_Bool) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), app(ty_Maybe, x2)) -> new_merge0(x1, x0, y1, y3, new_compare8(x0, x1, x2), app(ty_Maybe, x2)) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), ty_Integer) -> new_merge0(x1, x0, y1, y3, new_compare2(x0, x1), ty_Integer) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), app(app(app(ty_@3, x2), x3), x4)) -> new_merge0(x1, x0, y1, y3, new_compare11(x0, x1, x2, x3, x4), app(app(app(ty_@3, x2), x3), x4)) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), app(ty_Ratio, x2)) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1, x2), app(ty_Ratio, x2)) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), ty_Int) -> new_merge0(x1, x0, y1, y3, new_compare12(x0, x1), ty_Int) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), app(app(ty_Either, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare10(x0, x1, x2, x3), app(app(ty_Either, x2), x3)) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), ty_Char) -> new_merge0(x1, x0, y1, y3, new_compare7(x0, x1), ty_Char) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), app(ty_[], x2)) -> new_merge0(x1, x0, y1, y3, new_compare0(x0, x1, x2), app(ty_[], x2)) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), app(app(ty_@2, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare1(x0, x1, x2, x3), app(app(ty_@2, x2), x3)) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), ty_Double) -> new_merge0(x1, x0, y1, y3, new_compare13(x0, x1), ty_Double) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare5(x0, x1), ty_Ordering) 14.12/5.42 new_merge(:(x0, y1), :(x1, y3), ty_Float) -> new_merge0(x1, x0, y1, y3, new_compare3(x0, x1), ty_Float) 14.12/5.42 14.12/5.42 The TRS R consists of the following rules: 14.12/5.42 14.12/5.42 new_compare1(vz340, vz3500, bd, be) -> error([]) 14.12/5.42 new_compare10(vz340, vz3500, bh, ca) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Bool) -> new_compare9(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, app(ty_Maybe, bg)) -> new_compare8(vz340, vz3500, bg) 14.12/5.42 new_compare13(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, app(app(app(ty_@3, cb), cc), cd)) -> new_compare11(vz340, vz3500, cb, cc, cd) 14.12/5.42 new_compare2(vz340, vz3500) -> error([]) 14.12/5.42 new_compare11(vz340, vz3500, cb, cc, cd) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, app(ty_Ratio, bf)) -> new_compare6(vz340, vz3500, bf) 14.12/5.42 new_compare(vz340, vz3500, ty_Int) -> new_compare12(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) 14.12/5.42 new_compare5(vz340, vz3500) -> error([]) 14.12/5.42 new_compare12(vz340, vz3500) -> error([]) 14.12/5.42 new_compare(vz340, vz3500, app(app(ty_Either, bh), ca)) -> new_compare10(vz340, vz3500, bh, ca) 14.12/5.42 new_compare(vz340, vz3500, ty_Char) -> new_compare7(vz340, vz3500) 14.12/5.42 new_compare(vz340, vz3500, app(ty_[], bc)) -> new_compare0(vz340, vz3500, bc) 14.12/5.43 new_compare6(vz340, vz3500, bf) -> error([]) 14.12/5.43 new_compare0(vz340, vz3500, bc) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, app(app(ty_@2, bd), be)) -> new_compare1(vz340, vz3500, bd, be) 14.12/5.43 new_compare(vz340, vz3500, ty_Double) -> new_compare13(vz340, vz3500) 14.12/5.43 new_compare3(vz340, vz3500) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, ty_Ordering) -> new_compare5(vz340, vz3500) 14.12/5.43 new_compare8(vz340, vz3500, bg) -> error([]) 14.12/5.43 new_compare4(@0, @0) -> EQ 14.12/5.43 new_compare9(vz340, vz3500) -> error([]) 14.12/5.43 new_compare7(vz340, vz3500) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, ty_Float) -> new_compare3(vz340, vz3500) 14.12/5.43 14.12/5.43 The set Q consists of the following terms: 14.12/5.43 14.12/5.43 new_compare(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.43 new_compare11(x0, x1, x2, x3, x4) 14.12/5.43 new_compare5(x0, x1) 14.12/5.43 new_compare10(x0, x1, x2, x3) 14.12/5.43 new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.43 new_compare(x0, x1, ty_Integer) 14.12/5.43 new_compare(x0, x1, ty_Bool) 14.12/5.43 new_compare4(@0, @0) 14.12/5.43 new_compare2(x0, x1) 14.12/5.43 new_compare(x0, x1, ty_Float) 14.12/5.43 new_compare8(x0, x1, x2) 14.12/5.43 new_compare12(x0, x1) 14.12/5.43 new_compare7(x0, x1) 14.12/5.43 new_compare13(x0, x1) 14.12/5.43 new_compare(x0, x1, ty_Int) 14.12/5.43 new_compare3(x0, x1) 14.12/5.43 new_compare(x0, x1, ty_Char) 14.12/5.43 new_compare0(x0, x1, x2) 14.12/5.43 new_compare6(x0, x1, x2) 14.12/5.43 new_compare(x0, x1, app(ty_Maybe, x2)) 14.12/5.43 new_compare(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.43 new_compare(x0, x1, app(ty_Ratio, x2)) 14.12/5.43 new_compare(x0, x1, ty_Double) 14.12/5.43 new_compare9(x0, x1) 14.12/5.43 new_compare1(x0, x1, x2, x3) 14.12/5.43 new_compare(x0, x1, ty_@0) 14.12/5.43 new_compare(x0, x1, app(ty_[], x2)) 14.12/5.43 new_compare(x0, x1, ty_Ordering) 14.12/5.43 14.12/5.43 We have to consider all minimal (P,Q,R)-chains. 14.12/5.43 ---------------------------------------- 14.12/5.43 14.12/5.43 (20) DependencyGraphProof (EQUIVALENT) 14.12/5.43 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 13 less nodes. 14.12/5.43 ---------------------------------------- 14.12/5.43 14.12/5.43 (21) 14.12/5.43 Obligation: 14.12/5.43 Q DP problem: 14.12/5.43 The TRS P consists of the following rules: 14.12/5.43 14.12/5.43 new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) 14.12/5.43 new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.43 14.12/5.43 The TRS R consists of the following rules: 14.12/5.43 14.12/5.43 new_compare1(vz340, vz3500, bd, be) -> error([]) 14.12/5.43 new_compare10(vz340, vz3500, bh, ca) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, ty_Bool) -> new_compare9(vz340, vz3500) 14.12/5.43 new_compare(vz340, vz3500, app(ty_Maybe, bg)) -> new_compare8(vz340, vz3500, bg) 14.12/5.43 new_compare13(vz340, vz3500) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) 14.12/5.43 new_compare(vz340, vz3500, app(app(app(ty_@3, cb), cc), cd)) -> new_compare11(vz340, vz3500, cb, cc, cd) 14.12/5.43 new_compare2(vz340, vz3500) -> error([]) 14.12/5.43 new_compare11(vz340, vz3500, cb, cc, cd) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, app(ty_Ratio, bf)) -> new_compare6(vz340, vz3500, bf) 14.12/5.43 new_compare(vz340, vz3500, ty_Int) -> new_compare12(vz340, vz3500) 14.12/5.43 new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) 14.12/5.43 new_compare5(vz340, vz3500) -> error([]) 14.12/5.43 new_compare12(vz340, vz3500) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, app(app(ty_Either, bh), ca)) -> new_compare10(vz340, vz3500, bh, ca) 14.12/5.43 new_compare(vz340, vz3500, ty_Char) -> new_compare7(vz340, vz3500) 14.12/5.43 new_compare(vz340, vz3500, app(ty_[], bc)) -> new_compare0(vz340, vz3500, bc) 14.12/5.43 new_compare6(vz340, vz3500, bf) -> error([]) 14.12/5.43 new_compare0(vz340, vz3500, bc) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, app(app(ty_@2, bd), be)) -> new_compare1(vz340, vz3500, bd, be) 14.12/5.43 new_compare(vz340, vz3500, ty_Double) -> new_compare13(vz340, vz3500) 14.12/5.43 new_compare3(vz340, vz3500) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, ty_Ordering) -> new_compare5(vz340, vz3500) 14.12/5.43 new_compare8(vz340, vz3500, bg) -> error([]) 14.12/5.43 new_compare4(@0, @0) -> EQ 14.12/5.43 new_compare9(vz340, vz3500) -> error([]) 14.12/5.43 new_compare7(vz340, vz3500) -> error([]) 14.12/5.43 new_compare(vz340, vz3500, ty_Float) -> new_compare3(vz340, vz3500) 14.12/5.43 14.12/5.43 The set Q consists of the following terms: 14.12/5.43 14.12/5.43 new_compare(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.43 new_compare11(x0, x1, x2, x3, x4) 14.12/5.43 new_compare5(x0, x1) 14.12/5.43 new_compare10(x0, x1, x2, x3) 14.12/5.43 new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.43 new_compare(x0, x1, ty_Integer) 14.12/5.43 new_compare(x0, x1, ty_Bool) 14.12/5.43 new_compare4(@0, @0) 14.12/5.43 new_compare2(x0, x1) 14.12/5.43 new_compare(x0, x1, ty_Float) 14.12/5.43 new_compare8(x0, x1, x2) 14.12/5.43 new_compare12(x0, x1) 14.12/5.43 new_compare7(x0, x1) 14.12/5.43 new_compare13(x0, x1) 14.12/5.43 new_compare(x0, x1, ty_Int) 14.12/5.43 new_compare3(x0, x1) 14.12/5.43 new_compare(x0, x1, ty_Char) 14.12/5.43 new_compare0(x0, x1, x2) 14.12/5.43 new_compare6(x0, x1, x2) 14.12/5.43 new_compare(x0, x1, app(ty_Maybe, x2)) 14.12/5.43 new_compare(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.43 new_compare(x0, x1, app(ty_Ratio, x2)) 14.12/5.43 new_compare(x0, x1, ty_Double) 14.12/5.43 new_compare9(x0, x1) 14.12/5.43 new_compare1(x0, x1, x2, x3) 14.12/5.43 new_compare(x0, x1, ty_@0) 14.12/5.43 new_compare(x0, x1, app(ty_[], x2)) 14.12/5.43 new_compare(x0, x1, ty_Ordering) 14.12/5.43 14.12/5.43 We have to consider all minimal (P,Q,R)-chains. 14.12/5.43 ---------------------------------------- 14.12/5.43 14.12/5.43 (22) UsableRulesProof (EQUIVALENT) 14.12/5.43 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. 14.12/5.43 ---------------------------------------- 14.12/5.43 14.12/5.43 (23) 14.12/5.43 Obligation: 14.12/5.43 Q DP problem: 14.12/5.43 The TRS P consists of the following rules: 14.12/5.43 14.12/5.43 new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) 14.12/5.43 new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.43 14.12/5.43 The TRS R consists of the following rules: 14.12/5.43 14.12/5.43 new_compare4(@0, @0) -> EQ 14.12/5.43 14.12/5.43 The set Q consists of the following terms: 14.12/5.43 14.12/5.43 new_compare(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.43 new_compare11(x0, x1, x2, x3, x4) 14.12/5.43 new_compare5(x0, x1) 14.12/5.43 new_compare10(x0, x1, x2, x3) 14.12/5.43 new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.43 new_compare(x0, x1, ty_Integer) 14.12/5.43 new_compare(x0, x1, ty_Bool) 14.12/5.43 new_compare4(@0, @0) 14.12/5.43 new_compare2(x0, x1) 14.12/5.43 new_compare(x0, x1, ty_Float) 14.12/5.43 new_compare8(x0, x1, x2) 14.12/5.43 new_compare12(x0, x1) 14.12/5.43 new_compare7(x0, x1) 14.12/5.43 new_compare13(x0, x1) 14.12/5.43 new_compare(x0, x1, ty_Int) 14.12/5.44 new_compare3(x0, x1) 14.12/5.44 new_compare(x0, x1, ty_Char) 14.12/5.44 new_compare0(x0, x1, x2) 14.12/5.44 new_compare6(x0, x1, x2) 14.12/5.44 new_compare(x0, x1, app(ty_Maybe, x2)) 14.12/5.44 new_compare(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.44 new_compare(x0, x1, app(ty_Ratio, x2)) 14.12/5.44 new_compare(x0, x1, ty_Double) 14.12/5.44 new_compare9(x0, x1) 14.12/5.44 new_compare1(x0, x1, x2, x3) 14.12/5.44 new_compare(x0, x1, ty_@0) 14.12/5.44 new_compare(x0, x1, app(ty_[], x2)) 14.12/5.44 new_compare(x0, x1, ty_Ordering) 14.12/5.44 14.12/5.44 We have to consider all minimal (P,Q,R)-chains. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (24) QReductionProof (EQUIVALENT) 14.12/5.44 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 14.12/5.44 14.12/5.44 new_compare(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.44 new_compare11(x0, x1, x2, x3, x4) 14.12/5.44 new_compare5(x0, x1) 14.12/5.44 new_compare10(x0, x1, x2, x3) 14.12/5.44 new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.44 new_compare(x0, x1, ty_Integer) 14.12/5.44 new_compare(x0, x1, ty_Bool) 14.12/5.44 new_compare2(x0, x1) 14.12/5.44 new_compare(x0, x1, ty_Float) 14.12/5.44 new_compare8(x0, x1, x2) 14.12/5.44 new_compare12(x0, x1) 14.12/5.44 new_compare7(x0, x1) 14.12/5.44 new_compare13(x0, x1) 14.12/5.44 new_compare(x0, x1, ty_Int) 14.12/5.44 new_compare3(x0, x1) 14.12/5.44 new_compare(x0, x1, ty_Char) 14.12/5.44 new_compare0(x0, x1, x2) 14.12/5.44 new_compare6(x0, x1, x2) 14.12/5.44 new_compare(x0, x1, app(ty_Maybe, x2)) 14.12/5.44 new_compare(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.44 new_compare(x0, x1, app(ty_Ratio, x2)) 14.12/5.44 new_compare(x0, x1, ty_Double) 14.12/5.44 new_compare9(x0, x1) 14.12/5.44 new_compare1(x0, x1, x2, x3) 14.12/5.44 new_compare(x0, x1, ty_@0) 14.12/5.44 new_compare(x0, x1, app(ty_[], x2)) 14.12/5.44 new_compare(x0, x1, ty_Ordering) 14.12/5.44 14.12/5.44 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (25) 14.12/5.44 Obligation: 14.12/5.44 Q DP problem: 14.12/5.44 The TRS P consists of the following rules: 14.12/5.44 14.12/5.44 new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) 14.12/5.44 new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.44 14.12/5.44 The TRS R consists of the following rules: 14.12/5.44 14.12/5.44 new_compare4(@0, @0) -> EQ 14.12/5.44 14.12/5.44 The set Q consists of the following terms: 14.12/5.44 14.12/5.44 new_compare4(@0, @0) 14.12/5.44 14.12/5.44 We have to consider all minimal (P,Q,R)-chains. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (26) TransformationProof (EQUIVALENT) 14.12/5.44 By narrowing [LPAR04] the rule new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) at position [4] we obtained the following new rules [LPAR04]: 14.12/5.44 14.12/5.44 (new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0),new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0)) 14.12/5.44 14.12/5.44 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (27) 14.12/5.44 Obligation: 14.12/5.44 Q DP problem: 14.12/5.44 The TRS P consists of the following rules: 14.12/5.44 14.12/5.44 new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.44 new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) 14.12/5.44 14.12/5.44 The TRS R consists of the following rules: 14.12/5.44 14.12/5.44 new_compare4(@0, @0) -> EQ 14.12/5.44 14.12/5.44 The set Q consists of the following terms: 14.12/5.44 14.12/5.44 new_compare4(@0, @0) 14.12/5.44 14.12/5.44 We have to consider all minimal (P,Q,R)-chains. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (28) UsableRulesProof (EQUIVALENT) 14.12/5.44 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. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (29) 14.12/5.44 Obligation: 14.12/5.44 Q DP problem: 14.12/5.44 The TRS P consists of the following rules: 14.12/5.44 14.12/5.44 new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.44 new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) 14.12/5.44 14.12/5.44 R is empty. 14.12/5.44 The set Q consists of the following terms: 14.12/5.44 14.12/5.44 new_compare4(@0, @0) 14.12/5.44 14.12/5.44 We have to consider all minimal (P,Q,R)-chains. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (30) QReductionProof (EQUIVALENT) 14.12/5.44 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 14.12/5.44 14.12/5.44 new_compare4(@0, @0) 14.12/5.44 14.12/5.44 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (31) 14.12/5.44 Obligation: 14.12/5.44 Q DP problem: 14.12/5.44 The TRS P consists of the following rules: 14.12/5.44 14.12/5.44 new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) 14.12/5.44 new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) 14.12/5.44 14.12/5.44 R is empty. 14.12/5.44 Q is empty. 14.12/5.44 We have to consider all minimal (P,Q,R)-chains. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (32) TransformationProof (EQUIVALENT) 14.12/5.44 By instantiating [LPAR04] the rule new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) we obtained the following new rules [LPAR04]: 14.12/5.44 14.12/5.44 (new_merge0(@0, @0, z0, z1, EQ, ty_@0) -> new_merge(z0, :(@0, z1), ty_@0),new_merge0(@0, @0, z0, z1, EQ, ty_@0) -> new_merge(z0, :(@0, z1), ty_@0)) 14.12/5.44 14.12/5.44 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (33) 14.12/5.44 Obligation: 14.12/5.44 Q DP problem: 14.12/5.44 The TRS P consists of the following rules: 14.12/5.44 14.12/5.44 new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) 14.12/5.44 new_merge0(@0, @0, z0, z1, EQ, ty_@0) -> new_merge(z0, :(@0, z1), ty_@0) 14.12/5.44 14.12/5.44 R is empty. 14.12/5.44 Q is empty. 14.12/5.44 We have to consider all minimal (P,Q,R)-chains. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (34) QDPSizeChangeProof (EQUIVALENT) 14.12/5.44 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. 14.12/5.44 14.12/5.44 From the DPs we obtained the following set of size-change graphs: 14.12/5.44 *new_merge0(@0, @0, z0, z1, EQ, ty_@0) -> new_merge(z0, :(@0, z1), ty_@0) 14.12/5.44 The graph contains the following edges 3 >= 1, 6 >= 3 14.12/5.44 14.12/5.44 14.12/5.44 *new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) 14.12/5.44 The graph contains the following edges 1 > 1, 2 > 1, 1 > 2, 2 > 2, 1 > 3, 2 > 4, 3 >= 6 14.12/5.44 14.12/5.44 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (35) 14.12/5.44 YES 14.12/5.44 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (36) 14.12/5.44 Obligation: 14.12/5.44 Q DP problem: 14.12/5.44 The TRS P consists of the following rules: 14.12/5.44 14.12/5.44 new_mergesort'(vz34, :(vz350, []), ba) -> new_mergesort'(new_merge2(vz34, vz350, ba), [], ba) 14.12/5.44 new_mergesort'(vz34, :(vz350, :(vz3510, vz3511)), ba) -> new_mergesort'(new_merge1(vz34, vz350, vz3510, ba), new_merge_pairs0(vz3511, ba), ba) 14.12/5.44 14.12/5.44 The TRS R consists of the following rules: 14.12/5.44 14.12/5.44 new_compare1(vz340, vz3500, bc, bd) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, app(app(app(ty_@3, bg), bh), ca)) -> new_compare11(vz3500, vz35100, bg, bh, ca) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Double) -> new_compare13(vz3500, vz35100) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Char) -> new_compare7(vz3500, vz35100) 14.12/5.44 new_compare(vz340, vz3500, app(ty_Maybe, cb)) -> new_compare8(vz340, vz3500, cb) 14.12/5.44 new_merge_pairs0(:(vz35110, []), ba) -> :(vz35110, []) 14.12/5.44 new_compare11(vz340, vz3500, bg, bh, ca) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, app(app(ty_Either, be), bf)) -> new_compare10(vz3500, vz35100, be, bf) 14.12/5.44 new_compare(vz340, vz3500, ty_Int) -> new_compare12(vz340, vz3500) 14.12/5.44 new_merge1(vz34, :(vz3500, vz3501), :(vz35100, vz35101), ba) -> new_merge2(vz34, new_merge00(vz35100, vz3500, vz3501, vz35101, new_compare14(vz3500, vz35100, ba), ba), ba) 14.12/5.44 new_compare12(vz340, vz3500) -> error([]) 14.12/5.44 new_merge2([], :(vz3500, vz3501), ba) -> :(vz3500, vz3501) 14.12/5.44 new_compare(vz340, vz3500, ty_Char) -> new_compare7(vz340, vz3500) 14.12/5.44 new_compare14(vz3500, vz35100, app(ty_Maybe, cb)) -> new_compare8(vz3500, vz35100, cb) 14.12/5.44 new_compare(vz340, vz3500, app(ty_[], bb)) -> new_compare0(vz340, vz3500, bb) 14.12/5.44 new_compare6(vz340, vz3500, cc) -> error([]) 14.12/5.44 new_compare(vz340, vz3500, app(app(ty_@2, bc), bd)) -> new_compare1(vz340, vz3500, bc, bd) 14.12/5.44 new_compare(vz340, vz3500, ty_Double) -> new_compare13(vz340, vz3500) 14.12/5.44 new_merge_pairs0(:(vz35110, :(vz351110, vz351111)), ba) -> :(new_merge2(vz35110, vz351110, ba), new_merge_pairs0(vz351111, ba)) 14.12/5.44 new_compare3(vz340, vz3500) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Bool) -> new_compare9(vz3500, vz35100) 14.12/5.44 new_compare(vz340, vz3500, ty_Ordering) -> new_compare5(vz340, vz3500) 14.12/5.44 new_merge00(vz44, vz45, vz46, vz47, LT, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) 14.12/5.44 new_compare4(@0, @0) -> EQ 14.12/5.44 new_compare7(vz340, vz3500) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, app(ty_[], bb)) -> new_compare0(vz3500, vz35100, bb) 14.12/5.44 new_merge2(:(vz340, vz341), :(vz3500, vz3501), ba) -> new_merge00(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, ba), ba) 14.12/5.44 new_compare14(vz3500, vz35100, app(app(ty_@2, bc), bd)) -> new_compare1(vz3500, vz35100, bc, bd) 14.12/5.44 new_compare10(vz340, vz3500, be, bf) -> error([]) 14.12/5.44 new_compare(vz340, vz3500, ty_Bool) -> new_compare9(vz340, vz3500) 14.12/5.44 new_compare13(vz340, vz3500) -> error([]) 14.12/5.44 new_merge2(vz34, [], ba) -> vz34 14.12/5.44 new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) 14.12/5.44 new_compare(vz340, vz3500, app(app(app(ty_@3, bg), bh), ca)) -> new_compare11(vz340, vz3500, bg, bh, ca) 14.12/5.44 new_merge_pairs0([], ba) -> [] 14.12/5.44 new_merge1(vz34, [], :(vz35100, vz35101), ba) -> new_merge2(vz34, :(vz35100, vz35101), ba) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Ordering) -> new_compare5(vz3500, vz35100) 14.12/5.44 new_compare2(vz340, vz3500) -> error([]) 14.12/5.44 new_compare(vz340, vz3500, app(ty_Ratio, cc)) -> new_compare6(vz340, vz3500, cc) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Float) -> new_compare3(vz3500, vz35100) 14.12/5.44 new_merge00(vz44, vz45, vz46, vz47, GT, cd) -> :(vz44, new_merge2(:(vz45, vz46), vz47, cd)) 14.12/5.44 new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) 14.12/5.44 new_compare5(vz340, vz3500) -> error([]) 14.12/5.44 new_compare(vz340, vz3500, app(app(ty_Either, be), bf)) -> new_compare10(vz340, vz3500, be, bf) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Integer) -> new_compare2(vz3500, vz35100) 14.12/5.44 new_merge00(vz44, vz45, vz46, vz47, EQ, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Int) -> new_compare12(vz3500, vz35100) 14.12/5.44 new_compare0(vz340, vz3500, bb) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, app(ty_Ratio, cc)) -> new_compare6(vz3500, vz35100, cc) 14.12/5.44 new_compare8(vz340, vz3500, cb) -> error([]) 14.12/5.44 new_compare9(vz340, vz3500) -> error([]) 14.12/5.44 new_merge1(vz34, vz350, [], ba) -> new_merge2(vz34, vz350, ba) 14.12/5.44 new_compare14(vz3500, vz35100, ty_@0) -> new_compare4(vz3500, vz35100) 14.12/5.44 new_compare(vz340, vz3500, ty_Float) -> new_compare3(vz340, vz3500) 14.12/5.44 14.12/5.44 The set Q consists of the following terms: 14.12/5.44 14.12/5.44 new_compare14(x0, x1, ty_Double) 14.12/5.44 new_merge1(x0, :(x1, x2), :(x3, x4), x5) 14.12/5.44 new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.44 new_compare14(x0, x1, ty_Bool) 14.12/5.44 new_compare10(x0, x1, x2, x3) 14.12/5.44 new_merge2([], :(x0, x1), x2) 14.12/5.44 new_compare14(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.44 new_compare14(x0, x1, ty_@0) 14.12/5.44 new_merge_pairs0(:(x0, :(x1, x2)), x3) 14.12/5.44 new_compare(x0, x1, ty_Bool) 14.12/5.44 new_compare4(@0, @0) 14.12/5.44 new_compare14(x0, x1, ty_Char) 14.12/5.44 new_merge00(x0, x1, x2, x3, EQ, x4) 14.12/5.44 new_compare14(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.44 new_merge1(x0, [], :(x1, x2), x3) 14.12/5.44 new_compare14(x0, x1, ty_Ordering) 14.12/5.44 new_compare7(x0, x1) 14.12/5.44 new_merge2(x0, [], x1) 14.12/5.44 new_compare13(x0, x1) 14.12/5.44 new_compare(x0, x1, ty_Int) 14.12/5.44 new_merge00(x0, x1, x2, x3, GT, x4) 14.12/5.44 new_merge1(x0, x1, [], x2) 14.12/5.44 new_compare8(x0, x1, x2) 14.12/5.44 new_compare14(x0, x1, ty_Int) 14.12/5.44 new_compare9(x0, x1) 14.12/5.44 new_compare1(x0, x1, x2, x3) 14.12/5.44 new_compare14(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.44 new_compare(x0, x1, ty_@0) 14.12/5.44 new_compare(x0, x1, ty_Ordering) 14.12/5.44 new_compare(x0, x1, app(ty_Ratio, x2)) 14.12/5.44 new_compare(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.44 new_compare5(x0, x1) 14.12/5.44 new_compare(x0, x1, app(ty_[], x2)) 14.12/5.44 new_compare(x0, x1, ty_Integer) 14.12/5.44 new_compare14(x0, x1, app(ty_Maybe, x2)) 14.12/5.44 new_compare11(x0, x1, x2, x3, x4) 14.12/5.44 new_compare2(x0, x1) 14.12/5.44 new_compare(x0, x1, ty_Float) 14.12/5.44 new_compare(x0, x1, app(ty_Maybe, x2)) 14.12/5.44 new_compare12(x0, x1) 14.12/5.44 new_compare14(x0, x1, app(ty_[], x2)) 14.12/5.44 new_compare14(x0, x1, app(ty_Ratio, x2)) 14.12/5.44 new_compare3(x0, x1) 14.12/5.44 new_compare0(x0, x1, x2) 14.12/5.44 new_compare(x0, x1, ty_Char) 14.12/5.44 new_merge_pairs0(:(x0, []), x1) 14.12/5.44 new_compare(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.44 new_merge_pairs0([], x0) 14.12/5.44 new_compare14(x0, x1, ty_Float) 14.12/5.44 new_compare(x0, x1, ty_Double) 14.12/5.44 new_merge2(:(x0, x1), :(x2, x3), x4) 14.12/5.44 new_compare6(x0, x1, x2) 14.12/5.44 new_compare14(x0, x1, ty_Integer) 14.12/5.44 new_merge00(x0, x1, x2, x3, LT, x4) 14.12/5.44 14.12/5.44 We have to consider all minimal (P,Q,R)-chains. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (37) DependencyGraphProof (EQUIVALENT) 14.12/5.44 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (38) 14.12/5.44 Obligation: 14.12/5.44 Q DP problem: 14.12/5.44 The TRS P consists of the following rules: 14.12/5.44 14.12/5.44 new_mergesort'(vz34, :(vz350, :(vz3510, vz3511)), ba) -> new_mergesort'(new_merge1(vz34, vz350, vz3510, ba), new_merge_pairs0(vz3511, ba), ba) 14.12/5.44 14.12/5.44 The TRS R consists of the following rules: 14.12/5.44 14.12/5.44 new_compare1(vz340, vz3500, bc, bd) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, app(app(app(ty_@3, bg), bh), ca)) -> new_compare11(vz3500, vz35100, bg, bh, ca) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Double) -> new_compare13(vz3500, vz35100) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Char) -> new_compare7(vz3500, vz35100) 14.12/5.44 new_compare(vz340, vz3500, app(ty_Maybe, cb)) -> new_compare8(vz340, vz3500, cb) 14.12/5.44 new_merge_pairs0(:(vz35110, []), ba) -> :(vz35110, []) 14.12/5.44 new_compare11(vz340, vz3500, bg, bh, ca) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, app(app(ty_Either, be), bf)) -> new_compare10(vz3500, vz35100, be, bf) 14.12/5.44 new_compare(vz340, vz3500, ty_Int) -> new_compare12(vz340, vz3500) 14.12/5.44 new_merge1(vz34, :(vz3500, vz3501), :(vz35100, vz35101), ba) -> new_merge2(vz34, new_merge00(vz35100, vz3500, vz3501, vz35101, new_compare14(vz3500, vz35100, ba), ba), ba) 14.12/5.44 new_compare12(vz340, vz3500) -> error([]) 14.12/5.44 new_merge2([], :(vz3500, vz3501), ba) -> :(vz3500, vz3501) 14.12/5.44 new_compare(vz340, vz3500, ty_Char) -> new_compare7(vz340, vz3500) 14.12/5.44 new_compare14(vz3500, vz35100, app(ty_Maybe, cb)) -> new_compare8(vz3500, vz35100, cb) 14.12/5.44 new_compare(vz340, vz3500, app(ty_[], bb)) -> new_compare0(vz340, vz3500, bb) 14.12/5.44 new_compare6(vz340, vz3500, cc) -> error([]) 14.12/5.44 new_compare(vz340, vz3500, app(app(ty_@2, bc), bd)) -> new_compare1(vz340, vz3500, bc, bd) 14.12/5.44 new_compare(vz340, vz3500, ty_Double) -> new_compare13(vz340, vz3500) 14.12/5.44 new_merge_pairs0(:(vz35110, :(vz351110, vz351111)), ba) -> :(new_merge2(vz35110, vz351110, ba), new_merge_pairs0(vz351111, ba)) 14.12/5.44 new_compare3(vz340, vz3500) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Bool) -> new_compare9(vz3500, vz35100) 14.12/5.44 new_compare(vz340, vz3500, ty_Ordering) -> new_compare5(vz340, vz3500) 14.12/5.44 new_merge00(vz44, vz45, vz46, vz47, LT, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) 14.12/5.44 new_compare4(@0, @0) -> EQ 14.12/5.44 new_compare7(vz340, vz3500) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, app(ty_[], bb)) -> new_compare0(vz3500, vz35100, bb) 14.12/5.44 new_merge2(:(vz340, vz341), :(vz3500, vz3501), ba) -> new_merge00(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, ba), ba) 14.12/5.44 new_compare14(vz3500, vz35100, app(app(ty_@2, bc), bd)) -> new_compare1(vz3500, vz35100, bc, bd) 14.12/5.44 new_compare10(vz340, vz3500, be, bf) -> error([]) 14.12/5.44 new_compare(vz340, vz3500, ty_Bool) -> new_compare9(vz340, vz3500) 14.12/5.44 new_compare13(vz340, vz3500) -> error([]) 14.12/5.44 new_merge2(vz34, [], ba) -> vz34 14.12/5.44 new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) 14.12/5.44 new_compare(vz340, vz3500, app(app(app(ty_@3, bg), bh), ca)) -> new_compare11(vz340, vz3500, bg, bh, ca) 14.12/5.44 new_merge_pairs0([], ba) -> [] 14.12/5.44 new_merge1(vz34, [], :(vz35100, vz35101), ba) -> new_merge2(vz34, :(vz35100, vz35101), ba) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Ordering) -> new_compare5(vz3500, vz35100) 14.12/5.44 new_compare2(vz340, vz3500) -> error([]) 14.12/5.44 new_compare(vz340, vz3500, app(ty_Ratio, cc)) -> new_compare6(vz340, vz3500, cc) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Float) -> new_compare3(vz3500, vz35100) 14.12/5.44 new_merge00(vz44, vz45, vz46, vz47, GT, cd) -> :(vz44, new_merge2(:(vz45, vz46), vz47, cd)) 14.12/5.44 new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) 14.12/5.44 new_compare5(vz340, vz3500) -> error([]) 14.12/5.44 new_compare(vz340, vz3500, app(app(ty_Either, be), bf)) -> new_compare10(vz340, vz3500, be, bf) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Integer) -> new_compare2(vz3500, vz35100) 14.12/5.44 new_merge00(vz44, vz45, vz46, vz47, EQ, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) 14.12/5.44 new_compare14(vz3500, vz35100, ty_Int) -> new_compare12(vz3500, vz35100) 14.12/5.44 new_compare0(vz340, vz3500, bb) -> error([]) 14.12/5.44 new_compare14(vz3500, vz35100, app(ty_Ratio, cc)) -> new_compare6(vz3500, vz35100, cc) 14.12/5.44 new_compare8(vz340, vz3500, cb) -> error([]) 14.12/5.44 new_compare9(vz340, vz3500) -> error([]) 14.12/5.44 new_merge1(vz34, vz350, [], ba) -> new_merge2(vz34, vz350, ba) 14.12/5.44 new_compare14(vz3500, vz35100, ty_@0) -> new_compare4(vz3500, vz35100) 14.12/5.44 new_compare(vz340, vz3500, ty_Float) -> new_compare3(vz340, vz3500) 14.12/5.44 14.12/5.44 The set Q consists of the following terms: 14.12/5.44 14.12/5.44 new_compare14(x0, x1, ty_Double) 14.12/5.44 new_merge1(x0, :(x1, x2), :(x3, x4), x5) 14.12/5.44 new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.44 new_compare14(x0, x1, ty_Bool) 14.12/5.44 new_compare10(x0, x1, x2, x3) 14.12/5.44 new_merge2([], :(x0, x1), x2) 14.12/5.44 new_compare14(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.44 new_compare14(x0, x1, ty_@0) 14.12/5.44 new_merge_pairs0(:(x0, :(x1, x2)), x3) 14.12/5.44 new_compare(x0, x1, ty_Bool) 14.12/5.44 new_compare4(@0, @0) 14.12/5.44 new_compare14(x0, x1, ty_Char) 14.12/5.44 new_merge00(x0, x1, x2, x3, EQ, x4) 14.12/5.44 new_compare14(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 14.12/5.44 new_merge1(x0, [], :(x1, x2), x3) 14.12/5.44 new_compare14(x0, x1, ty_Ordering) 14.12/5.44 new_compare7(x0, x1) 14.12/5.44 new_merge2(x0, [], x1) 14.12/5.44 new_compare13(x0, x1) 14.12/5.44 new_compare(x0, x1, ty_Int) 14.12/5.44 new_merge00(x0, x1, x2, x3, GT, x4) 14.12/5.44 new_merge1(x0, x1, [], x2) 14.12/5.44 new_compare8(x0, x1, x2) 14.12/5.44 new_compare14(x0, x1, ty_Int) 14.12/5.44 new_compare9(x0, x1) 14.12/5.44 new_compare1(x0, x1, x2, x3) 14.12/5.44 new_compare14(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.44 new_compare(x0, x1, ty_@0) 14.12/5.44 new_compare(x0, x1, ty_Ordering) 14.12/5.44 new_compare(x0, x1, app(ty_Ratio, x2)) 14.12/5.44 new_compare(x0, x1, app(app(ty_Either, x2), x3)) 14.12/5.44 new_compare5(x0, x1) 14.12/5.44 new_compare(x0, x1, app(ty_[], x2)) 14.12/5.44 new_compare(x0, x1, ty_Integer) 14.12/5.44 new_compare14(x0, x1, app(ty_Maybe, x2)) 14.12/5.44 new_compare11(x0, x1, x2, x3, x4) 14.12/5.44 new_compare2(x0, x1) 14.12/5.44 new_compare(x0, x1, ty_Float) 14.12/5.44 new_compare(x0, x1, app(ty_Maybe, x2)) 14.12/5.44 new_compare12(x0, x1) 14.12/5.44 new_compare14(x0, x1, app(ty_[], x2)) 14.12/5.44 new_compare14(x0, x1, app(ty_Ratio, x2)) 14.12/5.44 new_compare3(x0, x1) 14.12/5.44 new_compare0(x0, x1, x2) 14.12/5.44 new_compare(x0, x1, ty_Char) 14.12/5.44 new_merge_pairs0(:(x0, []), x1) 14.12/5.44 new_compare(x0, x1, app(app(ty_@2, x2), x3)) 14.12/5.44 new_merge_pairs0([], x0) 14.12/5.44 new_compare14(x0, x1, ty_Float) 14.12/5.44 new_compare(x0, x1, ty_Double) 14.12/5.44 new_merge2(:(x0, x1), :(x2, x3), x4) 14.12/5.44 new_compare6(x0, x1, x2) 14.12/5.44 new_compare14(x0, x1, ty_Integer) 14.12/5.44 new_merge00(x0, x1, x2, x3, LT, x4) 14.12/5.44 14.12/5.44 We have to consider all minimal (P,Q,R)-chains. 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (39) QDPSizeChangeProof (EQUIVALENT) 14.12/5.44 We used the following order together with the size-change analysis [AAECC05] to show that there are no infinite chains for this DP problem. 14.12/5.44 14.12/5.44 Order:Polynomial interpretation [POLO]: 14.12/5.44 14.12/5.44 POL(:(x_1, x_2)) = 1 + x_2 14.12/5.44 POL([]) = 0 14.12/5.44 POL(new_merge2(x_1, x_2, x_3)) = 0 14.12/5.44 POL(new_merge_pairs0(x_1, x_2)) = x_1 14.12/5.44 14.12/5.44 14.12/5.44 14.12/5.44 14.12/5.44 From the DPs we obtained the following set of size-change graphs: 14.12/5.44 *new_mergesort'(vz34, :(vz350, :(vz3510, vz3511)), ba) -> new_mergesort'(new_merge1(vz34, vz350, vz3510, ba), new_merge_pairs0(vz3511, ba), ba) (allowed arguments on rhs = {2, 3}) 14.12/5.44 The graph contains the following edges 2 > 2, 3 >= 3 14.12/5.44 14.12/5.44 14.12/5.44 14.12/5.44 We oriented the following set of usable rules [AAECC05,FROCOS05]. 14.12/5.44 14.12/5.44 new_merge_pairs0([], ba) -> [] 14.12/5.44 new_merge_pairs0(:(vz35110, []), ba) -> :(vz35110, []) 14.12/5.44 new_merge_pairs0(:(vz35110, :(vz351110, vz351111)), ba) -> :(new_merge2(vz35110, vz351110, ba), new_merge_pairs0(vz351111, ba)) 14.12/5.44 14.12/5.44 ---------------------------------------- 14.12/5.44 14.12/5.44 (40) 14.12/5.44 YES 14.22/5.52 EOF