/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.hs /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/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) IFR [EQUIVALENT, 0 ms] (2) HASKELL (3) BR [EQUIVALENT, 0 ms] (4) HASKELL (5) COR [EQUIVALENT, 18 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, 5 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 wx wy [] = []; 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 wu wv [] = 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' [] ww = []; 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' [] ww = []; nubBy' (y : ys) xs|elem_by eq y xsnubBy' ys xs|otherwisey : nubBy' ys (y : xs); " is transformed to "nubBy' [] ww = nubBy'3 [] ww; 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 [] ww = []; nubBy'3 xv xw = nubBy'2 xv xw; " ---------------------------------------- (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 wx wy [] = []; 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 wu wv [] = 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' [] ww = nubBy'3 [] ww; 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 [] ww = []; nubBy'3 xv xw = nubBy'2 xv xw; }; 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' [] ww = nubBy'3 [] ww; 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 [] ww = []; nubBy'3 xv xw = nubBy'2 xv xw; } " are unpacked to the following functions on top level "nubByNubBy'0 xx y ys xs True = y : nubByNubBy' xx ys (y : xs); " "nubByNubBy'3 xx [] ww = []; nubByNubBy'3 xx xv xw = nubByNubBy'2 xx xv xw; " "nubByNubBy'1 xx y ys xs True = nubByNubBy' xx ys xs; nubByNubBy'1 xx y ys xs False = nubByNubBy'0 xx y ys xs otherwise; " "nubByNubBy'2 xx (y : ys) xs = nubByNubBy'1 xx y ys xs (elem_by xx y xs); " "nubByNubBy' xx [] ww = nubByNubBy'3 xx [] ww; nubByNubBy' xx (y : ys) xs = nubByNubBy'2 xx (y : ys) xs; " ---------------------------------------- (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 wx wy [] = []; 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 wu wv [] = 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' xx [] ww = nubByNubBy'3 xx [] ww; nubByNubBy' xx (y : ys) xs = nubByNubBy'2 xx (y : ys) xs; nubByNubBy'0 xx y ys xs True = y : nubByNubBy' xx ys (y : xs); nubByNubBy'1 xx y ys xs True = nubByNubBy' xx ys xs; nubByNubBy'1 xx y ys xs False = nubByNubBy'0 xx y ys xs otherwise; nubByNubBy'2 xx (y : ys) xs = nubByNubBy'1 xx y ys xs (elem_by xx y xs); nubByNubBy'3 xx [] ww = []; nubByNubBy'3 xx xv xw = nubByNubBy'2 xx xv xw; 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 xy3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 4[label="List.union xy3 xy4",fontsize=16,color="black",shape="triangle"];4 -> 5[label="",style="solid", color="black", weight=3]; 5[label="List.unionBy (==) xy3 xy4",fontsize=16,color="black",shape="box"];5 -> 6[label="",style="solid", color="black", weight=3]; 6[label="xy3 ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xy4) xy3",fontsize=16,color="burlywood",shape="box"];6229[label="xy3/xy30 : xy31",fontsize=10,color="white",style="solid",shape="box"];6 -> 6229[label="",style="solid", color="burlywood", weight=9]; 6229 -> 7[label="",style="solid", color="burlywood", weight=3]; 6230[label="xy3/[]",fontsize=10,color="white",style="solid",shape="box"];6 -> 6230[label="",style="solid", color="burlywood", weight=9]; 6230 -> 8[label="",style="solid", color="burlywood", weight=3]; 7[label="(xy30 : xy31) ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xy4) (xy30 : xy31)",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 8[label="[] ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xy4) []",fontsize=16,color="black",shape="box"];8 -> 10[label="",style="solid", color="black", weight=3]; 9[label="xy30 : xy31 ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xy4) (xy30 : xy31)",fontsize=16,color="green",shape="box"];9 -> 11[label="",style="dashed", color="green", weight=3]; 10[label="foldl (flip (List.deleteBy (==))) (List.nubBy (==) xy4) []",fontsize=16,color="black",shape="box"];10 -> 12[label="",style="solid", color="black", weight=3]; 11 -> 168[label="",style="dashed", color="red", weight=0]; 11[label="xy31 ++ foldl (flip (List.deleteBy (==))) (List.nubBy (==) xy4) (xy30 : xy31)",fontsize=16,color="magenta"];11 -> 169[label="",style="dashed", color="magenta", weight=3]; 11 -> 170[label="",style="dashed", color="magenta", weight=3]; 11 -> 171[label="",style="dashed", color="magenta", weight=3]; 11 -> 172[label="",style="dashed", color="magenta", weight=3]; 12[label="List.nubBy (==) xy4",fontsize=16,color="black",shape="triangle"];12 -> 15[label="",style="solid", color="black", weight=3]; 169[label="xy31",fontsize=16,color="green",shape="box"];170[label="xy30",fontsize=16,color="green",shape="box"];171[label="xy31",fontsize=16,color="green",shape="box"];172 -> 12[label="",style="dashed", color="red", weight=0]; 172[label="List.nubBy (==) xy4",fontsize=16,color="magenta"];168[label="xy8 ++ foldl (flip (List.deleteBy (==))) xy9 (xy10 : xy11)",fontsize=16,color="burlywood",shape="triangle"];6231[label="xy8/xy80 : xy81",fontsize=10,color="white",style="solid",shape="box"];168 -> 6231[label="",style="solid", color="burlywood", weight=9]; 6231 -> 197[label="",style="solid", color="burlywood", weight=3]; 6232[label="xy8/[]",fontsize=10,color="white",style="solid",shape="box"];168 -> 6232[label="",style="solid", color="burlywood", weight=9]; 6232 -> 198[label="",style="solid", color="burlywood", weight=3]; 15[label="List.nubByNubBy' (==) xy4 []",fontsize=16,color="burlywood",shape="box"];6233[label="xy4/xy40 : xy41",fontsize=10,color="white",style="solid",shape="box"];15 -> 6233[label="",style="solid", color="burlywood", weight=9]; 6233 -> 18[label="",style="solid", color="burlywood", weight=3]; 6234[label="xy4/[]",fontsize=10,color="white",style="solid",shape="box"];15 -> 6234[label="",style="solid", color="burlywood", weight=9]; 6234 -> 19[label="",style="solid", color="burlywood", weight=3]; 197[label="(xy80 : xy81) ++ foldl (flip (List.deleteBy (==))) xy9 (xy10 : xy11)",fontsize=16,color="black",shape="box"];197 -> 207[label="",style="solid", color="black", weight=3]; 198[label="[] ++ foldl (flip (List.deleteBy (==))) xy9 (xy10 : xy11)",fontsize=16,color="black",shape="box"];198 -> 208[label="",style="solid", color="black", weight=3]; 18[label="List.nubByNubBy' (==) (xy40 : xy41) []",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]; 207[label="xy80 : xy81 ++ foldl (flip (List.deleteBy (==))) xy9 (xy10 : xy11)",fontsize=16,color="green",shape="box"];207 -> 223[label="",style="dashed", color="green", weight=3]; 208[label="foldl (flip (List.deleteBy (==))) xy9 (xy10 : xy11)",fontsize=16,color="black",shape="box"];208 -> 224[label="",style="solid", color="black", weight=3]; 23[label="List.nubByNubBy'2 (==) (xy40 : xy41) []",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]; 223 -> 168[label="",style="dashed", color="red", weight=0]; 223[label="xy81 ++ foldl (flip (List.deleteBy (==))) xy9 (xy10 : xy11)",fontsize=16,color="magenta"];223 -> 239[label="",style="dashed", color="magenta", weight=3]; 224[label="foldl (flip (List.deleteBy (==))) (flip (List.deleteBy (==)) xy9 xy10) xy11",fontsize=16,color="burlywood",shape="triangle"];6235[label="xy11/xy110 : xy111",fontsize=10,color="white",style="solid",shape="box"];224 -> 6235[label="",style="solid", color="burlywood", weight=9]; 6235 -> 240[label="",style="solid", color="burlywood", weight=3]; 6236[label="xy11/[]",fontsize=10,color="white",style="solid",shape="box"];224 -> 6236[label="",style="solid", color="burlywood", weight=9]; 6236 -> 241[label="",style="solid", color="burlywood", weight=3]; 28[label="List.nubByNubBy'1 (==) xy40 xy41 [] (List.elem_by (==) xy40 [])",fontsize=16,color="black",shape="box"];28 -> 33[label="",style="solid", color="black", weight=3]; 29[label="[]",fontsize=16,color="green",shape="box"];239[label="xy81",fontsize=16,color="green",shape="box"];240[label="foldl (flip (List.deleteBy (==))) (flip (List.deleteBy (==)) xy9 xy10) (xy110 : xy111)",fontsize=16,color="black",shape="box"];240 -> 258[label="",style="solid", color="black", weight=3]; 241[label="foldl (flip (List.deleteBy (==))) (flip (List.deleteBy (==)) xy9 xy10) []",fontsize=16,color="black",shape="box"];241 -> 259[label="",style="solid", color="black", weight=3]; 33[label="List.nubByNubBy'1 (==) xy40 xy41 [] False",fontsize=16,color="black",shape="box"];33 -> 37[label="",style="solid", color="black", weight=3]; 258 -> 224[label="",style="dashed", color="red", weight=0]; 258[label="foldl (flip (List.deleteBy (==))) (flip (List.deleteBy (==)) (flip (List.deleteBy (==)) xy9 xy10) xy110) xy111",fontsize=16,color="magenta"];258 -> 280[label="",style="dashed", color="magenta", weight=3]; 258 -> 281[label="",style="dashed", color="magenta", weight=3]; 258 -> 282[label="",style="dashed", color="magenta", weight=3]; 259[label="flip (List.deleteBy (==)) xy9 xy10",fontsize=16,color="black",shape="triangle"];259 -> 283[label="",style="solid", color="black", weight=3]; 37[label="List.nubByNubBy'0 (==) xy40 xy41 [] otherwise",fontsize=16,color="black",shape="box"];37 -> 42[label="",style="solid", color="black", weight=3]; 280[label="xy110",fontsize=16,color="green",shape="box"];281[label="xy111",fontsize=16,color="green",shape="box"];282 -> 259[label="",style="dashed", color="red", weight=0]; 282[label="flip (List.deleteBy (==)) xy9 xy10",fontsize=16,color="magenta"];283[label="List.deleteBy (==) xy10 xy9",fontsize=16,color="burlywood",shape="triangle"];6237[label="xy9/xy90 : xy91",fontsize=10,color="white",style="solid",shape="box"];283 -> 6237[label="",style="solid", color="burlywood", weight=9]; 6237 -> 304[label="",style="solid", color="burlywood", weight=3]; 6238[label="xy9/[]",fontsize=10,color="white",style="solid",shape="box"];283 -> 6238[label="",style="solid", color="burlywood", weight=9]; 6238 -> 305[label="",style="solid", color="burlywood", weight=3]; 42[label="List.nubByNubBy'0 (==) xy40 xy41 [] True",fontsize=16,color="black",shape="box"];42 -> 49[label="",style="solid", color="black", weight=3]; 304[label="List.deleteBy (==) xy10 (xy90 : xy91)",fontsize=16,color="black",shape="box"];304 -> 328[label="",style="solid", color="black", weight=3]; 305[label="List.deleteBy (==) xy10 []",fontsize=16,color="black",shape="box"];305 -> 329[label="",style="solid", color="black", weight=3]; 49[label="xy40 : List.nubByNubBy' (==) xy41 (xy40 : [])",fontsize=16,color="green",shape="box"];49 -> 54[label="",style="dashed", color="green", weight=3]; 328 -> 356[label="",style="dashed", color="red", weight=0]; 328[label="List.deleteBy0 xy91 xy90 (==) xy10 ((==) xy10 xy90)",fontsize=16,color="magenta"];328 -> 357[label="",style="dashed", color="magenta", weight=3]; 328 -> 358[label="",style="dashed", color="magenta", weight=3]; 328 -> 359[label="",style="dashed", color="magenta", weight=3]; 328 -> 360[label="",style="dashed", color="magenta", weight=3]; 329[label="[]",fontsize=16,color="green",shape="box"];54[label="List.nubByNubBy' (==) xy41 (xy40 : [])",fontsize=16,color="burlywood",shape="box"];6239[label="xy41/xy410 : xy411",fontsize=10,color="white",style="solid",shape="box"];54 -> 6239[label="",style="solid", color="burlywood", weight=9]; 6239 -> 59[label="",style="solid", color="burlywood", weight=3]; 6240[label="xy41/[]",fontsize=10,color="white",style="solid",shape="box"];54 -> 6240[label="",style="solid", color="burlywood", weight=9]; 6240 -> 60[label="",style="solid", color="burlywood", weight=3]; 357[label="xy90",fontsize=16,color="green",shape="box"];358[label="(==) xy10 xy90",fontsize=16,color="blue",shape="box"];6241[label="== :: Integer -> Integer -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6241[label="",style="solid", color="blue", weight=9]; 6241 -> 361[label="",style="solid", color="blue", weight=3]; 6242[label="== :: ((@2) a b) -> ((@2) a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6242[label="",style="solid", color="blue", weight=9]; 6242 -> 362[label="",style="solid", color="blue", weight=3]; 6243[label="== :: Int -> Int -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6243[label="",style="solid", color="blue", weight=9]; 6243 -> 363[label="",style="solid", color="blue", weight=3]; 6244[label="== :: (Maybe a) -> (Maybe a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6244[label="",style="solid", color="blue", weight=9]; 6244 -> 364[label="",style="solid", color="blue", weight=3]; 6245[label="== :: () -> () -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6245[label="",style="solid", color="blue", weight=9]; 6245 -> 365[label="",style="solid", color="blue", weight=3]; 6246[label="== :: Char -> Char -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6246[label="",style="solid", color="blue", weight=9]; 6246 -> 366[label="",style="solid", color="blue", weight=3]; 6247[label="== :: ([] a) -> ([] a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6247[label="",style="solid", color="blue", weight=9]; 6247 -> 367[label="",style="solid", color="blue", weight=3]; 6248[label="== :: Float -> Float -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6248[label="",style="solid", color="blue", weight=9]; 6248 -> 368[label="",style="solid", color="blue", weight=3]; 6249[label="== :: Bool -> Bool -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6249[label="",style="solid", color="blue", weight=9]; 6249 -> 369[label="",style="solid", color="blue", weight=3]; 6250[label="== :: Double -> Double -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6250[label="",style="solid", color="blue", weight=9]; 6250 -> 370[label="",style="solid", color="blue", weight=3]; 6251[label="== :: (Ratio a) -> (Ratio a) -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6251[label="",style="solid", color="blue", weight=9]; 6251 -> 371[label="",style="solid", color="blue", weight=3]; 6252[label="== :: (Either a b) -> (Either a b) -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6252[label="",style="solid", color="blue", weight=9]; 6252 -> 372[label="",style="solid", color="blue", weight=3]; 6253[label="== :: Ordering -> Ordering -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6253[label="",style="solid", color="blue", weight=9]; 6253 -> 373[label="",style="solid", color="blue", weight=3]; 6254[label="== :: ((@3) a b c) -> ((@3) a b c) -> Bool",fontsize=10,color="white",style="solid",shape="box"];358 -> 6254[label="",style="solid", color="blue", weight=9]; 6254 -> 374[label="",style="solid", color="blue", weight=3]; 359[label="xy91",fontsize=16,color="green",shape="box"];360[label="xy10",fontsize=16,color="green",shape="box"];356[label="List.deleteBy0 xy17 xy18 (==) xy19 xy20",fontsize=16,color="burlywood",shape="triangle"];6255[label="xy20/False",fontsize=10,color="white",style="solid",shape="box"];356 -> 6255[label="",style="solid", color="burlywood", weight=9]; 6255 -> 375[label="",style="solid", color="burlywood", weight=3]; 6256[label="xy20/True",fontsize=10,color="white",style="solid",shape="box"];356 -> 6256[label="",style="solid", color="burlywood", weight=9]; 6256 -> 376[label="",style="solid", color="burlywood", weight=3]; 59[label="List.nubByNubBy' (==) (xy410 : xy411) (xy40 : [])",fontsize=16,color="black",shape="box"];59 -> 70[label="",style="solid", color="black", weight=3]; 60[label="List.nubByNubBy' (==) [] (xy40 : [])",fontsize=16,color="black",shape="box"];60 -> 71[label="",style="solid", color="black", weight=3]; 361[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];361 -> 405[label="",style="solid", color="black", weight=3]; 362[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];362 -> 406[label="",style="solid", color="black", weight=3]; 363[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];363 -> 407[label="",style="solid", color="black", weight=3]; 364[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];364 -> 408[label="",style="solid", color="black", weight=3]; 365[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];365 -> 409[label="",style="solid", color="black", weight=3]; 366[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];366 -> 410[label="",style="solid", color="black", weight=3]; 367[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];367 -> 411[label="",style="solid", color="black", weight=3]; 368[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];368 -> 412[label="",style="solid", color="black", weight=3]; 369[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];369 -> 413[label="",style="solid", color="black", weight=3]; 370[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];370 -> 414[label="",style="solid", color="black", weight=3]; 371[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];371 -> 415[label="",style="solid", color="black", weight=3]; 372[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];372 -> 416[label="",style="solid", color="black", weight=3]; 373[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];373 -> 417[label="",style="solid", color="black", weight=3]; 374[label="(==) xy10 xy90",fontsize=16,color="black",shape="box"];374 -> 418[label="",style="solid", color="black", weight=3]; 375[label="List.deleteBy0 xy17 xy18 (==) xy19 False",fontsize=16,color="black",shape="box"];375 -> 419[label="",style="solid", color="black", weight=3]; 376[label="List.deleteBy0 xy17 xy18 (==) xy19 True",fontsize=16,color="black",shape="box"];376 -> 420[label="",style="solid", color="black", weight=3]; 70[label="List.nubByNubBy'2 (==) (xy410 : xy411) (xy40 : [])",fontsize=16,color="black",shape="box"];70 -> 83[label="",style="solid", color="black", weight=3]; 71[label="List.nubByNubBy'3 (==) [] (xy40 : [])",fontsize=16,color="black",shape="box"];71 -> 84[label="",style="solid", color="black", weight=3]; 405[label="error []",fontsize=16,color="red",shape="box"];406[label="error []",fontsize=16,color="red",shape="box"];407[label="primEqInt xy10 xy90",fontsize=16,color="burlywood",shape="triangle"];6257[label="xy10/Pos xy100",fontsize=10,color="white",style="solid",shape="box"];407 -> 6257[label="",style="solid", color="burlywood", weight=9]; 6257 -> 461[label="",style="solid", color="burlywood", weight=3]; 6258[label="xy10/Neg xy100",fontsize=10,color="white",style="solid",shape="box"];407 -> 6258[label="",style="solid", color="burlywood", weight=9]; 6258 -> 462[label="",style="solid", color="burlywood", weight=3]; 408[label="error []",fontsize=16,color="red",shape="box"];409[label="error []",fontsize=16,color="red",shape="box"];410[label="error []",fontsize=16,color="red",shape="box"];411[label="error []",fontsize=16,color="red",shape="box"];412[label="error []",fontsize=16,color="red",shape="box"];413[label="error []",fontsize=16,color="red",shape="box"];414[label="error []",fontsize=16,color="red",shape="box"];415[label="error []",fontsize=16,color="red",shape="box"];416[label="error []",fontsize=16,color="red",shape="box"];417[label="error []",fontsize=16,color="red",shape="box"];418[label="error []",fontsize=16,color="red",shape="box"];419[label="xy18 : List.deleteBy (==) xy19 xy17",fontsize=16,color="green",shape="box"];419 -> 463[label="",style="dashed", color="green", weight=3]; 420[label="xy17",fontsize=16,color="green",shape="box"];83[label="List.nubByNubBy'1 (==) xy410 xy411 (xy40 : []) (List.elem_by (==) xy410 (xy40 : []))",fontsize=16,color="black",shape="box"];83 -> 101[label="",style="solid", color="black", weight=3]; 84[label="[]",fontsize=16,color="green",shape="box"];461[label="primEqInt (Pos xy100) xy90",fontsize=16,color="burlywood",shape="box"];6259[label="xy100/Succ xy1000",fontsize=10,color="white",style="solid",shape="box"];461 -> 6259[label="",style="solid", color="burlywood", weight=9]; 6259 -> 502[label="",style="solid", color="burlywood", weight=3]; 6260[label="xy100/Zero",fontsize=10,color="white",style="solid",shape="box"];461 -> 6260[label="",style="solid", color="burlywood", weight=9]; 6260 -> 503[label="",style="solid", color="burlywood", weight=3]; 462[label="primEqInt (Neg xy100) xy90",fontsize=16,color="burlywood",shape="box"];6261[label="xy100/Succ xy1000",fontsize=10,color="white",style="solid",shape="box"];462 -> 6261[label="",style="solid", color="burlywood", weight=9]; 6261 -> 504[label="",style="solid", color="burlywood", weight=3]; 6262[label="xy100/Zero",fontsize=10,color="white",style="solid",shape="box"];462 -> 6262[label="",style="solid", color="burlywood", weight=9]; 6262 -> 505[label="",style="solid", color="burlywood", weight=3]; 463 -> 283[label="",style="dashed", color="red", weight=0]; 463[label="List.deleteBy (==) xy19 xy17",fontsize=16,color="magenta"];463 -> 506[label="",style="dashed", color="magenta", weight=3]; 463 -> 507[label="",style="dashed", color="magenta", weight=3]; 101[label="List.nubByNubBy'1 (==) xy410 xy411 (xy40 : []) ((==) xy40 xy410 || List.elem_by (==) xy410 [])",fontsize=16,color="black",shape="box"];101 -> 122[label="",style="solid", color="black", weight=3]; 502[label="primEqInt (Pos (Succ xy1000)) xy90",fontsize=16,color="burlywood",shape="box"];6263[label="xy90/Pos xy900",fontsize=10,color="white",style="solid",shape="box"];502 -> 6263[label="",style="solid", color="burlywood", weight=9]; 6263 -> 544[label="",style="solid", color="burlywood", weight=3]; 6264[label="xy90/Neg xy900",fontsize=10,color="white",style="solid",shape="box"];502 -> 6264[label="",style="solid", color="burlywood", weight=9]; 6264 -> 545[label="",style="solid", color="burlywood", weight=3]; 503[label="primEqInt (Pos Zero) xy90",fontsize=16,color="burlywood",shape="box"];6265[label="xy90/Pos xy900",fontsize=10,color="white",style="solid",shape="box"];503 -> 6265[label="",style="solid", color="burlywood", weight=9]; 6265 -> 546[label="",style="solid", color="burlywood", weight=3]; 6266[label="xy90/Neg xy900",fontsize=10,color="white",style="solid",shape="box"];503 -> 6266[label="",style="solid", color="burlywood", weight=9]; 6266 -> 547[label="",style="solid", color="burlywood", weight=3]; 504[label="primEqInt (Neg (Succ xy1000)) xy90",fontsize=16,color="burlywood",shape="box"];6267[label="xy90/Pos xy900",fontsize=10,color="white",style="solid",shape="box"];504 -> 6267[label="",style="solid", color="burlywood", weight=9]; 6267 -> 548[label="",style="solid", color="burlywood", weight=3]; 6268[label="xy90/Neg xy900",fontsize=10,color="white",style="solid",shape="box"];504 -> 6268[label="",style="solid", color="burlywood", weight=9]; 6268 -> 549[label="",style="solid", color="burlywood", weight=3]; 505[label="primEqInt (Neg Zero) xy90",fontsize=16,color="burlywood",shape="box"];6269[label="xy90/Pos xy900",fontsize=10,color="white",style="solid",shape="box"];505 -> 6269[label="",style="solid", color="burlywood", weight=9]; 6269 -> 550[label="",style="solid", color="burlywood", weight=3]; 6270[label="xy90/Neg xy900",fontsize=10,color="white",style="solid",shape="box"];505 -> 6270[label="",style="solid", color="burlywood", weight=9]; 6270 -> 551[label="",style="solid", color="burlywood", weight=3]; 506[label="xy19",fontsize=16,color="green",shape="box"];507[label="xy17",fontsize=16,color="green",shape="box"];122 -> 6191[label="",style="dashed", color="red", weight=0]; 122[label="List.nubByNubBy'1 primEqInt xy410 xy411 (xy40 : []) (primEqInt xy40 xy410 || List.elem_by primEqInt xy410 [])",fontsize=16,color="magenta"];122 -> 6192[label="",style="dashed", color="magenta", weight=3]; 122 -> 6193[label="",style="dashed", color="magenta", weight=3]; 122 -> 6194[label="",style="dashed", color="magenta", weight=3]; 122 -> 6195[label="",style="dashed", color="magenta", weight=3]; 122 -> 6196[label="",style="dashed", color="magenta", weight=3]; 122 -> 6197[label="",style="dashed", color="magenta", weight=3]; 544[label="primEqInt (Pos (Succ xy1000)) (Pos xy900)",fontsize=16,color="burlywood",shape="box"];6271[label="xy900/Succ xy9000",fontsize=10,color="white",style="solid",shape="box"];544 -> 6271[label="",style="solid", color="burlywood", weight=9]; 6271 -> 571[label="",style="solid", color="burlywood", weight=3]; 6272[label="xy900/Zero",fontsize=10,color="white",style="solid",shape="box"];544 -> 6272[label="",style="solid", color="burlywood", weight=9]; 6272 -> 572[label="",style="solid", color="burlywood", weight=3]; 545[label="primEqInt (Pos (Succ xy1000)) (Neg xy900)",fontsize=16,color="black",shape="box"];545 -> 573[label="",style="solid", color="black", weight=3]; 546[label="primEqInt (Pos Zero) (Pos xy900)",fontsize=16,color="burlywood",shape="box"];6273[label="xy900/Succ xy9000",fontsize=10,color="white",style="solid",shape="box"];546 -> 6273[label="",style="solid", color="burlywood", weight=9]; 6273 -> 574[label="",style="solid", color="burlywood", weight=3]; 6274[label="xy900/Zero",fontsize=10,color="white",style="solid",shape="box"];546 -> 6274[label="",style="solid", color="burlywood", weight=9]; 6274 -> 575[label="",style="solid", color="burlywood", weight=3]; 547[label="primEqInt (Pos Zero) (Neg xy900)",fontsize=16,color="burlywood",shape="box"];6275[label="xy900/Succ xy9000",fontsize=10,color="white",style="solid",shape="box"];547 -> 6275[label="",style="solid", color="burlywood", weight=9]; 6275 -> 576[label="",style="solid", color="burlywood", weight=3]; 6276[label="xy900/Zero",fontsize=10,color="white",style="solid",shape="box"];547 -> 6276[label="",style="solid", color="burlywood", weight=9]; 6276 -> 577[label="",style="solid", color="burlywood", weight=3]; 548[label="primEqInt (Neg (Succ xy1000)) (Pos xy900)",fontsize=16,color="black",shape="box"];548 -> 578[label="",style="solid", color="black", weight=3]; 549[label="primEqInt (Neg (Succ xy1000)) (Neg xy900)",fontsize=16,color="burlywood",shape="box"];6277[label="xy900/Succ xy9000",fontsize=10,color="white",style="solid",shape="box"];549 -> 6277[label="",style="solid", color="burlywood", weight=9]; 6277 -> 579[label="",style="solid", color="burlywood", weight=3]; 6278[label="xy900/Zero",fontsize=10,color="white",style="solid",shape="box"];549 -> 6278[label="",style="solid", color="burlywood", weight=9]; 6278 -> 580[label="",style="solid", color="burlywood", weight=3]; 550[label="primEqInt (Neg Zero) (Pos xy900)",fontsize=16,color="burlywood",shape="box"];6279[label="xy900/Succ xy9000",fontsize=10,color="white",style="solid",shape="box"];550 -> 6279[label="",style="solid", color="burlywood", weight=9]; 6279 -> 581[label="",style="solid", color="burlywood", weight=3]; 6280[label="xy900/Zero",fontsize=10,color="white",style="solid",shape="box"];550 -> 6280[label="",style="solid", color="burlywood", weight=9]; 6280 -> 582[label="",style="solid", color="burlywood", weight=3]; 551[label="primEqInt (Neg Zero) (Neg xy900)",fontsize=16,color="burlywood",shape="box"];6281[label="xy900/Succ xy9000",fontsize=10,color="white",style="solid",shape="box"];551 -> 6281[label="",style="solid", color="burlywood", weight=9]; 6281 -> 583[label="",style="solid", color="burlywood", weight=3]; 6282[label="xy900/Zero",fontsize=10,color="white",style="solid",shape="box"];551 -> 6282[label="",style="solid", color="burlywood", weight=9]; 6282 -> 584[label="",style="solid", color="burlywood", weight=3]; 6192[label="xy410",fontsize=16,color="green",shape="box"];6193[label="[]",fontsize=16,color="green",shape="box"];6194[label="[]",fontsize=16,color="green",shape="box"];6195 -> 407[label="",style="dashed", color="red", weight=0]; 6195[label="primEqInt xy40 xy410",fontsize=16,color="magenta"];6195 -> 6199[label="",style="dashed", color="magenta", weight=3]; 6195 -> 6200[label="",style="dashed", color="magenta", weight=3]; 6196[label="xy40",fontsize=16,color="green",shape="box"];6197[label="xy411",fontsize=16,color="green",shape="box"];6191[label="List.nubByNubBy'1 primEqInt xy381 xy382 (xy383 : xy384) (xy387 || List.elem_by primEqInt xy381 xy386)",fontsize=16,color="burlywood",shape="triangle"];6283[label="xy387/False",fontsize=10,color="white",style="solid",shape="box"];6191 -> 6283[label="",style="solid", color="burlywood", weight=9]; 6283 -> 6201[label="",style="solid", color="burlywood", weight=3]; 6284[label="xy387/True",fontsize=10,color="white",style="solid",shape="box"];6191 -> 6284[label="",style="solid", color="burlywood", weight=9]; 6284 -> 6202[label="",style="solid", color="burlywood", weight=3]; 571[label="primEqInt (Pos (Succ xy1000)) (Pos (Succ xy9000))",fontsize=16,color="black",shape="box"];571 -> 589[label="",style="solid", color="black", weight=3]; 572[label="primEqInt (Pos (Succ xy1000)) (Pos Zero)",fontsize=16,color="black",shape="box"];572 -> 590[label="",style="solid", color="black", weight=3]; 573[label="False",fontsize=16,color="green",shape="box"];574[label="primEqInt (Pos Zero) (Pos (Succ xy9000))",fontsize=16,color="black",shape="box"];574 -> 591[label="",style="solid", color="black", weight=3]; 575[label="primEqInt (Pos Zero) (Pos Zero)",fontsize=16,color="black",shape="box"];575 -> 592[label="",style="solid", color="black", weight=3]; 576[label="primEqInt (Pos Zero) (Neg (Succ xy9000))",fontsize=16,color="black",shape="box"];576 -> 593[label="",style="solid", color="black", weight=3]; 577[label="primEqInt (Pos Zero) (Neg Zero)",fontsize=16,color="black",shape="box"];577 -> 594[label="",style="solid", color="black", weight=3]; 578[label="False",fontsize=16,color="green",shape="box"];579[label="primEqInt (Neg (Succ xy1000)) (Neg (Succ xy9000))",fontsize=16,color="black",shape="box"];579 -> 595[label="",style="solid", color="black", weight=3]; 580[label="primEqInt (Neg (Succ xy1000)) (Neg Zero)",fontsize=16,color="black",shape="box"];580 -> 596[label="",style="solid", color="black", weight=3]; 581[label="primEqInt (Neg Zero) (Pos (Succ xy9000))",fontsize=16,color="black",shape="box"];581 -> 597[label="",style="solid", color="black", weight=3]; 582[label="primEqInt (Neg Zero) (Pos Zero)",fontsize=16,color="black",shape="box"];582 -> 598[label="",style="solid", color="black", weight=3]; 583[label="primEqInt (Neg Zero) (Neg (Succ xy9000))",fontsize=16,color="black",shape="box"];583 -> 599[label="",style="solid", color="black", weight=3]; 584[label="primEqInt (Neg Zero) (Neg Zero)",fontsize=16,color="black",shape="box"];584 -> 600[label="",style="solid", color="black", weight=3]; 6199[label="xy410",fontsize=16,color="green",shape="box"];6200[label="xy40",fontsize=16,color="green",shape="box"];6201[label="List.nubByNubBy'1 primEqInt xy381 xy382 (xy383 : xy384) (False || List.elem_by primEqInt xy381 xy386)",fontsize=16,color="black",shape="box"];6201 -> 6203[label="",style="solid", color="black", weight=3]; 6202[label="List.nubByNubBy'1 primEqInt xy381 xy382 (xy383 : xy384) (True || List.elem_by primEqInt xy381 xy386)",fontsize=16,color="black",shape="box"];6202 -> 6204[label="",style="solid", color="black", weight=3]; 589[label="primEqNat xy1000 xy9000",fontsize=16,color="burlywood",shape="triangle"];6285[label="xy1000/Succ xy10000",fontsize=10,color="white",style="solid",shape="box"];589 -> 6285[label="",style="solid", color="burlywood", weight=9]; 6285 -> 637[label="",style="solid", color="burlywood", weight=3]; 6286[label="xy1000/Zero",fontsize=10,color="white",style="solid",shape="box"];589 -> 6286[label="",style="solid", color="burlywood", weight=9]; 6286 -> 638[label="",style="solid", color="burlywood", weight=3]; 590[label="False",fontsize=16,color="green",shape="box"];591[label="False",fontsize=16,color="green",shape="box"];592[label="True",fontsize=16,color="green",shape="box"];593[label="False",fontsize=16,color="green",shape="box"];594[label="True",fontsize=16,color="green",shape="box"];595 -> 589[label="",style="dashed", color="red", weight=0]; 595[label="primEqNat xy1000 xy9000",fontsize=16,color="magenta"];595 -> 639[label="",style="dashed", color="magenta", weight=3]; 595 -> 640[label="",style="dashed", color="magenta", weight=3]; 596[label="False",fontsize=16,color="green",shape="box"];597[label="False",fontsize=16,color="green",shape="box"];598[label="True",fontsize=16,color="green",shape="box"];599[label="False",fontsize=16,color="green",shape="box"];600[label="True",fontsize=16,color="green",shape="box"];6203[label="List.nubByNubBy'1 primEqInt xy381 xy382 (xy383 : xy384) (List.elem_by primEqInt xy381 xy386)",fontsize=16,color="burlywood",shape="triangle"];6287[label="xy386/xy3860 : xy3861",fontsize=10,color="white",style="solid",shape="box"];6203 -> 6287[label="",style="solid", color="burlywood", weight=9]; 6287 -> 6205[label="",style="solid", color="burlywood", weight=3]; 6288[label="xy386/[]",fontsize=10,color="white",style="solid",shape="box"];6203 -> 6288[label="",style="solid", color="burlywood", weight=9]; 6288 -> 6206[label="",style="solid", color="burlywood", weight=3]; 6204[label="List.nubByNubBy'1 primEqInt xy381 xy382 (xy383 : xy384) True",fontsize=16,color="black",shape="box"];6204 -> 6207[label="",style="solid", color="black", weight=3]; 637[label="primEqNat (Succ xy10000) xy9000",fontsize=16,color="burlywood",shape="box"];6289[label="xy9000/Succ xy90000",fontsize=10,color="white",style="solid",shape="box"];637 -> 6289[label="",style="solid", color="burlywood", weight=9]; 6289 -> 647[label="",style="solid", color="burlywood", weight=3]; 6290[label="xy9000/Zero",fontsize=10,color="white",style="solid",shape="box"];637 -> 6290[label="",style="solid", color="burlywood", weight=9]; 6290 -> 648[label="",style="solid", color="burlywood", weight=3]; 638[label="primEqNat Zero xy9000",fontsize=16,color="burlywood",shape="box"];6291[label="xy9000/Succ xy90000",fontsize=10,color="white",style="solid",shape="box"];638 -> 6291[label="",style="solid", color="burlywood", weight=9]; 6291 -> 649[label="",style="solid", color="burlywood", weight=3]; 6292[label="xy9000/Zero",fontsize=10,color="white",style="solid",shape="box"];638 -> 6292[label="",style="solid", color="burlywood", weight=9]; 6292 -> 650[label="",style="solid", color="burlywood", weight=3]; 639[label="xy1000",fontsize=16,color="green",shape="box"];640[label="xy9000",fontsize=16,color="green",shape="box"];6205[label="List.nubByNubBy'1 primEqInt xy381 xy382 (xy383 : xy384) (List.elem_by primEqInt xy381 (xy3860 : xy3861))",fontsize=16,color="black",shape="box"];6205 -> 6208[label="",style="solid", color="black", weight=3]; 6206[label="List.nubByNubBy'1 primEqInt xy381 xy382 (xy383 : xy384) (List.elem_by primEqInt xy381 [])",fontsize=16,color="black",shape="box"];6206 -> 6209[label="",style="solid", color="black", weight=3]; 6207[label="List.nubByNubBy' primEqInt xy382 (xy383 : xy384)",fontsize=16,color="burlywood",shape="triangle"];6293[label="xy382/xy3820 : xy3821",fontsize=10,color="white",style="solid",shape="box"];6207 -> 6293[label="",style="solid", color="burlywood", weight=9]; 6293 -> 6210[label="",style="solid", color="burlywood", weight=3]; 6294[label="xy382/[]",fontsize=10,color="white",style="solid",shape="box"];6207 -> 6294[label="",style="solid", color="burlywood", weight=9]; 6294 -> 6211[label="",style="solid", color="burlywood", weight=3]; 647[label="primEqNat (Succ xy10000) (Succ xy90000)",fontsize=16,color="black",shape="box"];647 -> 653[label="",style="solid", color="black", weight=3]; 648[label="primEqNat (Succ xy10000) Zero",fontsize=16,color="black",shape="box"];648 -> 654[label="",style="solid", color="black", weight=3]; 649[label="primEqNat Zero (Succ xy90000)",fontsize=16,color="black",shape="box"];649 -> 655[label="",style="solid", color="black", weight=3]; 650[label="primEqNat Zero Zero",fontsize=16,color="black",shape="box"];650 -> 656[label="",style="solid", color="black", weight=3]; 6208 -> 6191[label="",style="dashed", color="red", weight=0]; 6208[label="List.nubByNubBy'1 primEqInt xy381 xy382 (xy383 : xy384) (primEqInt xy3860 xy381 || List.elem_by primEqInt xy381 xy3861)",fontsize=16,color="magenta"];6208 -> 6212[label="",style="dashed", color="magenta", weight=3]; 6208 -> 6213[label="",style="dashed", color="magenta", weight=3]; 6209[label="List.nubByNubBy'1 primEqInt xy381 xy382 (xy383 : xy384) False",fontsize=16,color="black",shape="box"];6209 -> 6214[label="",style="solid", color="black", weight=3]; 6210[label="List.nubByNubBy' primEqInt (xy3820 : xy3821) (xy383 : xy384)",fontsize=16,color="black",shape="box"];6210 -> 6215[label="",style="solid", color="black", weight=3]; 6211[label="List.nubByNubBy' primEqInt [] (xy383 : xy384)",fontsize=16,color="black",shape="box"];6211 -> 6216[label="",style="solid", color="black", weight=3]; 653 -> 589[label="",style="dashed", color="red", weight=0]; 653[label="primEqNat xy10000 xy90000",fontsize=16,color="magenta"];653 -> 678[label="",style="dashed", color="magenta", weight=3]; 653 -> 679[label="",style="dashed", color="magenta", weight=3]; 654[label="False",fontsize=16,color="green",shape="box"];655[label="False",fontsize=16,color="green",shape="box"];656[label="True",fontsize=16,color="green",shape="box"];6212[label="xy3861",fontsize=16,color="green",shape="box"];6213 -> 407[label="",style="dashed", color="red", weight=0]; 6213[label="primEqInt xy3860 xy381",fontsize=16,color="magenta"];6213 -> 6217[label="",style="dashed", color="magenta", weight=3]; 6213 -> 6218[label="",style="dashed", color="magenta", weight=3]; 6214[label="List.nubByNubBy'0 primEqInt xy381 xy382 (xy383 : xy384) otherwise",fontsize=16,color="black",shape="box"];6214 -> 6219[label="",style="solid", color="black", weight=3]; 6215[label="List.nubByNubBy'2 primEqInt (xy3820 : xy3821) (xy383 : xy384)",fontsize=16,color="black",shape="box"];6215 -> 6220[label="",style="solid", color="black", weight=3]; 6216[label="List.nubByNubBy'3 primEqInt [] (xy383 : xy384)",fontsize=16,color="black",shape="box"];6216 -> 6221[label="",style="solid", color="black", weight=3]; 678[label="xy10000",fontsize=16,color="green",shape="box"];679[label="xy90000",fontsize=16,color="green",shape="box"];6217[label="xy381",fontsize=16,color="green",shape="box"];6218[label="xy3860",fontsize=16,color="green",shape="box"];6219[label="List.nubByNubBy'0 primEqInt xy381 xy382 (xy383 : xy384) True",fontsize=16,color="black",shape="box"];6219 -> 6222[label="",style="solid", color="black", weight=3]; 6220 -> 6203[label="",style="dashed", color="red", weight=0]; 6220[label="List.nubByNubBy'1 primEqInt xy3820 xy3821 (xy383 : xy384) (List.elem_by primEqInt xy3820 (xy383 : xy384))",fontsize=16,color="magenta"];6220 -> 6223[label="",style="dashed", color="magenta", weight=3]; 6220 -> 6224[label="",style="dashed", color="magenta", weight=3]; 6220 -> 6225[label="",style="dashed", color="magenta", weight=3]; 6221[label="[]",fontsize=16,color="green",shape="box"];6222[label="xy381 : List.nubByNubBy' primEqInt xy382 (xy381 : xy383 : xy384)",fontsize=16,color="green",shape="box"];6222 -> 6226[label="",style="dashed", color="green", weight=3]; 6223[label="xy3820",fontsize=16,color="green",shape="box"];6224[label="xy383 : xy384",fontsize=16,color="green",shape="box"];6225[label="xy3821",fontsize=16,color="green",shape="box"];6226 -> 6207[label="",style="dashed", color="red", weight=0]; 6226[label="List.nubByNubBy' primEqInt xy382 (xy381 : xy383 : xy384)",fontsize=16,color="magenta"];6226 -> 6227[label="",style="dashed", color="magenta", weight=3]; 6226 -> 6228[label="",style="dashed", color="magenta", weight=3]; 6227[label="xy383 : xy384",fontsize=16,color="green",shape="box"];6228[label="xy381",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(:(xy80, xy81), xy9, xy10, xy11, ba) -> new_psPs(xy81, xy9, xy10, xy11, 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(:(xy80, xy81), xy9, xy10, xy11, ba) -> new_psPs(xy81, xy9, xy10, xy11, 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(xy17, xy18, xy19, False, ba) -> new_deleteBy(xy19, xy17, ba) new_deleteBy(xy10, :(xy90, xy91), bb) -> new_deleteBy0(xy91, xy90, xy10, new_esEs(xy10, xy90, bb), bb) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_esEs(xy10, xy90, app(ty_Ratio, bg)) -> error([]) new_primEqInt(Pos(Zero), Pos(Zero)) -> True new_esEs(xy10, xy90, ty_Integer) -> error([]) new_primEqInt(Neg(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Succ(xy1000)), Neg(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_esEs(xy10, xy90, app(app(ty_@2, bc), bd)) -> error([]) new_primEqInt(Neg(Succ(xy1000)), Neg(Zero)) -> False new_primEqInt(Neg(Zero), Neg(Succ(xy9000))) -> False new_esEs(xy10, xy90, ty_Int) -> new_primEqInt(xy10, xy90) new_esEs(xy10, xy90, ty_@0) -> error([]) new_primEqInt(Pos(Succ(xy1000)), Pos(Zero)) -> False new_primEqInt(Pos(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_esEs(xy10, xy90, ty_Double) -> error([]) new_primEqNat0(Succ(xy10000), Zero) -> False new_primEqNat0(Zero, Succ(xy90000)) -> False new_esEs(xy10, xy90, app(app(app(ty_@3, cb), cc), cd)) -> error([]) new_esEs(xy10, xy90, app(ty_[], bf)) -> error([]) new_primEqNat0(Succ(xy10000), Succ(xy90000)) -> new_primEqNat0(xy10000, xy90000) new_esEs(xy10, xy90, ty_Ordering) -> error([]) new_primEqInt(Pos(Succ(xy1000)), Neg(xy900)) -> False new_primEqInt(Neg(Succ(xy1000)), Pos(xy900)) -> False new_primEqInt(Pos(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Neg(Zero), Pos(Succ(xy9000))) -> False new_esEs(xy10, xy90, ty_Float) -> error([]) new_esEs(xy10, xy90, ty_Bool) -> error([]) new_esEs(xy10, xy90, app(app(ty_Either, bh), ca)) -> error([]) new_esEs(xy10, xy90, ty_Char) -> error([]) new_primEqInt(Pos(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Zero), Pos(Zero)) -> True new_esEs(xy10, xy90, app(ty_Maybe, be)) -> error([]) The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqInt(Neg(Zero), Neg(Succ(x0))) new_primEqInt(Pos(Zero), Neg(Zero)) new_primEqInt(Neg(Zero), Pos(Zero)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) new_primEqInt(Pos(Succ(x0)), Neg(x1)) new_primEqInt(Neg(Succ(x0)), Pos(x1)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Double) new_primEqInt(Pos(Zero), Pos(Zero)) new_primEqNat0(Succ(x0), Zero) new_esEs(x0, x1, ty_@0) new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1))) new_primEqInt(Pos(Zero), Neg(Succ(x0))) new_primEqInt(Neg(Zero), Pos(Succ(x0))) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_esEs(x0, x1, ty_Float) new_esEs(x0, x1, ty_Int) new_esEs(x0, x1, app(ty_Ratio, x2)) new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1))) new_esEs(x0, x1, app(ty_Maybe, x2)) new_primEqInt(Pos(Succ(x0)), Pos(Zero)) new_esEs(x0, x1, ty_Integer) new_primEqInt(Neg(Succ(x0)), Neg(Zero)) new_esEs(x0, x1, app(ty_[], x2)) new_primEqNat0(Succ(x0), Succ(x1)) new_primEqNat0(Zero, Succ(x0)) new_primEqInt(Pos(Zero), Pos(Succ(x0))) new_esEs(x0, x1, ty_Ordering) new_primEqInt(Neg(Zero), Neg(Zero)) new_esEs(x0, x1, ty_Bool) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 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(xy10, :(xy90, xy91), bb) -> new_deleteBy0(xy91, xy90, xy10, new_esEs(xy10, xy90, bb), bb) The graph contains the following edges 2 > 1, 2 > 2, 1 >= 3, 3 >= 5 *new_deleteBy0(xy17, xy18, xy19, False, ba) -> new_deleteBy(xy19, xy17, 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(xy381, xy382, xy383, xy384, False, []) -> new_nubByNubBy'(xy382, xy381, :(xy383, xy384)) new_nubByNubBy'1(xy381, xy382, xy383, xy384, False, :(xy3860, xy3861)) -> new_nubByNubBy'1(xy381, xy382, xy383, xy384, new_primEqInt(xy3860, xy381), xy3861) new_nubByNubBy'(:(xy3820, xy3821), xy383, xy384) -> new_nubByNubBy'10(xy3820, xy3821, xy383, xy384, :(xy383, xy384)) new_nubByNubBy'10(xy381, xy382, xy383, xy384, []) -> new_nubByNubBy'(xy382, xy381, :(xy383, xy384)) new_nubByNubBy'1(xy381, :(xy3820, xy3821), xy383, xy384, True, xy386) -> new_nubByNubBy'10(xy3820, xy3821, xy383, xy384, :(xy383, xy384)) new_nubByNubBy'10(xy381, xy382, xy383, xy384, :(xy3860, xy3861)) -> new_nubByNubBy'1(xy381, xy382, xy383, xy384, new_primEqInt(xy3860, xy381), xy3861) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_primEqInt(Pos(Zero), Pos(Zero)) -> True new_primEqNat0(Succ(xy10000), Zero) -> False new_primEqNat0(Zero, Succ(xy90000)) -> False new_primEqInt(Neg(Zero), Neg(Zero)) -> True new_primEqNat0(Succ(xy10000), Succ(xy90000)) -> new_primEqNat0(xy10000, xy90000) new_primEqInt(Neg(Succ(xy1000)), Neg(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Pos(Succ(xy1000)), Neg(xy900)) -> False new_primEqInt(Neg(Succ(xy1000)), Pos(xy900)) -> False new_primEqInt(Pos(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Neg(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Neg(Succ(xy1000)), Neg(Zero)) -> False new_primEqInt(Neg(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Zero)) -> False new_primEqInt(Pos(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Pos(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Zero), Pos(Zero)) -> True The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqInt(Neg(Succ(x0)), Neg(Zero)) new_primEqInt(Neg(Zero), Neg(Succ(x0))) new_primEqInt(Pos(Zero), Neg(Zero)) new_primEqInt(Neg(Zero), Pos(Zero)) new_primEqInt(Pos(Succ(x0)), Neg(x1)) new_primEqInt(Neg(Succ(x0)), Pos(x1)) new_primEqNat0(Succ(x0), Succ(x1)) new_primEqInt(Pos(Zero), Pos(Zero)) new_primEqNat0(Zero, Succ(x0)) new_primEqInt(Pos(Zero), Pos(Succ(x0))) new_primEqNat0(Succ(x0), Zero) new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1))) new_primEqInt(Neg(Zero), Neg(Zero)) new_primEqInt(Pos(Zero), Neg(Succ(x0))) new_primEqInt(Neg(Zero), Pos(Succ(x0))) new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1))) new_primEqInt(Pos(Succ(x0)), Pos(Zero)) 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'(:(xy3820, xy3821), xy383, xy384) -> new_nubByNubBy'10(xy3820, xy3821, xy383, xy384, :(xy383, xy384)) new_nubByNubBy'10(xy381, xy382, xy383, xy384, :(xy3860, xy3861)) -> new_nubByNubBy'1(xy381, xy382, xy383, xy384, new_primEqInt(xy3860, xy381), xy3861) new_nubByNubBy'1(xy381, xy382, xy383, xy384, False, []) -> new_nubByNubBy'(xy382, xy381, :(xy383, xy384)) new_nubByNubBy'1(xy381, xy382, xy383, xy384, False, :(xy3860, xy3861)) -> new_nubByNubBy'1(xy381, xy382, xy383, xy384, new_primEqInt(xy3860, xy381), xy3861) new_nubByNubBy'1(xy381, :(xy3820, xy3821), xy383, xy384, True, xy386) -> new_nubByNubBy'10(xy3820, xy3821, xy383, xy384, :(xy383, xy384)) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_primEqInt(Pos(Zero), Pos(Zero)) -> True new_primEqNat0(Succ(xy10000), Zero) -> False new_primEqNat0(Zero, Succ(xy90000)) -> False new_primEqInt(Neg(Zero), Neg(Zero)) -> True new_primEqNat0(Succ(xy10000), Succ(xy90000)) -> new_primEqNat0(xy10000, xy90000) new_primEqInt(Neg(Succ(xy1000)), Neg(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Pos(Succ(xy1000)), Neg(xy900)) -> False new_primEqInt(Neg(Succ(xy1000)), Pos(xy900)) -> False new_primEqInt(Pos(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Neg(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Neg(Succ(xy1000)), Neg(Zero)) -> False new_primEqInt(Neg(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Zero)) -> False new_primEqInt(Pos(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Pos(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Zero), Pos(Zero)) -> True The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqInt(Neg(Succ(x0)), Neg(Zero)) new_primEqInt(Neg(Zero), Neg(Succ(x0))) new_primEqInt(Pos(Zero), Neg(Zero)) new_primEqInt(Neg(Zero), Pos(Zero)) new_primEqInt(Pos(Succ(x0)), Neg(x1)) new_primEqInt(Neg(Succ(x0)), Pos(x1)) new_primEqNat0(Succ(x0), Succ(x1)) new_primEqInt(Pos(Zero), Pos(Zero)) new_primEqNat0(Zero, Succ(x0)) new_primEqInt(Pos(Zero), Pos(Succ(x0))) new_primEqNat0(Succ(x0), Zero) new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1))) new_primEqInt(Neg(Zero), Neg(Zero)) new_primEqInt(Pos(Zero), Neg(Succ(x0))) new_primEqInt(Neg(Zero), Pos(Succ(x0))) new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1))) new_primEqInt(Pos(Succ(x0)), Pos(Zero)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (20) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule new_nubByNubBy'10(xy381, xy382, xy383, xy384, :(xy3860, xy3861)) -> new_nubByNubBy'1(xy381, xy382, xy383, xy384, new_primEqInt(xy3860, xy381), xy3861) we obtained the following new rules [LPAR04]: (new_nubByNubBy'10(z0, z1, z2, z3, :(z2, z3)) -> new_nubByNubBy'1(z0, z1, z2, z3, new_primEqInt(z2, z0), z3),new_nubByNubBy'10(z0, z1, z2, z3, :(z2, z3)) -> new_nubByNubBy'1(z0, z1, z2, z3, new_primEqInt(z2, z0), z3)) ---------------------------------------- (21) Obligation: Q DP problem: The TRS P consists of the following rules: new_nubByNubBy'(:(xy3820, xy3821), xy383, xy384) -> new_nubByNubBy'10(xy3820, xy3821, xy383, xy384, :(xy383, xy384)) new_nubByNubBy'1(xy381, xy382, xy383, xy384, False, []) -> new_nubByNubBy'(xy382, xy381, :(xy383, xy384)) new_nubByNubBy'1(xy381, xy382, xy383, xy384, False, :(xy3860, xy3861)) -> new_nubByNubBy'1(xy381, xy382, xy383, xy384, new_primEqInt(xy3860, xy381), xy3861) new_nubByNubBy'1(xy381, :(xy3820, xy3821), xy383, xy384, True, xy386) -> new_nubByNubBy'10(xy3820, xy3821, xy383, xy384, :(xy383, xy384)) new_nubByNubBy'10(z0, z1, z2, z3, :(z2, z3)) -> new_nubByNubBy'1(z0, z1, z2, z3, new_primEqInt(z2, z0), z3) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_primEqInt(Pos(Zero), Pos(Zero)) -> True new_primEqNat0(Succ(xy10000), Zero) -> False new_primEqNat0(Zero, Succ(xy90000)) -> False new_primEqInt(Neg(Zero), Neg(Zero)) -> True new_primEqNat0(Succ(xy10000), Succ(xy90000)) -> new_primEqNat0(xy10000, xy90000) new_primEqInt(Neg(Succ(xy1000)), Neg(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Pos(Succ(xy1000)), Neg(xy900)) -> False new_primEqInt(Neg(Succ(xy1000)), Pos(xy900)) -> False new_primEqInt(Pos(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Neg(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Neg(Succ(xy1000)), Neg(Zero)) -> False new_primEqInt(Neg(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Zero)) -> False new_primEqInt(Pos(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Pos(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Zero), Pos(Zero)) -> True The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqInt(Neg(Succ(x0)), Neg(Zero)) new_primEqInt(Neg(Zero), Neg(Succ(x0))) new_primEqInt(Pos(Zero), Neg(Zero)) new_primEqInt(Neg(Zero), Pos(Zero)) new_primEqInt(Pos(Succ(x0)), Neg(x1)) new_primEqInt(Neg(Succ(x0)), Pos(x1)) new_primEqNat0(Succ(x0), Succ(x1)) new_primEqInt(Pos(Zero), Pos(Zero)) new_primEqNat0(Zero, Succ(x0)) new_primEqInt(Pos(Zero), Pos(Succ(x0))) new_primEqNat0(Succ(x0), Zero) new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1))) new_primEqInt(Neg(Zero), Neg(Zero)) new_primEqInt(Pos(Zero), Neg(Succ(x0))) new_primEqInt(Neg(Zero), Pos(Succ(x0))) new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1))) new_primEqInt(Pos(Succ(x0)), Pos(Zero)) 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'10(z0, z1, z2, z3, :(z2, z3)) -> new_nubByNubBy'1(z0, z1, z2, z3, new_primEqInt(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(xy381, xy382, xy383, xy384, False, []) -> new_nubByNubBy'(xy382, xy381, :(xy383, xy384)) The graph contains the following edges 2 >= 1, 1 >= 2 *new_nubByNubBy'(:(xy3820, xy3821), xy383, xy384) -> new_nubByNubBy'10(xy3820, xy3821, xy383, xy384, :(xy383, xy384)) The graph contains the following edges 1 > 1, 1 > 2, 2 >= 3, 3 >= 4 *new_nubByNubBy'1(xy381, xy382, xy383, xy384, False, :(xy3860, xy3861)) -> new_nubByNubBy'1(xy381, xy382, xy383, xy384, new_primEqInt(xy3860, xy381), xy3861) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 6 > 6 *new_nubByNubBy'1(xy381, :(xy3820, xy3821), xy383, xy384, True, xy386) -> new_nubByNubBy'10(xy3820, xy3821, xy383, xy384, :(xy383, xy384)) 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(xy9, xy10, :(xy110, xy111), ba) -> new_foldl(new_flip(xy9, xy10, ba), xy110, xy111, ba) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_primEqInt(Pos(Zero), Pos(Zero)) -> True new_esEs(xy10, xy90, app(ty_Ratio, bg)) -> error([]) new_primEqInt(Neg(Zero), Neg(Zero)) -> True new_esEs(xy10, xy90, ty_Integer) -> error([]) new_primEqInt(Neg(Succ(xy1000)), Neg(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_esEs(xy10, xy90, app(app(ty_@2, bc), bd)) -> error([]) new_primEqInt(Neg(Succ(xy1000)), Neg(Zero)) -> False new_primEqInt(Neg(Zero), Neg(Succ(xy9000))) -> False new_esEs(xy10, xy90, ty_Int) -> new_primEqInt(xy10, xy90) new_esEs(xy10, xy90, ty_@0) -> error([]) new_primEqInt(Pos(Succ(xy1000)), Pos(Zero)) -> False new_primEqInt(Pos(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_esEs(xy10, xy90, ty_Double) -> error([]) new_deleteBy1(xy10, :(xy90, xy91), ba) -> new_deleteBy00(xy91, xy90, xy10, new_esEs(xy10, xy90, ba), ba) new_deleteBy00(xy17, xy18, xy19, True, bb) -> xy17 new_primEqNat0(Succ(xy10000), Zero) -> False new_primEqNat0(Zero, Succ(xy90000)) -> False new_esEs(xy10, xy90, app(app(app(ty_@3, cb), cc), cd)) -> error([]) new_flip(xy9, xy10, ba) -> new_deleteBy1(xy10, xy9, ba) new_esEs(xy10, xy90, app(ty_[], bf)) -> error([]) new_primEqNat0(Succ(xy10000), Succ(xy90000)) -> new_primEqNat0(xy10000, xy90000) new_esEs(xy10, xy90, ty_Ordering) -> error([]) new_primEqInt(Pos(Succ(xy1000)), Neg(xy900)) -> False new_primEqInt(Neg(Succ(xy1000)), Pos(xy900)) -> False new_primEqInt(Pos(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Neg(Zero), Pos(Succ(xy9000))) -> False new_esEs(xy10, xy90, ty_Float) -> error([]) new_esEs(xy10, xy90, ty_Bool) -> error([]) new_esEs(xy10, xy90, app(app(ty_Either, bh), ca)) -> error([]) new_primEqInt(Pos(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Zero), Pos(Zero)) -> True new_esEs(xy10, xy90, ty_Char) -> error([]) new_deleteBy1(xy10, [], ba) -> [] new_esEs(xy10, xy90, app(ty_Maybe, be)) -> error([]) new_deleteBy00(xy17, xy18, xy19, False, bb) -> :(xy18, new_deleteBy1(xy19, xy17, bb)) The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqInt(Neg(Zero), Neg(Succ(x0))) new_primEqInt(Pos(Zero), Neg(Zero)) new_primEqInt(Neg(Zero), Pos(Zero)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) new_primEqInt(Pos(Succ(x0)), Neg(x1)) new_primEqInt(Neg(Succ(x0)), Pos(x1)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Double) new_primEqInt(Pos(Zero), Pos(Zero)) new_primEqNat0(Succ(x0), Zero) new_esEs(x0, x1, ty_@0) new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1))) new_primEqInt(Pos(Zero), Neg(Succ(x0))) new_primEqInt(Neg(Zero), Pos(Succ(x0))) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_esEs(x0, x1, ty_Float) new_esEs(x0, x1, ty_Int) new_flip(x0, x1, x2) new_deleteBy00(x0, x1, x2, True, x3) new_esEs(x0, x1, app(ty_Ratio, x2)) new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1))) new_esEs(x0, x1, app(ty_Maybe, x2)) new_primEqInt(Pos(Succ(x0)), Pos(Zero)) new_deleteBy1(x0, [], x1) new_esEs(x0, x1, ty_Integer) new_primEqInt(Neg(Succ(x0)), Neg(Zero)) new_esEs(x0, x1, app(ty_[], x2)) new_primEqNat0(Succ(x0), Succ(x1)) new_deleteBy00(x0, x1, x2, False, x3) new_primEqNat0(Zero, Succ(x0)) new_primEqInt(Pos(Zero), Pos(Succ(x0))) new_esEs(x0, x1, ty_Ordering) new_primEqInt(Neg(Zero), Neg(Zero)) new_esEs(x0, x1, ty_Bool) new_deleteBy1(x0, :(x1, x2), x3) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (25) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule new_foldl(xy9, xy10, :(xy110, xy111), ba) -> new_foldl(new_flip(xy9, xy10, ba), xy110, xy111, ba) at position [0] we obtained the following new rules [LPAR04]: (new_foldl(xy9, xy10, :(xy110, xy111), ba) -> new_foldl(new_deleteBy1(xy10, xy9, ba), xy110, xy111, ba),new_foldl(xy9, xy10, :(xy110, xy111), ba) -> new_foldl(new_deleteBy1(xy10, xy9, ba), xy110, xy111, ba)) ---------------------------------------- (26) Obligation: Q DP problem: The TRS P consists of the following rules: new_foldl(xy9, xy10, :(xy110, xy111), ba) -> new_foldl(new_deleteBy1(xy10, xy9, ba), xy110, xy111, ba) The TRS R consists of the following rules: new_primEqNat0(Zero, Zero) -> True new_primEqInt(Pos(Zero), Pos(Zero)) -> True new_esEs(xy10, xy90, app(ty_Ratio, bg)) -> error([]) new_primEqInt(Neg(Zero), Neg(Zero)) -> True new_esEs(xy10, xy90, ty_Integer) -> error([]) new_primEqInt(Neg(Succ(xy1000)), Neg(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_esEs(xy10, xy90, app(app(ty_@2, bc), bd)) -> error([]) new_primEqInt(Neg(Succ(xy1000)), Neg(Zero)) -> False new_primEqInt(Neg(Zero), Neg(Succ(xy9000))) -> False new_esEs(xy10, xy90, ty_Int) -> new_primEqInt(xy10, xy90) new_esEs(xy10, xy90, ty_@0) -> error([]) new_primEqInt(Pos(Succ(xy1000)), Pos(Zero)) -> False new_primEqInt(Pos(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_esEs(xy10, xy90, ty_Double) -> error([]) new_deleteBy1(xy10, :(xy90, xy91), ba) -> new_deleteBy00(xy91, xy90, xy10, new_esEs(xy10, xy90, ba), ba) new_deleteBy00(xy17, xy18, xy19, True, bb) -> xy17 new_primEqNat0(Succ(xy10000), Zero) -> False new_primEqNat0(Zero, Succ(xy90000)) -> False new_esEs(xy10, xy90, app(app(app(ty_@3, cb), cc), cd)) -> error([]) new_flip(xy9, xy10, ba) -> new_deleteBy1(xy10, xy9, ba) new_esEs(xy10, xy90, app(ty_[], bf)) -> error([]) new_primEqNat0(Succ(xy10000), Succ(xy90000)) -> new_primEqNat0(xy10000, xy90000) new_esEs(xy10, xy90, ty_Ordering) -> error([]) new_primEqInt(Pos(Succ(xy1000)), Neg(xy900)) -> False new_primEqInt(Neg(Succ(xy1000)), Pos(xy900)) -> False new_primEqInt(Pos(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Neg(Zero), Pos(Succ(xy9000))) -> False new_esEs(xy10, xy90, ty_Float) -> error([]) new_esEs(xy10, xy90, ty_Bool) -> error([]) new_esEs(xy10, xy90, app(app(ty_Either, bh), ca)) -> error([]) new_primEqInt(Pos(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Zero), Pos(Zero)) -> True new_esEs(xy10, xy90, ty_Char) -> error([]) new_deleteBy1(xy10, [], ba) -> [] new_esEs(xy10, xy90, app(ty_Maybe, be)) -> error([]) new_deleteBy00(xy17, xy18, xy19, False, bb) -> :(xy18, new_deleteBy1(xy19, xy17, bb)) The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqInt(Neg(Zero), Neg(Succ(x0))) new_primEqInt(Pos(Zero), Neg(Zero)) new_primEqInt(Neg(Zero), Pos(Zero)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) new_primEqInt(Pos(Succ(x0)), Neg(x1)) new_primEqInt(Neg(Succ(x0)), Pos(x1)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Double) new_primEqInt(Pos(Zero), Pos(Zero)) new_primEqNat0(Succ(x0), Zero) new_esEs(x0, x1, ty_@0) new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1))) new_primEqInt(Pos(Zero), Neg(Succ(x0))) new_primEqInt(Neg(Zero), Pos(Succ(x0))) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_esEs(x0, x1, ty_Float) new_esEs(x0, x1, ty_Int) new_flip(x0, x1, x2) new_deleteBy00(x0, x1, x2, True, x3) new_esEs(x0, x1, app(ty_Ratio, x2)) new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1))) new_esEs(x0, x1, app(ty_Maybe, x2)) new_primEqInt(Pos(Succ(x0)), Pos(Zero)) new_deleteBy1(x0, [], x1) new_esEs(x0, x1, ty_Integer) new_primEqInt(Neg(Succ(x0)), Neg(Zero)) new_esEs(x0, x1, app(ty_[], x2)) new_primEqNat0(Succ(x0), Succ(x1)) new_deleteBy00(x0, x1, x2, False, x3) new_primEqNat0(Zero, Succ(x0)) new_primEqInt(Pos(Zero), Pos(Succ(x0))) new_esEs(x0, x1, ty_Ordering) new_primEqInt(Neg(Zero), Neg(Zero)) new_esEs(x0, x1, ty_Bool) new_deleteBy1(x0, :(x1, x2), x3) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 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(xy9, xy10, :(xy110, xy111), ba) -> new_foldl(new_deleteBy1(xy10, xy9, ba), xy110, xy111, ba) The TRS R consists of the following rules: new_deleteBy1(xy10, :(xy90, xy91), ba) -> new_deleteBy00(xy91, xy90, xy10, new_esEs(xy10, xy90, ba), ba) new_deleteBy1(xy10, [], ba) -> [] new_esEs(xy10, xy90, app(ty_Ratio, bg)) -> error([]) new_esEs(xy10, xy90, ty_Integer) -> error([]) new_esEs(xy10, xy90, app(app(ty_@2, bc), bd)) -> error([]) new_esEs(xy10, xy90, ty_Int) -> new_primEqInt(xy10, xy90) new_esEs(xy10, xy90, ty_@0) -> error([]) new_esEs(xy10, xy90, ty_Double) -> error([]) new_esEs(xy10, xy90, app(app(app(ty_@3, cb), cc), cd)) -> error([]) new_esEs(xy10, xy90, app(ty_[], bf)) -> error([]) new_esEs(xy10, xy90, ty_Ordering) -> error([]) new_esEs(xy10, xy90, ty_Float) -> error([]) new_esEs(xy10, xy90, ty_Bool) -> error([]) new_esEs(xy10, xy90, app(app(ty_Either, bh), ca)) -> error([]) new_esEs(xy10, xy90, ty_Char) -> error([]) new_esEs(xy10, xy90, app(ty_Maybe, be)) -> error([]) new_deleteBy00(xy17, xy18, xy19, True, bb) -> xy17 new_deleteBy00(xy17, xy18, xy19, False, bb) -> :(xy18, new_deleteBy1(xy19, xy17, bb)) new_primEqInt(Pos(Zero), Pos(Zero)) -> True new_primEqInt(Neg(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Succ(xy1000)), Neg(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Neg(Succ(xy1000)), Neg(Zero)) -> False new_primEqInt(Neg(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Zero)) -> False new_primEqInt(Pos(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Pos(Succ(xy1000)), Neg(xy900)) -> False new_primEqInt(Neg(Succ(xy1000)), Pos(xy900)) -> False new_primEqInt(Pos(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Neg(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Zero), Pos(Zero)) -> True new_primEqNat0(Zero, Zero) -> True new_primEqNat0(Succ(xy10000), Zero) -> False new_primEqNat0(Zero, Succ(xy90000)) -> False new_primEqNat0(Succ(xy10000), Succ(xy90000)) -> new_primEqNat0(xy10000, xy90000) The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqInt(Neg(Zero), Neg(Succ(x0))) new_primEqInt(Pos(Zero), Neg(Zero)) new_primEqInt(Neg(Zero), Pos(Zero)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) new_primEqInt(Pos(Succ(x0)), Neg(x1)) new_primEqInt(Neg(Succ(x0)), Pos(x1)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Double) new_primEqInt(Pos(Zero), Pos(Zero)) new_primEqNat0(Succ(x0), Zero) new_esEs(x0, x1, ty_@0) new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1))) new_primEqInt(Pos(Zero), Neg(Succ(x0))) new_primEqInt(Neg(Zero), Pos(Succ(x0))) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_esEs(x0, x1, ty_Float) new_esEs(x0, x1, ty_Int) new_flip(x0, x1, x2) new_deleteBy00(x0, x1, x2, True, x3) new_esEs(x0, x1, app(ty_Ratio, x2)) new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1))) new_esEs(x0, x1, app(ty_Maybe, x2)) new_primEqInt(Pos(Succ(x0)), Pos(Zero)) new_deleteBy1(x0, [], x1) new_esEs(x0, x1, ty_Integer) new_primEqInt(Neg(Succ(x0)), Neg(Zero)) new_esEs(x0, x1, app(ty_[], x2)) new_primEqNat0(Succ(x0), Succ(x1)) new_deleteBy00(x0, x1, x2, False, x3) new_primEqNat0(Zero, Succ(x0)) new_primEqInt(Pos(Zero), Pos(Succ(x0))) new_esEs(x0, x1, ty_Ordering) new_primEqInt(Neg(Zero), Neg(Zero)) new_esEs(x0, x1, ty_Bool) new_deleteBy1(x0, :(x1, x2), x3) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 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(xy9, xy10, :(xy110, xy111), ba) -> new_foldl(new_deleteBy1(xy10, xy9, ba), xy110, xy111, ba) The TRS R consists of the following rules: new_deleteBy1(xy10, :(xy90, xy91), ba) -> new_deleteBy00(xy91, xy90, xy10, new_esEs(xy10, xy90, ba), ba) new_deleteBy1(xy10, [], ba) -> [] new_esEs(xy10, xy90, app(ty_Ratio, bg)) -> error([]) new_esEs(xy10, xy90, ty_Integer) -> error([]) new_esEs(xy10, xy90, app(app(ty_@2, bc), bd)) -> error([]) new_esEs(xy10, xy90, ty_Int) -> new_primEqInt(xy10, xy90) new_esEs(xy10, xy90, ty_@0) -> error([]) new_esEs(xy10, xy90, ty_Double) -> error([]) new_esEs(xy10, xy90, app(app(app(ty_@3, cb), cc), cd)) -> error([]) new_esEs(xy10, xy90, app(ty_[], bf)) -> error([]) new_esEs(xy10, xy90, ty_Ordering) -> error([]) new_esEs(xy10, xy90, ty_Float) -> error([]) new_esEs(xy10, xy90, ty_Bool) -> error([]) new_esEs(xy10, xy90, app(app(ty_Either, bh), ca)) -> error([]) new_esEs(xy10, xy90, ty_Char) -> error([]) new_esEs(xy10, xy90, app(ty_Maybe, be)) -> error([]) new_deleteBy00(xy17, xy18, xy19, True, bb) -> xy17 new_deleteBy00(xy17, xy18, xy19, False, bb) -> :(xy18, new_deleteBy1(xy19, xy17, bb)) new_primEqInt(Pos(Zero), Pos(Zero)) -> True new_primEqInt(Neg(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Succ(xy1000)), Neg(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Neg(Succ(xy1000)), Neg(Zero)) -> False new_primEqInt(Neg(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Zero)) -> False new_primEqInt(Pos(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Succ(xy1000)), Pos(Succ(xy9000))) -> new_primEqNat0(xy1000, xy9000) new_primEqInt(Pos(Succ(xy1000)), Neg(xy900)) -> False new_primEqInt(Neg(Succ(xy1000)), Pos(xy900)) -> False new_primEqInt(Pos(Zero), Neg(Succ(xy9000))) -> False new_primEqInt(Neg(Zero), Pos(Succ(xy9000))) -> False new_primEqInt(Pos(Zero), Neg(Zero)) -> True new_primEqInt(Neg(Zero), Pos(Zero)) -> True new_primEqNat0(Zero, Zero) -> True new_primEqNat0(Succ(xy10000), Zero) -> False new_primEqNat0(Zero, Succ(xy90000)) -> False new_primEqNat0(Succ(xy10000), Succ(xy90000)) -> new_primEqNat0(xy10000, xy90000) The set Q consists of the following terms: new_primEqNat0(Zero, Zero) new_primEqInt(Neg(Zero), Neg(Succ(x0))) new_primEqInt(Pos(Zero), Neg(Zero)) new_primEqInt(Neg(Zero), Pos(Zero)) new_esEs(x0, x1, app(app(ty_@2, x2), x3)) new_primEqInt(Pos(Succ(x0)), Neg(x1)) new_primEqInt(Neg(Succ(x0)), Pos(x1)) new_esEs(x0, x1, ty_Char) new_esEs(x0, x1, ty_Double) new_primEqInt(Pos(Zero), Pos(Zero)) new_primEqNat0(Succ(x0), Zero) new_esEs(x0, x1, ty_@0) new_primEqInt(Pos(Succ(x0)), Pos(Succ(x1))) new_primEqInt(Pos(Zero), Neg(Succ(x0))) new_primEqInt(Neg(Zero), Pos(Succ(x0))) new_esEs(x0, x1, app(app(ty_Either, x2), x3)) new_esEs(x0, x1, ty_Float) new_esEs(x0, x1, ty_Int) new_deleteBy00(x0, x1, x2, True, x3) new_esEs(x0, x1, app(ty_Ratio, x2)) new_primEqInt(Neg(Succ(x0)), Neg(Succ(x1))) new_esEs(x0, x1, app(ty_Maybe, x2)) new_primEqInt(Pos(Succ(x0)), Pos(Zero)) new_deleteBy1(x0, [], x1) new_esEs(x0, x1, ty_Integer) new_primEqInt(Neg(Succ(x0)), Neg(Zero)) new_esEs(x0, x1, app(ty_[], x2)) new_primEqNat0(Succ(x0), Succ(x1)) new_deleteBy00(x0, x1, x2, False, x3) new_primEqNat0(Zero, Succ(x0)) new_primEqInt(Pos(Zero), Pos(Succ(x0))) new_esEs(x0, x1, ty_Ordering) new_primEqInt(Neg(Zero), Neg(Zero)) new_esEs(x0, x1, ty_Bool) new_deleteBy1(x0, :(x1, x2), x3) new_esEs(x0, x1, app(app(app(ty_@3, x2), x3), x4)) 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(xy9, xy10, :(xy110, xy111), ba) -> new_foldl(new_deleteBy1(xy10, xy9, ba), xy110, xy111, 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(xy10000), Succ(xy90000)) -> new_primEqNat(xy10000, xy90000) 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(xy10000), Succ(xy90000)) -> new_primEqNat(xy10000, xy90000) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (35) YES