/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.hs /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.hs # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty H-Termination with start terms of the given HASKELL could be proven: (0) HASKELL (1) IFR [EQUIVALENT, 0 ms] (2) HASKELL (3) BR [EQUIVALENT, 0 ms] (4) HASKELL (5) COR [EQUIVALENT, 23 ms] (6) HASKELL (7) LetRed [EQUIVALENT, 0 ms] (8) HASKELL (9) Narrow [SOUND, 0 ms] (10) AND (11) QDP (12) QDPSizeChangeProof [EQUIVALENT, 0 ms] (13) YES (14) QDP (15) QDPSizeChangeProof [EQUIVALENT, 0 ms] (16) YES (17) QDP (18) DependencyGraphProof [EQUIVALENT, 0 ms] (19) QDP (20) TransformationProof [EQUIVALENT, 0 ms] (21) QDP (22) QDPSizeChangeProof [EQUIVALENT, 0 ms] (23) YES (24) QDP (25) TransformationProof [EQUIVALENT, 0 ms] (26) QDP (27) UsableRulesProof [EQUIVALENT, 0 ms] (28) QDP (29) QReductionProof [EQUIVALENT, 0 ms] (30) QDP (31) QDPSizeChangeProof [EQUIVALENT, 0 ms] (32) YES (33) QDP (34) QDPSizeChangeProof [EQUIVALENT, 0 ms] (35) 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; deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; deleteBy _ _ [] = []; deleteBy eq x (y : ys) = if x `eq` y then ys else y : deleteBy eq x ys; elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool; elem_by _ _ [] = False; elem_by eq y (x : xs) = x `eq` y || elem_by eq y xs; nubBy :: (a -> a -> Bool) -> [a] -> [a]; nubBy eq l = nubBy' l [] where { nubBy' [] _ = []; nubBy' (y : ys) xs | elem_by eq y xs = nubBy' ys xs | otherwise = y : nubBy' ys (y : xs); }; union :: Eq a => [a] -> [a] -> [a]; union = unionBy (==); unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]; unionBy eq xs ys = xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (1) IFR (EQUIVALENT) If Reductions: The following If expression "if eq x y then ys else y : deleteBy eq x ys" is transformed to "deleteBy0 ys y eq x True = ys; deleteBy0 ys y eq x False = y : deleteBy eq x 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; deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; deleteBy _ _ [] = []; deleteBy eq x (y : ys) = deleteBy0 ys y eq x (x `eq` y); deleteBy0 ys y eq x True = ys; deleteBy0 ys y eq x False = y : deleteBy eq x ys; elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool; elem_by _ _ [] = False; elem_by eq y (x : xs) = x `eq` y || elem_by eq y xs; nubBy :: (a -> a -> Bool) -> [a] -> [a]; nubBy eq l = nubBy' l [] where { nubBy' [] _ = []; nubBy' (y : ys) xs | elem_by eq y xs = nubBy' ys xs | otherwise = y : nubBy' ys (y : xs); }; union :: Eq a => [a] -> [a] -> [a]; union = unionBy (==); unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]; unionBy eq xs ys = xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs; } 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; deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; deleteBy wv ww [] = []; deleteBy eq x (y : ys) = deleteBy0 ys y eq x (x `eq` y); deleteBy0 ys y eq x True = ys; deleteBy0 ys y eq x False = y : deleteBy eq x ys; elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool; elem_by vy vz [] = False; elem_by eq y (x : xs) = x `eq` y || elem_by eq y xs; nubBy :: (a -> a -> Bool) -> [a] -> [a]; nubBy eq l = nubBy' l [] where { nubBy' [] wu = []; nubBy' (y : ys) xs | elem_by eq y xs = nubBy' ys xs | otherwise = y : nubBy' ys (y : xs); }; union :: Eq a => [a] -> [a] -> [a]; union = unionBy (==); unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]; unionBy eq xs ys = xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs; } 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; " The following Function with conditions "nubBy' [] wu = []; nubBy' (y : ys) xs|elem_by eq y xsnubBy' ys xs|otherwisey : nubBy' ys (y : xs); " is transformed to "nubBy' [] wu = nubBy'3 [] wu; nubBy' (y : ys) xs = nubBy'2 (y : ys) xs; " "nubBy'0 y ys xs True = y : nubBy' ys (y : xs); " "nubBy'1 y ys xs True = nubBy' ys xs; nubBy'1 y ys xs False = nubBy'0 y ys xs otherwise; " "nubBy'2 (y : ys) xs = nubBy'1 y ys xs (elem_by eq y xs); " "nubBy'3 [] wu = []; nubBy'3 wz xu = nubBy'2 wz xu; " ---------------------------------------- (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; deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; deleteBy wv ww [] = []; deleteBy eq x (y : ys) = deleteBy0 ys y eq x (x `eq` y); deleteBy0 ys y eq x True = ys; deleteBy0 ys y eq x False = y : deleteBy eq x ys; elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool; elem_by vy vz [] = False; elem_by eq y (x : xs) = x `eq` y || elem_by eq y xs; nubBy :: (a -> a -> Bool) -> [a] -> [a]; nubBy eq l = nubBy' l [] where { nubBy' [] wu = nubBy'3 [] wu; nubBy' (y : ys) xs = nubBy'2 (y : ys) xs; nubBy'0 y ys xs True = y : nubBy' ys (y : xs); nubBy'1 y ys xs True = nubBy' ys xs; nubBy'1 y ys xs False = nubBy'0 y ys xs otherwise; nubBy'2 (y : ys) xs = nubBy'1 y ys xs (elem_by eq y xs); nubBy'3 [] wu = []; nubBy'3 wz xu = nubBy'2 wz xu; }; union :: Eq a => [a] -> [a] -> [a]; union = unionBy (==); unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]; unionBy eq xs ys = xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (7) LetRed (EQUIVALENT) Let/Where Reductions: The bindings of the following Let/Where expression "nubBy' l [] where { nubBy' [] wu = nubBy'3 [] wu; nubBy' (y : ys) xs = nubBy'2 (y : ys) xs; ; nubBy'0 y ys xs True = y : nubBy' ys (y : xs); ; nubBy'1 y ys xs True = nubBy' ys xs; nubBy'1 y ys xs False = nubBy'0 y ys xs otherwise; ; nubBy'2 (y : ys) xs = nubBy'1 y ys xs (elem_by eq y xs); ; nubBy'3 [] wu = []; nubBy'3 wz xu = nubBy'2 wz xu; } " are unpacked to the following functions on top level "nubByNubBy'3 xv [] wu = []; nubByNubBy'3 xv wz xu = nubByNubBy'2 xv wz xu; " "nubByNubBy'0 xv y ys xs True = y : nubByNubBy' xv ys (y : xs); " "nubByNubBy'2 xv (y : ys) xs = nubByNubBy'1 xv y ys xs (elem_by xv y xs); " "nubByNubBy' xv [] wu = nubByNubBy'3 xv [] wu; nubByNubBy' xv (y : ys) xs = nubByNubBy'2 xv (y : ys) xs; " "nubByNubBy'1 xv y ys xs True = nubByNubBy' xv ys xs; nubByNubBy'1 xv y ys xs False = nubByNubBy'0 xv y ys xs otherwise; " ---------------------------------------- (8) 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; deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; deleteBy wv ww [] = []; deleteBy eq x (y : ys) = deleteBy0 ys y eq x (x `eq` y); deleteBy0 ys y eq x True = ys; deleteBy0 ys y eq x False = y : deleteBy eq x ys; elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool; elem_by vy vz [] = False; elem_by eq y (x : xs) = x `eq` y || elem_by eq y xs; nubBy :: (a -> a -> Bool) -> [a] -> [a]; nubBy eq l = nubByNubBy' eq l []; nubByNubBy' xv [] wu = nubByNubBy'3 xv [] wu; nubByNubBy' xv (y : ys) xs = nubByNubBy'2 xv (y : ys) xs; nubByNubBy'0 xv y ys xs True = y : nubByNubBy' xv ys (y : xs); nubByNubBy'1 xv y ys xs True = nubByNubBy' xv ys xs; nubByNubBy'1 xv y ys xs False = nubByNubBy'0 xv y ys xs otherwise; nubByNubBy'2 xv (y : ys) xs = nubByNubBy'1 xv y ys xs (elem_by xv y xs); nubByNubBy'3 xv [] wu = []; nubByNubBy'3 xv wz xu = nubByNubBy'2 xv wz xu; union :: Eq a => [a] -> [a] -> [a]; union = unionBy (==); unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]; unionBy eq xs ys = xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (9) Narrow (SOUND) Haskell To QDPs digraph dp_graph { node [outthreshold=100, inthreshold=100];1[label="List.union",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 3[label="List.union xw3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 4[label="List.union xw3 xw4",fontsize=16,color="black",shape="triangle"];4 -> 5[label="",style="solid", color="black", weight=3]; 5[label="List.unionBy (==) xw3 xw4",fontsize=16,color="black",shape="box"];5 -> 6[label="",style="solid", color="black", weight=3]; 6[label="xw3 ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xw4) xw3",fontsize=16,color="burlywood",shape="box"];2440[label="xw3/xw30 : xw31",fontsize=10,color="white",style="solid",shape="box"];6 -> 2440[label="",style="solid", color="burlywood", weight=9]; 2440 -> 7[label="",style="solid", color="burlywood", weight=3]; 2441[label="xw3/[]",fontsize=10,color="white",style="solid",shape="box"];6 -> 2441[label="",style="solid", color="burlywood", weight=9]; 2441 -> 8[label="",style="solid", color="burlywood", weight=3]; 7[label="(xw30 : xw31) ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xw4) (xw30 : xw31)",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 8[label="[] ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xw4) []",fontsize=16,color="black",shape="box"];8 -> 10[label="",style="solid", color="black", weight=3]; 9[label="xw30 : xw31 ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xw4) (xw30 : xw31)",fontsize=16,color="green",shape="box"];9 -> 11[label="",style="dashed", color="green", weight=3]; 10[label="foldl (flip (List.deleteBy (==))) (List.nubBy (==) xw4) []",fontsize=16,color="black",shape="box"];10 -> 12[label="",style="solid", color="black", weight=3]; 11 -> 106[label="",style="dashed", color="red", weight=0]; 11[label="xw31 ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xw4) (xw30 : xw31)",fontsize=16,color="magenta"];11 -> 107[label="",style="dashed", color="magenta", weight=3]; 11 -> 108[label="",style="dashed", color="magenta", weight=3]; 11 -> 109[label="",style="dashed", color="magenta", weight=3]; 11 -> 110[label="",style="dashed", color="magenta", weight=3]; 12[label="List.nubBy (==) xw4",fontsize=16,color="black",shape="triangle"];12 -> 15[label="",style="solid", color="black", weight=3]; 107 -> 12[label="",style="dashed", color="red", weight=0]; 107[label="List.nubBy (==) xw4",fontsize=16,color="magenta"];108[label="xw31",fontsize=16,color="green",shape="box"];109[label="xw31",fontsize=16,color="green",shape="box"];110[label="xw30",fontsize=16,color="green",shape="box"];106[label="xw8 ++ foldl (flip (List.deleteBy (==))) xw9 (xw10 : xw11)",fontsize=16,color="burlywood",shape="triangle"];2442[label="xw8/xw80 : xw81",fontsize=10,color="white",style="solid",shape="box"];106 -> 2442[label="",style="solid", color="burlywood", weight=9]; 2442 -> 135[label="",style="solid", color="burlywood", weight=3]; 2443[label="xw8/[]",fontsize=10,color="white",style="solid",shape="box"];106 -> 2443[label="",style="solid", color="burlywood", weight=9]; 2443 -> 136[label="",style="solid", color="burlywood", weight=3]; 15[label="List.nubByNubBy' (==) xw4 []",fontsize=16,color="burlywood",shape="box"];2444[label="xw4/xw40 : xw41",fontsize=10,color="white",style="solid",shape="box"];15 -> 2444[label="",style="solid", color="burlywood", weight=9]; 2444 -> 18[label="",style="solid", color="burlywood", weight=3]; 2445[label="xw4/[]",fontsize=10,color="white",style="solid",shape="box"];15 -> 2445[label="",style="solid", color="burlywood", weight=9]; 2445 -> 19[label="",style="solid", color="burlywood", weight=3]; 135[label="(xw80 : xw81) ++ foldl (flip (List.deleteBy (==))) xw9 (xw10 : xw11)",fontsize=16,color="black",shape="box"];135 -> 138[label="",style="solid", color="black", weight=3]; 136[label="[] ++ foldl (flip (List.deleteBy (==))) xw9 (xw10 : xw11)",fontsize=16,color="black",shape="box"];136 -> 139[label="",style="solid", color="black", weight=3]; 18[label="List.nubByNubBy' (==) (xw40 : xw41) []",fontsize=16,color="black",shape="box"];18 -> 23[label="",style="solid", color="black", weight=3]; 19[label="List.nubByNubBy' (==) [] []",fontsize=16,color="black",shape="box"];19 -> 24[label="",style="solid", color="black", weight=3]; 138[label="xw80 : xw81 ++ foldl (flip (List.deleteBy (==))) xw9 (xw10 : xw11)",fontsize=16,color="green",shape="box"];138 -> 142[label="",style="dashed", color="green", weight=3]; 139[label="foldl (flip (List.deleteBy (==))) xw9 (xw10 : xw11)",fontsize=16,color="black",shape="box"];139 -> 143[label="",style="solid", color="black", weight=3]; 23[label="List.nubByNubBy'2 (==) (xw40 : xw41) []",fontsize=16,color="black",shape="box"];23 -> 28[label="",style="solid", color="black", weight=3]; 24[label="List.nubByNubBy'3 (==) [] []",fontsize=16,color="black",shape="box"];24 -> 29[label="",style="solid", color="black", weight=3]; 142 -> 106[label="",style="dashed", color="red", weight=0]; 142[label="xw81 ++ foldl (flip (List.deleteBy (==))) xw9 (xw10 : xw11)",fontsize=16,color="magenta"];142 -> 148[label="",style="dashed", color="magenta", weight=3]; 143[label="foldl (flip (List.deleteBy (==))) (flip (List.deleteBy (==)) xw9 xw10) xw11",fontsize=16,color="burlywood",shape="triangle"];2446[label="xw11/xw110 : xw111",fontsize=10,color="white",style="solid",shape="box"];143 -> 2446[label="",style="solid", color="burlywood", weight=9]; 2446 -> 149[label="",style="solid", color="burlywood", weight=3]; 2447[label="xw11/[]",fontsize=10,color="white",style="solid",shape="box"];143 -> 2447[label="",style="solid", color="burlywood", weight=9]; 2447 -> 150[label="",style="solid", color="burlywood", weight=3]; 28[label="List.nubByNubBy'1 (==) xw40 xw41 [] (List.elem_by (==) xw40 [])",fontsize=16,color="black",shape="box"];28 -> 33[label="",style="solid", color="black", weight=3]; 29[label="[]",fontsize=16,color="green",shape="box"];148[label="xw81",fontsize=16,color="green",shape="box"];149[label="foldl (flip (List.deleteBy (==))) (flip (List.deleteBy (==)) xw9 xw10) (xw110 : xw111)",fontsize=16,color="black",shape="box"];149 -> 155[label="",style="solid", color="black", weight=3]; 150[label="foldl (flip (List.deleteBy (==))) (flip (List.deleteBy (==)) xw9 xw10) []",fontsize=16,color="black",shape="box"];150 -> 156[label="",style="solid", color="black", weight=3]; 33[label="List.nubByNubBy'1 (==) xw40 xw41 [] False",fontsize=16,color="black",shape="box"];33 -> 37[label="",style="solid", color="black", weight=3]; 155 -> 143[label="",style="dashed", color="red", weight=0]; 155[label="foldl (flip (List.deleteBy (==))) (flip (List.deleteBy (==)) (flip (List.deleteBy (==)) xw9 xw10) xw110) xw111",fontsize=16,color="magenta"];155 -> 162[label="",style="dashed", color="magenta", weight=3]; 155 -> 163[label="",style="dashed", color="magenta", weight=3]; 155 -> 164[label="",style="dashed", color="magenta", weight=3]; 156[label="flip (List.deleteBy (==)) xw9 xw10",fontsize=16,color="black",shape="triangle"];156 -> 165[label="",style="solid", color="black", weight=3]; 37[label="List.nubByNubBy'0 (==) xw40 xw41 [] otherwise",fontsize=16,color="black",shape="box"];37 -> 42[label="",style="solid", color="black", weight=3]; 162 -> 156[label="",style="dashed", color="red", weight=0]; 162[label="flip (List.deleteBy (==)) xw9 xw10",fontsize=16,color="magenta"];163[label="xw111",fontsize=16,color="green",shape="box"];164[label="xw110",fontsize=16,color="green",shape="box"];165[label="List.deleteBy (==) xw10 xw9",fontsize=16,color="burlywood",shape="triangle"];2448[label="xw9/xw90 : xw91",fontsize=10,color="white",style="solid",shape="box"];165 -> 2448[label="",style="solid", color="burlywood", weight=9]; 2448 -> 173[label="",style="solid", color="burlywood", weight=3]; 2449[label="xw9/[]",fontsize=10,color="white",style="solid",shape="box"];165 -> 2449[label="",style="solid", color="burlywood", weight=9]; 2449 -> 174[label="",style="solid", color="burlywood", weight=3]; 42[label="List.nubByNubBy'0 (==) xw40 xw41 [] True",fontsize=16,color="black",shape="box"];42 -> 49[label="",style="solid", color="black", weight=3]; 173[label="List.deleteBy (==) xw10 (xw90 : xw91)",fontsize=16,color="black",shape="box"];173 -> 183[label="",style="solid", color="black", weight=3]; 174[label="List.deleteBy (==) xw10 []",fontsize=16,color="black",shape="box"];174 -> 184[label="",style="solid", color="black", weight=3]; 49[label="xw40 : List.nubByNubBy' (==) xw41 (xw40 : [])",fontsize=16,color="green",shape="box"];49 -> 54[label="",style="dashed", color="green", weight=3]; 183 -> 194[label="",style="dashed", color="red", weight=0]; 183[label="List.deleteBy0 xw91 xw90 (==) xw10 ((==) xw10 xw90)",fontsize=16,color="magenta"];183 -> 195[label="",style="dashed", color="magenta", weight=3]; 183 -> 196[label="",style="dashed", color="magenta", weight=3]; 183 -> 197[label="",style="dashed", color="magenta", weight=3]; 183 -> 198[label="",style="dashed", color="magenta", weight=3]; 184[label="[]",fontsize=16,color="green",shape="box"];54[label="List.nubByNubBy' (==) xw41 (xw40 : [])",fontsize=16,color="burlywood",shape="box"];2450[label="xw41/xw410 : xw411",fontsize=10,color="white",style="solid",shape="box"];54 -> 2450[label="",style="solid", color="burlywood", weight=9]; 2450 -> 58[label="",style="solid", color="burlywood", weight=3]; 2451[label="xw41/[]",fontsize=10,color="white",style="solid",shape="box"];54 -> 2451[label="",style="solid", color="burlywood", weight=9]; 2451 -> 59[label="",style="solid", color="burlywood", weight=3]; 195[label="xw91",fontsize=16,color="green",shape="box"];196[label="xw90",fontsize=16,color="green",shape="box"];197[label="xw10",fontsize=16,color="green",shape="box"];198[label="(==) xw10 xw90",fontsize=16,color="blue",shape="box"];2452[label="== :: Char -> Char -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2452[label="",style="solid", color="blue", weight=9]; 2452 -> 199[label="",style="solid", color="blue", weight=3]; 2453[label="== :: () -> () -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2453[label="",style="solid", color="blue", weight=9]; 2453 -> 200[label="",style="solid", color="blue", weight=3]; 2454[label="== :: ([] a) -> ([] a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2454[label="",style="solid", color="blue", weight=9]; 2454 -> 201[label="",style="solid", color="blue", weight=3]; 2455[label="== :: Int -> Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2455[label="",style="solid", color="blue", weight=9]; 2455 -> 202[label="",style="solid", color="blue", weight=3]; 2456[label="== :: Ordering -> Ordering -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2456[label="",style="solid", color="blue", weight=9]; 2456 -> 203[label="",style="solid", color="blue", weight=3]; 2457[label="== :: ((@2) a b) -> ((@2) a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2457[label="",style="solid", color="blue", weight=9]; 2457 -> 204[label="",style="solid", color="blue", weight=3]; 2458[label="== :: Float -> Float -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2458[label="",style="solid", color="blue", weight=9]; 2458 -> 205[label="",style="solid", color="blue", weight=3]; 2459[label="== :: Bool -> Bool -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2459[label="",style="solid", color="blue", weight=9]; 2459 -> 206[label="",style="solid", color="blue", weight=3]; 2460[label="== :: Integer -> Integer -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2460[label="",style="solid", color="blue", weight=9]; 2460 -> 207[label="",style="solid", color="blue", weight=3]; 2461[label="== :: (Ratio a) -> (Ratio a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2461[label="",style="solid", color="blue", weight=9]; 2461 -> 208[label="",style="solid", color="blue", weight=3]; 2462[label="== :: Double -> Double -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2462[label="",style="solid", color="blue", weight=9]; 2462 -> 209[label="",style="solid", color="blue", weight=3]; 2463[label="== :: (Either a b) -> (Either a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2463[label="",style="solid", color="blue", weight=9]; 2463 -> 210[label="",style="solid", color="blue", weight=3]; 2464[label="== :: (Maybe a) -> (Maybe a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2464[label="",style="solid", color="blue", weight=9]; 2464 -> 211[label="",style="solid", color="blue", weight=3]; 2465[label="== :: ((@3) a b c) -> ((@3) a b c) -> Bool",fontsize=10,color="white",style="solid",shape="box"];198 -> 2465[label="",style="solid", color="blue", weight=9]; 2465 -> 212[label="",style="solid", color="blue", weight=3]; 194[label="List.deleteBy0 xw17 xw18 (==) xw19 xw20",fontsize=16,color="burlywood",shape="triangle"];2466[label="xw20/False",fontsize=10,color="white",style="solid",shape="box"];194 -> 2466[label="",style="solid", color="burlywood", weight=9]; 2466 -> 213[label="",style="solid", color="burlywood", weight=3]; 2467[label="xw20/True",fontsize=10,color="white",style="solid",shape="box"];194 -> 2467[label="",style="solid", color="burlywood", weight=9]; 2467 -> 214[label="",style="solid", color="burlywood", weight=3]; 58[label="List.nubByNubBy' (==) (xw410 : xw411) (xw40 : [])",fontsize=16,color="black",shape="box"];58 -> 66[label="",style="solid", color="black", weight=3]; 59[label="List.nubByNubBy' (==) [] (xw40 : [])",fontsize=16,color="black",shape="box"];59 -> 67[label="",style="solid", color="black", weight=3]; 199[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];199 -> 226[label="",style="solid", color="black", weight=3]; 200[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];200 -> 227[label="",style="solid", color="black", weight=3]; 201[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];201 -> 228[label="",style="solid", color="black", weight=3]; 202[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];202 -> 229[label="",style="solid", color="black", weight=3]; 203[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];203 -> 230[label="",style="solid", color="black", weight=3]; 204[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];204 -> 231[label="",style="solid", color="black", weight=3]; 205[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];205 -> 232[label="",style="solid", color="black", weight=3]; 206[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];206 -> 233[label="",style="solid", color="black", weight=3]; 207[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];207 -> 234[label="",style="solid", color="black", weight=3]; 208[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];208 -> 235[label="",style="solid", color="black", weight=3]; 209[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];209 -> 236[label="",style="solid", color="black", weight=3]; 210[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];210 -> 237[label="",style="solid", color="black", weight=3]; 211[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];211 -> 238[label="",style="solid", color="black", weight=3]; 212[label="(==) xw10 xw90",fontsize=16,color="black",shape="box"];212 -> 239[label="",style="solid", color="black", weight=3]; 213[label="List.deleteBy0 xw17 xw18 (==) xw19 False",fontsize=16,color="black",shape="box"];213 -> 240[label="",style="solid", color="black", weight=3]; 214[label="List.deleteBy0 xw17 xw18 (==) xw19 True",fontsize=16,color="black",shape="box"];214 -> 241[label="",style="solid", color="black", weight=3]; 66[label="List.nubByNubBy'2 (==) (xw410 : xw411) (xw40 : [])",fontsize=16,color="black",shape="box"];66 -> 72[label="",style="solid", color="black", weight=3]; 67[label="List.nubByNubBy'3 (==) [] (xw40 : [])",fontsize=16,color="black",shape="box"];67 -> 73[label="",style="solid", color="black", weight=3]; 226[label="primEqChar xw10 xw90",fontsize=16,color="burlywood",shape="triangle"];2468[label="xw10/Char xw100",fontsize=10,color="white",style="solid",shape="box"];226 -> 2468[label="",style="solid", color="burlywood", weight=9]; 2468 -> 253[label="",style="solid", color="burlywood", weight=3]; 227[label="error []",fontsize=16,color="red",shape="box"];228[label="error []",fontsize=16,color="red",shape="box"];229[label="error []",fontsize=16,color="red",shape="box"];230[label="error []",fontsize=16,color="red",shape="box"];231[label="error []",fontsize=16,color="red",shape="box"];232[label="error []",fontsize=16,color="red",shape="box"];233[label="error []",fontsize=16,color="red",shape="box"];234[label="error []",fontsize=16,color="red",shape="box"];235[label="error []",fontsize=16,color="red",shape="box"];236[label="error []",fontsize=16,color="red",shape="box"];237[label="error []",fontsize=16,color="red",shape="box"];238[label="error []",fontsize=16,color="red",shape="box"];239[label="error []",fontsize=16,color="red",shape="box"];240[label="xw18 : List.deleteBy (==) xw19 xw17",fontsize=16,color="green",shape="box"];240 -> 254[label="",style="dashed", color="green", weight=3]; 241[label="xw17",fontsize=16,color="green",shape="box"];72[label="List.nubByNubBy'1 (==) xw410 xw411 (xw40 : []) (List.elem_by (==) xw410 (xw40 : []))",fontsize=16,color="black",shape="box"];72 -> 78[label="",style="solid", color="black", weight=3]; 73[label="[]",fontsize=16,color="green",shape="box"];253[label="primEqChar (Char xw100) xw90",fontsize=16,color="burlywood",shape="box"];2469[label="xw90/Char xw900",fontsize=10,color="white",style="solid",shape="box"];253 -> 2469[label="",style="solid", color="burlywood", weight=9]; 2469 -> 271[label="",style="solid", color="burlywood", weight=3]; 254 -> 165[label="",style="dashed", color="red", weight=0]; 254[label="List.deleteBy (==) xw19 xw17",fontsize=16,color="magenta"];254 -> 272[label="",style="dashed", color="magenta", weight=3]; 254 -> 273[label="",style="dashed", color="magenta", weight=3]; 78[label="List.nubByNubBy'1 (==) xw410 xw411 (xw40 : []) ((==) xw40 xw410 || List.elem_by (==) xw410 [])",fontsize=16,color="black",shape="box"];78 -> 89[label="",style="solid", color="black", weight=3]; 271[label="primEqChar (Char xw100) (Char xw900)",fontsize=16,color="black",shape="box"];271 -> 289[label="",style="solid", color="black", weight=3]; 272[label="xw17",fontsize=16,color="green",shape="box"];273[label="xw19",fontsize=16,color="green",shape="box"];89 -> 2402[label="",style="dashed", color="red", weight=0]; 89[label="List.nubByNubBy'1 primEqChar xw410 xw411 (xw40 : []) (primEqChar xw40 xw410 || List.elem_by primEqChar xw410 [])",fontsize=16,color="magenta"];89 -> 2403[label="",style="dashed", color="magenta", weight=3]; 89 -> 2404[label="",style="dashed", color="magenta", weight=3]; 89 -> 2405[label="",style="dashed", color="magenta", weight=3]; 89 -> 2406[label="",style="dashed", color="magenta", weight=3]; 89 -> 2407[label="",style="dashed", color="magenta", weight=3]; 89 -> 2408[label="",style="dashed", color="magenta", weight=3]; 289[label="primEqNat xw100 xw900",fontsize=16,color="burlywood",shape="triangle"];2470[label="xw100/Succ xw1000",fontsize=10,color="white",style="solid",shape="box"];289 -> 2470[label="",style="solid", color="burlywood", weight=9]; 2470 -> 305[label="",style="solid", color="burlywood", weight=3]; 2471[label="xw100/Zero",fontsize=10,color="white",style="solid",shape="box"];289 -> 2471[label="",style="solid", color="burlywood", weight=9]; 2471 -> 306[label="",style="solid", color="burlywood", weight=3]; 2403[label="[]",fontsize=16,color="green",shape="box"];2404[label="xw40",fontsize=16,color="green",shape="box"];2405[label="[]",fontsize=16,color="green",shape="box"];2406[label="xw411",fontsize=16,color="green",shape="box"];2407 -> 226[label="",style="dashed", color="red", weight=0]; 2407[label="primEqChar xw40 xw410",fontsize=16,color="magenta"];2407 -> 2410[label="",style="dashed", color="magenta", weight=3]; 2407 -> 2411[label="",style="dashed", color="magenta", weight=3]; 2408[label="xw410",fontsize=16,color="green",shape="box"];2402[label="List.nubByNubBy'1 primEqChar xw155 xw156 (xw157 : xw158) (xw161 || List.elem_by primEqChar xw155 xw160)",fontsize=16,color="burlywood",shape="triangle"];2472[label="xw161/False",fontsize=10,color="white",style="solid",shape="box"];2402 -> 2472[label="",style="solid", color="burlywood", weight=9]; 2472 -> 2412[label="",style="solid", color="burlywood", weight=3]; 2473[label="xw161/True",fontsize=10,color="white",style="solid",shape="box"];2402 -> 2473[label="",style="solid", color="burlywood", weight=9]; 2473 -> 2413[label="",style="solid", color="burlywood", weight=3]; 305[label="primEqNat (Succ xw1000) xw900",fontsize=16,color="burlywood",shape="box"];2474[label="xw900/Succ xw9000",fontsize=10,color="white",style="solid",shape="box"];305 -> 2474[label="",style="solid", color="burlywood", weight=9]; 2474 -> 309[label="",style="solid", color="burlywood", weight=3]; 2475[label="xw900/Zero",fontsize=10,color="white",style="solid",shape="box"];305 -> 2475[label="",style="solid", color="burlywood", weight=9]; 2475 -> 310[label="",style="solid", color="burlywood", weight=3]; 306[label="primEqNat Zero xw900",fontsize=16,color="burlywood",shape="box"];2476[label="xw900/Succ xw9000",fontsize=10,color="white",style="solid",shape="box"];306 -> 2476[label="",style="solid", color="burlywood", weight=9]; 2476 -> 311[label="",style="solid", color="burlywood", weight=3]; 2477[label="xw900/Zero",fontsize=10,color="white",style="solid",shape="box"];306 -> 2477[label="",style="solid", color="burlywood", weight=9]; 2477 -> 312[label="",style="solid", color="burlywood", weight=3]; 2410[label="xw410",fontsize=16,color="green",shape="box"];2411[label="xw40",fontsize=16,color="green",shape="box"];2412[label="List.nubByNubBy'1 primEqChar xw155 xw156 (xw157 : xw158) (False || List.elem_by primEqChar xw155 xw160)",fontsize=16,color="black",shape="box"];2412 -> 2414[label="",style="solid", color="black", weight=3]; 2413[label="List.nubByNubBy'1 primEqChar xw155 xw156 (xw157 : xw158) (True || List.elem_by primEqChar xw155 xw160)",fontsize=16,color="black",shape="box"];2413 -> 2415[label="",style="solid", color="black", weight=3]; 309[label="primEqNat (Succ xw1000) (Succ xw9000)",fontsize=16,color="black",shape="box"];309 -> 333[label="",style="solid", color="black", weight=3]; 310[label="primEqNat (Succ xw1000) Zero",fontsize=16,color="black",shape="box"];310 -> 334[label="",style="solid", color="black", weight=3]; 311[label="primEqNat Zero (Succ xw9000)",fontsize=16,color="black",shape="box"];311 -> 335[label="",style="solid", color="black", weight=3]; 312[label="primEqNat Zero Zero",fontsize=16,color="black",shape="box"];312 -> 336[label="",style="solid", color="black", weight=3]; 2414[label="List.nubByNubBy'1 primEqChar xw155 xw156 (xw157 : xw158) (List.elem_by primEqChar xw155 xw160)",fontsize=16,color="burlywood",shape="triangle"];2478[label="xw160/xw1600 : xw1601",fontsize=10,color="white",style="solid",shape="box"];2414 -> 2478[label="",style="solid", color="burlywood", weight=9]; 2478 -> 2416[label="",style="solid", color="burlywood", weight=3]; 2479[label="xw160/[]",fontsize=10,color="white",style="solid",shape="box"];2414 -> 2479[label="",style="solid", color="burlywood", weight=9]; 2479 -> 2417[label="",style="solid", color="burlywood", weight=3]; 2415[label="List.nubByNubBy'1 primEqChar xw155 xw156 (xw157 : xw158) True",fontsize=16,color="black",shape="box"];2415 -> 2418[label="",style="solid", color="black", weight=3]; 333 -> 289[label="",style="dashed", color="red", weight=0]; 333[label="primEqNat xw1000 xw9000",fontsize=16,color="magenta"];333 -> 350[label="",style="dashed", color="magenta", weight=3]; 333 -> 351[label="",style="dashed", color="magenta", weight=3]; 334[label="False",fontsize=16,color="green",shape="box"];335[label="False",fontsize=16,color="green",shape="box"];336[label="True",fontsize=16,color="green",shape="box"];2416[label="List.nubByNubBy'1 primEqChar xw155 xw156 (xw157 : xw158) (List.elem_by primEqChar xw155 (xw1600 : xw1601))",fontsize=16,color="black",shape="box"];2416 -> 2419[label="",style="solid", color="black", weight=3]; 2417[label="List.nubByNubBy'1 primEqChar xw155 xw156 (xw157 : xw158) (List.elem_by primEqChar xw155 [])",fontsize=16,color="black",shape="box"];2417 -> 2420[label="",style="solid", color="black", weight=3]; 2418[label="List.nubByNubBy' primEqChar xw156 (xw157 : xw158)",fontsize=16,color="burlywood",shape="triangle"];2480[label="xw156/xw1560 : xw1561",fontsize=10,color="white",style="solid",shape="box"];2418 -> 2480[label="",style="solid", color="burlywood", weight=9]; 2480 -> 2421[label="",style="solid", color="burlywood", weight=3]; 2481[label="xw156/[]",fontsize=10,color="white",style="solid",shape="box"];2418 -> 2481[label="",style="solid", color="burlywood", weight=9]; 2481 -> 2422[label="",style="solid", color="burlywood", weight=3]; 350[label="xw9000",fontsize=16,color="green",shape="box"];351[label="xw1000",fontsize=16,color="green",shape="box"];2419 -> 2402[label="",style="dashed", color="red", weight=0]; 2419[label="List.nubByNubBy'1 primEqChar xw155 xw156 (xw157 : xw158) (primEqChar xw1600 xw155 || List.elem_by primEqChar xw155 xw1601)",fontsize=16,color="magenta"];2419 -> 2423[label="",style="dashed", color="magenta", weight=3]; 2419 -> 2424[label="",style="dashed", color="magenta", weight=3]; 2420[label="List.nubByNubBy'1 primEqChar xw155 xw156 (xw157 : xw158) False",fontsize=16,color="black",shape="box"];2420 -> 2425[label="",style="solid", color="black", weight=3]; 2421[label="List.nubByNubBy' primEqChar (xw1560 : xw1561) (xw157 : xw158)",fontsize=16,color="black",shape="box"];2421 -> 2426[label="",style="solid", color="black", weight=3]; 2422[label="List.nubByNubBy' primEqChar [] (xw157 : xw158)",fontsize=16,color="black",shape="box"];2422 -> 2427[label="",style="solid", color="black", weight=3]; 2423[label="xw1601",fontsize=16,color="green",shape="box"];2424 -> 226[label="",style="dashed", color="red", weight=0]; 2424[label="primEqChar xw1600 xw155",fontsize=16,color="magenta"];2424 -> 2428[label="",style="dashed", color="magenta", weight=3]; 2424 -> 2429[label="",style="dashed", color="magenta", weight=3]; 2425[label="List.nubByNubBy'0 primEqChar xw155 xw156 (xw157 : xw158) otherwise",fontsize=16,color="black",shape="box"];2425 -> 2430[label="",style="solid", color="black", weight=3]; 2426[label="List.nubByNubBy'2 primEqChar (xw1560 : xw1561) (xw157 : xw158)",fontsize=16,color="black",shape="box"];2426 -> 2431[label="",style="solid", color="black", weight=3]; 2427[label="List.nubByNubBy'3 primEqChar [] (xw157 : xw158)",fontsize=16,color="black",shape="box"];2427 -> 2432[label="",style="solid", color="black", weight=3]; 2428[label="xw155",fontsize=16,color="green",shape="box"];2429[label="xw1600",fontsize=16,color="green",shape="box"];2430[label="List.nubByNubBy'0 primEqChar xw155 xw156 (xw157 : xw158) True",fontsize=16,color="black",shape="box"];2430 -> 2433[label="",style="solid", color="black", weight=3]; 2431 -> 2414[label="",style="dashed", color="red", weight=0]; 2431[label="List.nubByNubBy'1 primEqChar xw1560 xw1561 (xw157 : xw158) (List.elem_by primEqChar xw1560 (xw157 : xw158))",fontsize=16,color="magenta"];2431 -> 2434[label="",style="dashed", color="magenta", weight=3]; 2431 -> 2435[label="",style="dashed", color="magenta", weight=3]; 2431 -> 2436[label="",style="dashed", color="magenta", weight=3]; 2432[label="[]",fontsize=16,color="green",shape="box"];2433[label="xw155 : List.nubByNubBy' primEqChar xw156 (xw155 : xw157 : xw158)",fontsize=16,color="green",shape="box"];2433 -> 2437[label="",style="dashed", color="green", weight=3]; 2434[label="xw157 : xw158",fontsize=16,color="green",shape="box"];2435[label="xw1561",fontsize=16,color="green",shape="box"];2436[label="xw1560",fontsize=16,color="green",shape="box"];2437 -> 2418[label="",style="dashed", color="red", weight=0]; 2437[label="List.nubByNubBy' primEqChar xw156 (xw155 : xw157 : xw158)",fontsize=16,color="magenta"];2437 -> 2438[label="",style="dashed", color="magenta", weight=3]; 2437 -> 2439[label="",style="dashed", color="magenta", weight=3]; 2438[label="xw155",fontsize=16,color="green",shape="box"];2439[label="xw157 : xw158",fontsize=16,color="green",shape="box"];} ---------------------------------------- (10) Complex Obligation (AND) ---------------------------------------- (11) Obligation: Q DP problem: The TRS P consists of the following rules: new_psPs(:(xw80, xw81), xw9, xw10, xw11, ba) -> new_psPs(xw81, xw9, xw10, xw11, ba) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (12) 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_psPs(:(xw80, xw81), xw9, xw10, xw11, ba) -> new_psPs(xw81, xw9, xw10, xw11, ba) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Q DP problem: The TRS P consists of the following rules: new_deleteBy0(xw17, xw18, xw19, False, ba) -> new_deleteBy(xw19, xw17, ba) new_deleteBy(xw10, :(xw90, xw91), bb) -> new_deleteBy0(xw91, xw90, xw10, new_esEs(xw10, xw90, bb), bb) The TRS R consists of the following rules: new_esEs(xw10, xw90, ty_Char) -> new_primEqChar(xw10, xw90) new_esEs(xw10, xw90, app(ty_Ratio, bf)) -> error([]) new_primEqNat0(Zero, Zero) -> True new_esEs(xw10, xw90, app(app(app(ty_@3, cb), cc), cd)) -> error([]) new_primEqNat0(Succ(xw1000), Zero) -> False new_primEqNat0(Zero, Succ(xw9000)) -> False new_esEs(xw10, xw90, ty_Integer) -> error([]) new_primEqChar(Char(xw100), Char(xw900)) -> new_primEqNat0(xw100, xw900) new_esEs(xw10, xw90, app(ty_[], bc)) -> error([]) new_esEs(xw10, xw90, ty_Ordering) -> error([]) new_primEqNat0(Succ(xw1000), Succ(xw9000)) -> new_primEqNat0(xw1000, xw9000) new_esEs(xw10, xw90, app(app(ty_@2, bd), be)) -> error([]) new_esEs(xw10, xw90, ty_Float) -> error([]) new_esEs(xw10, xw90, ty_Bool) -> error([]) new_esEs(xw10, xw90, ty_@0) -> error([]) new_esEs(xw10, xw90, ty_Int) -> error([]) new_esEs(xw10, xw90, app(app(ty_Either, bg), bh)) -> error([]) new_esEs(xw10, xw90, app(ty_Maybe, ca)) -> error([]) new_esEs(xw10, xw90, ty_Double) -> error([]) The set Q consists of the following terms: new_esEs(x0, x1, app(ty_[], x2)) new_esEs(x0, x1, ty_Float) new_primEqNat0(Zero, Zero) new_primEqNat0(Succ(x0), Succ(x1)) new_primEqNat0(Succ(x0), Zero) new_primEqNat0(Zero, Succ(x0)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Int) new_esEs(x0, x1, ty_Ordering) new_esEs(x0, x1, ty_Integer) new_primEqChar(Char(x0), Char(x1)) new_esEs(x0, x1, ty_@0) new_esEs(x0, x1, ty_Double) new_esEs(x0, x1, app(ty_Ratio, x2)) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_esEs(x0, x1, ty_Bool) new_esEs(x0, x1, app(ty_Maybe, x2)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (15) 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_deleteBy(xw10, :(xw90, xw91), bb) -> new_deleteBy0(xw91, xw90, xw10, new_esEs(xw10, xw90, bb), bb) The graph contains the following edges 2 > 1, 2 > 2, 1 >= 3, 3 >= 5 *new_deleteBy0(xw17, xw18, xw19, False, ba) -> new_deleteBy(xw19, xw17, ba) The graph contains the following edges 3 >= 1, 1 >= 2, 5 >= 3 ---------------------------------------- (16) YES ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: new_nubByNubBy'1(xw155, xw156, xw157, xw158, False, :(xw1600, xw1601)) -> new_nubByNubBy'1(xw155, xw156, xw157, xw158, new_primEqChar(xw1600, xw155), xw1601) new_nubByNubBy'1(xw155, xw156, xw157, xw158, False, []) -> new_nubByNubBy'(xw156, xw155, :(xw157, xw158)) new_nubByNubBy'(:(xw1560, xw1561), xw157, xw158) -> new_nubByNubBy'10(xw1560, xw1561, xw157, xw158, :(xw157, xw158)) new_nubByNubBy'10(xw155, xw156, xw157, xw158, :(xw1600, xw1601)) -> new_nubByNubBy'1(xw155, xw156, xw157, xw158, new_primEqChar(xw1600, xw155), xw1601) new_nubByNubBy'10(xw155, xw156, xw157, xw158, []) -> new_nubByNubBy'(xw156, xw155, :(xw157, xw158)) new_nubByNubBy'1(xw155, :(xw1560, xw1561), xw157, xw158, True, xw160) -> new_nubByNubBy'10(xw1560, xw1561, xw157, xw158, :(xw157, xw158)) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_primEqNat0(Succ(xw1000), Zero) -> False new_primEqNat0(Zero, Succ(xw9000)) -> False new_primEqChar(Char(xw100), Char(xw900)) -> new_primEqNat0(xw100, xw900) new_primEqNat0(Succ(xw1000), Succ(xw9000)) -> new_primEqNat0(xw1000, xw9000) The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqChar(Char(x0), Char(x1)) new_primEqNat0(Succ(x0), Succ(x1)) new_primEqNat0(Succ(x0), Zero) new_primEqNat0(Zero, Succ(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (18) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (19) Obligation: Q DP problem: The TRS P consists of the following rules: new_nubByNubBy'1(xw155, xw156, xw157, xw158, False, []) -> new_nubByNubBy'(xw156, xw155, :(xw157, xw158)) new_nubByNubBy'(:(xw1560, xw1561), xw157, xw158) -> new_nubByNubBy'10(xw1560, xw1561, xw157, xw158, :(xw157, xw158)) new_nubByNubBy'10(xw155, xw156, xw157, xw158, :(xw1600, xw1601)) -> new_nubByNubBy'1(xw155, xw156, xw157, xw158, new_primEqChar(xw1600, xw155), xw1601) new_nubByNubBy'1(xw155, xw156, xw157, xw158, False, :(xw1600, xw1601)) -> new_nubByNubBy'1(xw155, xw156, xw157, xw158, new_primEqChar(xw1600, xw155), xw1601) new_nubByNubBy'1(xw155, :(xw1560, xw1561), xw157, xw158, True, xw160) -> new_nubByNubBy'10(xw1560, xw1561, xw157, xw158, :(xw157, xw158)) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_primEqNat0(Succ(xw1000), Zero) -> False new_primEqNat0(Zero, Succ(xw9000)) -> False new_primEqChar(Char(xw100), Char(xw900)) -> new_primEqNat0(xw100, xw900) new_primEqNat0(Succ(xw1000), Succ(xw9000)) -> new_primEqNat0(xw1000, xw9000) The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqChar(Char(x0), Char(x1)) new_primEqNat0(Succ(x0), Succ(x1)) new_primEqNat0(Succ(x0), Zero) new_primEqNat0(Zero, Succ(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (20) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule new_nubByNubBy'10(xw155, xw156, xw157, xw158, :(xw1600, xw1601)) -> new_nubByNubBy'1(xw155, xw156, xw157, xw158, new_primEqChar(xw1600, xw155), xw1601) we obtained the following new rules [LPAR04]: (new_nubByNubBy'10(z0, z1, z2, z3, :(z2, z3)) -> new_nubByNubBy'1(z0, z1, z2, z3, new_primEqChar(z2, z0), z3),new_nubByNubBy'10(z0, z1, z2, z3, :(z2, z3)) -> new_nubByNubBy'1(z0, z1, z2, z3, new_primEqChar(z2, z0), z3)) ---------------------------------------- (21) Obligation: Q DP problem: The TRS P consists of the following rules: new_nubByNubBy'1(xw155, xw156, xw157, xw158, False, []) -> new_nubByNubBy'(xw156, xw155, :(xw157, xw158)) new_nubByNubBy'(:(xw1560, xw1561), xw157, xw158) -> new_nubByNubBy'10(xw1560, xw1561, xw157, xw158, :(xw157, xw158)) new_nubByNubBy'1(xw155, xw156, xw157, xw158, False, :(xw1600, xw1601)) -> new_nubByNubBy'1(xw155, xw156, xw157, xw158, new_primEqChar(xw1600, xw155), xw1601) new_nubByNubBy'1(xw155, :(xw1560, xw1561), xw157, xw158, True, xw160) -> new_nubByNubBy'10(xw1560, xw1561, xw157, xw158, :(xw157, xw158)) new_nubByNubBy'10(z0, z1, z2, z3, :(z2, z3)) -> new_nubByNubBy'1(z0, z1, z2, z3, new_primEqChar(z2, z0), z3) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_primEqNat0(Succ(xw1000), Zero) -> False new_primEqNat0(Zero, Succ(xw9000)) -> False new_primEqChar(Char(xw100), Char(xw900)) -> new_primEqNat0(xw100, xw900) new_primEqNat0(Succ(xw1000), Succ(xw9000)) -> new_primEqNat0(xw1000, xw9000) The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqChar(Char(x0), Char(x1)) new_primEqNat0(Succ(x0), Succ(x1)) new_primEqNat0(Succ(x0), Zero) new_primEqNat0(Zero, Succ(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (22) 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_nubByNubBy'(:(xw1560, xw1561), xw157, xw158) -> new_nubByNubBy'10(xw1560, xw1561, xw157, xw158, :(xw157, xw158)) The graph contains the following edges 1 > 1, 1 > 2, 2 >= 3, 3 >= 4 *new_nubByNubBy'10(z0, z1, z2, z3, :(z2, z3)) -> new_nubByNubBy'1(z0, z1, z2, z3, new_primEqChar(z2, z0), z3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 5 > 3, 4 >= 4, 5 > 4, 4 >= 6, 5 > 6 *new_nubByNubBy'1(xw155, xw156, xw157, xw158, False, :(xw1600, xw1601)) -> new_nubByNubBy'1(xw155, xw156, xw157, xw158, new_primEqChar(xw1600, xw155), xw1601) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 6 > 6 *new_nubByNubBy'1(xw155, xw156, xw157, xw158, False, []) -> new_nubByNubBy'(xw156, xw155, :(xw157, xw158)) The graph contains the following edges 2 >= 1, 1 >= 2 *new_nubByNubBy'1(xw155, :(xw1560, xw1561), xw157, xw158, True, xw160) -> new_nubByNubBy'10(xw1560, xw1561, xw157, xw158, :(xw157, xw158)) The graph contains the following edges 2 > 1, 2 > 2, 3 >= 3, 4 >= 4 ---------------------------------------- (23) YES ---------------------------------------- (24) Obligation: Q DP problem: The TRS P consists of the following rules: new_foldl(xw9, xw10, :(xw110, xw111), ba) -> new_foldl(new_flip(xw9, xw10, ba), xw110, xw111, ba) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_esEs(xw10, xw90, app(ty_Ratio, be)) -> error([]) new_esEs(xw10, xw90, ty_Integer) -> error([]) new_primEqChar(Char(xw100), Char(xw900)) -> new_primEqNat0(xw100, xw900) new_esEs(xw10, xw90, app(app(ty_@2, bc), bd)) -> error([]) new_esEs(xw10, xw90, ty_@0) -> error([]) new_esEs(xw10, xw90, ty_Double) -> error([]) new_deleteBy1(xw10, :(xw90, xw91), ba) -> new_deleteBy00(xw91, xw90, xw10, new_esEs(xw10, xw90, ba), ba) new_deleteBy00(xw17, xw18, xw19, True, cd) -> xw17 new_esEs(xw10, xw90, ty_Char) -> new_primEqChar(xw10, xw90) new_primEqNat0(Succ(xw1000), Zero) -> False new_primEqNat0(Zero, Succ(xw9000)) -> False new_esEs(xw10, xw90, app(app(app(ty_@3, ca), cb), cc)) -> error([]) new_flip(xw9, xw10, ba) -> new_deleteBy1(xw10, xw9, ba) new_esEs(xw10, xw90, app(ty_[], bb)) -> error([]) new_primEqNat0(Succ(xw1000), Succ(xw9000)) -> new_primEqNat0(xw1000, xw9000) new_esEs(xw10, xw90, ty_Ordering) -> error([]) new_esEs(xw10, xw90, ty_Float) -> error([]) new_esEs(xw10, xw90, ty_Bool) -> error([]) new_esEs(xw10, xw90, ty_Int) -> error([]) new_esEs(xw10, xw90, app(app(ty_Either, bf), bg)) -> error([]) new_deleteBy1(xw10, [], ba) -> [] new_esEs(xw10, xw90, app(ty_Maybe, bh)) -> error([]) new_deleteBy00(xw17, xw18, xw19, False, cd) -> :(xw18, new_deleteBy1(xw19, xw17, cd)) The set Q consists of the following terms: new_esEs(x0, x1, ty_Float) new_primEqNat0(Zero, Zero) new_deleteBy00(x0, x1, x2, False, x3) new_primEqNat0(Succ(x0), Succ(x1)) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_primEqNat0(Succ(x0), Zero) new_esEs(x0, x1, app(ty_Ratio, x2)) new_primEqNat0(Zero, Succ(x0)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Int) new_deleteBy1(x0, :(x1, x2), x3) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_esEs(x0, x1, ty_Ordering) new_esEs(x0, x1, app(ty_[], x2)) new_deleteBy1(x0, [], x1) new_esEs(x0, x1, ty_Integer) new_primEqChar(Char(x0), Char(x1)) new_flip(x0, x1, x2) new_esEs(x0, x1, ty_@0) new_esEs(x0, x1, ty_Double) new_deleteBy00(x0, x1, x2, True, x3) new_esEs(x0, x1, ty_Bool) new_esEs(x0, x1, app(ty_Maybe, x2)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (25) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule new_foldl(xw9, xw10, :(xw110, xw111), ba) -> new_foldl(new_flip(xw9, xw10, ba), xw110, xw111, ba) at position [0] we obtained the following new rules [LPAR04]: (new_foldl(xw9, xw10, :(xw110, xw111), ba) -> new_foldl(new_deleteBy1(xw10, xw9, ba), xw110, xw111, ba),new_foldl(xw9, xw10, :(xw110, xw111), ba) -> new_foldl(new_deleteBy1(xw10, xw9, ba), xw110, xw111, ba)) ---------------------------------------- (26) Obligation: Q DP problem: The TRS P consists of the following rules: new_foldl(xw9, xw10, :(xw110, xw111), ba) -> new_foldl(new_deleteBy1(xw10, xw9, ba), xw110, xw111, ba) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_esEs(xw10, xw90, app(ty_Ratio, be)) -> error([]) new_esEs(xw10, xw90, ty_Integer) -> error([]) new_primEqChar(Char(xw100), Char(xw900)) -> new_primEqNat0(xw100, xw900) new_esEs(xw10, xw90, app(app(ty_@2, bc), bd)) -> error([]) new_esEs(xw10, xw90, ty_@0) -> error([]) new_esEs(xw10, xw90, ty_Double) -> error([]) new_deleteBy1(xw10, :(xw90, xw91), ba) -> new_deleteBy00(xw91, xw90, xw10, new_esEs(xw10, xw90, ba), ba) new_deleteBy00(xw17, xw18, xw19, True, cd) -> xw17 new_esEs(xw10, xw90, ty_Char) -> new_primEqChar(xw10, xw90) new_primEqNat0(Succ(xw1000), Zero) -> False new_primEqNat0(Zero, Succ(xw9000)) -> False new_esEs(xw10, xw90, app(app(app(ty_@3, ca), cb), cc)) -> error([]) new_flip(xw9, xw10, ba) -> new_deleteBy1(xw10, xw9, ba) new_esEs(xw10, xw90, app(ty_[], bb)) -> error([]) new_primEqNat0(Succ(xw1000), Succ(xw9000)) -> new_primEqNat0(xw1000, xw9000) new_esEs(xw10, xw90, ty_Ordering) -> error([]) new_esEs(xw10, xw90, ty_Float) -> error([]) new_esEs(xw10, xw90, ty_Bool) -> error([]) new_esEs(xw10, xw90, ty_Int) -> error([]) new_esEs(xw10, xw90, app(app(ty_Either, bf), bg)) -> error([]) new_deleteBy1(xw10, [], ba) -> [] new_esEs(xw10, xw90, app(ty_Maybe, bh)) -> error([]) new_deleteBy00(xw17, xw18, xw19, False, cd) -> :(xw18, new_deleteBy1(xw19, xw17, cd)) The set Q consists of the following terms: new_esEs(x0, x1, ty_Float) new_primEqNat0(Zero, Zero) new_deleteBy00(x0, x1, x2, False, x3) new_primEqNat0(Succ(x0), Succ(x1)) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_primEqNat0(Succ(x0), Zero) new_esEs(x0, x1, app(ty_Ratio, x2)) new_primEqNat0(Zero, Succ(x0)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Int) new_deleteBy1(x0, :(x1, x2), x3) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_esEs(x0, x1, ty_Ordering) new_esEs(x0, x1, app(ty_[], x2)) new_deleteBy1(x0, [], x1) new_esEs(x0, x1, ty_Integer) new_primEqChar(Char(x0), Char(x1)) new_flip(x0, x1, x2) new_esEs(x0, x1, ty_@0) new_esEs(x0, x1, ty_Double) new_deleteBy00(x0, x1, x2, True, x3) new_esEs(x0, x1, ty_Bool) new_esEs(x0, x1, app(ty_Maybe, x2)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (27) 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. ---------------------------------------- (28) Obligation: Q DP problem: The TRS P consists of the following rules: new_foldl(xw9, xw10, :(xw110, xw111), ba) -> new_foldl(new_deleteBy1(xw10, xw9, ba), xw110, xw111, ba) The TRS R consists of the following rules: new_deleteBy1(xw10, :(xw90, xw91), ba) -> new_deleteBy00(xw91, xw90, xw10, new_esEs(xw10, xw90, ba), ba) new_deleteBy1(xw10, [], ba) -> [] new_esEs(xw10, xw90, app(ty_Ratio, be)) -> error([]) new_esEs(xw10, xw90, ty_Integer) -> error([]) new_esEs(xw10, xw90, app(app(ty_@2, bc), bd)) -> error([]) new_esEs(xw10, xw90, ty_@0) -> error([]) new_esEs(xw10, xw90, ty_Double) -> error([]) new_esEs(xw10, xw90, ty_Char) -> new_primEqChar(xw10, xw90) new_esEs(xw10, xw90, app(app(app(ty_@3, ca), cb), cc)) -> error([]) new_esEs(xw10, xw90, app(ty_[], bb)) -> error([]) new_esEs(xw10, xw90, ty_Ordering) -> error([]) new_esEs(xw10, xw90, ty_Float) -> error([]) new_esEs(xw10, xw90, ty_Bool) -> error([]) new_esEs(xw10, xw90, ty_Int) -> error([]) new_esEs(xw10, xw90, app(app(ty_Either, bf), bg)) -> error([]) new_esEs(xw10, xw90, app(ty_Maybe, bh)) -> error([]) new_deleteBy00(xw17, xw18, xw19, True, cd) -> xw17 new_deleteBy00(xw17, xw18, xw19, False, cd) -> :(xw18, new_deleteBy1(xw19, xw17, cd)) new_primEqChar(Char(xw100), Char(xw900)) -> new_primEqNat0(xw100, xw900) new_primEqNat0(Zero, Zero) -> True new_primEqNat0(Succ(xw1000), Zero) -> False new_primEqNat0(Zero, Succ(xw9000)) -> False new_primEqNat0(Succ(xw1000), Succ(xw9000)) -> new_primEqNat0(xw1000, xw9000) The set Q consists of the following terms: new_esEs(x0, x1, ty_Float) new_primEqNat0(Zero, Zero) new_deleteBy00(x0, x1, x2, False, x3) new_primEqNat0(Succ(x0), Succ(x1)) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_primEqNat0(Succ(x0), Zero) new_esEs(x0, x1, app(ty_Ratio, x2)) new_primEqNat0(Zero, Succ(x0)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Int) new_deleteBy1(x0, :(x1, x2), x3) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_esEs(x0, x1, ty_Ordering) new_esEs(x0, x1, app(ty_[], x2)) new_deleteBy1(x0, [], x1) new_esEs(x0, x1, ty_Integer) new_primEqChar(Char(x0), Char(x1)) new_flip(x0, x1, x2) new_esEs(x0, x1, ty_@0) new_esEs(x0, x1, ty_Double) new_deleteBy00(x0, x1, x2, True, x3) new_esEs(x0, x1, ty_Bool) new_esEs(x0, x1, app(ty_Maybe, x2)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (29) 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_flip(x0, x1, x2) ---------------------------------------- (30) Obligation: Q DP problem: The TRS P consists of the following rules: new_foldl(xw9, xw10, :(xw110, xw111), ba) -> new_foldl(new_deleteBy1(xw10, xw9, ba), xw110, xw111, ba) The TRS R consists of the following rules: new_deleteBy1(xw10, :(xw90, xw91), ba) -> new_deleteBy00(xw91, xw90, xw10, new_esEs(xw10, xw90, ba), ba) new_deleteBy1(xw10, [], ba) -> [] new_esEs(xw10, xw90, app(ty_Ratio, be)) -> error([]) new_esEs(xw10, xw90, ty_Integer) -> error([]) new_esEs(xw10, xw90, app(app(ty_@2, bc), bd)) -> error([]) new_esEs(xw10, xw90, ty_@0) -> error([]) new_esEs(xw10, xw90, ty_Double) -> error([]) new_esEs(xw10, xw90, ty_Char) -> new_primEqChar(xw10, xw90) new_esEs(xw10, xw90, app(app(app(ty_@3, ca), cb), cc)) -> error([]) new_esEs(xw10, xw90, app(ty_[], bb)) -> error([]) new_esEs(xw10, xw90, ty_Ordering) -> error([]) new_esEs(xw10, xw90, ty_Float) -> error([]) new_esEs(xw10, xw90, ty_Bool) -> error([]) new_esEs(xw10, xw90, ty_Int) -> error([]) new_esEs(xw10, xw90, app(app(ty_Either, bf), bg)) -> error([]) new_esEs(xw10, xw90, app(ty_Maybe, bh)) -> error([]) new_deleteBy00(xw17, xw18, xw19, True, cd) -> xw17 new_deleteBy00(xw17, xw18, xw19, False, cd) -> :(xw18, new_deleteBy1(xw19, xw17, cd)) new_primEqChar(Char(xw100), Char(xw900)) -> new_primEqNat0(xw100, xw900) new_primEqNat0(Zero, Zero) -> True new_primEqNat0(Succ(xw1000), Zero) -> False new_primEqNat0(Zero, Succ(xw9000)) -> False new_primEqNat0(Succ(xw1000), Succ(xw9000)) -> new_primEqNat0(xw1000, xw9000) The set Q consists of the following terms: new_esEs(x0, x1, ty_Float) new_primEqNat0(Zero, Zero) new_deleteBy00(x0, x1, x2, False, x3) new_primEqNat0(Succ(x0), Succ(x1)) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_primEqNat0(Succ(x0), Zero) new_esEs(x0, x1, app(ty_Ratio, x2)) new_primEqNat0(Zero, Succ(x0)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Int) new_deleteBy1(x0, :(x1, x2), x3) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) new_esEs(x0, x1, ty_Ordering) new_esEs(x0, x1, app(ty_[], x2)) new_deleteBy1(x0, [], x1) new_esEs(x0, x1, ty_Integer) new_primEqChar(Char(x0), Char(x1)) new_esEs(x0, x1, ty_@0) new_esEs(x0, x1, ty_Double) new_deleteBy00(x0, x1, x2, True, x3) new_esEs(x0, x1, ty_Bool) new_esEs(x0, x1, app(ty_Maybe, x2)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (31) 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_foldl(xw9, xw10, :(xw110, xw111), ba) -> new_foldl(new_deleteBy1(xw10, xw9, ba), xw110, xw111, ba) The graph contains the following edges 3 > 2, 3 > 3, 4 >= 4 ---------------------------------------- (32) YES ---------------------------------------- (33) Obligation: Q DP problem: The TRS P consists of the following rules: new_primEqNat(Succ(xw1000), Succ(xw9000)) -> new_primEqNat(xw1000, xw9000) 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_primEqNat(Succ(xw1000), Succ(xw9000)) -> new_primEqNat(xw1000, xw9000) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (35) YES