11.03/5.52 YES 13.24/6.11 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 13.24/6.11 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 13.24/6.11 13.24/6.11 13.24/6.11 H-Termination with start terms of the given HASKELL could be proven: 13.24/6.11 13.24/6.11 (0) HASKELL 13.24/6.11 (1) BR [EQUIVALENT, 0 ms] 13.24/6.11 (2) HASKELL 13.24/6.11 (3) COR [EQUIVALENT, 0 ms] 13.24/6.11 (4) HASKELL 13.24/6.11 (5) LetRed [EQUIVALENT, 0 ms] 13.24/6.11 (6) HASKELL 13.24/6.11 (7) Narrow [SOUND, 0 ms] 13.24/6.11 (8) QDP 13.24/6.11 (9) DependencyGraphProof [EQUIVALENT, 0 ms] 13.24/6.11 (10) QDP 13.24/6.11 (11) TransformationProof [EQUIVALENT, 0 ms] 13.24/6.11 (12) QDP 13.24/6.11 (13) QDPSizeChangeProof [EQUIVALENT, 0 ms] 13.24/6.11 (14) YES 13.24/6.11 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (0) 13.24/6.11 Obligation: 13.24/6.11 mainModule Main 13.24/6.11 module Maybe where { 13.24/6.11 import qualified List; 13.24/6.11 import qualified Main; 13.24/6.11 import qualified Prelude; 13.24/6.11 } 13.24/6.11 module List where { 13.24/6.11 import qualified Main; 13.24/6.11 import qualified Maybe; 13.24/6.11 import qualified Prelude; 13.24/6.11 elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool; 13.24/6.11 elem_by _ _ [] = False; 13.24/6.11 elem_by eq y (x : xs) = x `eq` y || elem_by eq y xs; 13.24/6.11 13.24/6.11 nubBy :: (a -> a -> Bool) -> [a] -> [a]; 13.24/6.11 nubBy eq l = nubBy' l [] where { 13.24/6.11 nubBy' [] _ = []; 13.24/6.11 nubBy' (y : ys) xs | elem_by eq y xs = nubBy' ys xs 13.24/6.11 | otherwise = y : nubBy' ys (y : xs); 13.24/6.11 }; 13.24/6.11 13.24/6.11 } 13.24/6.11 module Main where { 13.24/6.11 import qualified List; 13.24/6.11 import qualified Maybe; 13.24/6.11 import qualified Prelude; 13.24/6.11 } 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (1) BR (EQUIVALENT) 13.24/6.11 Replaced joker patterns by fresh variables and removed binding patterns. 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (2) 13.24/6.11 Obligation: 13.24/6.11 mainModule Main 13.24/6.11 module Maybe where { 13.24/6.11 import qualified List; 13.24/6.11 import qualified Main; 13.24/6.11 import qualified Prelude; 13.24/6.11 } 13.24/6.11 module List where { 13.24/6.11 import qualified Main; 13.24/6.11 import qualified Maybe; 13.24/6.11 import qualified Prelude; 13.24/6.11 elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool; 13.24/6.11 elem_by vy vz [] = False; 13.24/6.11 elem_by eq y (x : xs) = x `eq` y || elem_by eq y xs; 13.24/6.11 13.24/6.11 nubBy :: (a -> a -> Bool) -> [a] -> [a]; 13.24/6.11 nubBy eq l = nubBy' l [] where { 13.24/6.11 nubBy' [] wu = []; 13.24/6.11 nubBy' (y : ys) xs | elem_by eq y xs = nubBy' ys xs 13.24/6.11 | otherwise = y : nubBy' ys (y : xs); 13.24/6.11 }; 13.24/6.11 13.24/6.11 } 13.24/6.11 module Main where { 13.24/6.11 import qualified List; 13.24/6.11 import qualified Maybe; 13.24/6.11 import qualified Prelude; 13.24/6.11 } 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (3) COR (EQUIVALENT) 13.24/6.11 Cond Reductions: 13.24/6.11 The following Function with conditions 13.24/6.11 "undefined |Falseundefined; 13.24/6.11 " 13.24/6.11 is transformed to 13.24/6.11 "undefined = undefined1; 13.24/6.11 " 13.24/6.11 "undefined0 True = undefined; 13.24/6.11 " 13.24/6.11 "undefined1 = undefined0 False; 13.24/6.11 " 13.24/6.11 The following Function with conditions 13.24/6.11 "nubBy' [] wu = []; 13.24/6.11 nubBy' (y : ys) xs|elem_by eq y xsnubBy' ys xs|otherwisey : nubBy' ys (y : xs); 13.24/6.11 " 13.24/6.11 is transformed to 13.24/6.11 "nubBy' [] wu = nubBy'3 [] wu; 13.24/6.11 nubBy' (y : ys) xs = nubBy'2 (y : ys) xs; 13.24/6.11 " 13.24/6.11 "nubBy'0 y ys xs True = y : nubBy' ys (y : xs); 13.24/6.11 " 13.24/6.11 "nubBy'1 y ys xs True = nubBy' ys xs; 13.24/6.11 nubBy'1 y ys xs False = nubBy'0 y ys xs otherwise; 13.24/6.11 " 13.24/6.11 "nubBy'2 (y : ys) xs = nubBy'1 y ys xs (elem_by eq y xs); 13.24/6.11 " 13.24/6.11 "nubBy'3 [] wu = []; 13.24/6.11 nubBy'3 wx wy = nubBy'2 wx wy; 13.24/6.11 " 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (4) 13.24/6.11 Obligation: 13.24/6.11 mainModule Main 13.24/6.11 module Maybe where { 13.24/6.11 import qualified List; 13.24/6.11 import qualified Main; 13.24/6.11 import qualified Prelude; 13.24/6.11 } 13.24/6.11 module List where { 13.24/6.11 import qualified Main; 13.24/6.11 import qualified Maybe; 13.24/6.11 import qualified Prelude; 13.24/6.11 elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool; 13.24/6.11 elem_by vy vz [] = False; 13.24/6.11 elem_by eq y (x : xs) = x `eq` y || elem_by eq y xs; 13.24/6.11 13.24/6.11 nubBy :: (a -> a -> Bool) -> [a] -> [a]; 13.24/6.11 nubBy eq l = nubBy' l [] where { 13.24/6.11 nubBy' [] wu = nubBy'3 [] wu; 13.24/6.11 nubBy' (y : ys) xs = nubBy'2 (y : ys) xs; 13.24/6.11 nubBy'0 y ys xs True = y : nubBy' ys (y : xs); 13.24/6.11 nubBy'1 y ys xs True = nubBy' ys xs; 13.24/6.11 nubBy'1 y ys xs False = nubBy'0 y ys xs otherwise; 13.24/6.11 nubBy'2 (y : ys) xs = nubBy'1 y ys xs (elem_by eq y xs); 13.24/6.11 nubBy'3 [] wu = []; 13.24/6.11 nubBy'3 wx wy = nubBy'2 wx wy; 13.24/6.11 }; 13.24/6.11 13.24/6.11 } 13.24/6.11 module Main where { 13.24/6.11 import qualified List; 13.24/6.11 import qualified Maybe; 13.24/6.11 import qualified Prelude; 13.24/6.11 } 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (5) LetRed (EQUIVALENT) 13.24/6.11 Let/Where Reductions: 13.24/6.11 The bindings of the following Let/Where expression 13.24/6.11 "nubBy' l [] where { 13.24/6.11 nubBy' [] wu = nubBy'3 [] wu; 13.24/6.11 nubBy' (y : ys) xs = nubBy'2 (y : ys) xs; 13.24/6.11 ; 13.24/6.11 nubBy'0 y ys xs True = y : nubBy' ys (y : xs); 13.24/6.11 ; 13.24/6.11 nubBy'1 y ys xs True = nubBy' ys xs; 13.24/6.11 nubBy'1 y ys xs False = nubBy'0 y ys xs otherwise; 13.24/6.11 ; 13.24/6.11 nubBy'2 (y : ys) xs = nubBy'1 y ys xs (elem_by eq y xs); 13.24/6.11 ; 13.24/6.11 nubBy'3 [] wu = []; 13.24/6.11 nubBy'3 wx wy = nubBy'2 wx wy; 13.24/6.11 } 13.24/6.11 " 13.24/6.11 are unpacked to the following functions on top level 13.24/6.11 "nubByNubBy'2 wz (y : ys) xs = nubByNubBy'1 wz y ys xs (elem_by wz y xs); 13.24/6.11 " 13.24/6.11 "nubByNubBy'3 wz [] wu = []; 13.24/6.11 nubByNubBy'3 wz wx wy = nubByNubBy'2 wz wx wy; 13.24/6.11 " 13.24/6.11 "nubByNubBy'1 wz y ys xs True = nubByNubBy' wz ys xs; 13.24/6.11 nubByNubBy'1 wz y ys xs False = nubByNubBy'0 wz y ys xs otherwise; 13.24/6.11 " 13.24/6.11 "nubByNubBy' wz [] wu = nubByNubBy'3 wz [] wu; 13.24/6.11 nubByNubBy' wz (y : ys) xs = nubByNubBy'2 wz (y : ys) xs; 13.24/6.11 " 13.24/6.11 "nubByNubBy'0 wz y ys xs True = y : nubByNubBy' wz ys (y : xs); 13.24/6.11 " 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (6) 13.24/6.11 Obligation: 13.24/6.11 mainModule Main 13.24/6.11 module Maybe where { 13.24/6.11 import qualified List; 13.24/6.11 import qualified Main; 13.24/6.11 import qualified Prelude; 13.24/6.11 } 13.24/6.11 module List where { 13.24/6.11 import qualified Main; 13.24/6.11 import qualified Maybe; 13.24/6.11 import qualified Prelude; 13.24/6.11 elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool; 13.24/6.11 elem_by vy vz [] = False; 13.24/6.11 elem_by eq y (x : xs) = x `eq` y || elem_by eq y xs; 13.24/6.11 13.24/6.11 nubBy :: (a -> a -> Bool) -> [a] -> [a]; 13.24/6.11 nubBy eq l = nubByNubBy' eq l []; 13.24/6.11 13.24/6.11 nubByNubBy' wz [] wu = nubByNubBy'3 wz [] wu; 13.24/6.11 nubByNubBy' wz (y : ys) xs = nubByNubBy'2 wz (y : ys) xs; 13.24/6.11 13.24/6.11 nubByNubBy'0 wz y ys xs True = y : nubByNubBy' wz ys (y : xs); 13.24/6.11 13.24/6.11 nubByNubBy'1 wz y ys xs True = nubByNubBy' wz ys xs; 13.24/6.11 nubByNubBy'1 wz y ys xs False = nubByNubBy'0 wz y ys xs otherwise; 13.24/6.11 13.24/6.11 nubByNubBy'2 wz (y : ys) xs = nubByNubBy'1 wz y ys xs (elem_by wz y xs); 13.24/6.11 13.24/6.11 nubByNubBy'3 wz [] wu = []; 13.24/6.11 nubByNubBy'3 wz wx wy = nubByNubBy'2 wz wx wy; 13.24/6.11 13.24/6.11 } 13.24/6.11 module Main where { 13.24/6.11 import qualified List; 13.24/6.11 import qualified Maybe; 13.24/6.11 import qualified Prelude; 13.24/6.11 } 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (7) Narrow (SOUND) 13.24/6.11 Haskell To QDPs 13.24/6.11 13.24/6.11 digraph dp_graph { 13.24/6.11 node [outthreshold=100, inthreshold=100];1[label="List.nubBy",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 13.24/6.11 3[label="List.nubBy xu3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 13.24/6.11 4[label="List.nubBy xu3 xu4",fontsize=16,color="black",shape="triangle"];4 -> 5[label="",style="solid", color="black", weight=3]; 13.24/6.11 5[label="List.nubByNubBy' xu3 xu4 []",fontsize=16,color="burlywood",shape="box"];493[label="xu4/xu40 : xu41",fontsize=10,color="white",style="solid",shape="box"];5 -> 493[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 493 -> 6[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 494[label="xu4/[]",fontsize=10,color="white",style="solid",shape="box"];5 -> 494[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 494 -> 7[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 6[label="List.nubByNubBy' xu3 (xu40 : xu41) []",fontsize=16,color="black",shape="box"];6 -> 8[label="",style="solid", color="black", weight=3]; 13.24/6.11 7[label="List.nubByNubBy' xu3 [] []",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 13.24/6.11 8[label="List.nubByNubBy'2 xu3 (xu40 : xu41) []",fontsize=16,color="black",shape="box"];8 -> 10[label="",style="solid", color="black", weight=3]; 13.24/6.11 9[label="List.nubByNubBy'3 xu3 [] []",fontsize=16,color="black",shape="box"];9 -> 11[label="",style="solid", color="black", weight=3]; 13.24/6.11 10[label="List.nubByNubBy'1 xu3 xu40 xu41 [] (List.elem_by xu3 xu40 [])",fontsize=16,color="black",shape="box"];10 -> 12[label="",style="solid", color="black", weight=3]; 13.24/6.11 11[label="[]",fontsize=16,color="green",shape="box"];12[label="List.nubByNubBy'1 xu3 xu40 xu41 [] False",fontsize=16,color="black",shape="box"];12 -> 13[label="",style="solid", color="black", weight=3]; 13.24/6.11 13[label="List.nubByNubBy'0 xu3 xu40 xu41 [] otherwise",fontsize=16,color="black",shape="box"];13 -> 14[label="",style="solid", color="black", weight=3]; 13.24/6.11 14[label="List.nubByNubBy'0 xu3 xu40 xu41 [] True",fontsize=16,color="black",shape="box"];14 -> 15[label="",style="solid", color="black", weight=3]; 13.24/6.11 15[label="xu40 : List.nubByNubBy' xu3 xu41 (xu40 : [])",fontsize=16,color="green",shape="box"];15 -> 16[label="",style="dashed", color="green", weight=3]; 13.24/6.11 16[label="List.nubByNubBy' xu3 xu41 (xu40 : [])",fontsize=16,color="burlywood",shape="triangle"];495[label="xu41/xu410 : xu411",fontsize=10,color="white",style="solid",shape="box"];16 -> 495[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 495 -> 17[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 496[label="xu41/[]",fontsize=10,color="white",style="solid",shape="box"];16 -> 496[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 496 -> 18[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 17[label="List.nubByNubBy' xu3 (xu410 : xu411) (xu40 : [])",fontsize=16,color="black",shape="box"];17 -> 19[label="",style="solid", color="black", weight=3]; 13.24/6.11 18[label="List.nubByNubBy' xu3 [] (xu40 : [])",fontsize=16,color="black",shape="box"];18 -> 20[label="",style="solid", color="black", weight=3]; 13.24/6.11 19[label="List.nubByNubBy'2 xu3 (xu410 : xu411) (xu40 : [])",fontsize=16,color="black",shape="box"];19 -> 21[label="",style="solid", color="black", weight=3]; 13.24/6.11 20[label="List.nubByNubBy'3 xu3 [] (xu40 : [])",fontsize=16,color="black",shape="box"];20 -> 22[label="",style="solid", color="black", weight=3]; 13.24/6.11 21[label="List.nubByNubBy'1 xu3 xu410 xu411 (xu40 : []) (List.elem_by xu3 xu410 (xu40 : []))",fontsize=16,color="black",shape="box"];21 -> 23[label="",style="solid", color="black", weight=3]; 13.24/6.11 22[label="[]",fontsize=16,color="green",shape="box"];23 -> 452[label="",style="dashed", color="red", weight=0]; 13.24/6.11 23[label="List.nubByNubBy'1 xu3 xu410 xu411 (xu40 : []) (xu3 xu40 xu410 || List.elem_by xu3 xu410 [])",fontsize=16,color="magenta"];23 -> 453[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 23 -> 454[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 23 -> 455[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 23 -> 456[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 23 -> 457[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 23 -> 458[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 23 -> 459[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 453[label="xu40",fontsize=16,color="green",shape="box"];454[label="[]",fontsize=16,color="green",shape="box"];455[label="xu3",fontsize=16,color="green",shape="box"];456[label="[]",fontsize=16,color="green",shape="box"];457[label="xu3 xu40 xu410",fontsize=16,color="green",shape="box"];457 -> 461[label="",style="dashed", color="green", weight=3]; 13.24/6.11 457 -> 462[label="",style="dashed", color="green", weight=3]; 13.24/6.11 458[label="xu410",fontsize=16,color="green",shape="box"];459[label="xu411",fontsize=16,color="green",shape="box"];452[label="List.nubByNubBy'1 xu32 xu33 xu34 (xu35 : xu36) (xu39 || List.elem_by xu32 xu33 xu38)",fontsize=16,color="burlywood",shape="triangle"];497[label="xu39/False",fontsize=10,color="white",style="solid",shape="box"];452 -> 497[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 497 -> 463[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 498[label="xu39/True",fontsize=10,color="white",style="solid",shape="box"];452 -> 498[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 498 -> 464[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 461[label="xu40",fontsize=16,color="green",shape="box"];462[label="xu410",fontsize=16,color="green",shape="box"];463[label="List.nubByNubBy'1 xu32 xu33 xu34 (xu35 : xu36) (False || List.elem_by xu32 xu33 xu38)",fontsize=16,color="black",shape="box"];463 -> 467[label="",style="solid", color="black", weight=3]; 13.24/6.11 464[label="List.nubByNubBy'1 xu32 xu33 xu34 (xu35 : xu36) (True || List.elem_by xu32 xu33 xu38)",fontsize=16,color="black",shape="box"];464 -> 468[label="",style="solid", color="black", weight=3]; 13.24/6.11 467[label="List.nubByNubBy'1 xu32 xu33 xu34 (xu35 : xu36) (List.elem_by xu32 xu33 xu38)",fontsize=16,color="burlywood",shape="triangle"];499[label="xu38/xu380 : xu381",fontsize=10,color="white",style="solid",shape="box"];467 -> 499[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 499 -> 469[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 500[label="xu38/[]",fontsize=10,color="white",style="solid",shape="box"];467 -> 500[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 500 -> 470[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 468[label="List.nubByNubBy'1 xu32 xu33 xu34 (xu35 : xu36) True",fontsize=16,color="black",shape="box"];468 -> 471[label="",style="solid", color="black", weight=3]; 13.24/6.11 469[label="List.nubByNubBy'1 xu32 xu33 xu34 (xu35 : xu36) (List.elem_by xu32 xu33 (xu380 : xu381))",fontsize=16,color="black",shape="box"];469 -> 472[label="",style="solid", color="black", weight=3]; 13.24/6.11 470[label="List.nubByNubBy'1 xu32 xu33 xu34 (xu35 : xu36) (List.elem_by xu32 xu33 [])",fontsize=16,color="black",shape="box"];470 -> 473[label="",style="solid", color="black", weight=3]; 13.24/6.11 471[label="List.nubByNubBy' xu32 xu34 (xu35 : xu36)",fontsize=16,color="burlywood",shape="triangle"];501[label="xu34/xu340 : xu341",fontsize=10,color="white",style="solid",shape="box"];471 -> 501[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 501 -> 474[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 502[label="xu34/[]",fontsize=10,color="white",style="solid",shape="box"];471 -> 502[label="",style="solid", color="burlywood", weight=9]; 13.24/6.11 502 -> 475[label="",style="solid", color="burlywood", weight=3]; 13.24/6.11 472 -> 452[label="",style="dashed", color="red", weight=0]; 13.24/6.11 472[label="List.nubByNubBy'1 xu32 xu33 xu34 (xu35 : xu36) (xu32 xu380 xu33 || List.elem_by xu32 xu33 xu381)",fontsize=16,color="magenta"];472 -> 476[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 472 -> 477[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 473[label="List.nubByNubBy'1 xu32 xu33 xu34 (xu35 : xu36) False",fontsize=16,color="black",shape="box"];473 -> 478[label="",style="solid", color="black", weight=3]; 13.24/6.11 474[label="List.nubByNubBy' xu32 (xu340 : xu341) (xu35 : xu36)",fontsize=16,color="black",shape="box"];474 -> 479[label="",style="solid", color="black", weight=3]; 13.24/6.11 475[label="List.nubByNubBy' xu32 [] (xu35 : xu36)",fontsize=16,color="black",shape="box"];475 -> 480[label="",style="solid", color="black", weight=3]; 13.24/6.11 476[label="xu381",fontsize=16,color="green",shape="box"];477[label="xu32 xu380 xu33",fontsize=16,color="green",shape="box"];477 -> 481[label="",style="dashed", color="green", weight=3]; 13.24/6.11 477 -> 482[label="",style="dashed", color="green", weight=3]; 13.24/6.11 478[label="List.nubByNubBy'0 xu32 xu33 xu34 (xu35 : xu36) otherwise",fontsize=16,color="black",shape="box"];478 -> 483[label="",style="solid", color="black", weight=3]; 13.24/6.11 479[label="List.nubByNubBy'2 xu32 (xu340 : xu341) (xu35 : xu36)",fontsize=16,color="black",shape="box"];479 -> 484[label="",style="solid", color="black", weight=3]; 13.24/6.11 480[label="List.nubByNubBy'3 xu32 [] (xu35 : xu36)",fontsize=16,color="black",shape="box"];480 -> 485[label="",style="solid", color="black", weight=3]; 13.24/6.11 481[label="xu380",fontsize=16,color="green",shape="box"];482[label="xu33",fontsize=16,color="green",shape="box"];483[label="List.nubByNubBy'0 xu32 xu33 xu34 (xu35 : xu36) True",fontsize=16,color="black",shape="box"];483 -> 486[label="",style="solid", color="black", weight=3]; 13.24/6.11 484 -> 467[label="",style="dashed", color="red", weight=0]; 13.24/6.11 484[label="List.nubByNubBy'1 xu32 xu340 xu341 (xu35 : xu36) (List.elem_by xu32 xu340 (xu35 : xu36))",fontsize=16,color="magenta"];484 -> 487[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 484 -> 488[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 484 -> 489[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 485[label="[]",fontsize=16,color="green",shape="box"];486[label="xu33 : List.nubByNubBy' xu32 xu34 (xu33 : xu35 : xu36)",fontsize=16,color="green",shape="box"];486 -> 490[label="",style="dashed", color="green", weight=3]; 13.24/6.11 487[label="xu35 : xu36",fontsize=16,color="green",shape="box"];488[label="xu340",fontsize=16,color="green",shape="box"];489[label="xu341",fontsize=16,color="green",shape="box"];490 -> 471[label="",style="dashed", color="red", weight=0]; 13.24/6.11 490[label="List.nubByNubBy' xu32 xu34 (xu33 : xu35 : xu36)",fontsize=16,color="magenta"];490 -> 491[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 490 -> 492[label="",style="dashed", color="magenta", weight=3]; 13.24/6.11 491[label="xu33",fontsize=16,color="green",shape="box"];492[label="xu35 : xu36",fontsize=16,color="green",shape="box"];} 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (8) 13.24/6.11 Obligation: 13.24/6.11 Q DP problem: 13.24/6.11 The TRS P consists of the following rules: 13.24/6.11 13.24/6.11 new_nubByNubBy'(xu32, :(xu340, xu341), xu35, xu36, ba) -> new_nubByNubBy'1(xu32, xu340, xu341, xu35, xu36, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'1(xu32, xu33, xu34, xu35, xu36, :(xu380, xu381), ba) -> new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, xu381, ba) 13.24/6.11 new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, [], ba) -> new_nubByNubBy'(xu32, xu34, xu33, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'10(xu32, xu33, :(xu340, xu341), xu35, xu36, xu38, ba) -> new_nubByNubBy'1(xu32, xu340, xu341, xu35, xu36, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'1(xu32, xu33, xu34, xu35, xu36, [], ba) -> new_nubByNubBy'(xu32, xu34, xu33, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, :(xu380, xu381), ba) -> new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, xu381, ba) 13.24/6.11 13.24/6.11 R is empty. 13.24/6.11 Q is empty. 13.24/6.11 We have to consider all minimal (P,Q,R)-chains. 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (9) DependencyGraphProof (EQUIVALENT) 13.24/6.11 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (10) 13.24/6.11 Obligation: 13.24/6.11 Q DP problem: 13.24/6.11 The TRS P consists of the following rules: 13.24/6.11 13.24/6.11 new_nubByNubBy'1(xu32, xu33, xu34, xu35, xu36, :(xu380, xu381), ba) -> new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, xu381, ba) 13.24/6.11 new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, [], ba) -> new_nubByNubBy'(xu32, xu34, xu33, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'(xu32, :(xu340, xu341), xu35, xu36, ba) -> new_nubByNubBy'1(xu32, xu340, xu341, xu35, xu36, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'10(xu32, xu33, :(xu340, xu341), xu35, xu36, xu38, ba) -> new_nubByNubBy'1(xu32, xu340, xu341, xu35, xu36, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, :(xu380, xu381), ba) -> new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, xu381, ba) 13.24/6.11 13.24/6.11 R is empty. 13.24/6.11 Q is empty. 13.24/6.11 We have to consider all minimal (P,Q,R)-chains. 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (11) TransformationProof (EQUIVALENT) 13.24/6.11 By instantiating [LPAR04] the rule new_nubByNubBy'1(xu32, xu33, xu34, xu35, xu36, :(xu380, xu381), ba) -> new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, xu381, ba) we obtained the following new rules [LPAR04]: 13.24/6.11 13.24/6.11 (new_nubByNubBy'1(z0, z1, z2, z3, z4, :(z3, z4), z5) -> new_nubByNubBy'10(z0, z1, z2, z3, z4, z4, z5),new_nubByNubBy'1(z0, z1, z2, z3, z4, :(z3, z4), z5) -> new_nubByNubBy'10(z0, z1, z2, z3, z4, z4, z5)) 13.24/6.11 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (12) 13.24/6.11 Obligation: 13.24/6.11 Q DP problem: 13.24/6.11 The TRS P consists of the following rules: 13.24/6.11 13.24/6.11 new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, [], ba) -> new_nubByNubBy'(xu32, xu34, xu33, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'(xu32, :(xu340, xu341), xu35, xu36, ba) -> new_nubByNubBy'1(xu32, xu340, xu341, xu35, xu36, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'10(xu32, xu33, :(xu340, xu341), xu35, xu36, xu38, ba) -> new_nubByNubBy'1(xu32, xu340, xu341, xu35, xu36, :(xu35, xu36), ba) 13.24/6.11 new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, :(xu380, xu381), ba) -> new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, xu381, ba) 13.24/6.11 new_nubByNubBy'1(z0, z1, z2, z3, z4, :(z3, z4), z5) -> new_nubByNubBy'10(z0, z1, z2, z3, z4, z4, z5) 13.24/6.11 13.24/6.11 R is empty. 13.24/6.11 Q is empty. 13.24/6.11 We have to consider all minimal (P,Q,R)-chains. 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (13) QDPSizeChangeProof (EQUIVALENT) 13.24/6.11 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. 13.24/6.11 13.24/6.11 From the DPs we obtained the following set of size-change graphs: 13.24/6.11 *new_nubByNubBy'(xu32, :(xu340, xu341), xu35, xu36, ba) -> new_nubByNubBy'1(xu32, xu340, xu341, xu35, xu36, :(xu35, xu36), ba) 13.24/6.11 The graph contains the following edges 1 >= 1, 2 > 2, 2 > 3, 3 >= 4, 4 >= 5, 5 >= 7 13.24/6.11 13.24/6.11 13.24/6.11 *new_nubByNubBy'1(z0, z1, z2, z3, z4, :(z3, z4), z5) -> new_nubByNubBy'10(z0, z1, z2, z3, z4, z4, z5) 13.24/6.11 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 6 > 4, 5 >= 5, 6 > 5, 5 >= 6, 6 > 6, 7 >= 7 13.24/6.11 13.24/6.11 13.24/6.11 *new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, :(xu380, xu381), ba) -> new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, xu381, ba) 13.24/6.11 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 > 6, 7 >= 7 13.24/6.11 13.24/6.11 13.24/6.11 *new_nubByNubBy'10(xu32, xu33, xu34, xu35, xu36, [], ba) -> new_nubByNubBy'(xu32, xu34, xu33, :(xu35, xu36), ba) 13.24/6.11 The graph contains the following edges 1 >= 1, 3 >= 2, 2 >= 3, 7 >= 5 13.24/6.11 13.24/6.11 13.24/6.11 *new_nubByNubBy'10(xu32, xu33, :(xu340, xu341), xu35, xu36, xu38, ba) -> new_nubByNubBy'1(xu32, xu340, xu341, xu35, xu36, :(xu35, xu36), ba) 13.24/6.11 The graph contains the following edges 1 >= 1, 3 > 2, 3 > 3, 4 >= 4, 5 >= 5, 7 >= 7 13.24/6.11 13.24/6.11 13.24/6.11 ---------------------------------------- 13.24/6.11 13.24/6.11 (14) 13.24/6.11 YES 13.30/6.20 EOF