/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: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 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, 24 ms] (6) HASKELL (7) Narrow [SOUND, 0 ms] (8) AND (9) QDP (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] (11) YES (12) QDP (13) QDPSizeChangeProof [EQUIVALENT, 0 ms] (14) YES (15) QDP (16) DependencyGraphProof [EQUIVALENT, 0 ms] (17) QDP (18) TransformationProof [EQUIVALENT, 0 ms] (19) QDP (20) DependencyGraphProof [EQUIVALENT, 0 ms] (21) QDP (22) UsableRulesProof [EQUIVALENT, 0 ms] (23) QDP (24) QReductionProof [EQUIVALENT, 0 ms] (25) QDP (26) TransformationProof [EQUIVALENT, 0 ms] (27) QDP (28) UsableRulesProof [EQUIVALENT, 0 ms] (29) QDP (30) QReductionProof [EQUIVALENT, 0 ms] (31) QDP (32) TransformationProof [EQUIVALENT, 0 ms] (33) QDP (34) QDPSizeChangeProof [EQUIVALENT, 0 ms] (35) YES (36) QDP (37) DependencyGraphProof [EQUIVALENT, 0 ms] (38) QDP (39) QDPSizeChangeProof [EQUIVALENT, 0 ms] (40) 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 "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"];580[label="vz3/vz30 : vz31",fontsize=10,color="white",style="solid",shape="box"];6 -> 580[label="",style="solid", color="burlywood", weight=9]; 580 -> 7[label="",style="solid", color="burlywood", weight=3]; 581[label="vz3/[]",fontsize=10,color="white",style="solid",shape="box"];6 -> 581[label="",style="solid", color="burlywood", weight=9]; 581 -> 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"];582[label="vz31/vz310 : vz311",fontsize=10,color="white",style="solid",shape="box"];9 -> 582[label="",style="solid", color="burlywood", weight=9]; 582 -> 11[label="",style="solid", color="burlywood", weight=3]; 583[label="vz31/[]",fontsize=10,color="white",style="solid",shape="box"];9 -> 583[label="",style="solid", color="burlywood", weight=9]; 583 -> 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 -> 245[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 -> 246[label="",style="dashed", color="magenta", weight=3]; 18 -> 247[label="",style="dashed", color="magenta", weight=3]; 19[label="vz30 : []",fontsize=16,color="green",shape="box"];246[label="map List.wrap vz311",fontsize=16,color="burlywood",shape="triangle"];584[label="vz311/vz3110 : vz3111",fontsize=10,color="white",style="solid",shape="box"];246 -> 584[label="",style="solid", color="burlywood", weight=9]; 584 -> 400[label="",style="solid", color="burlywood", weight=3]; 585[label="vz311/[]",fontsize=10,color="white",style="solid",shape="box"];246 -> 585[label="",style="solid", color="burlywood", weight=9]; 585 -> 401[label="",style="solid", color="burlywood", weight=3]; 247 -> 402[label="",style="dashed", color="red", weight=0]; 247[label="List.merge compare (List.wrap vz30) (List.wrap vz310)",fontsize=16,color="magenta"];247 -> 403[label="",style="dashed", color="magenta", weight=3]; 247 -> 404[label="",style="dashed", color="magenta", weight=3]; 245[label="List.mergesort' compare (vz34 : List.merge_pairs compare vz35)",fontsize=16,color="burlywood",shape="triangle"];586[label="vz35/vz350 : vz351",fontsize=10,color="white",style="solid",shape="box"];245 -> 586[label="",style="solid", color="burlywood", weight=9]; 586 -> 405[label="",style="solid", color="burlywood", weight=3]; 587[label="vz35/[]",fontsize=10,color="white",style="solid",shape="box"];245 -> 587[label="",style="solid", color="burlywood", weight=9]; 587 -> 406[label="",style="solid", color="burlywood", weight=3]; 400[label="map List.wrap (vz3110 : vz3111)",fontsize=16,color="black",shape="box"];400 -> 407[label="",style="solid", color="black", weight=3]; 401[label="map List.wrap []",fontsize=16,color="black",shape="box"];401 -> 408[label="",style="solid", color="black", weight=3]; 403 -> 17[label="",style="dashed", color="red", weight=0]; 403[label="List.wrap vz310",fontsize=16,color="magenta"];403 -> 409[label="",style="dashed", color="magenta", weight=3]; 404 -> 17[label="",style="dashed", color="red", weight=0]; 404[label="List.wrap vz30",fontsize=16,color="magenta"];402[label="List.merge compare vz37 vz36",fontsize=16,color="burlywood",shape="triangle"];588[label="vz36/vz360 : vz361",fontsize=10,color="white",style="solid",shape="box"];402 -> 588[label="",style="solid", color="burlywood", weight=9]; 588 -> 410[label="",style="solid", color="burlywood", weight=3]; 589[label="vz36/[]",fontsize=10,color="white",style="solid",shape="box"];402 -> 589[label="",style="solid", color="burlywood", weight=9]; 589 -> 411[label="",style="solid", color="burlywood", weight=3]; 405[label="List.mergesort' compare (vz34 : List.merge_pairs compare (vz350 : vz351))",fontsize=16,color="burlywood",shape="box"];590[label="vz351/vz3510 : vz3511",fontsize=10,color="white",style="solid",shape="box"];405 -> 590[label="",style="solid", color="burlywood", weight=9]; 590 -> 412[label="",style="solid", color="burlywood", weight=3]; 591[label="vz351/[]",fontsize=10,color="white",style="solid",shape="box"];405 -> 591[label="",style="solid", color="burlywood", weight=9]; 591 -> 413[label="",style="solid", color="burlywood", weight=3]; 406[label="List.mergesort' compare (vz34 : List.merge_pairs compare [])",fontsize=16,color="black",shape="box"];406 -> 414[label="",style="solid", color="black", weight=3]; 407[label="List.wrap vz3110 : map List.wrap vz3111",fontsize=16,color="green",shape="box"];407 -> 415[label="",style="dashed", color="green", weight=3]; 407 -> 416[label="",style="dashed", color="green", weight=3]; 408[label="[]",fontsize=16,color="green",shape="box"];409[label="vz310",fontsize=16,color="green",shape="box"];410[label="List.merge compare vz37 (vz360 : vz361)",fontsize=16,color="burlywood",shape="box"];592[label="vz37/vz370 : vz371",fontsize=10,color="white",style="solid",shape="box"];410 -> 592[label="",style="solid", color="burlywood", weight=9]; 592 -> 417[label="",style="solid", color="burlywood", weight=3]; 593[label="vz37/[]",fontsize=10,color="white",style="solid",shape="box"];410 -> 593[label="",style="solid", color="burlywood", weight=9]; 593 -> 418[label="",style="solid", color="burlywood", weight=3]; 411[label="List.merge compare vz37 []",fontsize=16,color="black",shape="box"];411 -> 419[label="",style="solid", color="black", weight=3]; 412[label="List.mergesort' compare (vz34 : List.merge_pairs compare (vz350 : vz3510 : vz3511))",fontsize=16,color="black",shape="box"];412 -> 420[label="",style="solid", color="black", weight=3]; 413[label="List.mergesort' compare (vz34 : List.merge_pairs compare (vz350 : []))",fontsize=16,color="black",shape="box"];413 -> 421[label="",style="solid", color="black", weight=3]; 414[label="List.mergesort' compare (vz34 : [])",fontsize=16,color="black",shape="box"];414 -> 422[label="",style="solid", color="black", weight=3]; 415 -> 17[label="",style="dashed", color="red", weight=0]; 415[label="List.wrap vz3110",fontsize=16,color="magenta"];415 -> 423[label="",style="dashed", color="magenta", weight=3]; 416 -> 246[label="",style="dashed", color="red", weight=0]; 416[label="map List.wrap vz3111",fontsize=16,color="magenta"];416 -> 424[label="",style="dashed", color="magenta", weight=3]; 417[label="List.merge compare (vz370 : vz371) (vz360 : vz361)",fontsize=16,color="black",shape="box"];417 -> 425[label="",style="solid", color="black", weight=3]; 418[label="List.merge compare [] (vz360 : vz361)",fontsize=16,color="black",shape="box"];418 -> 426[label="",style="solid", color="black", weight=3]; 419[label="vz37",fontsize=16,color="green",shape="box"];420[label="List.mergesort' compare (vz34 : List.merge compare vz350 vz3510 : List.merge_pairs compare vz3511)",fontsize=16,color="black",shape="box"];420 -> 427[label="",style="solid", color="black", weight=3]; 421[label="List.mergesort' compare (vz34 : vz350 : [])",fontsize=16,color="black",shape="box"];421 -> 428[label="",style="solid", color="black", weight=3]; 422[label="vz34",fontsize=16,color="green",shape="box"];423[label="vz3110",fontsize=16,color="green",shape="box"];424[label="vz3111",fontsize=16,color="green",shape="box"];425 -> 467[label="",style="dashed", color="red", weight=0]; 425[label="List.merge0 vz360 compare vz370 vz371 vz361 (compare vz370 vz360)",fontsize=16,color="magenta"];425 -> 468[label="",style="dashed", color="magenta", weight=3]; 425 -> 469[label="",style="dashed", color="magenta", weight=3]; 425 -> 470[label="",style="dashed", color="magenta", weight=3]; 425 -> 471[label="",style="dashed", color="magenta", weight=3]; 425 -> 472[label="",style="dashed", color="magenta", weight=3]; 426[label="vz360 : vz361",fontsize=16,color="green",shape="box"];427[label="List.mergesort' compare (List.merge_pairs compare (vz34 : List.merge compare vz350 vz3510 : List.merge_pairs compare vz3511))",fontsize=16,color="black",shape="box"];427 -> 430[label="",style="solid", color="black", weight=3]; 428[label="List.mergesort' compare (List.merge_pairs compare (vz34 : vz350 : []))",fontsize=16,color="black",shape="box"];428 -> 431[label="",style="solid", color="black", weight=3]; 468[label="vz361",fontsize=16,color="green",shape="box"];469[label="vz360",fontsize=16,color="green",shape="box"];470[label="compare vz370 vz360",fontsize=16,color="burlywood",shape="triangle"];594[label="vz370/()",fontsize=10,color="white",style="solid",shape="box"];470 -> 594[label="",style="solid", color="burlywood", weight=9]; 594 -> 488[label="",style="solid", color="burlywood", weight=3]; 471[label="vz370",fontsize=16,color="green",shape="box"];472[label="vz371",fontsize=16,color="green",shape="box"];467[label="List.merge0 vz44 compare vz45 vz46 vz47 vz48",fontsize=16,color="burlywood",shape="triangle"];595[label="vz48/LT",fontsize=10,color="white",style="solid",shape="box"];467 -> 595[label="",style="solid", color="burlywood", weight=9]; 595 -> 489[label="",style="solid", color="burlywood", weight=3]; 596[label="vz48/EQ",fontsize=10,color="white",style="solid",shape="box"];467 -> 596[label="",style="solid", color="burlywood", weight=9]; 596 -> 490[label="",style="solid", color="burlywood", weight=3]; 597[label="vz48/GT",fontsize=10,color="white",style="solid",shape="box"];467 -> 597[label="",style="solid", color="burlywood", weight=9]; 597 -> 491[label="",style="solid", color="burlywood", weight=3]; 430 -> 245[label="",style="dashed", color="red", weight=0]; 430[label="List.mergesort' compare (List.merge compare vz34 (List.merge compare vz350 vz3510) : List.merge_pairs compare (List.merge_pairs compare vz3511))",fontsize=16,color="magenta"];430 -> 433[label="",style="dashed", color="magenta", weight=3]; 430 -> 434[label="",style="dashed", color="magenta", weight=3]; 431 -> 245[label="",style="dashed", color="red", weight=0]; 431[label="List.mergesort' compare (List.merge compare vz34 vz350 : List.merge_pairs compare [])",fontsize=16,color="magenta"];431 -> 435[label="",style="dashed", color="magenta", weight=3]; 431 -> 436[label="",style="dashed", color="magenta", weight=3]; 488[label="compare () vz360",fontsize=16,color="burlywood",shape="box"];598[label="vz360/()",fontsize=10,color="white",style="solid",shape="box"];488 -> 598[label="",style="solid", color="burlywood", weight=9]; 598 -> 523[label="",style="solid", color="burlywood", weight=3]; 489[label="List.merge0 vz44 compare vz45 vz46 vz47 LT",fontsize=16,color="black",shape="box"];489 -> 524[label="",style="solid", color="black", weight=3]; 490[label="List.merge0 vz44 compare vz45 vz46 vz47 EQ",fontsize=16,color="black",shape="box"];490 -> 525[label="",style="solid", color="black", weight=3]; 491[label="List.merge0 vz44 compare vz45 vz46 vz47 GT",fontsize=16,color="black",shape="box"];491 -> 526[label="",style="solid", color="black", weight=3]; 433[label="List.merge_pairs compare vz3511",fontsize=16,color="burlywood",shape="triangle"];599[label="vz3511/vz35110 : vz35111",fontsize=10,color="white",style="solid",shape="box"];433 -> 599[label="",style="solid", color="burlywood", weight=9]; 599 -> 438[label="",style="solid", color="burlywood", weight=3]; 600[label="vz3511/[]",fontsize=10,color="white",style="solid",shape="box"];433 -> 600[label="",style="solid", color="burlywood", weight=9]; 600 -> 439[label="",style="solid", color="burlywood", weight=3]; 434[label="List.merge compare vz34 (List.merge compare vz350 vz3510)",fontsize=16,color="burlywood",shape="box"];601[label="vz3510/vz35100 : vz35101",fontsize=10,color="white",style="solid",shape="box"];434 -> 601[label="",style="solid", color="burlywood", weight=9]; 601 -> 440[label="",style="solid", color="burlywood", weight=3]; 602[label="vz3510/[]",fontsize=10,color="white",style="solid",shape="box"];434 -> 602[label="",style="solid", color="burlywood", weight=9]; 602 -> 441[label="",style="solid", color="burlywood", weight=3]; 435[label="[]",fontsize=16,color="green",shape="box"];436[label="List.merge compare vz34 vz350",fontsize=16,color="burlywood",shape="triangle"];603[label="vz350/vz3500 : vz3501",fontsize=10,color="white",style="solid",shape="box"];436 -> 603[label="",style="solid", color="burlywood", weight=9]; 603 -> 442[label="",style="solid", color="burlywood", weight=3]; 604[label="vz350/[]",fontsize=10,color="white",style="solid",shape="box"];436 -> 604[label="",style="solid", color="burlywood", weight=9]; 604 -> 443[label="",style="solid", color="burlywood", weight=3]; 523[label="compare () ()",fontsize=16,color="black",shape="box"];523 -> 570[label="",style="solid", color="black", weight=3]; 524[label="vz45 : List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="green",shape="box"];524 -> 571[label="",style="dashed", color="green", weight=3]; 525[label="vz45 : List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="green",shape="box"];525 -> 572[label="",style="dashed", color="green", weight=3]; 526[label="vz44 : List.merge compare (vz45 : vz46) vz47",fontsize=16,color="green",shape="box"];526 -> 573[label="",style="dashed", color="green", weight=3]; 438[label="List.merge_pairs compare (vz35110 : vz35111)",fontsize=16,color="burlywood",shape="box"];605[label="vz35111/vz351110 : vz351111",fontsize=10,color="white",style="solid",shape="box"];438 -> 605[label="",style="solid", color="burlywood", weight=9]; 605 -> 445[label="",style="solid", color="burlywood", weight=3]; 606[label="vz35111/[]",fontsize=10,color="white",style="solid",shape="box"];438 -> 606[label="",style="solid", color="burlywood", weight=9]; 606 -> 446[label="",style="solid", color="burlywood", weight=3]; 439[label="List.merge_pairs compare []",fontsize=16,color="black",shape="box"];439 -> 447[label="",style="solid", color="black", weight=3]; 440[label="List.merge compare vz34 (List.merge compare vz350 (vz35100 : vz35101))",fontsize=16,color="burlywood",shape="box"];607[label="vz350/vz3500 : vz3501",fontsize=10,color="white",style="solid",shape="box"];440 -> 607[label="",style="solid", color="burlywood", weight=9]; 607 -> 448[label="",style="solid", color="burlywood", weight=3]; 608[label="vz350/[]",fontsize=10,color="white",style="solid",shape="box"];440 -> 608[label="",style="solid", color="burlywood", weight=9]; 608 -> 449[label="",style="solid", color="burlywood", weight=3]; 441[label="List.merge compare vz34 (List.merge compare vz350 [])",fontsize=16,color="black",shape="box"];441 -> 450[label="",style="solid", color="black", weight=3]; 442[label="List.merge compare vz34 (vz3500 : vz3501)",fontsize=16,color="burlywood",shape="box"];609[label="vz34/vz340 : vz341",fontsize=10,color="white",style="solid",shape="box"];442 -> 609[label="",style="solid", color="burlywood", weight=9]; 609 -> 451[label="",style="solid", color="burlywood", weight=3]; 610[label="vz34/[]",fontsize=10,color="white",style="solid",shape="box"];442 -> 610[label="",style="solid", color="burlywood", weight=9]; 610 -> 452[label="",style="solid", color="burlywood", weight=3]; 443[label="List.merge compare vz34 []",fontsize=16,color="black",shape="box"];443 -> 453[label="",style="solid", color="black", weight=3]; 570[label="EQ",fontsize=16,color="green",shape="box"];571 -> 436[label="",style="dashed", color="red", weight=0]; 571[label="List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="magenta"];571 -> 574[label="",style="dashed", color="magenta", weight=3]; 571 -> 575[label="",style="dashed", color="magenta", weight=3]; 572 -> 436[label="",style="dashed", color="red", weight=0]; 572[label="List.merge compare vz46 (vz44 : vz47)",fontsize=16,color="magenta"];572 -> 576[label="",style="dashed", color="magenta", weight=3]; 572 -> 577[label="",style="dashed", color="magenta", weight=3]; 573 -> 436[label="",style="dashed", color="red", weight=0]; 573[label="List.merge compare (vz45 : vz46) vz47",fontsize=16,color="magenta"];573 -> 578[label="",style="dashed", color="magenta", weight=3]; 573 -> 579[label="",style="dashed", color="magenta", weight=3]; 445[label="List.merge_pairs compare (vz35110 : vz351110 : vz351111)",fontsize=16,color="black",shape="box"];445 -> 455[label="",style="solid", color="black", weight=3]; 446[label="List.merge_pairs compare (vz35110 : [])",fontsize=16,color="black",shape="box"];446 -> 456[label="",style="solid", color="black", weight=3]; 447[label="[]",fontsize=16,color="green",shape="box"];448[label="List.merge compare vz34 (List.merge compare (vz3500 : vz3501) (vz35100 : vz35101))",fontsize=16,color="black",shape="box"];448 -> 457[label="",style="solid", color="black", weight=3]; 449[label="List.merge compare vz34 (List.merge compare [] (vz35100 : vz35101))",fontsize=16,color="black",shape="box"];449 -> 458[label="",style="solid", color="black", weight=3]; 450 -> 436[label="",style="dashed", color="red", weight=0]; 450[label="List.merge compare vz34 vz350",fontsize=16,color="magenta"];451[label="List.merge compare (vz340 : vz341) (vz3500 : vz3501)",fontsize=16,color="black",shape="box"];451 -> 459[label="",style="solid", color="black", weight=3]; 452[label="List.merge compare [] (vz3500 : vz3501)",fontsize=16,color="black",shape="box"];452 -> 460[label="",style="solid", color="black", weight=3]; 453[label="vz34",fontsize=16,color="green",shape="box"];574[label="vz44 : vz47",fontsize=16,color="green",shape="box"];575[label="vz46",fontsize=16,color="green",shape="box"];576[label="vz44 : vz47",fontsize=16,color="green",shape="box"];577[label="vz46",fontsize=16,color="green",shape="box"];578[label="vz47",fontsize=16,color="green",shape="box"];579[label="vz45 : vz46",fontsize=16,color="green",shape="box"];455[label="List.merge compare vz35110 vz351110 : List.merge_pairs compare vz351111",fontsize=16,color="green",shape="box"];455 -> 463[label="",style="dashed", color="green", weight=3]; 455 -> 464[label="",style="dashed", color="green", weight=3]; 456[label="vz35110 : []",fontsize=16,color="green",shape="box"];457 -> 436[label="",style="dashed", color="red", weight=0]; 457[label="List.merge compare vz34 (List.merge0 vz35100 compare vz3500 vz3501 vz35101 (compare vz3500 vz35100))",fontsize=16,color="magenta"];457 -> 465[label="",style="dashed", color="magenta", weight=3]; 458 -> 436[label="",style="dashed", color="red", weight=0]; 458[label="List.merge compare vz34 (vz35100 : vz35101)",fontsize=16,color="magenta"];458 -> 466[label="",style="dashed", color="magenta", weight=3]; 459 -> 467[label="",style="dashed", color="red", weight=0]; 459[label="List.merge0 vz3500 compare vz340 vz341 vz3501 (compare vz340 vz3500)",fontsize=16,color="magenta"];459 -> 478[label="",style="dashed", color="magenta", weight=3]; 459 -> 479[label="",style="dashed", color="magenta", weight=3]; 459 -> 480[label="",style="dashed", color="magenta", weight=3]; 459 -> 481[label="",style="dashed", color="magenta", weight=3]; 459 -> 482[label="",style="dashed", color="magenta", weight=3]; 460[label="vz3500 : vz3501",fontsize=16,color="green",shape="box"];463 -> 436[label="",style="dashed", color="red", weight=0]; 463[label="List.merge compare vz35110 vz351110",fontsize=16,color="magenta"];463 -> 492[label="",style="dashed", color="magenta", weight=3]; 463 -> 493[label="",style="dashed", color="magenta", weight=3]; 464 -> 433[label="",style="dashed", color="red", weight=0]; 464[label="List.merge_pairs compare vz351111",fontsize=16,color="magenta"];464 -> 494[label="",style="dashed", color="magenta", weight=3]; 465 -> 467[label="",style="dashed", color="red", weight=0]; 465[label="List.merge0 vz35100 compare vz3500 vz3501 vz35101 (compare vz3500 vz35100)",fontsize=16,color="magenta"];465 -> 483[label="",style="dashed", color="magenta", weight=3]; 465 -> 484[label="",style="dashed", color="magenta", weight=3]; 465 -> 485[label="",style="dashed", color="magenta", weight=3]; 465 -> 486[label="",style="dashed", color="magenta", weight=3]; 465 -> 487[label="",style="dashed", color="magenta", weight=3]; 466[label="vz35100 : vz35101",fontsize=16,color="green",shape="box"];478[label="vz3501",fontsize=16,color="green",shape="box"];479[label="vz3500",fontsize=16,color="green",shape="box"];480[label="compare vz340 vz3500",fontsize=16,color="blue",shape="box"];611[label="compare :: ([] a) -> ([] a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 611[label="",style="solid", color="blue", weight=9]; 611 -> 495[label="",style="solid", color="blue", weight=3]; 612[label="compare :: Int -> Int -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 612[label="",style="solid", color="blue", weight=9]; 612 -> 496[label="",style="solid", color="blue", weight=3]; 613[label="compare :: Integer -> Integer -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 613[label="",style="solid", color="blue", weight=9]; 613 -> 497[label="",style="solid", color="blue", weight=3]; 614[label="compare :: Float -> Float -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 614[label="",style="solid", color="blue", weight=9]; 614 -> 498[label="",style="solid", color="blue", weight=3]; 615[label="compare :: Char -> Char -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 615[label="",style="solid", color="blue", weight=9]; 615 -> 499[label="",style="solid", color="blue", weight=3]; 616[label="compare :: Bool -> Bool -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 616[label="",style="solid", color="blue", weight=9]; 616 -> 500[label="",style="solid", color="blue", weight=3]; 617[label="compare :: () -> () -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 617[label="",style="solid", color="blue", weight=9]; 617 -> 501[label="",style="solid", color="blue", weight=3]; 618[label="compare :: ((@3) a b c) -> ((@3) a b c) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 618[label="",style="solid", color="blue", weight=9]; 618 -> 502[label="",style="solid", color="blue", weight=3]; 619[label="compare :: ((@2) a b) -> ((@2) a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 619[label="",style="solid", color="blue", weight=9]; 619 -> 503[label="",style="solid", color="blue", weight=3]; 620[label="compare :: (Maybe a) -> (Maybe a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 620[label="",style="solid", color="blue", weight=9]; 620 -> 504[label="",style="solid", color="blue", weight=3]; 621[label="compare :: (Either a b) -> (Either a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 621[label="",style="solid", color="blue", weight=9]; 621 -> 505[label="",style="solid", color="blue", weight=3]; 622[label="compare :: Ordering -> Ordering -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 622[label="",style="solid", color="blue", weight=9]; 622 -> 506[label="",style="solid", color="blue", weight=3]; 623[label="compare :: Double -> Double -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 623[label="",style="solid", color="blue", weight=9]; 623 -> 507[label="",style="solid", color="blue", weight=3]; 624[label="compare :: (Ratio a) -> (Ratio a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];480 -> 624[label="",style="solid", color="blue", weight=9]; 624 -> 508[label="",style="solid", color="blue", weight=3]; 481[label="vz340",fontsize=16,color="green",shape="box"];482[label="vz341",fontsize=16,color="green",shape="box"];492[label="vz351110",fontsize=16,color="green",shape="box"];493[label="vz35110",fontsize=16,color="green",shape="box"];494[label="vz351111",fontsize=16,color="green",shape="box"];483[label="vz35101",fontsize=16,color="green",shape="box"];484[label="vz35100",fontsize=16,color="green",shape="box"];485[label="compare vz3500 vz35100",fontsize=16,color="blue",shape="box"];625[label="compare :: ([] a) -> ([] a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 625[label="",style="solid", color="blue", weight=9]; 625 -> 509[label="",style="solid", color="blue", weight=3]; 626[label="compare :: Int -> Int -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 626[label="",style="solid", color="blue", weight=9]; 626 -> 510[label="",style="solid", color="blue", weight=3]; 627[label="compare :: Integer -> Integer -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 627[label="",style="solid", color="blue", weight=9]; 627 -> 511[label="",style="solid", color="blue", weight=3]; 628[label="compare :: Float -> Float -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 628[label="",style="solid", color="blue", weight=9]; 628 -> 512[label="",style="solid", color="blue", weight=3]; 629[label="compare :: Char -> Char -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 629[label="",style="solid", color="blue", weight=9]; 629 -> 513[label="",style="solid", color="blue", weight=3]; 630[label="compare :: Bool -> Bool -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 630[label="",style="solid", color="blue", weight=9]; 630 -> 514[label="",style="solid", color="blue", weight=3]; 631[label="compare :: () -> () -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 631[label="",style="solid", color="blue", weight=9]; 631 -> 515[label="",style="solid", color="blue", weight=3]; 632[label="compare :: ((@3) a b c) -> ((@3) a b c) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 632[label="",style="solid", color="blue", weight=9]; 632 -> 516[label="",style="solid", color="blue", weight=3]; 633[label="compare :: ((@2) a b) -> ((@2) a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 633[label="",style="solid", color="blue", weight=9]; 633 -> 517[label="",style="solid", color="blue", weight=3]; 634[label="compare :: (Maybe a) -> (Maybe a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 634[label="",style="solid", color="blue", weight=9]; 634 -> 518[label="",style="solid", color="blue", weight=3]; 635[label="compare :: (Either a b) -> (Either a b) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 635[label="",style="solid", color="blue", weight=9]; 635 -> 519[label="",style="solid", color="blue", weight=3]; 636[label="compare :: Ordering -> Ordering -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 636[label="",style="solid", color="blue", weight=9]; 636 -> 520[label="",style="solid", color="blue", weight=3]; 637[label="compare :: Double -> Double -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 637[label="",style="solid", color="blue", weight=9]; 637 -> 521[label="",style="solid", color="blue", weight=3]; 638[label="compare :: (Ratio a) -> (Ratio a) -> Ordering",fontsize=10,color="white",style="solid",shape="box"];485 -> 638[label="",style="solid", color="blue", weight=9]; 638 -> 522[label="",style="solid", color="blue", weight=3]; 486[label="vz3500",fontsize=16,color="green",shape="box"];487[label="vz3501",fontsize=16,color="green",shape="box"];495[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];495 -> 527[label="",style="solid", color="black", weight=3]; 496[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];496 -> 528[label="",style="solid", color="black", weight=3]; 497[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];497 -> 529[label="",style="solid", color="black", weight=3]; 498[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];498 -> 530[label="",style="solid", color="black", weight=3]; 499[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];499 -> 531[label="",style="solid", color="black", weight=3]; 500[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];500 -> 532[label="",style="solid", color="black", weight=3]; 501 -> 470[label="",style="dashed", color="red", weight=0]; 501[label="compare vz340 vz3500",fontsize=16,color="magenta"];501 -> 533[label="",style="dashed", color="magenta", weight=3]; 501 -> 534[label="",style="dashed", color="magenta", weight=3]; 502[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];502 -> 535[label="",style="solid", color="black", weight=3]; 503[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];503 -> 536[label="",style="solid", color="black", weight=3]; 504[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];504 -> 537[label="",style="solid", color="black", weight=3]; 505[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];505 -> 538[label="",style="solid", color="black", weight=3]; 506[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];506 -> 539[label="",style="solid", color="black", weight=3]; 507[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];507 -> 540[label="",style="solid", color="black", weight=3]; 508[label="compare vz340 vz3500",fontsize=16,color="black",shape="triangle"];508 -> 541[label="",style="solid", color="black", weight=3]; 509 -> 495[label="",style="dashed", color="red", weight=0]; 509[label="compare vz3500 vz35100",fontsize=16,color="magenta"];509 -> 542[label="",style="dashed", color="magenta", weight=3]; 509 -> 543[label="",style="dashed", color="magenta", weight=3]; 510 -> 496[label="",style="dashed", color="red", weight=0]; 510[label="compare vz3500 vz35100",fontsize=16,color="magenta"];510 -> 544[label="",style="dashed", color="magenta", weight=3]; 510 -> 545[label="",style="dashed", color="magenta", weight=3]; 511 -> 497[label="",style="dashed", color="red", weight=0]; 511[label="compare vz3500 vz35100",fontsize=16,color="magenta"];511 -> 546[label="",style="dashed", color="magenta", weight=3]; 511 -> 547[label="",style="dashed", color="magenta", weight=3]; 512 -> 498[label="",style="dashed", color="red", weight=0]; 512[label="compare vz3500 vz35100",fontsize=16,color="magenta"];512 -> 548[label="",style="dashed", color="magenta", weight=3]; 512 -> 549[label="",style="dashed", color="magenta", weight=3]; 513 -> 499[label="",style="dashed", color="red", weight=0]; 513[label="compare vz3500 vz35100",fontsize=16,color="magenta"];513 -> 550[label="",style="dashed", color="magenta", weight=3]; 513 -> 551[label="",style="dashed", color="magenta", weight=3]; 514 -> 500[label="",style="dashed", color="red", weight=0]; 514[label="compare vz3500 vz35100",fontsize=16,color="magenta"];514 -> 552[label="",style="dashed", color="magenta", weight=3]; 514 -> 553[label="",style="dashed", color="magenta", weight=3]; 515 -> 470[label="",style="dashed", color="red", weight=0]; 515[label="compare vz3500 vz35100",fontsize=16,color="magenta"];515 -> 554[label="",style="dashed", color="magenta", weight=3]; 515 -> 555[label="",style="dashed", color="magenta", weight=3]; 516 -> 502[label="",style="dashed", color="red", weight=0]; 516[label="compare vz3500 vz35100",fontsize=16,color="magenta"];516 -> 556[label="",style="dashed", color="magenta", weight=3]; 516 -> 557[label="",style="dashed", color="magenta", weight=3]; 517 -> 503[label="",style="dashed", color="red", weight=0]; 517[label="compare vz3500 vz35100",fontsize=16,color="magenta"];517 -> 558[label="",style="dashed", color="magenta", weight=3]; 517 -> 559[label="",style="dashed", color="magenta", weight=3]; 518 -> 504[label="",style="dashed", color="red", weight=0]; 518[label="compare vz3500 vz35100",fontsize=16,color="magenta"];518 -> 560[label="",style="dashed", color="magenta", weight=3]; 518 -> 561[label="",style="dashed", color="magenta", weight=3]; 519 -> 505[label="",style="dashed", color="red", weight=0]; 519[label="compare vz3500 vz35100",fontsize=16,color="magenta"];519 -> 562[label="",style="dashed", color="magenta", weight=3]; 519 -> 563[label="",style="dashed", color="magenta", weight=3]; 520 -> 506[label="",style="dashed", color="red", weight=0]; 520[label="compare vz3500 vz35100",fontsize=16,color="magenta"];520 -> 564[label="",style="dashed", color="magenta", weight=3]; 520 -> 565[label="",style="dashed", color="magenta", weight=3]; 521 -> 507[label="",style="dashed", color="red", weight=0]; 521[label="compare vz3500 vz35100",fontsize=16,color="magenta"];521 -> 566[label="",style="dashed", color="magenta", weight=3]; 521 -> 567[label="",style="dashed", color="magenta", weight=3]; 522 -> 508[label="",style="dashed", color="red", weight=0]; 522[label="compare vz3500 vz35100",fontsize=16,color="magenta"];522 -> 568[label="",style="dashed", color="magenta", weight=3]; 522 -> 569[label="",style="dashed", color="magenta", weight=3]; 527[label="error []",fontsize=16,color="red",shape="box"];528[label="error []",fontsize=16,color="red",shape="box"];529[label="error []",fontsize=16,color="red",shape="box"];530[label="error []",fontsize=16,color="red",shape="box"];531[label="error []",fontsize=16,color="red",shape="box"];532[label="error []",fontsize=16,color="red",shape="box"];533[label="vz340",fontsize=16,color="green",shape="box"];534[label="vz3500",fontsize=16,color="green",shape="box"];535[label="error []",fontsize=16,color="red",shape="box"];536[label="error []",fontsize=16,color="red",shape="box"];537[label="error []",fontsize=16,color="red",shape="box"];538[label="error []",fontsize=16,color="red",shape="box"];539[label="error []",fontsize=16,color="red",shape="box"];540[label="error []",fontsize=16,color="red",shape="box"];541[label="error []",fontsize=16,color="red",shape="box"];542[label="vz3500",fontsize=16,color="green",shape="box"];543[label="vz35100",fontsize=16,color="green",shape="box"];544[label="vz3500",fontsize=16,color="green",shape="box"];545[label="vz35100",fontsize=16,color="green",shape="box"];546[label="vz3500",fontsize=16,color="green",shape="box"];547[label="vz35100",fontsize=16,color="green",shape="box"];548[label="vz3500",fontsize=16,color="green",shape="box"];549[label="vz35100",fontsize=16,color="green",shape="box"];550[label="vz3500",fontsize=16,color="green",shape="box"];551[label="vz35100",fontsize=16,color="green",shape="box"];552[label="vz3500",fontsize=16,color="green",shape="box"];553[label="vz35100",fontsize=16,color="green",shape="box"];554[label="vz3500",fontsize=16,color="green",shape="box"];555[label="vz35100",fontsize=16,color="green",shape="box"];556[label="vz3500",fontsize=16,color="green",shape="box"];557[label="vz35100",fontsize=16,color="green",shape="box"];558[label="vz3500",fontsize=16,color="green",shape="box"];559[label="vz35100",fontsize=16,color="green",shape="box"];560[label="vz3500",fontsize=16,color="green",shape="box"];561[label="vz35100",fontsize=16,color="green",shape="box"];562[label="vz3500",fontsize=16,color="green",shape="box"];563[label="vz35100",fontsize=16,color="green",shape="box"];564[label="vz3500",fontsize=16,color="green",shape="box"];565[label="vz35100",fontsize=16,color="green",shape="box"];566[label="vz3500",fontsize=16,color="green",shape="box"];567[label="vz35100",fontsize=16,color="green",shape="box"];568[label="vz3500",fontsize=16,color="green",shape="box"];569[label="vz35100",fontsize=16,color="green",shape="box"];} ---------------------------------------- (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_map(:(vz3110, vz3111)) -> new_map(vz3111) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) 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 ---------------------------------------- (14) YES ---------------------------------------- (15) 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_compare11(vz340, vz3500) -> error([]) new_compare(vz340, vz3500, app(app(ty_Either, bh), ca)) -> new_compare9(vz340, vz3500, bh, ca) new_compare(vz340, vz3500, ty_Float) -> new_compare0(vz340, vz3500) new_compare(vz340, vz3500, ty_Double) -> new_compare7(vz340, vz3500) new_compare(vz340, vz3500, ty_Int) -> new_compare11(vz340, vz3500) new_compare(vz340, vz3500, app(app(ty_@2, cb), cc)) -> new_compare12(vz340, vz3500, cb, cc) new_compare(vz340, vz3500, ty_Bool) -> new_compare6(vz340, vz3500) new_compare12(vz340, vz3500, cb, cc) -> error([]) new_compare(vz340, vz3500, ty_Ordering) -> new_compare3(vz340, vz3500) new_compare(vz340, vz3500, app(ty_[], cd)) -> new_compare13(vz340, vz3500, cd) new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) new_compare13(vz340, vz3500, cd) -> error([]) new_compare(vz340, vz3500, app(ty_Maybe, bf)) -> new_compare5(vz340, vz3500, bf) new_compare2(vz340, vz3500) -> error([]) new_compare1(vz340, vz3500, bc, bd, be) -> error([]) new_compare6(vz340, vz3500) -> error([]) new_compare5(vz340, vz3500, bf) -> error([]) new_compare9(vz340, vz3500, bh, ca) -> error([]) new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) new_compare(vz340, vz3500, app(app(app(ty_@3, bc), bd), be)) -> new_compare1(vz340, vz3500, bc, bd, be) new_compare10(vz340, vz3500) -> error([]) new_compare0(vz340, vz3500) -> error([]) new_compare3(vz340, vz3500) -> error([]) new_compare8(vz340, vz3500, bg) -> error([]) new_compare(vz340, vz3500, ty_Char) -> new_compare10(vz340, vz3500) new_compare4(@0, @0) -> EQ new_compare(vz340, vz3500, app(ty_Ratio, bg)) -> new_compare8(vz340, vz3500, bg) new_compare7(vz340, vz3500) -> error([]) The set Q consists of the following terms: new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare1(x0, x1, x2, x3, x4) new_compare10(x0, x1) new_compare11(x0, x1) new_compare(x0, x1, ty_Integer) new_compare12(x0, x1, x2, x3) new_compare6(x0, x1) new_compare(x0, x1, ty_Bool) new_compare4(@0, @0) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare8(x0, x1, x2) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare(x0, x1, app(ty_[], x2)) new_compare7(x0, x1) new_compare5(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Int) new_compare3(x0, x1) new_compare9(x0, x1, x2, x3) new_compare(x0, x1, ty_Char) new_compare13(x0, x1, x2) new_compare0(x0, x1) 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. ---------------------------------------- (16) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(vz340, vz341), :(vz3500, vz3501), bb) -> new_merge0(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, bb), bb) new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) The TRS R consists of the following rules: new_compare11(vz340, vz3500) -> error([]) new_compare(vz340, vz3500, app(app(ty_Either, bh), ca)) -> new_compare9(vz340, vz3500, bh, ca) new_compare(vz340, vz3500, ty_Float) -> new_compare0(vz340, vz3500) new_compare(vz340, vz3500, ty_Double) -> new_compare7(vz340, vz3500) new_compare(vz340, vz3500, ty_Int) -> new_compare11(vz340, vz3500) new_compare(vz340, vz3500, app(app(ty_@2, cb), cc)) -> new_compare12(vz340, vz3500, cb, cc) new_compare(vz340, vz3500, ty_Bool) -> new_compare6(vz340, vz3500) new_compare12(vz340, vz3500, cb, cc) -> error([]) new_compare(vz340, vz3500, ty_Ordering) -> new_compare3(vz340, vz3500) new_compare(vz340, vz3500, app(ty_[], cd)) -> new_compare13(vz340, vz3500, cd) new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) new_compare13(vz340, vz3500, cd) -> error([]) new_compare(vz340, vz3500, app(ty_Maybe, bf)) -> new_compare5(vz340, vz3500, bf) new_compare2(vz340, vz3500) -> error([]) new_compare1(vz340, vz3500, bc, bd, be) -> error([]) new_compare6(vz340, vz3500) -> error([]) new_compare5(vz340, vz3500, bf) -> error([]) new_compare9(vz340, vz3500, bh, ca) -> error([]) new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) new_compare(vz340, vz3500, app(app(app(ty_@3, bc), bd), be)) -> new_compare1(vz340, vz3500, bc, bd, be) new_compare10(vz340, vz3500) -> error([]) new_compare0(vz340, vz3500) -> error([]) new_compare3(vz340, vz3500) -> error([]) new_compare8(vz340, vz3500, bg) -> error([]) new_compare(vz340, vz3500, ty_Char) -> new_compare10(vz340, vz3500) new_compare4(@0, @0) -> EQ new_compare(vz340, vz3500, app(ty_Ratio, bg)) -> new_compare8(vz340, vz3500, bg) new_compare7(vz340, vz3500) -> error([]) The set Q consists of the following terms: new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare1(x0, x1, x2, x3, x4) new_compare10(x0, x1) new_compare11(x0, x1) new_compare(x0, x1, ty_Integer) new_compare12(x0, x1, x2, x3) new_compare6(x0, x1) new_compare(x0, x1, ty_Bool) new_compare4(@0, @0) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare8(x0, x1, x2) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare(x0, x1, app(ty_[], x2)) new_compare7(x0, x1) new_compare5(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Int) new_compare3(x0, x1) new_compare9(x0, x1, x2, x3) new_compare(x0, x1, ty_Char) new_compare13(x0, x1, x2) new_compare0(x0, x1) 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. ---------------------------------------- (18) 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), app(app(ty_Either, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare9(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_compare9(x0, x1, x2, x3), app(app(ty_Either, x2), x3))) (new_merge(:(x0, y1), :(x1, y3), ty_Float) -> new_merge0(x1, x0, y1, y3, new_compare0(x0, x1), ty_Float),new_merge(:(x0, y1), :(x1, y3), ty_Float) -> new_merge0(x1, x0, y1, y3, new_compare0(x0, x1), ty_Float)) (new_merge(:(x0, y1), :(x1, y3), ty_Double) -> new_merge0(x1, x0, y1, y3, new_compare7(x0, x1), ty_Double),new_merge(:(x0, y1), :(x1, y3), ty_Double) -> new_merge0(x1, x0, y1, y3, new_compare7(x0, x1), ty_Double)) (new_merge(:(x0, y1), :(x1, y3), ty_Int) -> new_merge0(x1, x0, y1, y3, new_compare11(x0, x1), ty_Int),new_merge(:(x0, y1), :(x1, y3), ty_Int) -> new_merge0(x1, x0, y1, y3, new_compare11(x0, x1), ty_Int)) (new_merge(:(x0, y1), :(x1, y3), app(app(ty_@2, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare12(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_compare12(x0, x1, x2, x3), app(app(ty_@2, x2), x3))) (new_merge(:(x0, y1), :(x1, y3), ty_Bool) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Bool),new_merge(:(x0, y1), :(x1, y3), ty_Bool) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Bool)) (new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare3(x0, x1), ty_Ordering),new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare3(x0, x1), ty_Ordering)) (new_merge(:(x0, y1), :(x1, y3), app(ty_[], x2)) -> new_merge0(x1, x0, y1, y3, new_compare13(x0, x1, x2), app(ty_[], x2)),new_merge(:(x0, y1), :(x1, y3), app(ty_[], x2)) -> new_merge0(x1, x0, y1, y3, new_compare13(x0, x1, x2), app(ty_[], x2))) (new_merge(:(x0, y1), :(x1, y3), ty_Integer) -> new_merge0(x1, x0, y1, y3, new_compare2(x0, x1), ty_Integer),new_merge(:(x0, y1), :(x1, y3), ty_Integer) -> new_merge0(x1, x0, y1, y3, new_compare2(x0, x1), ty_Integer)) (new_merge(:(x0, y1), :(x1, y3), app(ty_Maybe, x2)) -> new_merge0(x1, x0, y1, y3, new_compare5(x0, x1, x2), app(ty_Maybe, x2)),new_merge(:(x0, y1), :(x1, y3), app(ty_Maybe, x2)) -> new_merge0(x1, x0, y1, y3, new_compare5(x0, x1, x2), app(ty_Maybe, x2))) (new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0),new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0)) (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_Char) -> new_merge0(x1, x0, y1, y3, new_compare10(x0, x1), ty_Char),new_merge(:(x0, y1), :(x1, y3), ty_Char) -> new_merge0(x1, x0, y1, y3, new_compare10(x0, x1), ty_Char)) (new_merge(:(x0, y1), :(x1, y3), app(ty_Ratio, x2)) -> new_merge0(x1, x0, y1, y3, new_compare8(x0, x1, x2), app(ty_Ratio, x2)),new_merge(:(x0, y1), :(x1, y3), app(ty_Ratio, x2)) -> new_merge0(x1, x0, y1, y3, new_compare8(x0, x1, x2), app(ty_Ratio, x2))) ---------------------------------------- (19) 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_merge(:(x0, y1), :(x1, y3), app(app(ty_Either, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare9(x0, x1, x2, x3), app(app(ty_Either, x2), x3)) new_merge(:(x0, y1), :(x1, y3), ty_Float) -> new_merge0(x1, x0, y1, y3, new_compare0(x0, x1), ty_Float) new_merge(:(x0, y1), :(x1, y3), ty_Double) -> new_merge0(x1, x0, y1, y3, new_compare7(x0, x1), ty_Double) new_merge(:(x0, y1), :(x1, y3), ty_Int) -> new_merge0(x1, x0, y1, y3, new_compare11(x0, x1), ty_Int) new_merge(:(x0, y1), :(x1, y3), app(app(ty_@2, x2), x3)) -> new_merge0(x1, x0, y1, y3, new_compare12(x0, x1, x2, x3), app(app(ty_@2, x2), x3)) new_merge(:(x0, y1), :(x1, y3), ty_Bool) -> new_merge0(x1, x0, y1, y3, new_compare6(x0, x1), ty_Bool) new_merge(:(x0, y1), :(x1, y3), ty_Ordering) -> new_merge0(x1, x0, y1, y3, new_compare3(x0, x1), ty_Ordering) new_merge(:(x0, y1), :(x1, y3), app(ty_[], x2)) -> new_merge0(x1, x0, y1, y3, new_compare13(x0, x1, x2), app(ty_[], x2)) new_merge(:(x0, y1), :(x1, y3), ty_Integer) -> new_merge0(x1, x0, y1, y3, new_compare2(x0, x1), ty_Integer) new_merge(:(x0, y1), :(x1, y3), app(ty_Maybe, x2)) -> new_merge0(x1, x0, y1, y3, new_compare5(x0, x1, x2), app(ty_Maybe, x2)) new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) new_merge(:(x0, y1), :(x1, y3), 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_Char) -> new_merge0(x1, x0, y1, y3, new_compare10(x0, x1), ty_Char) new_merge(:(x0, y1), :(x1, y3), app(ty_Ratio, x2)) -> new_merge0(x1, x0, y1, y3, new_compare8(x0, x1, x2), app(ty_Ratio, x2)) The TRS R consists of the following rules: new_compare11(vz340, vz3500) -> error([]) new_compare(vz340, vz3500, app(app(ty_Either, bh), ca)) -> new_compare9(vz340, vz3500, bh, ca) new_compare(vz340, vz3500, ty_Float) -> new_compare0(vz340, vz3500) new_compare(vz340, vz3500, ty_Double) -> new_compare7(vz340, vz3500) new_compare(vz340, vz3500, ty_Int) -> new_compare11(vz340, vz3500) new_compare(vz340, vz3500, app(app(ty_@2, cb), cc)) -> new_compare12(vz340, vz3500, cb, cc) new_compare(vz340, vz3500, ty_Bool) -> new_compare6(vz340, vz3500) new_compare12(vz340, vz3500, cb, cc) -> error([]) new_compare(vz340, vz3500, ty_Ordering) -> new_compare3(vz340, vz3500) new_compare(vz340, vz3500, app(ty_[], cd)) -> new_compare13(vz340, vz3500, cd) new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) new_compare13(vz340, vz3500, cd) -> error([]) new_compare(vz340, vz3500, app(ty_Maybe, bf)) -> new_compare5(vz340, vz3500, bf) new_compare2(vz340, vz3500) -> error([]) new_compare1(vz340, vz3500, bc, bd, be) -> error([]) new_compare6(vz340, vz3500) -> error([]) new_compare5(vz340, vz3500, bf) -> error([]) new_compare9(vz340, vz3500, bh, ca) -> error([]) new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) new_compare(vz340, vz3500, app(app(app(ty_@3, bc), bd), be)) -> new_compare1(vz340, vz3500, bc, bd, be) new_compare10(vz340, vz3500) -> error([]) new_compare0(vz340, vz3500) -> error([]) new_compare3(vz340, vz3500) -> error([]) new_compare8(vz340, vz3500, bg) -> error([]) new_compare(vz340, vz3500, ty_Char) -> new_compare10(vz340, vz3500) new_compare4(@0, @0) -> EQ new_compare(vz340, vz3500, app(ty_Ratio, bg)) -> new_compare8(vz340, vz3500, bg) new_compare7(vz340, vz3500) -> error([]) The set Q consists of the following terms: new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare1(x0, x1, x2, x3, x4) new_compare10(x0, x1) new_compare11(x0, x1) new_compare(x0, x1, ty_Integer) new_compare12(x0, x1, x2, x3) new_compare6(x0, x1) new_compare(x0, x1, ty_Bool) new_compare4(@0, @0) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare8(x0, x1, x2) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare(x0, x1, app(ty_[], x2)) new_compare7(x0, x1) new_compare5(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Int) new_compare3(x0, x1) new_compare9(x0, x1, x2, x3) new_compare(x0, x1, ty_Char) new_compare13(x0, x1, x2) new_compare0(x0, x1) 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. ---------------------------------------- (20) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 13 less nodes. ---------------------------------------- (21) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) The TRS R consists of the following rules: new_compare11(vz340, vz3500) -> error([]) new_compare(vz340, vz3500, app(app(ty_Either, bh), ca)) -> new_compare9(vz340, vz3500, bh, ca) new_compare(vz340, vz3500, ty_Float) -> new_compare0(vz340, vz3500) new_compare(vz340, vz3500, ty_Double) -> new_compare7(vz340, vz3500) new_compare(vz340, vz3500, ty_Int) -> new_compare11(vz340, vz3500) new_compare(vz340, vz3500, app(app(ty_@2, cb), cc)) -> new_compare12(vz340, vz3500, cb, cc) new_compare(vz340, vz3500, ty_Bool) -> new_compare6(vz340, vz3500) new_compare12(vz340, vz3500, cb, cc) -> error([]) new_compare(vz340, vz3500, ty_Ordering) -> new_compare3(vz340, vz3500) new_compare(vz340, vz3500, app(ty_[], cd)) -> new_compare13(vz340, vz3500, cd) new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) new_compare13(vz340, vz3500, cd) -> error([]) new_compare(vz340, vz3500, app(ty_Maybe, bf)) -> new_compare5(vz340, vz3500, bf) new_compare2(vz340, vz3500) -> error([]) new_compare1(vz340, vz3500, bc, bd, be) -> error([]) new_compare6(vz340, vz3500) -> error([]) new_compare5(vz340, vz3500, bf) -> error([]) new_compare9(vz340, vz3500, bh, ca) -> error([]) new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) new_compare(vz340, vz3500, app(app(app(ty_@3, bc), bd), be)) -> new_compare1(vz340, vz3500, bc, bd, be) new_compare10(vz340, vz3500) -> error([]) new_compare0(vz340, vz3500) -> error([]) new_compare3(vz340, vz3500) -> error([]) new_compare8(vz340, vz3500, bg) -> error([]) new_compare(vz340, vz3500, ty_Char) -> new_compare10(vz340, vz3500) new_compare4(@0, @0) -> EQ new_compare(vz340, vz3500, app(ty_Ratio, bg)) -> new_compare8(vz340, vz3500, bg) new_compare7(vz340, vz3500) -> error([]) The set Q consists of the following terms: new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare1(x0, x1, x2, x3, x4) new_compare10(x0, x1) new_compare11(x0, x1) new_compare(x0, x1, ty_Integer) new_compare12(x0, x1, x2, x3) new_compare6(x0, x1) new_compare(x0, x1, ty_Bool) new_compare4(@0, @0) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare8(x0, x1, x2) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare(x0, x1, app(ty_[], x2)) new_compare7(x0, x1) new_compare5(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Int) new_compare3(x0, x1) new_compare9(x0, x1, x2, x3) new_compare(x0, x1, ty_Char) new_compare13(x0, x1, x2) new_compare0(x0, x1) 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. ---------------------------------------- (22) 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. ---------------------------------------- (23) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) The TRS R consists of the following rules: new_compare4(@0, @0) -> EQ The set Q consists of the following terms: new_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare1(x0, x1, x2, x3, x4) new_compare10(x0, x1) new_compare11(x0, x1) new_compare(x0, x1, ty_Integer) new_compare12(x0, x1, x2, x3) new_compare6(x0, x1) new_compare(x0, x1, ty_Bool) new_compare4(@0, @0) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare8(x0, x1, x2) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare(x0, x1, app(ty_[], x2)) new_compare7(x0, x1) new_compare5(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Int) new_compare3(x0, x1) new_compare9(x0, x1, x2, x3) new_compare(x0, x1, ty_Char) new_compare13(x0, x1, x2) new_compare0(x0, x1) 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. ---------------------------------------- (24) 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_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare1(x0, x1, x2, x3, x4) new_compare10(x0, x1) new_compare11(x0, x1) new_compare(x0, x1, ty_Integer) new_compare12(x0, x1, x2, x3) new_compare6(x0, x1) new_compare(x0, x1, ty_Bool) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare8(x0, x1, x2) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare(x0, x1, app(ty_[], x2)) new_compare7(x0, x1) new_compare5(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Int) new_compare3(x0, x1) new_compare9(x0, x1, x2, x3) new_compare(x0, x1, ty_Char) new_compare13(x0, x1, x2) new_compare0(x0, x1) new_compare(x0, x1, ty_Double) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) ---------------------------------------- (25) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) new_merge0(vz44, vz45, vz46, vz47, EQ, ba) -> new_merge(vz46, :(vz44, vz47), ba) The TRS R consists of the following rules: new_compare4(@0, @0) -> EQ The set Q consists of the following terms: new_compare4(@0, @0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (26) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule new_merge(:(x0, y1), :(x1, y3), ty_@0) -> new_merge0(x1, x0, y1, y3, new_compare4(x0, x1), ty_@0) at position [4] we obtained the following new rules [LPAR04]: (new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0),new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0)) ---------------------------------------- (27) 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_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) The TRS R consists of the following rules: new_compare4(@0, @0) -> EQ The set Q consists of the following terms: new_compare4(@0, @0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (28) 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. ---------------------------------------- (29) 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_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) R is empty. The set Q consists of the following terms: new_compare4(@0, @0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (30) 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_compare4(@0, @0) ---------------------------------------- (31) 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_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (32) 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(@0, @0, z0, z1, EQ, ty_@0) -> new_merge(z0, :(@0, z1), ty_@0),new_merge0(@0, @0, z0, z1, EQ, ty_@0) -> new_merge(z0, :(@0, z1), ty_@0)) ---------------------------------------- (33) Obligation: Q DP problem: The TRS P consists of the following rules: new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) new_merge0(@0, @0, z0, z1, EQ, ty_@0) -> new_merge(z0, :(@0, z1), ty_@0) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (34) 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(@0, @0, z0, z1, EQ, ty_@0) -> new_merge(z0, :(@0, z1), ty_@0) The graph contains the following edges 3 >= 1, 6 >= 3 *new_merge(:(@0, y1), :(@0, y3), ty_@0) -> new_merge0(@0, @0, y1, y3, EQ, ty_@0) The graph contains the following edges 1 > 1, 2 > 1, 1 > 2, 2 > 2, 1 > 3, 2 > 4, 3 >= 6 ---------------------------------------- (35) YES ---------------------------------------- (36) 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_compare11(vz340, vz3500) -> error([]) new_compare(vz340, vz3500, ty_Float) -> new_compare0(vz340, vz3500) new_compare14(vz3500, vz35100, ty_Bool) -> new_compare6(vz3500, vz35100) new_compare14(vz3500, vz35100, ty_Double) -> new_compare7(vz3500, vz35100) new_compare(vz340, vz3500, ty_Int) -> new_compare11(vz340, vz3500) new_compare(vz340, vz3500, app(app(ty_@2, bg), bh)) -> new_compare12(vz340, vz3500, bg, bh) new_compare(vz340, vz3500, ty_Ordering) -> new_compare3(vz340, vz3500) new_compare12(vz340, vz3500, bg, bh) -> error([]) new_compare(vz340, vz3500, app(ty_[], bf)) -> new_compare13(vz340, vz3500, bf) new_compare(vz340, vz3500, app(ty_Maybe, be)) -> new_compare5(vz340, vz3500, be) new_compare14(vz3500, vz35100, app(app(ty_Either, ca), cb)) -> new_compare9(vz3500, vz35100, ca, cb) new_merge_pairs0(:(vz35110, []), ba) -> :(vz35110, []) 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_Char) -> new_compare10(vz3500, vz35100) new_compare5(vz340, vz3500, be) -> error([]) new_compare14(vz3500, vz35100, app(ty_Ratio, cc)) -> new_compare8(vz3500, vz35100, cc) new_merge2([], :(vz3500, vz3501), ba) -> :(vz3500, vz3501) new_compare0(vz340, vz3500) -> error([]) new_compare14(vz3500, vz35100, app(app(ty_@2, bg), bh)) -> new_compare12(vz3500, vz35100, bg, bh) new_compare14(vz3500, vz35100, ty_Float) -> new_compare0(vz3500, vz35100) new_merge_pairs0(:(vz35110, :(vz351110, vz351111)), ba) -> :(new_merge2(vz35110, vz351110, ba), new_merge_pairs0(vz351111, ba)) new_compare3(vz340, vz3500) -> error([]) new_merge00(vz44, vz45, vz46, vz47, LT, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) new_compare(vz340, vz3500, ty_Char) -> new_compare10(vz340, vz3500) new_compare4(@0, @0) -> EQ new_compare7(vz340, vz3500) -> error([]) new_compare14(vz3500, vz35100, ty_Ordering) -> new_compare3(vz3500, vz35100) new_compare(vz340, vz3500, app(app(ty_Either, ca), cb)) -> new_compare9(vz340, vz3500, ca, cb) new_merge2(:(vz340, vz341), :(vz3500, vz3501), ba) -> new_merge00(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, ba), ba) new_compare14(vz3500, vz35100, app(ty_Maybe, be)) -> new_compare5(vz3500, vz35100, be) new_compare(vz340, vz3500, ty_Double) -> new_compare7(vz340, vz3500) new_compare14(vz3500, vz35100, ty_Int) -> new_compare11(vz3500, vz35100) new_merge2(vz34, [], ba) -> vz34 new_compare(vz340, vz3500, ty_Bool) -> new_compare6(vz340, vz3500) new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) new_compare13(vz340, vz3500, bf) -> error([]) 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, bb, bc, bd) -> error([]) new_compare6(vz340, vz3500) -> error([]) new_merge00(vz44, vz45, vz46, vz47, GT, cd) -> :(vz44, new_merge2(:(vz45, vz46), vz47, cd)) new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) new_compare9(vz340, vz3500, ca, cb) -> error([]) new_compare(vz340, vz3500, app(app(app(ty_@3, bb), bc), bd)) -> new_compare1(vz340, vz3500, bb, bc, bd) new_compare14(vz3500, vz35100, ty_Integer) -> new_compare2(vz3500, vz35100) new_compare10(vz340, vz3500) -> error([]) new_merge00(vz44, vz45, vz46, vz47, EQ, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) new_compare14(vz3500, vz35100, app(app(app(ty_@3, bb), bc), bd)) -> new_compare1(vz3500, vz35100, bb, bc, bd) new_compare8(vz340, vz3500, cc) -> error([]) new_merge1(vz34, vz350, [], ba) -> new_merge2(vz34, vz350, ba) new_compare(vz340, vz3500, app(ty_Ratio, cc)) -> new_compare8(vz340, vz3500, cc) new_compare14(vz3500, vz35100, ty_@0) -> new_compare4(vz3500, vz35100) new_compare14(vz3500, vz35100, app(ty_[], bf)) -> new_compare13(vz3500, vz35100, bf) The set Q consists of the following terms: new_compare14(x0, x1, ty_Double) new_merge1(x0, :(x1, x2), :(x3, x4), x5) new_compare10(x0, x1) new_compare(x0, x1, app(ty_[], x2)) new_compare13(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 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_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare4(@0, @0) new_compare8(x0, x1, x2) new_compare14(x0, x1, ty_Char) new_merge00(x0, x1, x2, x3, EQ, x4) new_compare14(x0, x1, app(ty_[], x2)) new_compare14(x0, x1, app(app(ty_Either, x2), x3)) new_merge1(x0, [], :(x1, x2), x3) new_compare14(x0, x1, ty_Ordering) new_compare7(x0, x1) new_merge2(x0, [], x1) new_compare14(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Int) new_merge00(x0, x1, x2, x3, GT, x4) new_merge1(x0, x1, [], x2) new_compare14(x0, x1, app(app(ty_@2, x2), x3)) new_compare12(x0, x1, x2, x3) new_compare14(x0, x1, ty_Int) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare1(x0, x1, x2, x3, x4) new_compare(x0, x1, ty_Integer) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare6(x0, x1) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare9(x0, x1, x2, x3) new_compare14(x0, x1, app(ty_Ratio, x2)) new_compare3(x0, x1) new_compare5(x0, x1, x2) new_compare(x0, x1, ty_Char) new_compare14(x0, x1, app(ty_Maybe, x2)) new_merge_pairs0(:(x0, []), x1) new_compare14(x0, x1, ty_Float) new_merge_pairs0([], x0) new_compare0(x0, x1) 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) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (37) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (38) 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_compare11(vz340, vz3500) -> error([]) new_compare(vz340, vz3500, ty_Float) -> new_compare0(vz340, vz3500) new_compare14(vz3500, vz35100, ty_Bool) -> new_compare6(vz3500, vz35100) new_compare14(vz3500, vz35100, ty_Double) -> new_compare7(vz3500, vz35100) new_compare(vz340, vz3500, ty_Int) -> new_compare11(vz340, vz3500) new_compare(vz340, vz3500, app(app(ty_@2, bg), bh)) -> new_compare12(vz340, vz3500, bg, bh) new_compare(vz340, vz3500, ty_Ordering) -> new_compare3(vz340, vz3500) new_compare12(vz340, vz3500, bg, bh) -> error([]) new_compare(vz340, vz3500, app(ty_[], bf)) -> new_compare13(vz340, vz3500, bf) new_compare(vz340, vz3500, app(ty_Maybe, be)) -> new_compare5(vz340, vz3500, be) new_compare14(vz3500, vz35100, app(app(ty_Either, ca), cb)) -> new_compare9(vz3500, vz35100, ca, cb) new_merge_pairs0(:(vz35110, []), ba) -> :(vz35110, []) 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_Char) -> new_compare10(vz3500, vz35100) new_compare5(vz340, vz3500, be) -> error([]) new_compare14(vz3500, vz35100, app(ty_Ratio, cc)) -> new_compare8(vz3500, vz35100, cc) new_merge2([], :(vz3500, vz3501), ba) -> :(vz3500, vz3501) new_compare0(vz340, vz3500) -> error([]) new_compare14(vz3500, vz35100, app(app(ty_@2, bg), bh)) -> new_compare12(vz3500, vz35100, bg, bh) new_compare14(vz3500, vz35100, ty_Float) -> new_compare0(vz3500, vz35100) new_merge_pairs0(:(vz35110, :(vz351110, vz351111)), ba) -> :(new_merge2(vz35110, vz351110, ba), new_merge_pairs0(vz351111, ba)) new_compare3(vz340, vz3500) -> error([]) new_merge00(vz44, vz45, vz46, vz47, LT, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) new_compare(vz340, vz3500, ty_Char) -> new_compare10(vz340, vz3500) new_compare4(@0, @0) -> EQ new_compare7(vz340, vz3500) -> error([]) new_compare14(vz3500, vz35100, ty_Ordering) -> new_compare3(vz3500, vz35100) new_compare(vz340, vz3500, app(app(ty_Either, ca), cb)) -> new_compare9(vz340, vz3500, ca, cb) new_merge2(:(vz340, vz341), :(vz3500, vz3501), ba) -> new_merge00(vz3500, vz340, vz341, vz3501, new_compare(vz340, vz3500, ba), ba) new_compare14(vz3500, vz35100, app(ty_Maybe, be)) -> new_compare5(vz3500, vz35100, be) new_compare(vz340, vz3500, ty_Double) -> new_compare7(vz340, vz3500) new_compare14(vz3500, vz35100, ty_Int) -> new_compare11(vz3500, vz35100) new_merge2(vz34, [], ba) -> vz34 new_compare(vz340, vz3500, ty_Bool) -> new_compare6(vz340, vz3500) new_compare(vz340, vz3500, ty_Integer) -> new_compare2(vz340, vz3500) new_compare13(vz340, vz3500, bf) -> error([]) 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, bb, bc, bd) -> error([]) new_compare6(vz340, vz3500) -> error([]) new_merge00(vz44, vz45, vz46, vz47, GT, cd) -> :(vz44, new_merge2(:(vz45, vz46), vz47, cd)) new_compare(vz340, vz3500, ty_@0) -> new_compare4(vz340, vz3500) new_compare9(vz340, vz3500, ca, cb) -> error([]) new_compare(vz340, vz3500, app(app(app(ty_@3, bb), bc), bd)) -> new_compare1(vz340, vz3500, bb, bc, bd) new_compare14(vz3500, vz35100, ty_Integer) -> new_compare2(vz3500, vz35100) new_compare10(vz340, vz3500) -> error([]) new_merge00(vz44, vz45, vz46, vz47, EQ, cd) -> :(vz45, new_merge2(vz46, :(vz44, vz47), cd)) new_compare14(vz3500, vz35100, app(app(app(ty_@3, bb), bc), bd)) -> new_compare1(vz3500, vz35100, bb, bc, bd) new_compare8(vz340, vz3500, cc) -> error([]) new_merge1(vz34, vz350, [], ba) -> new_merge2(vz34, vz350, ba) new_compare(vz340, vz3500, app(ty_Ratio, cc)) -> new_compare8(vz340, vz3500, cc) new_compare14(vz3500, vz35100, ty_@0) -> new_compare4(vz3500, vz35100) new_compare14(vz3500, vz35100, app(ty_[], bf)) -> new_compare13(vz3500, vz35100, bf) The set Q consists of the following terms: new_compare14(x0, x1, ty_Double) new_merge1(x0, :(x1, x2), :(x3, x4), x5) new_compare10(x0, x1) new_compare(x0, x1, app(ty_[], x2)) new_compare13(x0, x1, x2) new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 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_compare(x0, x1, app(app(ty_Either, x2), x3)) new_compare4(@0, @0) new_compare8(x0, x1, x2) new_compare14(x0, x1, ty_Char) new_merge00(x0, x1, x2, x3, EQ, x4) new_compare14(x0, x1, app(ty_[], x2)) new_compare14(x0, x1, app(app(ty_Either, x2), x3)) new_merge1(x0, [], :(x1, x2), x3) new_compare14(x0, x1, ty_Ordering) new_compare7(x0, x1) new_merge2(x0, [], x1) new_compare14(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_compare(x0, x1, ty_Int) new_merge00(x0, x1, x2, x3, GT, x4) new_merge1(x0, x1, [], x2) new_compare14(x0, x1, app(app(ty_@2, x2), x3)) new_compare12(x0, x1, x2, x3) new_compare14(x0, x1, ty_Int) new_compare(x0, x1, ty_@0) new_compare(x0, x1, ty_Ordering) new_compare(x0, x1, app(ty_Ratio, x2)) new_compare(x0, x1, app(ty_Maybe, x2)) new_compare1(x0, x1, x2, x3, x4) new_compare(x0, x1, ty_Integer) new_compare(x0, x1, app(app(ty_@2, x2), x3)) new_compare6(x0, x1) new_compare2(x0, x1) new_compare(x0, x1, ty_Float) new_compare9(x0, x1, x2, x3) new_compare14(x0, x1, app(ty_Ratio, x2)) new_compare3(x0, x1) new_compare5(x0, x1, x2) new_compare(x0, x1, ty_Char) new_compare14(x0, x1, app(ty_Maybe, x2)) new_merge_pairs0(:(x0, []), x1) new_compare14(x0, x1, ty_Float) new_merge_pairs0([], x0) new_compare0(x0, x1) 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) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (39) 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)) ---------------------------------------- (40) YES