/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.hs /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.hs # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty H-Termination with start terms of the given HASKELL could be proven: (0) HASKELL (1) CR [EQUIVALENT, 0 ms] (2) HASKELL (3) BR [EQUIVALENT, 0 ms] (4) HASKELL (5) COR [EQUIVALENT, 19 ms] (6) HASKELL (7) Narrow [SOUND, 0 ms] (8) AND (9) QDP (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] (11) YES (12) QDP (13) DependencyGraphProof [EQUIVALENT, 0 ms] (14) QDP (15) QDPSizeChangeProof [EQUIVALENT, 40 ms] (16) YES (17) QDP (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] (19) YES (20) QDP (21) TransformationProof [EQUIVALENT, 0 ms] (22) QDP (23) DependencyGraphProof [EQUIVALENT, 0 ms] (24) QDP (25) UsableRulesProof [EQUIVALENT, 0 ms] (26) QDP (27) QReductionProof [EQUIVALENT, 0 ms] (28) QDP (29) TransformationProof [EQUIVALENT, 0 ms] (30) QDP (31) UsableRulesProof [EQUIVALENT, 0 ms] (32) QDP (33) QReductionProof [EQUIVALENT, 0 ms] (34) QDP (35) TransformationProof [EQUIVALENT, 0 ms] (36) QDP (37) TransformationProof [EQUIVALENT, 0 ms] (38) QDP (39) TransformationProof [EQUIVALENT, 0 ms] (40) QDP (41) DependencyGraphProof [EQUIVALENT, 0 ms] (42) AND (43) QDP (44) QDPSizeChangeProof [EQUIVALENT, 0 ms] (45) YES (46) QDP (47) QDPSizeChangeProof [EQUIVALENT, 0 ms] (48) YES (49) QDP (50) QDPSizeChangeProof [EQUIVALENT, 0 ms] (51) YES (52) QDP (53) QDPSizeChangeProof [EQUIVALENT, 0 ms] (54) YES (55) QDP (56) QDPSizeChangeProof [EQUIVALENT, 0 ms] (57) YES ---------------------------------------- (0) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; merge :: (a -> a -> Ordering) -> [a] -> [a] -> [a]; merge cmp xs [] = xs; merge cmp [] ys = ys; merge cmp (x : xs) (y : ys) = case x `cmp` y of { GT-> y : merge cmp (x : xs) ys; _-> x : merge cmp xs (y : ys); } ; merge_pairs :: (a -> a -> Ordering) -> [[a]] -> [[a]]; merge_pairs cmp [] = []; merge_pairs cmp (xs : []) = xs : []; merge_pairs cmp (xs : ys : xss) = merge cmp xs ys : merge_pairs cmp xss; mergesort :: (a -> a -> Ordering) -> [a] -> [a]; mergesort cmp = mergesort' cmp . map wrap; mergesort' :: (a -> a -> Ordering) -> [[a]] -> [a]; mergesort' cmp [] = []; mergesort' cmp (xs : []) = xs; mergesort' cmp xss = mergesort' cmp (merge_pairs cmp xss); sort :: Ord a => [a] -> [a]; sort l = mergesort compare l; wrap :: a -> [a]; wrap x = x : []; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (1) CR (EQUIVALENT) Case Reductions: The following Case expression "case cmp x y of { GT -> y : merge cmp (x : xs) ys; _ -> x : merge cmp xs (y : ys)} " is transformed to "merge0 y cmp x xs ys GT = y : merge cmp (x : xs) ys; merge0 y cmp x xs ys _ = x : merge cmp xs (y : ys); " ---------------------------------------- (2) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; merge :: (a -> a -> Ordering) -> [a] -> [a] -> [a]; merge cmp xs [] = xs; merge cmp [] ys = ys; merge cmp (x : xs) (y : ys) = merge0 y cmp x xs ys (x `cmp` y); merge0 y cmp x xs ys GT = y : merge cmp (x : xs) ys; merge0 y cmp x xs ys _ = x : merge cmp xs (y : ys); merge_pairs :: (a -> a -> Ordering) -> [[a]] -> [[a]]; merge_pairs cmp [] = []; merge_pairs cmp (xs : []) = xs : []; merge_pairs cmp (xs : ys : xss) = merge cmp xs ys : merge_pairs cmp xss; mergesort :: (a -> a -> Ordering) -> [a] -> [a]; mergesort cmp = mergesort' cmp . map wrap; mergesort' :: (a -> a -> Ordering) -> [[a]] -> [a]; mergesort' cmp [] = []; mergesort' cmp (xs : []) = xs; mergesort' cmp xss = mergesort' cmp (merge_pairs cmp xss); sort :: Ord a => [a] -> [a]; sort l = mergesort compare l; wrap :: a -> [a]; wrap x = x : []; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (3) BR (EQUIVALENT) Replaced joker patterns by fresh variables and removed binding patterns. ---------------------------------------- (4) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; merge :: (a -> a -> Ordering) -> [a] -> [a] -> [a]; merge cmp xs [] = xs; merge cmp [] ys = ys; merge cmp (x : xs) (y : ys) = merge0 y cmp x xs ys (x `cmp` y); merge0 y cmp x xs ys GT = y : merge cmp (x : xs) ys; merge0 y cmp x xs ys vy = x : merge cmp xs (y : ys); merge_pairs :: (a -> a -> Ordering) -> [[a]] -> [[a]]; merge_pairs cmp [] = []; merge_pairs cmp (xs : []) = xs : []; merge_pairs cmp (xs : ys : xss) = merge cmp xs ys : merge_pairs cmp xss; mergesort :: (a -> a -> Ordering) -> [a] -> [a]; mergesort cmp = mergesort' cmp . map wrap; mergesort' :: (a -> a -> Ordering) -> [[a]] -> [a]; mergesort' cmp [] = []; mergesort' cmp (xs : []) = xs; mergesort' cmp xss = mergesort' cmp (merge_pairs cmp xss); sort :: Ord a => [a] -> [a]; sort l = mergesort compare l; wrap :: a -> [a]; wrap x = x : []; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (5) COR (EQUIVALENT) Cond Reductions: The following Function with conditions "compare x y|x == yEQ|x <= yLT|otherwiseGT; " is transformed to "compare x y = compare3 x y; " "compare1 x y True = LT; compare1 x y False = compare0 x y otherwise; " "compare0 x y True = GT; " "compare2 x y True = EQ; compare2 x y False = compare1 x y (x <= y); " "compare3 x y = compare2 x y (x == y); " The following Function with conditions "undefined |Falseundefined; " is transformed to "undefined = undefined1; " "undefined0 True = undefined; " "undefined1 = undefined0 False; " ---------------------------------------- (6) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; merge :: (a -> a -> Ordering) -> [a] -> [a] -> [a]; merge cmp xs [] = xs; merge cmp [] ys = ys; merge cmp (x : xs) (y : ys) = merge0 y cmp x xs ys (x `cmp` y); merge0 y cmp x xs ys GT = y : merge cmp (x : xs) ys; merge0 y cmp x xs ys vy = x : merge cmp xs (y : ys); merge_pairs :: (a -> a -> Ordering) -> [[a]] -> [[a]]; merge_pairs cmp [] = []; merge_pairs cmp (xs : []) = xs : []; merge_pairs cmp (xs : ys : xss) = merge cmp xs ys : merge_pairs cmp xss; mergesort :: (a -> a -> Ordering) -> [a] -> [a]; mergesort cmp = mergesort' cmp . map wrap; mergesort' :: (a -> a -> Ordering) -> [[a]] -> [a]; mergesort' cmp [] = []; mergesort' cmp (xs : []) = xs; mergesort' cmp xss = mergesort' cmp (merge_pairs cmp xss); sort :: Ord a => [a] -> [a]; sort l = mergesort compare l; wrap :: a -> [a]; wrap x = x : []; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (7) Narrow (SOUND) Haskell To QDPs digraph dp_graph { node [outthreshold=100, inthreshold=100];1[label="List.sort",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 3[label="List.sort vz3",fontsize=16,color="black",shape="triangle"];3 -> 4[label="",style="solid", color="black", weight=3]; 4[label="List.mergesort compare vz3",fontsize=16,color="black",shape="box"];4 -> 5[label="",style="solid", color="black", weight=3]; 5[label="(List.mergesort' compare) . map List.wrap",fontsize=16,color="black",shape="box"];5 -> 6[label="",style="solid", color="black", weight=3]; 6[label="List.mergesort' compare (map List.wrap vz3)",fontsize=16,color="burlywood",shape="box"];852[label="vz3/vz30 : vz31",fontsize=10,color="white",style="solid",shape="box"];6 -> 852[label="",style="solid", color="burlywood", weight=9]; 852 -> 7[label="",style="solid", color="burlywood", weight=3]; 853[label="vz3/[]",fontsize=10,color="white",style="solid",shape="box"];6 -> 853[label="",style="solid", color="burlywood", weight=9]; 853 -> 8[label="",style="solid", color="burlywood", weight=3]; 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]; 8[label="List.mergesort' compare (map List.wrap [])",fontsize=16,color="black",shape="box"];8 -> 10[label="",style="solid", color="black", weight=3]; 9[label="List.mergesort' compare (List.wrap vz30 : map List.wrap vz31)",fontsize=16,color="burlywood",shape="box"];854[label="vz31/vz310 : vz311",fontsize=10,color="white",style="solid",shape="box"];9 -> 854[label="",style="solid", color="burlywood", weight=9]; 854 -> 11[label="",style="solid", color="burlywood", weight=3]; 855[label="vz31/[]",fontsize=10,color="white",style="solid",shape="box"];9 -> 855[label="",style="solid", color="burlywood", weight=9]; 855 -> 12[label="",style="solid", color="burlywood", weight=3]; 10[label="List.mergesort' compare []",fontsize=16,color="black",shape="box"];10 -> 13[label="",style="solid", color="black", weight=3]; 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]; 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]; 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]; 15[label="List.mergesort' compare (List.wrap vz30 : [])",fontsize=16,color="black",shape="box"];15 -> 17[label="",style="solid", color="black", weight=3]; 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]; 17[label="List.wrap vz30",fontsize=16,color="black",shape="triangle"];17 -> 19[label="",style="solid", color="black", weight=3]; 18 -> 324[label="",style="dashed", color="red", weight=0]; 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 -> 325[label="",style="dashed", color="magenta", weight=3]; 18 -> 326[label="",style="dashed", color="magenta", weight=3]; 19[label="vz30 : []",fontsize=16,color="green",shape="box"];325 -> 479[label="",style="dashed", color="red", weight=0]; 325[label="List.merge compare (List.wrap vz30) (List.wrap vz310)",fontsize=16,color="magenta"];325 -> 480[label="",style="dashed", color="magenta", weight=3]; 325 -> 481[label="",style="dashed", color="magenta", weight=3]; 326[label="map List.wrap vz311",fontsize=16,color="burlywood",shape="triangle"];856[label="vz311/vz3110 : vz3111",fontsize=10,color="white",style="solid",shape="box"];326 -> 856[label="",style="solid", color="burlywood", weight=9]; 856 -> 482[label="",style="solid", color="burlywood", weight=3]; 857[label="vz311/[]",fontsize=10,color="white",style="solid",shape="box"];326 -> 857[label="",style="solid", color="burlywood", weight=9]; 857 -> 483[label="",style="solid", color="burlywood", weight=3]; 324[label="List.mergesort' compare (vz34 : List.merge_pairs compare vz35)",fontsize=16,color="burlywood",shape="triangle"];858[label="vz35/vz350 : vz351",fontsize=10,color="white",style="solid",shape="box"];324 -> 858[label="",style="solid", color="burlywood", weight=9]; 858 -> 484[label="",style="solid", color="burlywood", weight=3]; 859[label="vz35/[]",fontsize=10,color="white",style="solid",shape="box"];324 -> 859[label="",style="solid", color="burlywood", weight=9]; 859 -> 485[label="",style="solid", color="burlywood", weight=3]; 480 -> 17[label="",style="dashed", color="red", weight=0]; 480[label="List.wrap vz30",fontsize=16,color="magenta"];481 -> 17[label="",style="dashed", color="red", weight=0]; 481[label="List.wrap vz310",fontsize=16,color="magenta"];481 -> 486[label="",style="dashed", color="magenta", weight=3]; 479[label="List.merge compare vz37 vz36",fontsize=16,color="burlywood",shape="triangle"];860[label="vz36/vz360 : vz361",fontsize=10,color="white",style="solid",shape="box"];479 -> 860[label="",style="solid", color="burlywood", weight=9]; 860 -> 487[label="",style="solid", color="burlywood", weight=3]; 861[label="vz36/[]",fontsize=10,color="white",style="solid",shape="box"];479 -> 861[label="",style="solid", color="burlywood", weight=9]; 861 -> 488[label="",style="solid", color="burlywood", weight=3]; 482[label="map List.wrap (vz3110 : vz3111)",fontsize=16,color="black",shape="box"];482 -> 489[label="",style="solid", color="black", weight=3]; 483[label="map List.wrap []",fontsize=16,color="black",shape="box"];483 -> 490[label="",style="solid", color="black", weight=3]; 484[label="List.mergesort' compare (vz34 : List.merge_pairs compare (vz350 : vz351))",fontsize=16,color="burlywood",shape="box"];862[label="vz351/vz3510 : vz3511",fontsize=10,color="white",style="solid",shape="box"];484 -> 862[label="",style="solid", color="burlywood", weight=9]; 862 -> 491[label="",style="solid", color="burlywood", weight=3]; 863[label="vz351/[]",fontsize=10,color="white",style="solid",shape="box"];484 -> 863[label="",style="solid", color="burlywood", weight=9]; 863 -> 492[label="",style="solid", color="burlywood", weight=3]; 485[label="List.mergesort' compare (vz34 : List.merge_pairs compare [])",fontsize=16,color="black",shape="box"];485 -> 493[label="",style="solid", color="black", weight=3]; 486[label="vz310",fontsize=16,color="green",shape="box"];487[label="List.merge compare vz37 (vz360 : vz361)",fontsize=16,color="burlywood",shape="box"];864[label="vz37/vz370 : vz371",fontsize=10,color="white",style="solid",shape="box"];487 -> 864[label="",style="solid", color="burlywood", weight=9]; 864 -> 494[label="",style="solid", color="burlywood", weight=3]; 865[label="vz37/[]",fontsize=10,color="white",style="solid",shape="box"];487 -> 865[label="",style="solid", color="burlywood", weight=9]; 865 -> 495[label="",style="solid", color="burlywood", weight=3]; 488[label="List.merge compare vz37 []",fontsize=16,color="black",shape="box"];488 -> 496[label="",style="solid", color="black", weight=3]; 489[label="List.wrap vz3110 : map List.wrap vz3111",fontsize=16,color="green",shape="box"];489 -> 497[label="",style="dashed", color="green", weight=3]; 489 -> 498[label="",style="dashed", color="green", weight=3]; 490[label="[]",fontsize=16,color="green",shape="box"];491[label="List.mergesort' compare (vz34 : List.merge_pairs compare (vz350 : vz3510 : vz3511))",fontsize=16,color="black",shape="box"];491 -> 499[label="",style="solid", color="black", weight=3]; 492[label="List.mergesort' compare (vz34 : List.merge_pairs compare (vz350 : []))",fontsize=16,color="black",shape="box"];492 -> 500[label="",style="solid", color="black", weight=3]; 493[label="List.mergesort' compare (vz34 : [])",fontsize=16,color="black",shape="box"];493 -> 501[label="",style="solid", color="black", weight=3]; 494[label="List.merge compare (vz370 : vz371) (vz360 : vz361)",fontsize=16,color="black",shape="box"];494 -> 502[label="",style="solid", color="black", weight=3]; 495[label="List.merge compare [] (vz360 : vz361)",fontsize=16,color="black",shape="box"];495 -> 503[label="",style="solid", color="black", weight=3]; 496[label="vz37",fontsize=16,color="green",shape="box"];497 -> 17[label="",style="dashed", color="red", weight=0]; 497[label="List.wrap vz3110",fontsize=16,color="magenta"];497 -> 504[label="",style="dashed", color="magenta", weight=3]; 498 -> 326[label="",style="dashed", color="red", weight=0]; 498[label="map List.wrap vz3111",fontsize=16,color="magenta"];498 -> 505[label="",style="dashed", color="magenta", weight=3]; 499[label="List.mergesort' compare (vz34 : List.merge compare vz350 vz3510 : List.merge_pairs compare vz3511)",fontsize=16,color="black",shape="box"];499 -> 506[label="",style="solid", color="black", weight=3]; 500[label="List.mergesort' compare (vz34 : vz350 : [])",fontsize=16,color="black",shape="box"];500 -> 507[label="",style="solid", color="black", weight=3]; 501[label="vz34",fontsize=16,color="green",shape="box"];502 -> 571[label="",style="dashed", color="red", weight=0]; 502[label="List.merge0 vz360 compare vz370 vz371 vz361 (compare vz370 vz360)",fontsize=16,color="magenta"];502 -> 572[label="",style="dashed", color="magenta", weight=3]; 502 -> 573[label="",style="dashed", color="magenta", weight=3]; 502 -> 574[label="",style="dashed", color="magenta", weight=3]; 502 -> 575[label="",style="dashed", color="magenta", weight=3]; 502 -> 576[label="",style="dashed", color="magenta", weight=3]; 503[label="vz360 : vz361",fontsize=16,color="green",shape="box"];504[label="vz3110",fontsize=16,color="green",shape="box"];505[label="vz3111",fontsize=16,color="green",shape="box"];506[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"];506 -> 509[label="",style="solid", color="black", weight=3]; 507[label="List.mergesort' compare (List.merge_pairs compare (vz34 : vz350 : []))",fontsize=16,color="black",shape="box"];507 -> 510[label="",style="solid", color="black", weight=3]; 572[label="compare vz370 vz360",fontsize=16,color="black",shape="triangle"];572 -> 687[label="",style="solid", color="black", weight=3]; 573[label="vz361",fontsize=16,color="green",shape="box"];574[label="vz370",fontsize=16,color="green",shape="box"];575[label="vz360",fontsize=16,color="green",shape="box"];576[label="vz371",fontsize=16,color="green",shape="box"];571[label="List.merge0 vz44 compare vz45 vz46 vz47 vz48",fontsize=16,color="burlywood",shape="triangle"];866[label="vz48/LT",fontsize=10,color="white",style="solid",shape="box"];571 -> 866[label="",style="solid", color="burlywood", weight=9]; 866 -> 688[label="",style="solid", color="burlywood", weight=3]; 867[label="vz48/EQ",fontsize=10,color="white",style="solid",shape="box"];571 -> 867[label="",style="solid", color="burlywood", weight=9]; 867 -> 689[label="",style="solid", color="burlywood", weight=3]; 868[label="vz48/GT",fontsize=10,color="white",style="solid",shape="box"];571 -> 868[label="",style="solid", color="burlywood", weight=9]; 868 -> 690[label="",style="solid", color="burlywood", weight=3]; 509 -> 324[label="",style="dashed", color="red", weight=0]; 509[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"];509 -> 512[label="",style="dashed", color="magenta", weight=3]; 509 -> 513[label="",style="dashed", color="magenta", weight=3]; 510 -> 324[label="",style="dashed", color="red", weight=0]; 510[label="List.mergesort' compare (List.merge compare vz34 vz350 : List.merge_pairs compare [])",fontsize=16,color="magenta"];510 -> 514[label="",style="dashed", color="magenta", weight=3]; 510 -> 515[label="",style="dashed", color="magenta", weight=3]; 687[label="compare3 vz370 vz360",fontsize=16,color="black",shape="box"];687 -> 722[label="",style="solid", color="black", weight=3]; 688[label="List.merge0 vz44 compare vz45 vz46 vz47 LT",fontsize=16,color="black",shape="box"];688 -> 723[label="",style="solid", color="black", weight=3]; 689[label="List.merge0 vz44 compare vz45 vz46 vz47 EQ",fontsize=16,color="black",shape="box"];689 -> 724[label="",style="solid", color="black", weight=3]; 690[label="List.merge0 vz44 compare vz45 vz46 vz47 GT",fontsize=16,color="black",shape="box"];690 -> 725[label="",style="solid", color="black", weight=3]; 512[label="List.merge compare vz34 (List.merge compare vz350 vz3510)",fontsize=16,color="burlywood",shape="box"];869[label="vz3510/vz35100 : vz35101",fontsize=10,color="white",style="solid",shape="box"];512 -> 869[label="",style="solid", color="burlywood", weight=9]; 869 -> 519[label="",style="solid", color="burlywood", weight=3]; 870[label="vz3510/[]",fontsize=10,color="white",style="solid",shape="box"];512 -> 870[label="",style="solid", color="burlywood", weight=9]; 870 -> 520[label="",style="solid", color="burlywood", weight=3]; 513[label="List.merge_pairs compare vz3511",fontsize=16,color="burlywood",shape="triangle"];871[label="vz3511/vz35110 : vz35111",fontsize=10,color="white",style="solid",shape="box"];513 -> 871[label="",style="solid", color="burlywood", weight=9]; 871 -> 521[label="",style="solid", color="burlywood", weight=3]; 872[label="vz3511/[]",fontsize=10,color="white",style="solid",shape="box"];513 -> 872[label="",style="solid", color="burlywood", weight=9]; 872 -> 522[label="",style="solid", color="burlywood", weight=3]; 514[label="List.merge compare vz34 vz350",fontsize=16,color="burlywood",shape="triangle"];873[label="vz350/vz3500 : vz3501",fontsize=10,color="white",style="solid",shape="box"];514 -> 873[label="",style="solid", color="burlywood", weight=9]; 873 -> 523[label="",style="solid", color="burlywood", weight=3]; 874[label="vz350/[]",fontsize=10,color="white",style="solid",shape="box"];514 -> 874[label="",style="solid", color="burlywood", weight=9]; 874 -> 524[label="",style="solid", color="burlywood", weight=3]; 515[label="[]",fontsize=16,color="green",shape="box"];722[label="compare2 vz370 vz360 (vz370 == vz360)",fontsize=16,color="burlywood",shape="box"];875[label="vz370/LT",fontsize=10,color="white",style="solid",shape="box"];722 -> 875[label="",style="solid", color="burlywood", weight=9]; 875 -> 769[label="",style="solid", color="burlywood", weight=3]; 876[label="vz370/EQ",fontsize=10,color="white",style="solid",shape="box"];722 -> 876[label="",style="solid", color="burlywood", weight=9]; 876 -> 770[label="",style="solid", color="burlywood", weight=3]; 877[label="vz370/GT",fontsize=10,color="white",style="solid",shape="box"];722 -> 877[label="",style="solid", color="burlywood", weight=9]; 877 -> 771[label="",style="solid", color="burlywood", weight=3]; 723[label="vz45 : List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="green",shape="box"];723 -> 772[label="",style="dashed", color="green", weight=3]; 724[label="vz45 : List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="green",shape="box"];724 -> 773[label="",style="dashed", color="green", weight=3]; 725[label="vz44 : List.merge compare (vz45 : vz46) vz47",fontsize=16,color="green",shape="box"];725 -> 774[label="",style="dashed", color="green", weight=3]; 519[label="List.merge compare vz34 (List.merge compare vz350 (vz35100 : vz35101))",fontsize=16,color="burlywood",shape="box"];878[label="vz350/vz3500 : vz3501",fontsize=10,color="white",style="solid",shape="box"];519 -> 878[label="",style="solid", color="burlywood", weight=9]; 878 -> 534[label="",style="solid", color="burlywood", weight=3]; 879[label="vz350/[]",fontsize=10,color="white",style="solid",shape="box"];519 -> 879[label="",style="solid", color="burlywood", weight=9]; 879 -> 535[label="",style="solid", color="burlywood", weight=3]; 520[label="List.merge compare vz34 (List.merge compare vz350 [])",fontsize=16,color="black",shape="box"];520 -> 536[label="",style="solid", color="black", weight=3]; 521[label="List.merge_pairs compare (vz35110 : vz35111)",fontsize=16,color="burlywood",shape="box"];880[label="vz35111/vz351110 : vz351111",fontsize=10,color="white",style="solid",shape="box"];521 -> 880[label="",style="solid", color="burlywood", weight=9]; 880 -> 537[label="",style="solid", color="burlywood", weight=3]; 881[label="vz35111/[]",fontsize=10,color="white",style="solid",shape="box"];521 -> 881[label="",style="solid", color="burlywood", weight=9]; 881 -> 538[label="",style="solid", color="burlywood", weight=3]; 522[label="List.merge_pairs compare []",fontsize=16,color="black",shape="box"];522 -> 539[label="",style="solid", color="black", weight=3]; 523[label="List.merge compare vz34 (vz3500 : vz3501)",fontsize=16,color="burlywood",shape="box"];882[label="vz34/vz340 : vz341",fontsize=10,color="white",style="solid",shape="box"];523 -> 882[label="",style="solid", color="burlywood", weight=9]; 882 -> 540[label="",style="solid", color="burlywood", weight=3]; 883[label="vz34/[]",fontsize=10,color="white",style="solid",shape="box"];523 -> 883[label="",style="solid", color="burlywood", weight=9]; 883 -> 541[label="",style="solid", color="burlywood", weight=3]; 524[label="List.merge compare vz34 []",fontsize=16,color="black",shape="box"];524 -> 542[label="",style="solid", color="black", weight=3]; 769[label="compare2 LT vz360 (LT == vz360)",fontsize=16,color="burlywood",shape="box"];884[label="vz360/LT",fontsize=10,color="white",style="solid",shape="box"];769 -> 884[label="",style="solid", color="burlywood", weight=9]; 884 -> 788[label="",style="solid", color="burlywood", weight=3]; 885[label="vz360/EQ",fontsize=10,color="white",style="solid",shape="box"];769 -> 885[label="",style="solid", color="burlywood", weight=9]; 885 -> 789[label="",style="solid", color="burlywood", weight=3]; 886[label="vz360/GT",fontsize=10,color="white",style="solid",shape="box"];769 -> 886[label="",style="solid", color="burlywood", weight=9]; 886 -> 790[label="",style="solid", color="burlywood", weight=3]; 770[label="compare2 EQ vz360 (EQ == vz360)",fontsize=16,color="burlywood",shape="box"];887[label="vz360/LT",fontsize=10,color="white",style="solid",shape="box"];770 -> 887[label="",style="solid", color="burlywood", weight=9]; 887 -> 791[label="",style="solid", color="burlywood", weight=3]; 888[label="vz360/EQ",fontsize=10,color="white",style="solid",shape="box"];770 -> 888[label="",style="solid", color="burlywood", weight=9]; 888 -> 792[label="",style="solid", color="burlywood", weight=3]; 889[label="vz360/GT",fontsize=10,color="white",style="solid",shape="box"];770 -> 889[label="",style="solid", color="burlywood", weight=9]; 889 -> 793[label="",style="solid", color="burlywood", weight=3]; 771[label="compare2 GT vz360 (GT == vz360)",fontsize=16,color="burlywood",shape="box"];890[label="vz360/LT",fontsize=10,color="white",style="solid",shape="box"];771 -> 890[label="",style="solid", color="burlywood", weight=9]; 890 -> 794[label="",style="solid", color="burlywood", weight=3]; 891[label="vz360/EQ",fontsize=10,color="white",style="solid",shape="box"];771 -> 891[label="",style="solid", color="burlywood", weight=9]; 891 -> 795[label="",style="solid", color="burlywood", weight=3]; 892[label="vz360/GT",fontsize=10,color="white",style="solid",shape="box"];771 -> 892[label="",style="solid", color="burlywood", weight=9]; 892 -> 796[label="",style="solid", color="burlywood", weight=3]; 772 -> 514[label="",style="dashed", color="red", weight=0]; 772[label="List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="magenta"];772 -> 797[label="",style="dashed", color="magenta", weight=3]; 772 -> 798[label="",style="dashed", color="magenta", weight=3]; 773 -> 514[label="",style="dashed", color="red", weight=0]; 773[label="List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="magenta"];773 -> 799[label="",style="dashed", color="magenta", weight=3]; 773 -> 800[label="",style="dashed", color="magenta", weight=3]; 774 -> 514[label="",style="dashed", color="red", weight=0]; 774[label="List.merge compare (vz45 : vz46) vz47",fontsize=16,color="magenta"];774 -> 801[label="",style="dashed", color="magenta", weight=3]; 774 -> 802[label="",style="dashed", color="magenta", weight=3]; 534[label="List.merge compare vz34 (List.merge compare (vz3500 : vz3501) (vz35100 : vz35101))",fontsize=16,color="black",shape="box"];534 -> 552[label="",style="solid", color="black", weight=3]; 535[label="List.merge compare vz34 (List.merge compare [] (vz35100 : vz35101))",fontsize=16,color="black",shape="box"];535 -> 553[label="",style="solid", color="black", weight=3]; 536 -> 514[label="",style="dashed", color="red", weight=0]; 536[label="List.merge compare vz34 vz350",fontsize=16,color="magenta"];537[label="List.merge_pairs compare (vz35110 : vz351110 : vz351111)",fontsize=16,color="black",shape="box"];537 -> 554[label="",style="solid", color="black", weight=3]; 538[label="List.merge_pairs compare (vz35110 : [])",fontsize=16,color="black",shape="box"];538 -> 555[label="",style="solid", color="black", weight=3]; 539[label="[]",fontsize=16,color="green",shape="box"];540[label="List.merge compare (vz340 : vz341) (vz3500 : vz3501)",fontsize=16,color="black",shape="box"];540 -> 556[label="",style="solid", color="black", weight=3]; 541[label="List.merge compare [] (vz3500 : vz3501)",fontsize=16,color="black",shape="box"];541 -> 557[label="",style="solid", color="black", weight=3]; 542[label="vz34",fontsize=16,color="green",shape="box"];788[label="compare2 LT LT (LT == LT)",fontsize=16,color="black",shape="box"];788 -> 816[label="",style="solid", color="black", weight=3]; 789[label="compare2 LT EQ (LT == EQ)",fontsize=16,color="black",shape="box"];789 -> 817[label="",style="solid", color="black", weight=3]; 790[label="compare2 LT GT (LT == GT)",fontsize=16,color="black",shape="box"];790 -> 818[label="",style="solid", color="black", weight=3]; 791[label="compare2 EQ LT (EQ == LT)",fontsize=16,color="black",shape="box"];791 -> 819[label="",style="solid", color="black", weight=3]; 792[label="compare2 EQ EQ (EQ == EQ)",fontsize=16,color="black",shape="box"];792 -> 820[label="",style="solid", color="black", weight=3]; 793[label="compare2 EQ GT (EQ == GT)",fontsize=16,color="black",shape="box"];793 -> 821[label="",style="solid", color="black", weight=3]; 794[label="compare2 GT LT (GT == LT)",fontsize=16,color="black",shape="box"];794 -> 822[label="",style="solid", color="black", weight=3]; 795[label="compare2 GT EQ (GT == EQ)",fontsize=16,color="black",shape="box"];795 -> 823[label="",style="solid", color="black", weight=3]; 796[label="compare2 GT GT (GT == GT)",fontsize=16,color="black",shape="box"];796 -> 824[label="",style="solid", color="black", weight=3]; 797[label="vz46",fontsize=16,color="green",shape="box"];798[label="vz44 : vz47",fontsize=16,color="green",shape="box"];799[label="vz46",fontsize=16,color="green",shape="box"];800[label="vz44 : vz47",fontsize=16,color="green",shape="box"];801[label="vz45 : vz46",fontsize=16,color="green",shape="box"];802[label="vz47",fontsize=16,color="green",shape="box"];552 -> 514[label="",style="dashed", color="red", weight=0]; 552[label="List.merge compare vz34 (List.merge0 vz35100 compare vz3500 vz3501 vz35101 (compare vz3500 vz35100))",fontsize=16,color="magenta"];552 -> 567[label="",style="dashed", color="magenta", weight=3]; 553 -> 514[label="",style="dashed", color="red", weight=0]; 553[label="List.merge compare vz34 (vz35100 : vz35101)",fontsize=16,color="magenta"];553 -> 568[label="",style="dashed", color="magenta", weight=3]; 554[label="List.merge compare vz35110 vz351110 : List.merge_pairs compare vz351111",fontsize=16,color="green",shape="box"];554 -> 569[label="",style="dashed", color="green", weight=3]; 554 -> 570[label="",style="dashed", color="green", weight=3]; 555[label="vz35110 : []",fontsize=16,color="green",shape="box"];556 -> 571[label="",style="dashed", color="red", weight=0]; 556[label="List.merge0 vz3500 compare vz340 vz341 vz3501 (compare vz340 vz3500)",fontsize=16,color="magenta"];556 -> 632[label="",style="dashed", color="magenta", weight=3]; 556 -> 633[label="",style="dashed", color="magenta", weight=3]; 556 -> 634[label="",style="dashed", color="magenta", weight=3]; 556 -> 635[label="",style="dashed", color="magenta", weight=3]; 556 -> 636[label="",style="dashed", color="magenta", weight=3]; 557[label="vz3500 : vz3501",fontsize=16,color="green",shape="box"];816[label="compare2 LT LT True",fontsize=16,color="black",shape="box"];816 -> 825[label="",style="solid", color="black", weight=3]; 817[label="compare2 LT EQ False",fontsize=16,color="black",shape="box"];817 -> 826[label="",style="solid", color="black", weight=3]; 818[label="compare2 LT GT False",fontsize=16,color="black",shape="box"];818 -> 827[label="",style="solid", color="black", weight=3]; 819[label="compare2 EQ LT False",fontsize=16,color="black",shape="box"];819 -> 828[label="",style="solid", color="black", weight=3]; 820[label="compare2 EQ EQ True",fontsize=16,color="black",shape="box"];820 -> 829[label="",style="solid", color="black", weight=3]; 821[label="compare2 EQ GT False",fontsize=16,color="black",shape="box"];821 -> 830[label="",style="solid", color="black", weight=3]; 822[label="compare2 GT LT False",fontsize=16,color="black",shape="box"];822 -> 831[label="",style="solid", color="black", weight=3]; 823[label="compare2 GT EQ False",fontsize=16,color="black",shape="box"];823 -> 832[label="",style="solid", color="black", weight=3]; 824[label="compare2 GT GT True",fontsize=16,color="black",shape="box"];824 -> 833[label="",style="solid", color="black", weight=3]; 567 -> 571[label="",style="dashed", color="red", weight=0]; 567[label="List.merge0 vz35100 compare vz3500 vz3501 vz35101 (compare vz3500 vz35100)",fontsize=16,color="magenta"];567 -> 682[label="",style="dashed", color="magenta", weight=3]; 567 -> 683[label="",style="dashed", color="magenta", weight=3]; 567 -> 684[label="",style="dashed", color="magenta", weight=3]; 567 -> 685[label="",style="dashed", color="magenta", weight=3]; 567 -> 686[label="",style="dashed", color="magenta", weight=3]; 568[label="vz35100 : vz35101",fontsize=16,color="green",shape="box"];569 -> 514[label="",style="dashed", color="red", weight=0]; 569[label="List.merge compare vz35110 vz351110",fontsize=16,color="magenta"];569 -> 691[label="",style="dashed", color="magenta", weight=3]; 569 -> 692[label="",style="dashed", color="magenta", weight=3]; 570 -> 513[label="",style="dashed", color="red", weight=0]; 570[label="List.merge_pairs compare vz351111",fontsize=16,color="magenta"];570 -> 693[label="",style="dashed", color="magenta", weight=3]; 632[label="compare vz340 vz3500",fontsize=16,color="blue",shape="box"];893[label="compare :: ([] a) -> ([] a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 893[label="",style="solid", color="blue", weight=9]; 893 -> 694[label="",style="solid", color="blue", weight=3]; 894[label="compare :: ((@2) a b) -> ((@2) a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 894[label="",style="solid", color="blue", weight=9]; 894 -> 695[label="",style="solid", color="blue", weight=3]; 895[label="compare :: Char -> Char -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 895[label="",style="solid", color="blue", weight=9]; 895 -> 696[label="",style="solid", color="blue", weight=3]; 896[label="compare :: ((@3) a b c) -> ((@3) a b c) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 896[label="",style="solid", color="blue", weight=9]; 896 -> 697[label="",style="solid", color="blue", weight=3]; 897[label="compare :: Ordering -> Ordering -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 897[label="",style="solid", color="blue", weight=9]; 897 -> 698[label="",style="solid", color="blue", weight=3]; 898[label="compare :: Bool -> Bool -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 898[label="",style="solid", color="blue", weight=9]; 898 -> 699[label="",style="solid", color="blue", weight=3]; 899[label="compare :: Integer -> Integer -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 899[label="",style="solid", color="blue", weight=9]; 899 -> 700[label="",style="solid", color="blue", weight=3]; 900[label="compare :: (Maybe a) -> (Maybe a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 900[label="",style="solid", color="blue", weight=9]; 900 -> 701[label="",style="solid", color="blue", weight=3]; 901[label="compare :: () -> () -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 901[label="",style="solid", color="blue", weight=9]; 901 -> 702[label="",style="solid", color="blue", weight=3]; 902[label="compare :: Int -> Int -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 902[label="",style="solid", color="blue", weight=9]; 902 -> 703[label="",style="solid", color="blue", weight=3]; 903[label="compare :: (Ratio a) -> (Ratio a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 903[label="",style="solid", color="blue", weight=9]; 903 -> 704[label="",style="solid", color="blue", weight=3]; 904[label="compare :: Float -> Float -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 904[label="",style="solid", color="blue", weight=9]; 904 -> 705[label="",style="solid", color="blue", weight=3]; 905[label="compare :: Double -> Double -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 905[label="",style="solid", color="blue", weight=9]; 905 -> 706[label="",style="solid", color="blue", weight=3]; 906[label="compare :: (Either a b) -> (Either a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];632 -> 906[label="",style="solid", color="blue", weight=9]; 906 -> 707[label="",style="solid", color="blue", weight=3]; 633[label="vz3501",fontsize=16,color="green",shape="box"];634[label="vz340",fontsize=16,color="green",shape="box"];635[label="vz3500",fontsize=16,color="green",shape="box"];636[label="vz341",fontsize=16,color="green",shape="box"];825[label="EQ",fontsize=16,color="green",shape="box"];826[label="compare1 LT EQ (LT <= EQ)",fontsize=16,color="black",shape="box"];826 -> 834[label="",style="solid", color="black", weight=3]; 827[label="compare1 LT GT (LT <= GT)",fontsize=16,color="black",shape="box"];827 -> 835[label="",style="solid", color="black", weight=3]; 828[label="compare1 EQ LT (EQ <= LT)",fontsize=16,color="black",shape="box"];828 -> 836[label="",style="solid", color="black", weight=3]; 829[label="EQ",fontsize=16,color="green",shape="box"];830[label="compare1 EQ GT (EQ <= GT)",fontsize=16,color="black",shape="box"];830 -> 837[label="",style="solid", color="black", weight=3]; 831[label="compare1 GT LT (GT <= LT)",fontsize=16,color="black",shape="box"];831 -> 838[label="",style="solid", color="black", weight=3]; 832[label="compare1 GT EQ (GT <= EQ)",fontsize=16,color="black",shape="box"];832 -> 839[label="",style="solid", color="black", weight=3]; 833[label="EQ",fontsize=16,color="green",shape="box"];682[label="compare vz3500 vz35100",fontsize=16,color="blue",shape="box"];907[label="compare :: ([] a) -> ([] a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 907[label="",style="solid", color="blue", weight=9]; 907 -> 708[label="",style="solid", color="blue", weight=3]; 908[label="compare :: ((@2) a b) -> ((@2) a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 908[label="",style="solid", color="blue", weight=9]; 908 -> 709[label="",style="solid", color="blue", weight=3]; 909[label="compare :: Char -> Char -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 909[label="",style="solid", color="blue", weight=9]; 909 -> 710[label="",style="solid", color="blue", weight=3]; 910[label="compare :: ((@3) a b c) -> ((@3) a b c) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 910[label="",style="solid", color="blue", weight=9]; 910 -> 711[label="",style="solid", color="blue", weight=3]; 911[label="compare :: Ordering -> Ordering -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 911[label="",style="solid", color="blue", weight=9]; 911 -> 712[label="",style="solid", color="blue", weight=3]; 912[label="compare :: Bool -> Bool -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 912[label="",style="solid", color="blue", weight=9]; 912 -> 713[label="",style="solid", color="blue", weight=3]; 913[label="compare :: Integer -> Integer -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 913[label="",style="solid", color="blue", weight=9]; 913 -> 714[label="",style="solid", color="blue", weight=3]; 914[label="compare :: (Maybe a) -> (Maybe a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 914[label="",style="solid", color="blue", weight=9]; 914 -> 715[label="",style="solid", color="blue", weight=3]; 915[label="compare :: () -> () -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 915[label="",style="solid", color="blue", weight=9]; 915 -> 716[label="",style="solid", color="blue", weight=3]; 916[label="compare :: Int -> Int -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 916[label="",style="solid", color="blue", weight=9]; 916 -> 717[label="",style="solid", color="blue", weight=3]; 917[label="compare :: (Ratio a) -> (Ratio a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 917[label="",style="solid", color="blue", weight=9]; 917 -> 718[label="",style="solid", color="blue", weight=3]; 918[label="compare :: Float -> Float -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 918[label="",style="solid", color="blue", weight=9]; 918 -> 719[label="",style="solid", color="blue", weight=3]; 919[label="compare :: Double -> Double -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 919[label="",style="solid", color="blue", weight=9]; 919 -> 720[label="",style="solid", color="blue", weight=3]; 920[label="compare :: (Either a b) -> (Either a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];682 -> 920[label="",style="solid", color="blue", weight=9]; 920 -> 721[label="",style="solid", color="blue", weight=3]; 683[label="vz35101",fontsize=16,color="green",shape="box"];684[label="vz3500",fontsize=16,color="green",shape="box"];685[label="vz35100",fontsize=16,color="green",shape="box"];686[label="vz3501",fontsize=16,color="green",shape="box"];691[label="vz35110",fontsize=16,color="green",shape="box"];692[label="vz351110",fontsize=16,color="green",shape="box"];693[label="vz351111",fontsize=16,color="green",shape="box"];694[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];694 -> 726[label="",style="solid", color="black", weight=3]; 695[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];695 -> 727[label="",style="solid", color="black", weight=3]; 696[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];696 -> 728[label="",style="solid", color="black", weight=3]; 697[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];697 -> 729[label="",style="solid", color="black", weight=3]; 698 -> 572[label="",style="dashed", color="red", weight=0]; 698[label="compare vz340 vz3500",fontsize=16,color="magenta"];698 -> 730[label="",style="dashed", color="magenta", weight=3]; 698 -> 731[label="",style="dashed", color="magenta", weight=3]; 699[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];699 -> 732[label="",style="solid", color="black", weight=3]; 700[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];700 -> 733[label="",style="solid", color="black", weight=3]; 701[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];701 -> 734[label="",style="solid", color="black", weight=3]; 702[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];702 -> 735[label="",style="solid", color="black", weight=3]; 703[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];703 -> 736[label="",style="solid", color="black", weight=3]; 704[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];704 -> 737[label="",style="solid", color="black", weight=3]; 705[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];705 -> 738[label="",style="solid", color="black", weight=3]; 706[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];706 -> 739[label="",style="solid", color="black", weight=3]; 707[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];707 -> 740[label="",style="solid", color="black", weight=3]; 834[label="compare1 LT EQ True",fontsize=16,color="black",shape="box"];834 -> 840[label="",style="solid", color="black", weight=3]; 835[label="compare1 LT GT True",fontsize=16,color="black",shape="box"];835 -> 841[label="",style="solid", color="black", weight=3]; 836[label="compare1 EQ LT False",fontsize=16,color="black",shape="box"];836 -> 842[label="",style="solid", color="black", weight=3]; 837[label="compare1 EQ GT True",fontsize=16,color="black",shape="box"];837 -> 843[label="",style="solid", color="black", weight=3]; 838[label="compare1 GT LT False",fontsize=16,color="black",shape="box"];838 -> 844[label="",style="solid", color="black", weight=3]; 839[label="compare1 GT EQ False",fontsize=16,color="black",shape="box"];839 -> 845[label="",style="solid", color="black", weight=3]; 708 -> 694[label="",style="dashed", color="red", weight=0]; 708[label="compare vz3500 vz35100",fontsize=16,color="magenta"];708 -> 741[label="",style="dashed", color="magenta", weight=3]; 708 -> 742[label="",style="dashed", color="magenta", weight=3]; 709 -> 695[label="",style="dashed", color="red", weight=0]; 709[label="compare vz3500 vz35100",fontsize=16,color="magenta"];709 -> 743[label="",style="dashed", color="magenta", weight=3]; 709 -> 744[label="",style="dashed", color="magenta", weight=3]; 710 -> 696[label="",style="dashed", color="red", weight=0]; 710[label="compare vz3500 vz35100",fontsize=16,color="magenta"];710 -> 745[label="",style="dashed", color="magenta", weight=3]; 710 -> 746[label="",style="dashed", color="magenta", weight=3]; 711 -> 697[label="",style="dashed", color="red", weight=0]; 711[label="compare vz3500 vz35100",fontsize=16,color="magenta"];711 -> 747[label="",style="dashed", color="magenta", weight=3]; 711 -> 748[label="",style="dashed", color="magenta", weight=3]; 712 -> 572[label="",style="dashed", color="red", weight=0]; 712[label="compare vz3500 vz35100",fontsize=16,color="magenta"];712 -> 749[label="",style="dashed", color="magenta", weight=3]; 712 -> 750[label="",style="dashed", color="magenta", weight=3]; 713 -> 699[label="",style="dashed", color="red", weight=0]; 713[label="compare vz3500 vz35100",fontsize=16,color="magenta"];713 -> 751[label="",style="dashed", color="magenta", weight=3]; 713 -> 752[label="",style="dashed", color="magenta", weight=3]; 714 -> 700[label="",style="dashed", color="red", weight=0]; 714[label="compare vz3500 vz35100",fontsize=16,color="magenta"];714 -> 753[label="",style="dashed", color="magenta", weight=3]; 714 -> 754[label="",style="dashed", color="magenta", weight=3]; 715 -> 701[label="",style="dashed", color="red", weight=0]; 715[label="compare vz3500 vz35100",fontsize=16,color="magenta"];715 -> 755[label="",style="dashed", color="magenta", weight=3]; 715 -> 756[label="",style="dashed", color="magenta", weight=3]; 716 -> 702[label="",style="dashed", color="red", weight=0]; 716[label="compare vz3500 vz35100",fontsize=16,color="magenta"];716 -> 757[label="",style="dashed", color="magenta", weight=3]; 716 -> 758[label="",style="dashed", color="magenta", weight=3]; 717 -> 703[label="",style="dashed", color="red", weight=0]; 717[label="compare vz3500 vz35100",fontsize=16,color="magenta"];717 -> 759[label="",style="dashed", color="magenta", weight=3]; 717 -> 760[label="",style="dashed", color="magenta", weight=3]; 718 -> 704[label="",style="dashed", color="red", weight=0]; 718[label="compare vz3500 vz35100",fontsize=16,color="magenta"];718 -> 761[label="",style="dashed", color="magenta", weight=3]; 718 -> 762[label="",style="dashed", color="magenta", weight=3]; 719 -> 705[label="",style="dashed", color="red", weight=0]; 719[label="compare vz3500 vz35100",fontsize=16,color="magenta"];719 -> 763[label="",style="dashed", color="magenta", weight=3]; 719 -> 764[label="",style="dashed", color="magenta", weight=3]; 720 -> 706[label="",style="dashed", color="red", weight=0]; 720[label="compare vz3500 vz35100",fontsize=16,color="magenta"];720 -> 765[label="",style="dashed", color="magenta", weight=3]; 720 -> 766[label="",style="dashed", color="magenta", weight=3]; 721 -> 707[label="",style="dashed", color="red", weight=0]; 721[label="compare vz3500 vz35100",fontsize=16,color="magenta"];721 -> 767[label="",style="dashed", color="magenta", weight=3]; 721 -> 768[label="",style="dashed", color="magenta", weight=3]; 726[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];726 -> 775[label="",style="solid", color="black", weight=3]; 727[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];727 -> 776[label="",style="solid", color="black", weight=3]; 728[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];728 -> 777[label="",style="solid", color="black", weight=3]; 729[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];729 -> 778[label="",style="solid", color="black", weight=3]; 730[label="vz3500",fontsize=16,color="green",shape="box"];731[label="vz340",fontsize=16,color="green",shape="box"];732[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];732 -> 779[label="",style="solid", color="black", weight=3]; 733[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];733 -> 780[label="",style="solid", color="black", weight=3]; 734[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];734 -> 781[label="",style="solid", color="black", weight=3]; 735[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];735 -> 782[label="",style="solid", color="black", weight=3]; 736[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];736 -> 783[label="",style="solid", color="black", weight=3]; 737[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];737 -> 784[label="",style="solid", color="black", weight=3]; 738[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];738 -> 785[label="",style="solid", color="black", weight=3]; 739[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];739 -> 786[label="",style="solid", color="black", weight=3]; 740[label="compare3 vz340 vz3500",fontsize=16,color="black",shape="box"];740 -> 787[label="",style="solid", color="black", weight=3]; 840[label="LT",fontsize=16,color="green",shape="box"];841[label="LT",fontsize=16,color="green",shape="box"];842[label="compare0 EQ LT otherwise",fontsize=16,color="black",shape="box"];842 -> 846[label="",style="solid", color="black", weight=3]; 843[label="LT",fontsize=16,color="green",shape="box"];844[label="compare0 GT LT otherwise",fontsize=16,color="black",shape="box"];844 -> 847[label="",style="solid", color="black", weight=3]; 845[label="compare0 GT EQ otherwise",fontsize=16,color="black",shape="box"];845 -> 848[label="",style="solid", color="black", weight=3]; 741[label="vz3500",fontsize=16,color="green",shape="box"];742[label="vz35100",fontsize=16,color="green",shape="box"];743[label="vz3500",fontsize=16,color="green",shape="box"];744[label="vz35100",fontsize=16,color="green",shape="box"];745[label="vz3500",fontsize=16,color="green",shape="box"];746[label="vz35100",fontsize=16,color="green",shape="box"];747[label="vz3500",fontsize=16,color="green",shape="box"];748[label="vz35100",fontsize=16,color="green",shape="box"];749[label="vz35100",fontsize=16,color="green",shape="box"];750[label="vz3500",fontsize=16,color="green",shape="box"];751[label="vz3500",fontsize=16,color="green",shape="box"];752[label="vz35100",fontsize=16,color="green",shape="box"];753[label="vz3500",fontsize=16,color="green",shape="box"];754[label="vz35100",fontsize=16,color="green",shape="box"];755[label="vz3500",fontsize=16,color="green",shape="box"];756[label="vz35100",fontsize=16,color="green",shape="box"];757[label="vz3500",fontsize=16,color="green",shape="box"];758[label="vz35100",fontsize=16,color="green",shape="box"];759[label="vz3500",fontsize=16,color="green",shape="box"];760[label="vz35100",fontsize=16,color="green",shape="box"];761[label="vz3500",fontsize=16,color="green",shape="box"];762[label="vz35100",fontsize=16,color="green",shape="box"];763[label="vz3500",fontsize=16,color="green",shape="box"];764[label="vz35100",fontsize=16,color="green",shape="box"];765[label="vz3500",fontsize=16,color="green",shape="box"];766[label="vz35100",fontsize=16,color="green",shape="box"];767[label="vz3500",fontsize=16,color="green",shape="box"];768[label="vz35100",fontsize=16,color="green",shape="box"];775[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];775 -> 803[label="",style="solid", color="black", weight=3]; 776[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];776 -> 804[label="",style="solid", color="black", weight=3]; 777[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];777 -> 805[label="",style="solid", color="black", weight=3]; 778[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];778 -> 806[label="",style="solid", color="black", weight=3]; 779[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];779 -> 807[label="",style="solid", color="black", weight=3]; 780[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];780 -> 808[label="",style="solid", color="black", weight=3]; 781[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];781 -> 809[label="",style="solid", color="black", weight=3]; 782[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];782 -> 810[label="",style="solid", color="black", weight=3]; 783[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];783 -> 811[label="",style="solid", color="black", weight=3]; 784[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];784 -> 812[label="",style="solid", color="black", weight=3]; 785[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];785 -> 813[label="",style="solid", color="black", weight=3]; 786[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];786 -> 814[label="",style="solid", color="black", weight=3]; 787[label="compare2 vz340 vz3500 (vz340 == vz3500)",fontsize=16,color="black",shape="box"];787 -> 815[label="",style="solid", color="black", weight=3]; 846[label="compare0 EQ LT True",fontsize=16,color="black",shape="box"];846 -> 849[label="",style="solid", color="black", weight=3]; 847[label="compare0 GT LT True",fontsize=16,color="black",shape="box"];847 -> 850[label="",style="solid", color="black", weight=3]; 848[label="compare0 GT EQ True",fontsize=16,color="black",shape="box"];848 -> 851[label="",style="solid", color="black", weight=3]; 803[label="error []",fontsize=16,color="red",shape="box"];804[label="error []",fontsize=16,color="red",shape="box"];805[label="error []",fontsize=16,color="red",shape="box"];806[label="error []",fontsize=16,color="red",shape="box"];807[label="error []",fontsize=16,color="red",shape="box"];808[label="error []",fontsize=16,color="red",shape="box"];809[label="error []",fontsize=16,color="red",shape="box"];810[label="error []",fontsize=16,color="red",shape="box"];811[label="error []",fontsize=16,color="red",shape="box"];812[label="error []",fontsize=16,color="red",shape="box"];813[label="error []",fontsize=16,color="red",shape="box"];814[label="error []",fontsize=16,color="red",shape="box"];815[label="error []",fontsize=16,color="red",shape="box"];849[label="GT",fontsize=16,color="green",shape="box"];850[label="GT",fontsize=16,color="green",shape="box"];851[label="GT",fontsize=16,color="green",shape="box"];} ---------------------------------------- (8) Complex Obligation (AND) ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge_pairs(:(vz35110, :(vz351110, vz351111)), ba) -> new_merge_pairs(vz351111, ba) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (10) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_merge_pairs(:(vz35110, :(vz351110, vz351111)), ba) -> new_merge_pairs(vz351111, ba) The graph contains the following edges 1 > 1, 2 >= 2 ---------------------------------------- (11) YES ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: new_mergesort'(vz34, :(vz350, []), ba) -> new_mergesort'(new_merge2(vz34, vz350, ba), [], ba) new_mergesort'(vz34, :(vz350, :(vz3510, vz3511)), ba) -> new_mergesort'(new_merge1(vz34, vz350, vz3510, ba), new_merge_pairs0(vz3511, ba), ba) The TRS R consists of the following rules: new_compare9(vz340, vz3500, ca) -> error([]) new_compare(vz340, vz3500, ty_Ordering) -> new_compare6(vz340, vz3500) new_compare14(vz3500, vz35100, ty_Double) -> new_compare12(vz3500, vz35100) new_compare4(vz340, vz3500) -> error([]) new_compare11(vz340, vz3500) -> error([]) new_compare14(vz3500, vz35100, ty_@0) -> new_compare10(vz3500, vz35100) new_compare13(vz340, vz3500, cb, cc) -> error([]) new_compare6(GT, GT) -> EQ new_compare(vz340, vz3500, app(ty_[], bh)) -> new_compare5(vz340, vz3500, bh) new_compare(vz340, vz3500, app(app(ty_@2, bb), bc)) -> new_compare0(vz340, vz3500, bb, bc) new_compare6(EQ, GT) -> LT new_compare6(EQ, EQ) -> EQ new_merge_pairs0(:(vz35110, []), ba) -> :(vz35110, []) new_compare14(vz3500, vz35100, app(ty_Ratio, bg)) -> new_compare3(vz3500, vz35100, bg) new_compare(vz340, vz3500, app(ty_Maybe, ca)) -> new_compare9(vz340, vz3500, ca) new_merge1(vz34, :(vz3500, vz3501), :(vz35100, vz35101), ba) -> new_merge2(vz34, new_merge00(vz35100, vz3500, vz3501, vz35101, new_compare14(vz3500, vz35100, ba), ba), ba) new_compare14(vz3500, vz35100, ty_Bool) -> new_compare7(vz3500, vz35100) new_compare8(vz340, vz3500) -> error([]) new_compare5(vz340, vz3500, bh) -> error([]) new_compare6(LT, EQ) -> LT new_compare12(vz340, vz3500) -> error([]) new_merge2([], :(vz3500, vz3501), ba) -> :(vz3500, vz3501) new_compare0(vz340, vz3500, bb, bc) -> error([]) new_compare14(vz3500, vz35100, ty_Float) -> new_compare11(vz3500, vz35100) new_compare14(vz3500, vz35100, ty_Ordering) -> new_compare6(vz3500, vz35100) new_compare6(LT, LT) -> EQ new_compare(vz340, vz3500, ty_Integer) -> new_compare8(vz340, vz3500) new_merge_pairs0(:(vz35110, :(vz351110, vz351111)), ba) -> :(new_merge2(vz35110, vz351110, ba), new_merge_pairs0(vz351111, ba)) new_compare(vz340, vz3500, ty_Int) -> new_compare2(vz340, vz3500) new_compare(vz340, vz3500, ty_Char) -> new_compare4(vz340, vz3500) new_merge00(vz44, vz45, vz46, vz47, LT, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) new_compare7(vz340, vz3500) -> error([]) new_compare14(vz3500, vz35100, app(app(ty_@2, bb), bc)) -> new_compare0(vz3500, vz35100, bb, bc) new_compare(vz340, vz3500, ty_Bool) -> new_compare7(vz340, vz3500) new_compare14(vz3500, vz35100, ty_Int) -> new_compare2(vz3500, vz35100) new_merge2(:(vz340, vz341), :(vz3500, vz3501), ba) -> new_merge00(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, ba), ba) new_compare14(vz3500, vz35100, ty_Integer) -> new_compare8(vz3500, vz35100) new_compare6(GT, LT) -> GT new_compare6(GT, EQ) -> GT new_merge2(vz34, [], ba) -> vz34 new_compare6(EQ, LT) -> GT new_compare(vz340, vz3500, ty_@0) -> new_compare10(vz340, vz3500) new_merge_pairs0([], ba) -> [] new_merge1(vz34, [], :(vz35100, vz35101), ba) -> new_merge2(vz34, :(vz35100, vz35101), ba) new_compare2(vz340, vz3500) -> error([]) new_compare1(vz340, vz3500, bd, be, bf) -> error([]) new_compare3(vz340, vz3500, bg) -> error([]) new_merge00(vz44, vz45, vz46, vz47, GT, cd) -> :(vz44, new_merge2(:(vz45, vz46), vz47, cd)) new_compare(vz340, vz3500, app(app(ty_Either, cb), cc)) -> new_compare13(vz340, vz3500, cb, cc) new_compare(vz340, vz3500, app(app(app(ty_@3, bd), be), bf)) -> new_compare1(vz340, vz3500, bd, be, bf) new_compare14(vz3500, vz35100, ty_Char) -> new_compare4(vz3500, vz35100) new_merge00(vz44, vz45, vz46, vz47, EQ, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) new_compare10(vz340, vz3500) -> error([]) new_compare6(LT, GT) -> LT new_compare(vz340, vz3500, ty_Float) -> new_compare11(vz340, vz3500) new_compare14(vz3500, vz35100, app(ty_[], bh)) -> new_compare5(vz3500, vz35100, bh) new_compare(vz340, vz3500, ty_Double) -> new_compare12(vz340, vz3500) new_compare14(vz3500, vz35100, app(app(app(ty_@3, bd), be), bf)) -> new_compare1(vz3500, vz35100, bd, be, bf) new_compare14(vz3500, vz35100, app(ty_Maybe, ca)) -> new_compare9(vz3500, vz35100, ca) new_compare14(vz3500, vz35100, app(app(ty_Either, cb), cc)) -> new_compare13(vz3500, vz35100, cb, cc) new_compare(vz340, vz3500, app(ty_Ratio, bg)) -> new_compare3(vz340, vz3500, bg) new_merge1(vz34, vz350, [], ba) -> new_merge2(vz34, vz350, ba) The set Q consists of the following terms: new_compare0(x0, x1, x2, x3) new_compare14(x0, x1, ty_Double) new_merge1(x0, :(x1, x2), :(x3, x4), x5) new_compare13(x0, x1, x2, x3) new_compare10(x0, x1) new_compare14(x0, x1, app(ty_Maybe, x2)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare14(x0, x1, ty_Bool) new_merge2([], :(x0, x1), x2) new_compare11(x0, x1) new_compare14(x0, x1, ty_@0) new_merge_pairs0(:(x0, :(x1, x2)), x3) new_compare(x0, x1, ty_Bool) new_compare14(x0, x1, ty_Char) new_merge00(x0, x1, x2, x3, EQ, x4) new_compare9(x0, x1, x2) new_compare14(x0, x1, app(ty_Ratio, x2)) new_merge1(x0, [], :(x1, x2), x3) new_compare14(x0, x1, ty_Ordering) new_compare7(x0, x1) new_merge2(x0, [], x1) new_compare(x0, x1, ty_Int) new_merge00(x0, x1, x2, x3, GT, x4) new_merge1(x0, x1, [], x2) new_compare3(x0, x1, x2) new_compare14(x0, x1, app(app(ty_@2, x2), x3)) new_compare6(GT, LT) new_compare6(LT, GT) new_compare4(x0, x1) new_compare14(x0, x1, ty_Int) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) new_compare6(EQ, GT) new_compare6(GT, EQ) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare5(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Integer) new_compare6(EQ, EQ) new_compare1(x0, x1, x2, x3, x4) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare12(x0, x1) new_compare14(x0, x1, app(app(ty_Either, x2), x3)) new_compare6(LT, LT) new_compare(x0, x1, app(ty_[], x2)) new_compare6(LT, EQ) new_compare6(EQ, LT) new_compare14(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare8(x0, x1) new_compare6(GT, GT) new_compare(x0, x1, ty_Char) new_merge_pairs0(:(x0, []), x1) new_compare14(x0, x1, ty_Float) new_merge_pairs0([], x0) new_merge2(:(x0, x1), :(x2, x3), x4) new_compare(x0, x1, ty_Double) new_compare14(x0, x1, ty_Integer) new_merge00(x0, x1, x2, x3, LT, x4) new_compare14(x0, x1, app(ty_[], x2)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (14) Obligation: Q DP problem: The TRS P consists of the following rules: new_mergesort'(vz34, :(vz350, :(vz3510, vz3511)), ba) -> new_mergesort'(new_merge1(vz34, vz350, vz3510, ba), new_merge_pairs0(vz3511, ba), ba) The TRS R consists of the following rules: new_compare9(vz340, vz3500, ca) -> error([]) new_compare(vz340, vz3500, ty_Ordering) -> new_compare6(vz340, vz3500) new_compare14(vz3500, vz35100, ty_Double) -> new_compare12(vz3500, vz35100) new_compare4(vz340, vz3500) -> error([]) new_compare11(vz340, vz3500) -> error([]) new_compare14(vz3500, vz35100, ty_@0) -> new_compare10(vz3500, vz35100) new_compare13(vz340, vz3500, cb, cc) -> error([]) new_compare6(GT, GT) -> EQ new_compare(vz340, vz3500, app(ty_[], bh)) -> new_compare5(vz340, vz3500, bh) new_compare(vz340, vz3500, app(app(ty_@2, bb), bc)) -> new_compare0(vz340, vz3500, bb, bc) new_compare6(EQ, GT) -> LT new_compare6(EQ, EQ) -> EQ new_merge_pairs0(:(vz35110, []), ba) -> :(vz35110, []) new_compare14(vz3500, vz35100, app(ty_Ratio, bg)) -> new_compare3(vz3500, vz35100, bg) new_compare(vz340, vz3500, app(ty_Maybe, ca)) -> new_compare9(vz340, vz3500, ca) new_merge1(vz34, :(vz3500, vz3501), :(vz35100, vz35101), ba) -> new_merge2(vz34, new_merge00(vz35100, vz3500, vz3501, vz35101, new_compare14(vz3500, vz35100, ba), ba), ba) new_compare14(vz3500, vz35100, ty_Bool) -> new_compare7(vz3500, vz35100) new_compare8(vz340, vz3500) -> error([]) new_compare5(vz340, vz3500, bh) -> error([]) new_compare6(LT, EQ) -> LT new_compare12(vz340, vz3500) -> error([]) new_merge2([], :(vz3500, vz3501), ba) -> :(vz3500, vz3501) new_compare0(vz340, vz3500, bb, bc) -> error([]) new_compare14(vz3500, vz35100, ty_Float) -> new_compare11(vz3500, vz35100) new_compare14(vz3500, vz35100, ty_Ordering) -> new_compare6(vz3500, vz35100) new_compare6(LT, LT) -> EQ new_compare(vz340, vz3500, ty_Integer) -> new_compare8(vz340, vz3500) new_merge_pairs0(:(vz35110, :(vz351110, vz351111)), ba) -> :(new_merge2(vz35110, vz351110, ba), new_merge_pairs0(vz351111, ba)) new_compare(vz340, vz3500, ty_Int) -> new_compare2(vz340, vz3500) new_compare(vz340, vz3500, ty_Char) -> new_compare4(vz340, vz3500) new_merge00(vz44, vz45, vz46, vz47, LT, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) new_compare7(vz340, vz3500) -> error([]) new_compare14(vz3500, vz35100, app(app(ty_@2, bb), bc)) -> new_compare0(vz3500, vz35100, bb, bc) new_compare(vz340, vz3500, ty_Bool) -> new_compare7(vz340, vz3500) new_compare14(vz3500, vz35100, ty_Int) -> new_compare2(vz3500, vz35100) new_merge2(:(vz340, vz341), :(vz3500, vz3501), ba) -> new_merge00(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, ba), ba) new_compare14(vz3500, vz35100, ty_Integer) -> new_compare8(vz3500, vz35100) new_compare6(GT, LT) -> GT new_compare6(GT, EQ) -> GT new_merge2(vz34, [], ba) -> vz34 new_compare6(EQ, LT) -> GT new_compare(vz340, vz3500, ty_@0) -> new_compare10(vz340, vz3500) new_merge_pairs0([], ba) -> [] new_merge1(vz34, [], :(vz35100, vz35101), ba) -> new_merge2(vz34, :(vz35100, vz35101), ba) new_compare2(vz340, vz3500) -> error([]) new_compare1(vz340, vz3500, bd, be, bf) -> error([]) new_compare3(vz340, vz3500, bg) -> error([]) new_merge00(vz44, vz45, vz46, vz47, GT, cd) -> :(vz44, new_merge2(:(vz45, vz46), vz47, cd)) new_compare(vz340, vz3500, app(app(ty_Either, cb), cc)) -> new_compare13(vz340, vz3500, cb, cc) new_compare(vz340, vz3500, app(app(app(ty_@3, bd), be), bf)) -> new_compare1(vz340, vz3500, bd, be, bf) new_compare14(vz3500, vz35100, ty_Char) -> new_compare4(vz3500, vz35100) new_merge00(vz44, vz45, vz46, vz47, EQ, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) new_compare10(vz340, vz3500) -> error([]) new_compare6(LT, GT) -> LT new_compare(vz340, vz3500, ty_Float) -> new_compare11(vz340, vz3500) new_compare14(vz3500, vz35100, app(ty_[], bh)) -> new_compare5(vz3500, vz35100, bh) new_compare(vz340, vz3500, ty_Double) -> new_compare12(vz340, vz3500) new_compare14(vz3500, vz35100, app(app(app(ty_@3, bd), be), bf)) -> new_compare1(vz3500, vz35100, bd, be, bf) new_compare14(vz3500, vz35100, app(ty_Maybe, ca)) -> new_compare9(vz3500, vz35100, ca) new_compare14(vz3500, vz35100, app(app(ty_Either, cb), cc)) -> new_compare13(vz3500, vz35100, cb, cc) new_compare(vz340, vz3500, app(ty_Ratio, bg)) -> new_compare3(vz340, vz3500, bg) new_merge1(vz34, vz350, [], ba) -> new_merge2(vz34, vz350, ba) The set Q consists of the following terms: new_compare0(x0, x1, x2, x3) new_compare14(x0, x1, ty_Double) new_merge1(x0, :(x1, x2), :(x3, x4), x5) new_compare13(x0, x1, x2, x3) new_compare10(x0, x1) new_compare14(x0, x1, app(ty_Maybe, x2)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare14(x0, x1, ty_Bool) new_merge2([], :(x0, x1), x2) new_compare11(x0, x1) new_compare14(x0, x1, ty_@0) new_merge_pairs0(:(x0, :(x1, x2)), x3) new_compare(x0, x1, ty_Bool) new_compare14(x0, x1, ty_Char) new_merge00(x0, x1, x2, x3, EQ, x4) new_compare9(x0, x1, x2) new_compare14(x0, x1, app(ty_Ratio, x2)) new_merge1(x0, [], :(x1, x2), x3) new_compare14(x0, x1, ty_Ordering) new_compare7(x0, x1) new_merge2(x0, [], x1) new_compare(x0, x1, ty_Int) new_merge00(x0, x1, x2, x3, GT, x4) new_merge1(x0, x1, [], x2) new_compare3(x0, x1, x2) new_compare14(x0, x1, app(app(ty_@2, x2), x3)) new_compare6(GT, LT) new_compare6(LT, GT) new_compare4(x0, x1) new_compare14(x0, x1, ty_Int) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) new_compare6(EQ, GT) new_compare6(GT, EQ) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare5(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Integer) new_compare6(EQ, EQ) new_compare1(x0, x1, x2, x3, x4) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare12(x0, x1) new_compare14(x0, x1, app(app(ty_Either, x2), x3)) new_compare6(LT, LT) new_compare(x0, x1, app(ty_[], x2)) new_compare6(LT, EQ) new_compare6(EQ, LT) new_compare14(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare8(x0, x1) new_compare6(GT, GT) new_compare(x0, x1, ty_Char) new_merge_pairs0(:(x0, []), x1) new_compare14(x0, x1, ty_Float) new_merge_pairs0([], x0) new_merge2(:(x0, x1), :(x2, x3), x4) new_compare(x0, x1, ty_Double) new_compare14(x0, x1, ty_Integer) new_merge00(x0, x1, x2, x3, LT, x4) new_compare14(x0, x1, app(ty_[], x2)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (15) QDPSizeChangeProof (EQUIVALENT) We used the following order together with the size-change analysis [AAECC05] to show that there are no infinite chains for this DP problem. Order:Polynomial interpretation [POLO]: POL(:(x_1, x_2)) = 1 + x_2 POL([]) = 0 POL(new_merge2(x_1, x_2, x_3)) = 0 POL(new_merge_pairs0(x_1, x_2)) = x_1 From the DPs we obtained the following set of size-change graphs: *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}) The graph contains the following edges 2 > 2, 3 >= 3 We oriented the following set of usable rules [AAECC05,FROCOS05]. new_merge_pairs0([], ba) -> [] new_merge_pairs0(:(vz35110, []), ba) -> :(vz35110, []) new_merge_pairs0(:(vz35110, :(vz351110, vz351111)), ba) -> :(new_merge2(vz35110, vz351110, ba), new_merge_pairs0(vz351111, ba)) ---------------------------------------- (16) YES ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: new_map(:(vz3110, vz3111)) -> new_map(vz3111) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (18) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_map(:(vz3110, vz3111)) -> new_map(vz3111) The graph contains the following edges 1 > 1 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge(:(vz340, vz341), :(vz3500, vz3501), bb) -> new_merge0(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, bb), bb) The TRS R consists of the following rules: new_compare(vz340, vz3500, ty_Ordering) -> new_compare6(vz340, vz3500) new_compare9(vz340, vz3500, cb) -> error([]) new_compare(vz340, vz3500, ty_Bool) -> new_compare7(vz340, vz3500) new_compare4(vz340, vz3500) -> error([]) new_compare11(vz340, vz3500) -> error([]) new_compare6(GT, LT) -> GT new_compare13(vz340, vz3500, cc, cd) -> error([]) new_compare(vz340, vz3500, app(ty_[], ca)) -> new_compare5(vz340, vz3500, ca) new_compare6(GT, EQ) -> GT new_compare6(GT, GT) -> EQ new_compare6(EQ, LT) -> GT new_compare(vz340, vz3500, app(app(ty_@2, bc), bd)) -> new_compare0(vz340, vz3500, bc, bd) new_compare(vz340, vz3500, ty_@0) -> new_compare10(vz340, vz3500) new_compare6(EQ, GT) -> LT new_compare6(EQ, EQ) -> EQ new_compare2(vz340, vz3500) -> error([]) new_compare1(vz340, vz3500, be, bf, bg) -> error([]) new_compare(vz340, vz3500, app(ty_Maybe, cb)) -> new_compare9(vz340, vz3500, cb) new_compare3(vz340, vz3500, bh) -> error([]) new_compare(vz340, vz3500, app(app(ty_Either, cc), cd)) -> new_compare13(vz340, vz3500, cc, cd) new_compare8(vz340, vz3500) -> error([]) new_compare5(vz340, vz3500, ca) -> error([]) new_compare6(LT, EQ) -> LT new_compare(vz340, vz3500, app(app(app(ty_@3, be), bf), bg)) -> new_compare1(vz340, vz3500, be, bf, bg) new_compare12(vz340, vz3500) -> error([]) new_compare10(vz340, vz3500) -> error([]) new_compare0(vz340, vz3500, bc, bd) -> error([]) new_compare(vz340, vz3500, ty_Float) -> new_compare11(vz340, vz3500) new_compare6(LT, GT) -> LT new_compare(vz340, vz3500, ty_Double) -> new_compare12(vz340, vz3500) new_compare6(LT, LT) -> EQ new_compare(vz340, vz3500, ty_Integer) -> new_compare8(vz340, vz3500) new_compare(vz340, vz3500, ty_Int) -> new_compare2(vz340, vz3500) new_compare(vz340, vz3500, ty_Char) -> new_compare4(vz340, vz3500) new_compare(vz340, vz3500, app(ty_Ratio, bh)) -> new_compare3(vz340, vz3500, bh) new_compare7(vz340, vz3500) -> error([]) The set Q consists of the following terms: new_compare6(GT, EQ) new_compare6(EQ, GT) new_compare10(x0, x1) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare3(x0, x1, x2) new_compare9(x0, x1, x2) new_compare11(x0, x1) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare(x0, x1, ty_Integer) new_compare6(EQ, EQ) new_compare(x0, x1, ty_Bool) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare13(x0, x1, x2, x3) new_compare12(x0, x1) new_compare6(LT, LT) new_compare6(EQ, LT) new_compare6(LT, EQ) new_compare7(x0, x1) new_compare0(x0, x1, x2, x3) new_compare8(x0, x1) new_compare(x0, x1, ty_Int) new_compare6(GT, GT) new_compare5(x0, x1, x2) new_compare(x0, x1, ty_Char) new_compare(x0, x1, app(ty_[], x2)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare6(GT, LT) new_compare6(LT, GT) new_compare4(x0, x1) new_compare1(x0, x1, x2, x3, x4) new_compare(x0, x1, ty_Double) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (21) TransformationProof (EQUIVALENT) 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]: (new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Ordering),new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Ordering)) (new_merge(:(x0, y1), :(x1, y3), ty_Bool) -> new_merge0(x1, x0, y1, y3, new_compare7(x0, x1), ty_Bool),new_merge(:(x0, y1), :(x1, y3), ty_Bool) -> new_merge0(x1, x0, y1, y3, new_compare7(x0, x1), ty_Bool)) (new_merge(:(x0, y1), :(x1, y3), app(ty_[], x2)) -> new_merge0(x1, x0, y1, y3, new_compare5(x0, x1, x2), app(ty_[], x2)),new_merge(:(x0, y1), :(x1, y3), app(ty_[], x2)) -> new_merge0(x1, x0, y1, y3, new_compare5(x0, x1, x2), app(ty_[], x2))) (new_merge(:(x0, y1), :(x1, y3), app(app(ty_@2, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare0(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_compare0(x0, x1, x2, x3), app(app(ty_@2, x2), x3))) (new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare10(x0, x1), ty_@0),new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare10(x0, x1), ty_@0)) (new_merge(:(x0, y1), :(x1, y3), app(ty_Maybe, x2)) -> new_merge0(x1, x0, y1, y3, new_compare9(x0, x1, x2), app(ty_Maybe, x2)),new_merge(:(x0, y1), :(x1, y3), app(ty_Maybe, x2)) -> new_merge0(x1, x0, y1, y3, new_compare9(x0, x1, x2), app(ty_Maybe, x2))) (new_merge(:(x0, y1), :(x1, y3), app(app(ty_Either, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare13(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_compare13(x0, x1, x2, x3), app(app(ty_Either, x2), x3))) (new_merge(:(x0, y1), :(x1, y3), app(app(app(ty_@3, x2), x3), x4)) -> new_merge0(x1, x0, y1, y3, new_compare1(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_compare1(x0, x1, x2, x3, x4), app(app(app(ty_@3, x2), x3), x4))) (new_merge(:(x0, y1), :(x1, y3), ty_Float) -> new_merge0(x1, x0, y1, y3, new_compare11(x0, x1), ty_Float),new_merge(:(x0, y1), :(x1, y3), ty_Float) -> new_merge0(x1, x0, y1, y3, new_compare11(x0, x1), ty_Float)) (new_merge(:(x0, y1), :(x1, y3), ty_Double) -> new_merge0(x1, x0, y1, y3, new_compare12(x0, x1), ty_Double),new_merge(:(x0, y1), :(x1, y3), ty_Double) -> new_merge0(x1, x0, y1, y3, new_compare12(x0, x1), ty_Double)) (new_merge(:(x0, y1), :(x1, y3), ty_Integer) -> new_merge0(x1, x0, y1, y3, new_compare8(x0, x1), ty_Integer),new_merge(:(x0, y1), :(x1, y3), ty_Integer) -> new_merge0(x1, x0, y1, y3, new_compare8(x0, x1), ty_Integer)) (new_merge(:(x0, y1), :(x1, y3), ty_Int) -> new_merge0(x1, x0, y1, y3, new_compare2(x0, x1), ty_Int),new_merge(:(x0, y1), :(x1, y3), ty_Int) -> new_merge0(x1, x0, y1, y3, new_compare2(x0, x1), ty_Int)) (new_merge(:(x0, y1), :(x1, y3), ty_Char) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_Char),new_merge(:(x0, y1), :(x1, y3), ty_Char) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_Char)) (new_merge(:(x0, y1), :(x1, y3), app(ty_Ratio, x2)) -> new_merge0(x1, x0, y1, y3, new_compare3(x0, x1, x2), app(ty_Ratio, x2)),new_merge(:(x0, y1), :(x1, y3), app(ty_Ratio, x2)) -> new_merge0(x1, x0, y1, y3, new_compare3(x0, x1, x2), app(ty_Ratio, x2))) ---------------------------------------- (22) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Ordering) new_merge(:(x0, y1), :(x1, y3), ty_Bool) -> new_merge0(x1, x0, y1, y3, new_compare7(x0, x1), ty_Bool) new_merge(:(x0, y1), :(x1, y3), app(ty_[], x2)) -> new_merge0(x1, x0, y1, y3, new_compare5(x0, x1, x2), app(ty_[], x2)) new_merge(:(x0, y1), :(x1, y3), app(app(ty_@2, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare0(x0, x1, x2, x3), app(app(ty_@2, x2), x3)) new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare10(x0, x1), ty_@0) new_merge(:(x0, y1), :(x1, y3), app(ty_Maybe, x2)) -> new_merge0(x1, x0, y1, y3, new_compare9(x0, x1, x2), app(ty_Maybe, x2)) new_merge(:(x0, y1), :(x1, y3), app(app(ty_Either, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare13(x0, x1, x2, x3), app(app(ty_Either, x2), x3)) new_merge(:(x0, y1), :(x1, y3), app(app(app(ty_@3, x2), x3), x4)) -> new_merge0(x1, x0, y1, y3, new_compare1(x0, x1, x2, x3, x4), app(app(app(ty_@3, x2), x3), x4)) new_merge(:(x0, y1), :(x1, y3), ty_Float) -> new_merge0(x1, x0, y1, y3, new_compare11(x0, x1), ty_Float) new_merge(:(x0, y1), :(x1, y3), ty_Double) -> new_merge0(x1, x0, y1, y3, new_compare12(x0, x1), ty_Double) new_merge(:(x0, y1), :(x1, y3), ty_Integer) -> new_merge0(x1, x0, y1, y3, new_compare8(x0, x1), ty_Integer) new_merge(:(x0, y1), :(x1, y3), ty_Int) -> new_merge0(x1, x0, y1, y3, new_compare2(x0, x1), ty_Int) new_merge(:(x0, y1), :(x1, y3), ty_Char) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_Char) new_merge(:(x0, y1), :(x1, y3), app(ty_Ratio, x2)) -> new_merge0(x1, x0, y1, y3, new_compare3(x0, x1, x2), app(ty_Ratio, x2)) The TRS R consists of the following rules: new_compare(vz340, vz3500, ty_Ordering) -> new_compare6(vz340, vz3500) new_compare9(vz340, vz3500, cb) -> error([]) new_compare(vz340, vz3500, ty_Bool) -> new_compare7(vz340, vz3500) new_compare4(vz340, vz3500) -> error([]) new_compare11(vz340, vz3500) -> error([]) new_compare6(GT, LT) -> GT new_compare13(vz340, vz3500, cc, cd) -> error([]) new_compare(vz340, vz3500, app(ty_[], ca)) -> new_compare5(vz340, vz3500, ca) new_compare6(GT, EQ) -> GT new_compare6(GT, GT) -> EQ new_compare6(EQ, LT) -> GT new_compare(vz340, vz3500, app(app(ty_@2, bc), bd)) -> new_compare0(vz340, vz3500, bc, bd) new_compare(vz340, vz3500, ty_@0) -> new_compare10(vz340, vz3500) new_compare6(EQ, GT) -> LT new_compare6(EQ, EQ) -> EQ new_compare2(vz340, vz3500) -> error([]) new_compare1(vz340, vz3500, be, bf, bg) -> error([]) new_compare(vz340, vz3500, app(ty_Maybe, cb)) -> new_compare9(vz340, vz3500, cb) new_compare3(vz340, vz3500, bh) -> error([]) new_compare(vz340, vz3500, app(app(ty_Either, cc), cd)) -> new_compare13(vz340, vz3500, cc, cd) new_compare8(vz340, vz3500) -> error([]) new_compare5(vz340, vz3500, ca) -> error([]) new_compare6(LT, EQ) -> LT new_compare(vz340, vz3500, app(app(app(ty_@3, be), bf), bg)) -> new_compare1(vz340, vz3500, be, bf, bg) new_compare12(vz340, vz3500) -> error([]) new_compare10(vz340, vz3500) -> error([]) new_compare0(vz340, vz3500, bc, bd) -> error([]) new_compare(vz340, vz3500, ty_Float) -> new_compare11(vz340, vz3500) new_compare6(LT, GT) -> LT new_compare(vz340, vz3500, ty_Double) -> new_compare12(vz340, vz3500) new_compare6(LT, LT) -> EQ new_compare(vz340, vz3500, ty_Integer) -> new_compare8(vz340, vz3500) new_compare(vz340, vz3500, ty_Int) -> new_compare2(vz340, vz3500) new_compare(vz340, vz3500, ty_Char) -> new_compare4(vz340, vz3500) new_compare(vz340, vz3500, app(ty_Ratio, bh)) -> new_compare3(vz340, vz3500, bh) new_compare7(vz340, vz3500) -> error([]) The set Q consists of the following terms: new_compare6(GT, EQ) new_compare6(EQ, GT) new_compare10(x0, x1) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare3(x0, x1, x2) new_compare9(x0, x1, x2) new_compare11(x0, x1) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare(x0, x1, ty_Integer) new_compare6(EQ, EQ) new_compare(x0, x1, ty_Bool) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare13(x0, x1, x2, x3) new_compare12(x0, x1) new_compare6(LT, LT) new_compare6(EQ, LT) new_compare6(LT, EQ) new_compare7(x0, x1) new_compare0(x0, x1, x2, x3) new_compare8(x0, x1) new_compare(x0, x1, ty_Int) new_compare6(GT, GT) new_compare5(x0, x1, x2) new_compare(x0, x1, ty_Char) new_compare(x0, x1, app(ty_[], x2)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare6(GT, LT) new_compare6(LT, GT) new_compare4(x0, x1) new_compare1(x0, x1, x2, x3, x4) new_compare(x0, x1, ty_Double) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (23) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 13 less nodes. ---------------------------------------- (24) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Ordering) new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) The TRS R consists of the following rules: new_compare(vz340, vz3500, ty_Ordering) -> new_compare6(vz340, vz3500) new_compare9(vz340, vz3500, cb) -> error([]) new_compare(vz340, vz3500, ty_Bool) -> new_compare7(vz340, vz3500) new_compare4(vz340, vz3500) -> error([]) new_compare11(vz340, vz3500) -> error([]) new_compare6(GT, LT) -> GT new_compare13(vz340, vz3500, cc, cd) -> error([]) new_compare(vz340, vz3500, app(ty_[], ca)) -> new_compare5(vz340, vz3500, ca) new_compare6(GT, EQ) -> GT new_compare6(GT, GT) -> EQ new_compare6(EQ, LT) -> GT new_compare(vz340, vz3500, app(app(ty_@2, bc), bd)) -> new_compare0(vz340, vz3500, bc, bd) new_compare(vz340, vz3500, ty_@0) -> new_compare10(vz340, vz3500) new_compare6(EQ, GT) -> LT new_compare6(EQ, EQ) -> EQ new_compare2(vz340, vz3500) -> error([]) new_compare1(vz340, vz3500, be, bf, bg) -> error([]) new_compare(vz340, vz3500, app(ty_Maybe, cb)) -> new_compare9(vz340, vz3500, cb) new_compare3(vz340, vz3500, bh) -> error([]) new_compare(vz340, vz3500, app(app(ty_Either, cc), cd)) -> new_compare13(vz340, vz3500, cc, cd) new_compare8(vz340, vz3500) -> error([]) new_compare5(vz340, vz3500, ca) -> error([]) new_compare6(LT, EQ) -> LT new_compare(vz340, vz3500, app(app(app(ty_@3, be), bf), bg)) -> new_compare1(vz340, vz3500, be, bf, bg) new_compare12(vz340, vz3500) -> error([]) new_compare10(vz340, vz3500) -> error([]) new_compare0(vz340, vz3500, bc, bd) -> error([]) new_compare(vz340, vz3500, ty_Float) -> new_compare11(vz340, vz3500) new_compare6(LT, GT) -> LT new_compare(vz340, vz3500, ty_Double) -> new_compare12(vz340, vz3500) new_compare6(LT, LT) -> EQ new_compare(vz340, vz3500, ty_Integer) -> new_compare8(vz340, vz3500) new_compare(vz340, vz3500, ty_Int) -> new_compare2(vz340, vz3500) new_compare(vz340, vz3500, ty_Char) -> new_compare4(vz340, vz3500) new_compare(vz340, vz3500, app(ty_Ratio, bh)) -> new_compare3(vz340, vz3500, bh) new_compare7(vz340, vz3500) -> error([]) The set Q consists of the following terms: new_compare6(GT, EQ) new_compare6(EQ, GT) new_compare10(x0, x1) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare3(x0, x1, x2) new_compare9(x0, x1, x2) new_compare11(x0, x1) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare(x0, x1, ty_Integer) new_compare6(EQ, EQ) new_compare(x0, x1, ty_Bool) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare13(x0, x1, x2, x3) new_compare12(x0, x1) new_compare6(LT, LT) new_compare6(EQ, LT) new_compare6(LT, EQ) new_compare7(x0, x1) new_compare0(x0, x1, x2, x3) new_compare8(x0, x1) new_compare(x0, x1, ty_Int) new_compare6(GT, GT) new_compare5(x0, x1, x2) new_compare(x0, x1, ty_Char) new_compare(x0, x1, app(ty_[], x2)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare6(GT, LT) new_compare6(LT, GT) new_compare4(x0, x1) new_compare1(x0, x1, x2, x3, x4) new_compare(x0, x1, ty_Double) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (25) UsableRulesProof (EQUIVALENT) 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. ---------------------------------------- (26) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Ordering) new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) The TRS R consists of the following rules: new_compare6(GT, LT) -> GT new_compare6(GT, EQ) -> GT new_compare6(GT, GT) -> EQ new_compare6(EQ, LT) -> GT new_compare6(EQ, GT) -> LT new_compare6(EQ, EQ) -> EQ new_compare6(LT, EQ) -> LT new_compare6(LT, GT) -> LT new_compare6(LT, LT) -> EQ The set Q consists of the following terms: new_compare6(GT, EQ) new_compare6(EQ, GT) new_compare10(x0, x1) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare3(x0, x1, x2) new_compare9(x0, x1, x2) new_compare11(x0, x1) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare(x0, x1, ty_Integer) new_compare6(EQ, EQ) new_compare(x0, x1, ty_Bool) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare13(x0, x1, x2, x3) new_compare12(x0, x1) new_compare6(LT, LT) new_compare6(EQ, LT) new_compare6(LT, EQ) new_compare7(x0, x1) new_compare0(x0, x1, x2, x3) new_compare8(x0, x1) new_compare(x0, x1, ty_Int) new_compare6(GT, GT) new_compare5(x0, x1, x2) new_compare(x0, x1, ty_Char) new_compare(x0, x1, app(ty_[], x2)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare6(GT, LT) new_compare6(LT, GT) new_compare4(x0, x1) new_compare1(x0, x1, x2, x3, x4) new_compare(x0, x1, ty_Double) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (27) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. new_compare10(x0, x1) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare3(x0, x1, x2) new_compare9(x0, x1, x2) new_compare11(x0, x1) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare(x0, x1, ty_Integer) new_compare(x0, x1, ty_Bool) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare13(x0, x1, x2, x3) new_compare12(x0, x1) new_compare7(x0, x1) new_compare0(x0, x1, x2, x3) new_compare8(x0, x1) new_compare(x0, x1, ty_Int) new_compare5(x0, x1, x2) new_compare(x0, x1, ty_Char) new_compare(x0, x1, app(ty_[], x2)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare4(x0, x1) new_compare1(x0, x1, x2, x3, x4) new_compare(x0, x1, ty_Double) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) ---------------------------------------- (28) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Ordering) new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) The TRS R consists of the following rules: new_compare6(GT, LT) -> GT new_compare6(GT, EQ) -> GT new_compare6(GT, GT) -> EQ new_compare6(EQ, LT) -> GT new_compare6(EQ, GT) -> LT new_compare6(EQ, EQ) -> EQ new_compare6(LT, EQ) -> LT new_compare6(LT, GT) -> LT new_compare6(LT, LT) -> EQ The set Q consists of the following terms: new_compare6(GT, EQ) new_compare6(EQ, GT) new_compare6(EQ, EQ) new_compare6(LT, LT) new_compare6(EQ, LT) new_compare6(LT, EQ) new_compare6(GT, GT) new_compare6(GT, LT) new_compare6(LT, GT) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (29) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Ordering) at position [4] we obtained the following new rules [LPAR04]: (new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering),new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering)) (new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering),new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering)) (new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering),new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering)) (new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering),new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering)) (new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering),new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering)) (new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering),new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering)) (new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering),new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering)) (new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering),new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering)) (new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering),new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering)) ---------------------------------------- (30) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering) new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering) new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering) new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering) new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering) The TRS R consists of the following rules: new_compare6(GT, LT) -> GT new_compare6(GT, EQ) -> GT new_compare6(GT, GT) -> EQ new_compare6(EQ, LT) -> GT new_compare6(EQ, GT) -> LT new_compare6(EQ, EQ) -> EQ new_compare6(LT, EQ) -> LT new_compare6(LT, GT) -> LT new_compare6(LT, LT) -> EQ The set Q consists of the following terms: new_compare6(GT, EQ) new_compare6(EQ, GT) new_compare6(EQ, EQ) new_compare6(LT, LT) new_compare6(EQ, LT) new_compare6(LT, EQ) new_compare6(GT, GT) new_compare6(GT, LT) new_compare6(LT, GT) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (31) UsableRulesProof (EQUIVALENT) 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. ---------------------------------------- (32) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering) new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering) new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering) new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering) new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering) R is empty. The set Q consists of the following terms: new_compare6(GT, EQ) new_compare6(EQ, GT) new_compare6(EQ, EQ) new_compare6(LT, LT) new_compare6(EQ, LT) new_compare6(LT, EQ) new_compare6(GT, GT) new_compare6(GT, LT) new_compare6(LT, GT) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (33) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. new_compare6(GT, EQ) new_compare6(EQ, GT) new_compare6(EQ, EQ) new_compare6(LT, LT) new_compare6(EQ, LT) new_compare6(LT, EQ) new_compare6(GT, GT) new_compare6(GT, LT) new_compare6(LT, GT) ---------------------------------------- (34) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering) new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering) new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering) new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering) new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (35) TransformationProof (EQUIVALENT) 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]: (new_merge0(GT, GT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering),new_merge0(GT, GT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering)) (new_merge0(EQ, EQ, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering),new_merge0(EQ, EQ, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering)) (new_merge0(LT, LT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(LT, z1), ty_Ordering),new_merge0(LT, LT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(LT, z1), ty_Ordering)) ---------------------------------------- (36) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering) new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering) new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering) new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering) new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering) new_merge0(GT, GT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) new_merge0(EQ, EQ, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering) new_merge0(LT, LT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(LT, z1), ty_Ordering) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (37) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule new_merge0(vz44, vz45, vz46, vz47, GT, ba) -> new_merge(:(vz45, vz46), vz47, ba) we obtained the following new rules [LPAR04]: (new_merge0(LT, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering),new_merge0(LT, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering)) (new_merge0(EQ, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering),new_merge0(EQ, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering)) (new_merge0(LT, EQ, z0, z1, GT, ty_Ordering) -> new_merge(:(EQ, z0), z1, ty_Ordering),new_merge0(LT, EQ, z0, z1, GT, ty_Ordering) -> new_merge(:(EQ, z0), z1, ty_Ordering)) ---------------------------------------- (38) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering) new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering) new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering) new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering) new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering) new_merge0(GT, GT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) new_merge0(EQ, EQ, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering) new_merge0(LT, LT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(LT, z1), ty_Ordering) new_merge0(LT, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering) new_merge0(EQ, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering) new_merge0(LT, EQ, z0, z1, GT, ty_Ordering) -> new_merge(:(EQ, z0), z1, ty_Ordering) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (39) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule new_merge0(vz44, vz45, vz46, vz47, LT, ba) -> new_merge(vz46, :(vz44, vz47), ba) we obtained the following new rules [LPAR04]: (new_merge0(GT, EQ, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering),new_merge0(GT, EQ, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering)) (new_merge0(EQ, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering),new_merge0(EQ, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering)) (new_merge0(GT, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering),new_merge0(GT, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering)) ---------------------------------------- (40) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering) new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering) new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering) new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering) new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering) new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering) new_merge0(GT, GT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) new_merge0(EQ, EQ, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering) new_merge0(LT, LT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(LT, z1), ty_Ordering) new_merge0(LT, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering) new_merge0(EQ, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering) new_merge0(LT, EQ, z0, z1, GT, ty_Ordering) -> new_merge(:(EQ, z0), z1, ty_Ordering) new_merge0(GT, EQ, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) new_merge0(EQ, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering) new_merge0(GT, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (41) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 5 SCCs. ---------------------------------------- (42) Complex Obligation (AND) ---------------------------------------- (43) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge0(GT, GT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering) new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering) new_merge0(GT, EQ, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering) new_merge0(GT, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (44) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_merge(:(GT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, GT, y1, y3, EQ, ty_Ordering) The graph contains the following edges 1 > 1, 2 > 1, 1 > 2, 2 > 2, 1 > 3, 2 > 4, 3 >= 6 *new_merge0(GT, GT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) The graph contains the following edges 3 >= 1, 6 >= 3 *new_merge0(GT, EQ, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) The graph contains the following edges 3 >= 1, 6 >= 3 *new_merge0(GT, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(GT, z1), ty_Ordering) The graph contains the following edges 3 >= 1, 6 >= 3 *new_merge(:(EQ, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, EQ, y1, y3, LT, ty_Ordering) The graph contains the following edges 2 > 1, 1 > 2, 1 > 3, 2 > 4, 3 >= 6 *new_merge(:(LT, y1), :(GT, y3), ty_Ordering) -> new_merge0(GT, LT, y1, y3, LT, ty_Ordering) The graph contains the following edges 2 > 1, 1 > 2, 1 > 3, 2 > 4, 1 > 5, 3 >= 6 ---------------------------------------- (45) YES ---------------------------------------- (46) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge0(LT, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering) new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering) new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering) new_merge0(EQ, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (47) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_merge(:(GT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, GT, y1, y3, GT, ty_Ordering) The graph contains the following edges 2 > 1, 1 > 2, 1 > 3, 2 > 4, 1 > 5, 3 >= 6 *new_merge(:(GT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, GT, y1, y3, GT, ty_Ordering) The graph contains the following edges 2 > 1, 1 > 2, 1 > 3, 2 > 4, 1 > 5, 3 >= 6 *new_merge0(LT, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering) The graph contains the following edges 4 >= 2, 6 >= 3 *new_merge0(EQ, GT, z0, z1, GT, ty_Ordering) -> new_merge(:(GT, z0), z1, ty_Ordering) The graph contains the following edges 4 >= 2, 6 >= 3 ---------------------------------------- (48) YES ---------------------------------------- (49) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering) new_merge0(EQ, EQ, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering) new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering) new_merge0(EQ, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (50) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_merge0(EQ, EQ, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering) The graph contains the following edges 3 >= 1, 6 >= 3 *new_merge0(EQ, LT, z0, z1, LT, ty_Ordering) -> new_merge(z0, :(EQ, z1), ty_Ordering) The graph contains the following edges 3 >= 1, 6 >= 3 *new_merge(:(EQ, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, EQ, y1, y3, EQ, ty_Ordering) The graph contains the following edges 1 > 1, 2 > 1, 1 > 2, 2 > 2, 1 > 3, 2 > 4, 1 > 5, 2 > 5, 3 >= 6 *new_merge(:(LT, y1), :(EQ, y3), ty_Ordering) -> new_merge0(EQ, LT, y1, y3, LT, ty_Ordering) The graph contains the following edges 2 > 1, 1 > 2, 1 > 3, 2 > 4, 1 > 5, 3 >= 6 ---------------------------------------- (51) YES ---------------------------------------- (52) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering) new_merge0(LT, EQ, z0, z1, GT, ty_Ordering) -> new_merge(:(EQ, z0), z1, ty_Ordering) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (53) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_merge0(LT, EQ, z0, z1, GT, ty_Ordering) -> new_merge(:(EQ, z0), z1, ty_Ordering) The graph contains the following edges 4 >= 2, 6 >= 3 *new_merge(:(EQ, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, EQ, y1, y3, GT, ty_Ordering) The graph contains the following edges 2 > 1, 1 > 2, 1 > 3, 2 > 4, 3 >= 6 ---------------------------------------- (54) YES ---------------------------------------- (55) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering) new_merge0(LT, LT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(LT, z1), ty_Ordering) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (56) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_merge0(LT, LT, z0, z1, EQ, ty_Ordering) -> new_merge(z0, :(LT, z1), ty_Ordering) The graph contains the following edges 3 >= 1, 6 >= 3 *new_merge(:(LT, y1), :(LT, y3), ty_Ordering) -> new_merge0(LT, LT, y1, y3, EQ, ty_Ordering) The graph contains the following edges 1 > 1, 2 > 1, 1 > 2, 2 > 2, 1 > 3, 2 > 4, 3 >= 6 ---------------------------------------- (57) YES