10.69/4.48 YES 12.94/5.06 proof of /export/starexec/sandbox2/benchmark/theBenchmark.hs 12.94/5.06 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 12.94/5.06 12.94/5.06 12.94/5.06 H-Termination with start terms of the given HASKELL could be proven: 12.94/5.06 12.94/5.06 (0) HASKELL 12.94/5.06 (1) IFR [EQUIVALENT, 0 ms] 12.94/5.06 (2) HASKELL 12.94/5.06 (3) BR [EQUIVALENT, 0 ms] 12.94/5.06 (4) HASKELL 12.94/5.06 (5) COR [EQUIVALENT, 0 ms] 12.94/5.06 (6) HASKELL 12.94/5.06 (7) Narrow [SOUND, 0 ms] 12.94/5.06 (8) AND 12.94/5.06 (9) QDP 12.94/5.06 (10) DependencyGraphProof [EQUIVALENT, 0 ms] 12.94/5.06 (11) AND 12.94/5.06 (12) QDP 12.94/5.06 (13) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.94/5.06 (14) YES 12.94/5.06 (15) QDP 12.94/5.06 (16) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.94/5.06 (17) YES 12.94/5.06 (18) QDP 12.94/5.06 (19) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.94/5.06 (20) YES 12.94/5.06 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (0) 12.94/5.06 Obligation: 12.94/5.06 mainModule Main 12.94/5.06 module Maybe where { 12.94/5.06 import qualified List; 12.94/5.06 import qualified Main; 12.94/5.06 import qualified Prelude; 12.94/5.06 } 12.94/5.06 module List where { 12.94/5.06 import qualified Main; 12.94/5.06 import qualified Maybe; 12.94/5.06 import qualified Prelude; 12.94/5.06 infix 5 \\; 12.94/5.06 (\\) :: Eq a => [a] -> [a] -> [a]; 12.94/5.06 (\\) = foldl (flip delete); 12.94/5.06 12.94/5.06 delete :: Eq a => a -> [a] -> [a]; 12.94/5.06 delete = deleteBy (==); 12.94/5.06 12.94/5.06 deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; 12.94/5.06 deleteBy _ _ [] = []; 12.94/5.06 deleteBy eq x (y : ys) = if x `eq` y then ys else y : deleteBy eq x ys; 12.94/5.06 12.94/5.06 } 12.94/5.06 module Main where { 12.94/5.06 import qualified List; 12.94/5.06 import qualified Maybe; 12.94/5.06 import qualified Prelude; 12.94/5.06 } 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (1) IFR (EQUIVALENT) 12.94/5.06 If Reductions: 12.94/5.06 The following If expression 12.94/5.06 "if eq x y then ys else y : deleteBy eq x ys" 12.94/5.06 is transformed to 12.94/5.06 "deleteBy0 ys y eq x True = ys; 12.94/5.06 deleteBy0 ys y eq x False = y : deleteBy eq x ys; 12.94/5.06 " 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (2) 12.94/5.06 Obligation: 12.94/5.06 mainModule Main 12.94/5.06 module Maybe where { 12.94/5.06 import qualified List; 12.94/5.06 import qualified Main; 12.94/5.06 import qualified Prelude; 12.94/5.06 } 12.94/5.06 module List where { 12.94/5.06 import qualified Main; 12.94/5.06 import qualified Maybe; 12.94/5.06 import qualified Prelude; 12.94/5.06 infix 5 \\; 12.94/5.06 (\\) :: Eq a => [a] -> [a] -> [a]; 12.94/5.06 (\\) = foldl (flip delete); 12.94/5.06 12.94/5.06 delete :: Eq a => a -> [a] -> [a]; 12.94/5.06 delete = deleteBy (==); 12.94/5.06 12.94/5.06 deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; 12.94/5.06 deleteBy _ _ [] = []; 12.94/5.06 deleteBy eq x (y : ys) = deleteBy0 ys y eq x (x `eq` y); 12.94/5.06 12.94/5.06 deleteBy0 ys y eq x True = ys; 12.94/5.06 deleteBy0 ys y eq x False = y : deleteBy eq x ys; 12.94/5.06 12.94/5.06 } 12.94/5.06 module Main where { 12.94/5.06 import qualified List; 12.94/5.06 import qualified Maybe; 12.94/5.06 import qualified Prelude; 12.94/5.06 } 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (3) BR (EQUIVALENT) 12.94/5.06 Replaced joker patterns by fresh variables and removed binding patterns. 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (4) 12.94/5.06 Obligation: 12.94/5.06 mainModule Main 12.94/5.06 module Maybe where { 12.94/5.06 import qualified List; 12.94/5.06 import qualified Main; 12.94/5.06 import qualified Prelude; 12.94/5.06 } 12.94/5.06 module List where { 12.94/5.06 import qualified Main; 12.94/5.06 import qualified Maybe; 12.94/5.06 import qualified Prelude; 12.94/5.06 infix 5 \\; 12.94/5.06 (\\) :: Eq a => [a] -> [a] -> [a]; 12.94/5.06 (\\) = foldl (flip delete); 12.94/5.06 12.94/5.06 delete :: Eq a => a -> [a] -> [a]; 12.94/5.06 delete = deleteBy (==); 12.94/5.06 12.94/5.06 deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; 12.94/5.06 deleteBy vy vz [] = []; 12.94/5.06 deleteBy eq x (y : ys) = deleteBy0 ys y eq x (x `eq` y); 12.94/5.06 12.94/5.06 deleteBy0 ys y eq x True = ys; 12.94/5.06 deleteBy0 ys y eq x False = y : deleteBy eq x ys; 12.94/5.06 12.94/5.06 } 12.94/5.06 module Main where { 12.94/5.06 import qualified List; 12.94/5.06 import qualified Maybe; 12.94/5.06 import qualified Prelude; 12.94/5.06 } 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (5) COR (EQUIVALENT) 12.94/5.06 Cond Reductions: 12.94/5.06 The following Function with conditions 12.94/5.06 "undefined |Falseundefined; 12.94/5.06 " 12.94/5.06 is transformed to 12.94/5.06 "undefined = undefined1; 12.94/5.06 " 12.94/5.06 "undefined0 True = undefined; 12.94/5.06 " 12.94/5.06 "undefined1 = undefined0 False; 12.94/5.06 " 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (6) 12.94/5.06 Obligation: 12.94/5.06 mainModule Main 12.94/5.06 module Maybe where { 12.94/5.06 import qualified List; 12.94/5.06 import qualified Main; 12.94/5.06 import qualified Prelude; 12.94/5.06 } 12.94/5.06 module List where { 12.94/5.06 import qualified Main; 12.94/5.06 import qualified Maybe; 12.94/5.06 import qualified Prelude; 12.94/5.06 infix 5 \\; 12.94/5.06 (\\) :: Eq a => [a] -> [a] -> [a]; 12.94/5.06 (\\) = foldl (flip delete); 12.94/5.06 12.94/5.06 delete :: Eq a => a -> [a] -> [a]; 12.94/5.06 delete = deleteBy (==); 12.94/5.06 12.94/5.06 deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]; 12.94/5.06 deleteBy vy vz [] = []; 12.94/5.06 deleteBy eq x (y : ys) = deleteBy0 ys y eq x (x `eq` y); 12.94/5.06 12.94/5.06 deleteBy0 ys y eq x True = ys; 12.94/5.06 deleteBy0 ys y eq x False = y : deleteBy eq x ys; 12.94/5.06 12.94/5.06 } 12.94/5.06 module Main where { 12.94/5.06 import qualified List; 12.94/5.06 import qualified Maybe; 12.94/5.06 import qualified Prelude; 12.94/5.06 } 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (7) Narrow (SOUND) 12.94/5.06 Haskell To QDPs 12.94/5.06 12.94/5.06 digraph dp_graph { 12.94/5.06 node [outthreshold=100, inthreshold=100];1[label="(List.\\)",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 12.94/5.06 3[label="wu3 (List.\\)",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 12.94/5.06 4[label="wu3 (List.\\) wu4",fontsize=16,color="black",shape="triangle"];4 -> 5[label="",style="solid", color="black", weight=3]; 12.94/5.06 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]; 12.94/5.06 194 -> 6[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 195[label="wu4/[]",fontsize=10,color="white",style="solid",shape="box"];5 -> 195[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 195 -> 7[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 6[label="foldl (flip List.delete) wu3 (wu40 : wu41)",fontsize=16,color="black",shape="box"];6 -> 8[label="",style="solid", color="black", weight=3]; 12.94/5.06 7[label="foldl (flip List.delete) wu3 []",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 12.94/5.06 8 -> 5[label="",style="dashed", color="red", weight=0]; 12.94/5.06 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]; 12.94/5.06 8 -> 11[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 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.94/5.06 12[label="List.delete wu40 wu3",fontsize=16,color="black",shape="box"];12 -> 13[label="",style="solid", color="black", weight=3]; 12.94/5.06 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]; 12.94/5.06 196 -> 14[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 197[label="wu3/[]",fontsize=10,color="white",style="solid",shape="box"];13 -> 197[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 197 -> 15[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 14[label="List.deleteBy (==) wu40 (wu30 : wu31)",fontsize=16,color="black",shape="box"];14 -> 16[label="",style="solid", color="black", weight=3]; 12.94/5.06 15[label="List.deleteBy (==) wu40 []",fontsize=16,color="black",shape="box"];15 -> 17[label="",style="solid", color="black", weight=3]; 12.94/5.06 16[label="List.deleteBy0 wu31 wu30 (==) wu40 ((==) wu40 wu30)",fontsize=16,color="black",shape="box"];16 -> 18[label="",style="solid", color="black", weight=3]; 12.94/5.06 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]; 12.94/5.06 198 -> 19[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 199 -> 20[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 200 -> 22[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 201[label="wu400/Zero",fontsize=10,color="white",style="solid",shape="box"];21 -> 201[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 201 -> 23[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 202 -> 24[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 203[label="wu300/Zero",fontsize=10,color="white",style="solid",shape="box"];22 -> 203[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 203 -> 25[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 204 -> 26[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 205[label="wu300/Zero",fontsize=10,color="white",style="solid",shape="box"];23 -> 205[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 205 -> 27[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 28 -> 141[label="",style="dashed", color="red", weight=0]; 12.94/5.06 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]; 12.94/5.06 28 -> 143[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 28 -> 144[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 28 -> 145[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 28 -> 146[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 206 -> 177[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 207[label="wu20/Zero",fontsize=10,color="white",style="solid",shape="box"];141 -> 207[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 207 -> 178[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 208 -> 179[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 209[label="wu21/Zero",fontsize=10,color="white",style="solid",shape="box"];177 -> 209[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 209 -> 180[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 210 -> 181[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 211[label="wu21/Zero",fontsize=10,color="white",style="solid",shape="box"];178 -> 211[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 211 -> 182[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 212 -> 47[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 213[label="wu31/[]",fontsize=10,color="white",style="solid",shape="box"];41 -> 213[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 213 -> 48[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 214 -> 49[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 215[label="wu31/[]",fontsize=10,color="white",style="solid",shape="box"];42 -> 215[label="",style="solid", color="burlywood", weight=9]; 12.94/5.06 215 -> 50[label="",style="solid", color="burlywood", weight=3]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 48[label="List.deleteBy primEqChar (Char (Succ wu4000)) []",fontsize=16,color="black",shape="box"];48 -> 57[label="",style="solid", color="black", weight=3]; 12.94/5.06 49[label="List.deleteBy primEqChar (Char Zero) (wu310 : wu311)",fontsize=16,color="black",shape="box"];49 -> 58[label="",style="solid", color="black", weight=3]; 12.94/5.06 50[label="List.deleteBy primEqChar (Char Zero) []",fontsize=16,color="black",shape="box"];50 -> 59[label="",style="solid", color="black", weight=3]; 12.94/5.06 183 -> 141[label="",style="dashed", color="red", weight=0]; 12.94/5.06 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]; 12.94/5.06 183 -> 188[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 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]; 12.94/5.06 185 -> 184[label="",style="dashed", color="red", weight=0]; 12.94/5.06 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]; 12.94/5.06 56 -> 18[label="",style="dashed", color="red", weight=0]; 12.94/5.06 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]; 12.94/5.06 56 -> 67[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 56 -> 68[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 57[label="[]",fontsize=16,color="green",shape="box"];58 -> 18[label="",style="dashed", color="red", weight=0]; 12.94/5.06 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]; 12.94/5.06 58 -> 70[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 58 -> 71[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 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]; 12.94/5.06 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]; 12.94/5.06 191[label="List.deleteBy primEqChar (Char (Succ wu19)) wu17",fontsize=16,color="magenta"];191 -> 192[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 191 -> 193[label="",style="dashed", color="magenta", weight=3]; 12.94/5.06 192[label="wu19",fontsize=16,color="green",shape="box"];193[label="wu17",fontsize=16,color="green",shape="box"];} 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (8) 12.94/5.06 Complex Obligation (AND) 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (9) 12.94/5.06 Obligation: 12.94/5.06 Q DP problem: 12.94/5.06 The TRS P consists of the following rules: 12.94/5.06 12.94/5.06 new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Zero) -> new_deleteBy(wu19, wu17) 12.94/5.06 new_deleteBy00(wu17, wu18, wu19) -> new_deleteBy(wu19, wu17) 12.94/5.06 new_deleteBy01(:(wu310, wu311), Char(Succ(wu3000)), Char(Zero)) -> new_deleteBy01(wu311, wu310, Char(Zero)) 12.94/5.06 new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Succ(wu210)) -> new_deleteBy0(wu17, wu18, wu19, wu200, wu210) 12.94/5.06 new_deleteBy01(:(wu310, wu311), Char(Zero), Char(Succ(wu4000))) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) 12.94/5.06 new_deleteBy(wu4000, :(wu310, wu311)) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) 12.94/5.06 new_deleteBy01(wu31, Char(Succ(wu3000)), Char(Succ(wu4000))) -> new_deleteBy0(wu31, wu3000, wu4000, wu4000, wu3000) 12.94/5.06 new_deleteBy0(wu17, wu18, wu19, Zero, Succ(wu210)) -> new_deleteBy00(wu17, wu18, wu19) 12.94/5.06 12.94/5.06 R is empty. 12.94/5.06 Q is empty. 12.94/5.06 We have to consider all minimal (P,Q,R)-chains. 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (10) DependencyGraphProof (EQUIVALENT) 12.94/5.06 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs. 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (11) 12.94/5.06 Complex Obligation (AND) 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (12) 12.94/5.06 Obligation: 12.94/5.06 Q DP problem: 12.94/5.06 The TRS P consists of the following rules: 12.94/5.06 12.94/5.06 new_deleteBy01(:(wu310, wu311), Char(Succ(wu3000)), Char(Zero)) -> new_deleteBy01(wu311, wu310, Char(Zero)) 12.94/5.06 12.94/5.06 R is empty. 12.94/5.06 Q is empty. 12.94/5.06 We have to consider all minimal (P,Q,R)-chains. 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (13) QDPSizeChangeProof (EQUIVALENT) 12.94/5.06 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. 12.94/5.06 12.94/5.06 From the DPs we obtained the following set of size-change graphs: 12.94/5.06 *new_deleteBy01(:(wu310, wu311), Char(Succ(wu3000)), Char(Zero)) -> new_deleteBy01(wu311, wu310, Char(Zero)) 12.94/5.06 The graph contains the following edges 1 > 1, 1 > 2, 3 >= 3 12.94/5.06 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (14) 12.94/5.06 YES 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (15) 12.94/5.06 Obligation: 12.94/5.06 Q DP problem: 12.94/5.06 The TRS P consists of the following rules: 12.94/5.06 12.94/5.06 new_deleteBy(wu4000, :(wu310, wu311)) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) 12.94/5.06 new_deleteBy01(:(wu310, wu311), Char(Zero), Char(Succ(wu4000))) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) 12.94/5.06 new_deleteBy01(wu31, Char(Succ(wu3000)), Char(Succ(wu4000))) -> new_deleteBy0(wu31, wu3000, wu4000, wu4000, wu3000) 12.94/5.06 new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Zero) -> new_deleteBy(wu19, wu17) 12.94/5.06 new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Succ(wu210)) -> new_deleteBy0(wu17, wu18, wu19, wu200, wu210) 12.94/5.06 new_deleteBy0(wu17, wu18, wu19, Zero, Succ(wu210)) -> new_deleteBy00(wu17, wu18, wu19) 12.94/5.06 new_deleteBy00(wu17, wu18, wu19) -> new_deleteBy(wu19, wu17) 12.94/5.06 12.94/5.06 R is empty. 12.94/5.06 Q is empty. 12.94/5.06 We have to consider all minimal (P,Q,R)-chains. 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (16) QDPSizeChangeProof (EQUIVALENT) 12.94/5.06 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. 12.94/5.06 12.94/5.06 From the DPs we obtained the following set of size-change graphs: 12.94/5.06 *new_deleteBy01(:(wu310, wu311), Char(Zero), Char(Succ(wu4000))) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) 12.94/5.06 The graph contains the following edges 1 > 1, 1 > 2, 3 >= 3 12.94/5.06 12.94/5.06 12.94/5.06 *new_deleteBy01(wu31, Char(Succ(wu3000)), Char(Succ(wu4000))) -> new_deleteBy0(wu31, wu3000, wu4000, wu4000, wu3000) 12.94/5.06 The graph contains the following edges 1 >= 1, 2 > 2, 3 > 3, 3 > 4, 2 > 5 12.94/5.06 12.94/5.06 12.94/5.06 *new_deleteBy(wu4000, :(wu310, wu311)) -> new_deleteBy01(wu311, wu310, Char(Succ(wu4000))) 12.94/5.06 The graph contains the following edges 2 > 1, 2 > 2 12.94/5.06 12.94/5.06 12.94/5.06 *new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Zero) -> new_deleteBy(wu19, wu17) 12.94/5.06 The graph contains the following edges 3 >= 1, 1 >= 2 12.94/5.06 12.94/5.06 12.94/5.06 *new_deleteBy00(wu17, wu18, wu19) -> new_deleteBy(wu19, wu17) 12.94/5.06 The graph contains the following edges 3 >= 1, 1 >= 2 12.94/5.06 12.94/5.06 12.94/5.06 *new_deleteBy0(wu17, wu18, wu19, Succ(wu200), Succ(wu210)) -> new_deleteBy0(wu17, wu18, wu19, wu200, wu210) 12.94/5.06 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 > 5 12.94/5.06 12.94/5.06 12.94/5.06 *new_deleteBy0(wu17, wu18, wu19, Zero, Succ(wu210)) -> new_deleteBy00(wu17, wu18, wu19) 12.94/5.06 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 12.94/5.06 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (17) 12.94/5.06 YES 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (18) 12.94/5.06 Obligation: 12.94/5.06 Q DP problem: 12.94/5.06 The TRS P consists of the following rules: 12.94/5.06 12.94/5.06 new_foldl(wu3, :(wu40, wu41)) -> new_foldl(new_deleteBy1(wu40, wu3), wu41) 12.94/5.06 12.94/5.06 The TRS R consists of the following rules: 12.94/5.06 12.94/5.06 new_deleteBy04(wu17, wu18, wu19) -> :(Char(Succ(wu18)), new_deleteBy2(wu19, wu17)) 12.94/5.06 new_deleteBy3(:(wu310, wu311)) -> new_deleteBy02(wu311, wu310, Char(Zero)) 12.94/5.06 new_deleteBy2(wu4000, :(wu310, wu311)) -> new_deleteBy02(wu311, wu310, Char(Succ(wu4000))) 12.94/5.06 new_deleteBy3([]) -> [] 12.94/5.06 new_deleteBy03(wu17, wu18, wu19, Succ(wu200), Zero) -> new_deleteBy04(wu17, wu18, wu19) 12.94/5.06 new_deleteBy03(wu17, wu18, wu19, Zero, Succ(wu210)) -> new_deleteBy04(wu17, wu18, wu19) 12.94/5.06 new_deleteBy02(wu31, Char(Zero), Char(Zero)) -> wu31 12.94/5.06 new_deleteBy02(wu31, Char(Zero), Char(Succ(wu4000))) -> :(Char(Zero), new_deleteBy2(wu4000, wu31)) 12.94/5.06 new_deleteBy03(wu17, wu18, wu19, Zero, Zero) -> wu17 12.94/5.06 new_deleteBy02(wu31, Char(Succ(wu3000)), Char(Succ(wu4000))) -> new_deleteBy03(wu31, wu3000, wu4000, wu4000, wu3000) 12.94/5.06 new_deleteBy1(wu40, []) -> [] 12.94/5.06 new_deleteBy2(wu4000, []) -> [] 12.94/5.06 new_deleteBy1(wu40, :(wu30, wu31)) -> new_deleteBy02(wu31, wu30, wu40) 12.94/5.06 new_deleteBy03(wu17, wu18, wu19, Succ(wu200), Succ(wu210)) -> new_deleteBy03(wu17, wu18, wu19, wu200, wu210) 12.94/5.06 new_deleteBy02(wu31, Char(Succ(wu3000)), Char(Zero)) -> :(Char(Succ(wu3000)), new_deleteBy3(wu31)) 12.94/5.06 12.94/5.06 The set Q consists of the following terms: 12.94/5.06 12.94/5.06 new_deleteBy04(x0, x1, x2) 12.94/5.06 new_deleteBy2(x0, :(x1, x2)) 12.94/5.06 new_deleteBy03(x0, x1, x2, Zero, Succ(x3)) 12.94/5.06 new_deleteBy1(x0, []) 12.94/5.06 new_deleteBy2(x0, []) 12.94/5.06 new_deleteBy03(x0, x1, x2, Zero, Zero) 12.94/5.06 new_deleteBy3(:(x0, x1)) 12.94/5.06 new_deleteBy3([]) 12.94/5.06 new_deleteBy1(x0, :(x1, x2)) 12.94/5.06 new_deleteBy02(x0, Char(Zero), Char(Zero)) 12.94/5.06 new_deleteBy02(x0, Char(Zero), Char(Succ(x1))) 12.94/5.06 new_deleteBy02(x0, Char(Succ(x1)), Char(Succ(x2))) 12.94/5.06 new_deleteBy03(x0, x1, x2, Succ(x3), Succ(x4)) 12.94/5.06 new_deleteBy03(x0, x1, x2, Succ(x3), Zero) 12.94/5.06 new_deleteBy02(x0, Char(Succ(x1)), Char(Zero)) 12.94/5.06 12.94/5.06 We have to consider all minimal (P,Q,R)-chains. 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (19) QDPSizeChangeProof (EQUIVALENT) 12.94/5.06 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. 12.94/5.06 12.94/5.06 From the DPs we obtained the following set of size-change graphs: 12.94/5.06 *new_foldl(wu3, :(wu40, wu41)) -> new_foldl(new_deleteBy1(wu40, wu3), wu41) 12.94/5.06 The graph contains the following edges 2 > 2 12.94/5.06 12.94/5.06 12.94/5.06 ---------------------------------------- 12.94/5.06 12.94/5.06 (20) 12.94/5.06 YES 13.04/6.77 EOF