/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, 19 ms] (6) HASKELL (7) Narrow [SOUND, 0 ms] (8) AND (9) QDP (10) DependencyGraphProof [EQUIVALENT, 0 ms] (11) AND (12) QDP (13) QDPSizeChangeProof [EQUIVALENT, 0 ms] (14) YES (15) QDP (16) QDPSizeChangeProof [EQUIVALENT, 0 ms] (17) YES (18) QDP (19) QDPSizeChangeProof [EQUIVALENT, 0 ms] (20) 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; infix 5 \\; (\\) :: Eq a => [a] -> [a] -> [a]; (\\) = foldl (flip delete); delete :: Eq a => a -> [a] -> [a]; delete = deleteBy (==); 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; } 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; infix 5 \\; (\\) :: Eq a => [a] -> [a] -> [a]; (\\) = foldl (flip delete); delete :: Eq a => a -> [a] -> [a]; delete = deleteBy (==); 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; } 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; infix 5 \\; (\\) :: Eq a => [a] -> [a] -> [a]; (\\) = foldl (flip delete); delete :: Eq a => a -> [a] -> [a]; delete = deleteBy (==); deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; deleteBy vy vz [] = []; 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; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (5) COR (EQUIVALENT) Cond Reductions: The following Function with conditions "undefined |Falseundefined; " is transformed to "undefined = undefined1; " "undefined0 True = undefined; " "undefined1 = undefined0 False; " ---------------------------------------- (6) Obligation: mainModule Main module Maybe where { import qualified List; import qualified Main; import qualified Prelude; } module List where { import qualified Main; import qualified Maybe; import qualified Prelude; infix 5 \\; (\\) :: Eq a => [a] -> [a] -> [a]; (\\) = foldl (flip delete); delete :: Eq a => a -> [a] -> [a]; delete = deleteBy (==); deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; deleteBy vy vz [] = []; 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; } module Main where { import qualified List; import qualified Maybe; import qualified Prelude; } ---------------------------------------- (7) Narrow (SOUND) Haskell To QDPs digraph dp_graph { node [outthreshold=100, inthreshold=100];1[label="(List.\\)",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 3[label="wu3 (List.\\)",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 4[label="wu3 (List.\\) wu4",fontsize=16,color="black",shape="triangle"];4 -> 5[label="",style="solid", color="black", weight=3]; 5[label="foldl (flip List.delete) wu3 wu4",fontsize=16,color="burlywood",shape="triangle"];194[label="wu4/wu40 : wu41",fontsize=10,color="white",style="solid",shape="box"];5 -> 194[label="",style="solid", color="burlywood", weight=9]; 194 -> 6[label="",style="solid", color="burlywood", weight=3]; 195[label="wu4/[]",fontsize=10,color="white",style="solid",shape="box"];5 -> 195[label="",style="solid", color="burlywood", weight=9]; 195 -> 7[label="",style="solid", color="burlywood", weight=3]; 6[label="foldl (flip List.delete) wu3 (wu40 : wu41)",fontsize=16,color="black",shape="box"];6 -> 8[label="",style="solid", color="black", weight=3]; 7[label="foldl (flip List.delete) wu3 []",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 8 -> 5[label="",style="dashed", color="red", weight=0]; 8[label="foldl (flip List.delete) (flip List.delete wu3 wu40) wu41",fontsize=16,color="magenta"];8 -> 10[label="",style="dashed", color="magenta", weight=3]; 8 -> 11[label="",style="dashed", color="magenta", weight=3]; 9[label="wu3",fontsize=16,color="green",shape="box"];10[label="wu41",fontsize=16,color="green",shape="box"];11[label="flip List.delete wu3 wu40",fontsize=16,color="black",shape="box"];11 -> 12[label="",style="solid", color="black", weight=3]; 12[label="List.delete wu40 wu3",fontsize=16,color="black",shape="box"];12 -> 13[label="",style="solid", color="black", weight=3]; 13[label="List.deleteBy (==) wu40 wu3",fontsize=16,color="burlywood",shape="box"];196[label="wu3/wu30 : wu31",fontsize=10,color="white",style="solid",shape="box"];13 -> 196[label="",style="solid", color="burlywood", weight=9]; 196 -> 14[label="",style="solid", color="burlywood", weight=3]; 197[label="wu3/[]",fontsize=10,color="white",style="solid",shape="box"];13 -> 197[label="",style="solid", color="burlywood", weight=9]; 197 -> 15[label="",style="solid", color="burlywood", weight=3]; 14[label="List.deleteBy (==) wu40 (wu30 : wu31)",fontsize=16,color="black",shape="box"];14 -> 16[label="",style="solid", color="black", weight=3]; 15[label="List.deleteBy (==) wu40 []",fontsize=16,color="black",shape="box"];15 -> 17[label="",style="solid", color="black", weight=3]; 16[label="List.deleteBy0 wu31 wu30 (==) wu40 ((==) wu40 wu30)",fontsize=16,color="black",shape="box"];16 -> 18[label="",style="solid", color="black", weight=3]; 17[label="[]",fontsize=16,color="green",shape="box"];18[label="List.deleteBy0 wu31 wu30 primEqChar wu40 (primEqChar wu40 wu30)",fontsize=16,color="burlywood",shape="triangle"];198[label="wu40/Char wu400",fontsize=10,color="white",style="solid",shape="box"];18 -> 198[label="",style="solid", color="burlywood", weight=9]; 198 -> 19[label="",style="solid", color="burlywood", weight=3]; 19[label="List.deleteBy0 wu31 wu30 primEqChar (Char wu400) (primEqChar (Char wu400) wu30)",fontsize=16,color="burlywood",shape="box"];199[label="wu30/Char wu300",fontsize=10,color="white",style="solid",shape="box"];19 -> 199[label="",style="solid", color="burlywood", weight=9]; 199 -> 20[label="",style="solid", color="burlywood", weight=3]; 20[label="List.deleteBy0 wu31 (Char wu300) primEqChar (Char wu400) (primEqChar (Char wu400) (Char wu300))",fontsize=16,color="black",shape="box"];20 -> 21[label="",style="solid", color="black", weight=3]; 21[label="List.deleteBy0 wu31 (Char wu300) primEqChar (Char wu400) (primEqNat wu400 wu300)",fontsize=16,color="burlywood",shape="box"];200[label="wu400/Succ wu4000",fontsize=10,color="white",style="solid",shape="box"];21 -> 200[label="",style="solid", color="burlywood", weight=9]; 200 -> 22[label="",style="solid", color="burlywood", weight=3]; 201[label="wu400/Zero",fontsize=10,color="white",style="solid",shape="box"];21 -> 201[label="",style="solid", color="burlywood", weight=9]; 201 -> 23[label="",style="solid", color="burlywood", weight=3]; 22[label="List.deleteBy0 wu31 (Char wu300) primEqChar (Char (Succ wu4000)) (primEqNat (Succ wu4000) wu300)",fontsize=16,color="burlywood",shape="box"];202[label="wu300/Succ wu3000",fontsize=10,color="white",style="solid",shape="box"];22 -> 202[label="",style="solid", color="burlywood", weight=9]; 202 -> 24[label="",style="solid", color="burlywood", weight=3]; 203[label="wu300/Zero",fontsize=10,color="white",style="solid",shape="box"];22 -> 203[label="",style="solid", color="burlywood", weight=9]; 203 -> 25[label="",style="solid", color="burlywood", weight=3]; 23[label="List.deleteBy0 wu31 (Char wu300) primEqChar (Char Zero) (primEqNat Zero wu300)",fontsize=16,color="burlywood",shape="box"];204[label="wu300/Succ wu3000",fontsize=10,color="white",style="solid",shape="box"];23 -> 204[label="",style="solid", color="burlywood", weight=9]; 204 -> 26[label="",style="solid", color="burlywood", weight=3]; 205[label="wu300/Zero",fontsize=10,color="white",style="solid",shape="box"];23 -> 205[label="",style="solid", color="burlywood", weight=9]; 205 -> 27[label="",style="solid", color="burlywood", weight=3]; 24[label="List.deleteBy0 wu31 (Char (Succ wu3000)) primEqChar (Char (Succ wu4000)) (primEqNat (Succ wu4000) (Succ wu3000))",fontsize=16,color="black",shape="box"];24 -> 28[label="",style="solid", color="black", weight=3]; 25[label="List.deleteBy0 wu31 (Char Zero) primEqChar (Char (Succ wu4000)) (primEqNat (Succ wu4000) Zero)",fontsize=16,color="black",shape="box"];25 -> 29[label="",style="solid", color="black", weight=3]; 26[label="List.deleteBy0 wu31 (Char (Succ wu3000)) primEqChar (Char Zero) (primEqNat Zero (Succ wu3000))",fontsize=16,color="black",shape="box"];26 -> 30[label="",style="solid", color="black", weight=3]; 27[label="List.deleteBy0 wu31 (Char Zero) primEqChar (Char Zero) (primEqNat Zero Zero)",fontsize=16,color="black",shape="box"];27 -> 31[label="",style="solid", color="black", weight=3]; 28 -> 141[label="",style="dashed", color="red", weight=0]; 28[label="List.deleteBy0 wu31 (Char (Succ wu3000)) primEqChar (Char (Succ wu4000)) (primEqNat wu4000 wu3000)",fontsize=16,color="magenta"];28 -> 142[label="",style="dashed", color="magenta", weight=3]; 28 -> 143[label="",style="dashed", color="magenta", weight=3]; 28 -> 144[label="",style="dashed", color="magenta", weight=3]; 28 -> 145[label="",style="dashed", color="magenta", weight=3]; 28 -> 146[label="",style="dashed", color="magenta", weight=3]; 29[label="List.deleteBy0 wu31 (Char Zero) primEqChar (Char (Succ wu4000)) False",fontsize=16,color="black",shape="box"];29 -> 34[label="",style="solid", color="black", weight=3]; 30[label="List.deleteBy0 wu31 (Char (Succ wu3000)) primEqChar (Char Zero) False",fontsize=16,color="black",shape="box"];30 -> 35[label="",style="solid", color="black", weight=3]; 31[label="List.deleteBy0 wu31 (Char Zero) primEqChar (Char Zero) True",fontsize=16,color="black",shape="box"];31 -> 36[label="",style="solid", color="black", weight=3]; 142[label="wu3000",fontsize=16,color="green",shape="box"];143[label="wu4000",fontsize=16,color="green",shape="box"];144[label="wu4000",fontsize=16,color="green",shape="box"];145[label="wu3000",fontsize=16,color="green",shape="box"];146[label="wu31",fontsize=16,color="green",shape="box"];141[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) (primEqNat wu20 wu21)",fontsize=16,color="burlywood",shape="triangle"];206[label="wu20/Succ wu200",fontsize=10,color="white",style="solid",shape="box"];141 -> 206[label="",style="solid", color="burlywood", weight=9]; 206 -> 177[label="",style="solid", color="burlywood", weight=3]; 207[label="wu20/Zero",fontsize=10,color="white",style="solid",shape="box"];141 -> 207[label="",style="solid", color="burlywood", weight=9]; 207 -> 178[label="",style="solid", color="burlywood", weight=3]; 34[label="Char Zero : List.deleteBy primEqChar (Char (Succ wu4000)) wu31",fontsize=16,color="green",shape="box"];34 -> 41[label="",style="dashed", color="green", weight=3]; 35[label="Char (Succ wu3000) : List.deleteBy primEqChar (Char Zero) wu31",fontsize=16,color="green",shape="box"];35 -> 42[label="",style="dashed", color="green", weight=3]; 36[label="wu31",fontsize=16,color="green",shape="box"];177[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) (primEqNat (Succ wu200) wu21)",fontsize=16,color="burlywood",shape="box"];208[label="wu21/Succ wu210",fontsize=10,color="white",style="solid",shape="box"];177 -> 208[label="",style="solid", color="burlywood", weight=9]; 208 -> 179[label="",style="solid", color="burlywood", weight=3]; 209[label="wu21/Zero",fontsize=10,color="white",style="solid",shape="box"];177 -> 209[label="",style="solid", color="burlywood", weight=9]; 209 -> 180[label="",style="solid", color="burlywood", weight=3]; 178[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) (primEqNat Zero wu21)",fontsize=16,color="burlywood",shape="box"];210[label="wu21/Succ wu210",fontsize=10,color="white",style="solid",shape="box"];178 -> 210[label="",style="solid", color="burlywood", weight=9]; 210 -> 181[label="",style="solid", color="burlywood", weight=3]; 211[label="wu21/Zero",fontsize=10,color="white",style="solid",shape="box"];178 -> 211[label="",style="solid", color="burlywood", weight=9]; 211 -> 182[label="",style="solid", color="burlywood", weight=3]; 41[label="List.deleteBy primEqChar (Char (Succ wu4000)) wu31",fontsize=16,color="burlywood",shape="triangle"];212[label="wu31/wu310 : wu311",fontsize=10,color="white",style="solid",shape="box"];41 -> 212[label="",style="solid", color="burlywood", weight=9]; 212 -> 47[label="",style="solid", color="burlywood", weight=3]; 213[label="wu31/[]",fontsize=10,color="white",style="solid",shape="box"];41 -> 213[label="",style="solid", color="burlywood", weight=9]; 213 -> 48[label="",style="solid", color="burlywood", weight=3]; 42[label="List.deleteBy primEqChar (Char Zero) wu31",fontsize=16,color="burlywood",shape="box"];214[label="wu31/wu310 : wu311",fontsize=10,color="white",style="solid",shape="box"];42 -> 214[label="",style="solid", color="burlywood", weight=9]; 214 -> 49[label="",style="solid", color="burlywood", weight=3]; 215[label="wu31/[]",fontsize=10,color="white",style="solid",shape="box"];42 -> 215[label="",style="solid", color="burlywood", weight=9]; 215 -> 50[label="",style="solid", color="burlywood", weight=3]; 179[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) (primEqNat (Succ wu200) (Succ wu210))",fontsize=16,color="black",shape="box"];179 -> 183[label="",style="solid", color="black", weight=3]; 180[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) (primEqNat (Succ wu200) Zero)",fontsize=16,color="black",shape="box"];180 -> 184[label="",style="solid", color="black", weight=3]; 181[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) (primEqNat Zero (Succ wu210))",fontsize=16,color="black",shape="box"];181 -> 185[label="",style="solid", color="black", weight=3]; 182[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) (primEqNat Zero Zero)",fontsize=16,color="black",shape="box"];182 -> 186[label="",style="solid", color="black", weight=3]; 47[label="List.deleteBy primEqChar (Char (Succ wu4000)) (wu310 : wu311)",fontsize=16,color="black",shape="box"];47 -> 56[label="",style="solid", color="black", weight=3]; 48[label="List.deleteBy primEqChar (Char (Succ wu4000)) []",fontsize=16,color="black",shape="box"];48 -> 57[label="",style="solid", color="black", weight=3]; 49[label="List.deleteBy primEqChar (Char Zero) (wu310 : wu311)",fontsize=16,color="black",shape="box"];49 -> 58[label="",style="solid", color="black", weight=3]; 50[label="List.deleteBy primEqChar (Char Zero) []",fontsize=16,color="black",shape="box"];50 -> 59[label="",style="solid", color="black", weight=3]; 183 -> 141[label="",style="dashed", color="red", weight=0]; 183[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) (primEqNat wu200 wu210)",fontsize=16,color="magenta"];183 -> 187[label="",style="dashed", color="magenta", weight=3]; 183 -> 188[label="",style="dashed", color="magenta", weight=3]; 184[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) False",fontsize=16,color="black",shape="triangle"];184 -> 189[label="",style="solid", color="black", weight=3]; 185 -> 184[label="",style="dashed", color="red", weight=0]; 185[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) False",fontsize=16,color="magenta"];186[label="List.deleteBy0 wu17 (Char (Succ wu18)) primEqChar (Char (Succ wu19)) True",fontsize=16,color="black",shape="box"];186 -> 190[label="",style="solid", color="black", weight=3]; 56 -> 18[label="",style="dashed", color="red", weight=0]; 56[label="List.deleteBy0 wu311 wu310 primEqChar (Char (Succ wu4000)) (primEqChar (Char (Succ wu4000)) wu310)",fontsize=16,color="magenta"];56 -> 66[label="",style="dashed", color="magenta", weight=3]; 56 -> 67[label="",style="dashed", color="magenta", weight=3]; 56 -> 68[label="",style="dashed", color="magenta", weight=3]; 57[label="[]",fontsize=16,color="green",shape="box"];58 -> 18[label="",style="dashed", color="red", weight=0]; 58[label="List.deleteBy0 wu311 wu310 primEqChar (Char Zero) (primEqChar (Char Zero) wu310)",fontsize=16,color="magenta"];58 -> 69[label="",style="dashed", color="magenta", weight=3]; 58 -> 70[label="",style="dashed", color="magenta", weight=3]; 58 -> 71[label="",style="dashed", color="magenta", weight=3]; 59[label="[]",fontsize=16,color="green",shape="box"];187[label="wu200",fontsize=16,color="green",shape="box"];188[label="wu210",fontsize=16,color="green",shape="box"];189[label="Char (Succ wu18) : List.deleteBy primEqChar (Char (Succ wu19)) wu17",fontsize=16,color="green",shape="box"];189 -> 191[label="",style="dashed", color="green", weight=3]; 190[label="wu17",fontsize=16,color="green",shape="box"];66[label="wu310",fontsize=16,color="green",shape="box"];67[label="wu311",fontsize=16,color="green",shape="box"];68[label="Char (Succ wu4000)",fontsize=16,color="green",shape="box"];69[label="wu310",fontsize=16,color="green",shape="box"];70[label="wu311",fontsize=16,color="green",shape="box"];71[label="Char Zero",fontsize=16,color="green",shape="box"];191 -> 41[label="",style="dashed", color="red", weight=0]; 191[label="List.deleteBy primEqChar (Char (Succ wu19)) wu17",fontsize=16,color="magenta"];191 -> 192[label="",style="dashed", color="magenta", weight=3]; 191 -> 193[label="",style="dashed", color="magenta", weight=3]; 192[label="wu19",fontsize=16,color="green",shape="box"];193[label="wu17",fontsize=16,color="green",shape="box"];} ---------------------------------------- (8) Complex Obligation (AND) ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Zero) -> new_deleteBy(wu19, wu17) new_deleteBy00(wu17, wu18, wu19) -> new_deleteBy(wu19, wu17) new_deleteBy01(:(wu310, wu311), Char(Succ(wu3000)), Char(Zero)) -> new_deleteBy01(wu311, wu310, Char(Zero)) new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Succ(wu210)) -> new_deleteBy0(wu17, wu18, wu19, wu200, wu210) new_deleteBy01(:(wu310, wu311), Char(Zero), Char(Succ(wu4000))) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) new_deleteBy(wu4000, :(wu310, wu311)) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) new_deleteBy01(wu31, Char(Succ(wu3000)), Char(Succ(wu4000))) -> new_deleteBy0(wu31, wu3000, wu4000, wu4000, wu3000) new_deleteBy0(wu17, wu18, wu19, Zero, Succ(wu210)) -> new_deleteBy00(wu17, wu18, wu19) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (10) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs. ---------------------------------------- (11) Complex Obligation (AND) ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: new_deleteBy01(:(wu310, wu311), Char(Succ(wu3000)), Char(Zero)) -> new_deleteBy01(wu311, wu310, Char(Zero)) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *new_deleteBy01(:(wu310, wu311), Char(Succ(wu3000)), Char(Zero)) -> new_deleteBy01(wu311, wu310, Char(Zero)) The graph contains the following edges 1 > 1, 1 > 2, 3 >= 3 ---------------------------------------- (14) YES ---------------------------------------- (15) Obligation: Q DP problem: The TRS P consists of the following rules: new_deleteBy(wu4000, :(wu310, wu311)) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) new_deleteBy01(:(wu310, wu311), Char(Zero), Char(Succ(wu4000))) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) new_deleteBy01(wu31, Char(Succ(wu3000)), Char(Succ(wu4000))) -> new_deleteBy0(wu31, wu3000, wu4000, wu4000, wu3000) new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Zero) -> new_deleteBy(wu19, wu17) new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Succ(wu210)) -> new_deleteBy0(wu17, wu18, wu19, wu200, wu210) new_deleteBy0(wu17, wu18, wu19, Zero, Succ(wu210)) -> new_deleteBy00(wu17, wu18, wu19) new_deleteBy00(wu17, wu18, wu19) -> new_deleteBy(wu19, wu17) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (16) 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_deleteBy01(:(wu310, wu311), Char(Zero), Char(Succ(wu4000))) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) The graph contains the following edges 1 > 1, 1 > 2, 3 >= 3 *new_deleteBy01(wu31, Char(Succ(wu3000)), Char(Succ(wu4000))) -> new_deleteBy0(wu31, wu3000, wu4000, wu4000, wu3000) The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3, 3 > 4, 2 > 5 *new_deleteBy(wu4000, :(wu310, wu311)) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) The graph contains the following edges 2 > 1, 2 > 2 *new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Zero) -> new_deleteBy(wu19, wu17) The graph contains the following edges 3 >= 1, 1 >= 2 *new_deleteBy00(wu17, wu18, wu19) -> new_deleteBy(wu19, wu17) The graph contains the following edges 3 >= 1, 1 >= 2 *new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Succ(wu210)) -> new_deleteBy0(wu17, wu18, wu19, wu200, wu210) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 > 5 *new_deleteBy0(wu17, wu18, wu19, Zero, Succ(wu210)) -> new_deleteBy00(wu17, wu18, wu19) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 ---------------------------------------- (17) YES ---------------------------------------- (18) Obligation: Q DP problem: The TRS P consists of the following rules: new_foldl(wu3, :(wu40, wu41)) -> new_foldl(new_deleteBy1(wu40, wu3), wu41) The TRS R consists of the following rules: new_deleteBy04(wu17, wu18, wu19) -> :(Char(Succ(wu18)), new_deleteBy2(wu19, wu17)) new_deleteBy3(:(wu310, wu311)) -> new_deleteBy02(wu311, wu310, Char(Zero)) new_deleteBy2(wu4000, :(wu310, wu311)) -> new_deleteBy02(wu311, wu310, Char(Succ(wu4000))) new_deleteBy3([]) -> [] new_deleteBy03(wu17, wu18, wu19, Succ(wu200), Zero) -> new_deleteBy04(wu17, wu18, wu19) new_deleteBy03(wu17, wu18, wu19, Zero, Succ(wu210)) -> new_deleteBy04(wu17, wu18, wu19) new_deleteBy02(wu31, Char(Zero), Char(Zero)) -> wu31 new_deleteBy02(wu31, Char(Zero), Char(Succ(wu4000))) -> :(Char(Zero), new_deleteBy2(wu4000, wu31)) new_deleteBy03(wu17, wu18, wu19, Zero, Zero) -> wu17 new_deleteBy02(wu31, Char(Succ(wu3000)), Char(Succ(wu4000))) -> new_deleteBy03(wu31, wu3000, wu4000, wu4000, wu3000) new_deleteBy1(wu40, []) -> [] new_deleteBy2(wu4000, []) -> [] new_deleteBy1(wu40, :(wu30, wu31)) -> new_deleteBy02(wu31, wu30, wu40) new_deleteBy03(wu17, wu18, wu19, Succ(wu200), Succ(wu210)) -> new_deleteBy03(wu17, wu18, wu19, wu200, wu210) new_deleteBy02(wu31, Char(Succ(wu3000)), Char(Zero)) -> :(Char(Succ(wu3000)), new_deleteBy3(wu31)) The set Q consists of the following terms: new_deleteBy04(x0, x1, x2) new_deleteBy2(x0, :(x1, x2)) new_deleteBy03(x0, x1, x2, Zero, Succ(x3)) new_deleteBy1(x0, []) new_deleteBy2(x0, []) new_deleteBy03(x0, x1, x2, Zero, Zero) new_deleteBy3(:(x0, x1)) new_deleteBy3([]) new_deleteBy1(x0, :(x1, x2)) new_deleteBy02(x0, Char(Zero), Char(Zero)) new_deleteBy02(x0, Char(Zero), Char(Succ(x1))) new_deleteBy02(x0, Char(Succ(x1)), Char(Succ(x2))) new_deleteBy03(x0, x1, x2, Succ(x3), Succ(x4)) new_deleteBy03(x0, x1, x2, Succ(x3), Zero) new_deleteBy02(x0, Char(Succ(x1)), Char(Zero)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (19) 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(wu3, :(wu40, wu41)) -> new_foldl(new_deleteBy1(wu40, wu3), wu41) The graph contains the following edges 2 > 2 ---------------------------------------- (20) YES