10.60/4.48 YES 12.84/5.07 proof of /export/starexec/sandbox/benchmark/theBenchmark.hs 12.84/5.07 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 12.84/5.07 12.84/5.07 12.84/5.07 H-Termination with start terms of the given HASKELL could be proven: 12.84/5.07 12.84/5.07 (0) HASKELL 12.84/5.07 (1) CR [EQUIVALENT, 0 ms] 12.84/5.07 (2) HASKELL 12.84/5.07 (3) BR [EQUIVALENT, 0 ms] 12.84/5.07 (4) HASKELL 12.84/5.07 (5) COR [EQUIVALENT, 21 ms] 12.84/5.07 (6) HASKELL 12.84/5.07 (7) Narrow [SOUND, 0 ms] 12.84/5.07 (8) QDP 12.84/5.07 (9) QDPSizeChangeProof [EQUIVALENT, 0 ms] 12.84/5.07 (10) YES 12.84/5.07 12.84/5.07 12.84/5.07 ---------------------------------------- 12.84/5.07 12.84/5.07 (0) 12.84/5.07 Obligation: 12.84/5.07 mainModule Main 12.84/5.07 module Maybe where { 12.84/5.07 import qualified List; 12.84/5.07 import qualified Main; 12.84/5.07 import qualified Prelude; 12.84/5.07 } 12.84/5.07 module List where { 12.84/5.07 import qualified Main; 12.84/5.07 import qualified Maybe; 12.84/5.07 import qualified Prelude; 12.84/5.07 insert :: Ord a => a -> [a] -> [a]; 12.84/5.07 insert e ls = insertBy compare e ls; 12.84/5.07 12.84/5.07 insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]; 12.84/5.07 insertBy _ x [] = x : []; 12.84/5.07 insertBy cmp x ys@(y : ys') = case cmp x y of { 12.84/5.07 GT-> y : insertBy cmp x ys'; 12.84/5.07 _-> x : ys; 12.84/5.07 } ; 12.84/5.07 12.84/5.07 } 12.84/5.07 module Main where { 12.84/5.07 import qualified List; 12.84/5.07 import qualified Maybe; 12.84/5.08 import qualified Prelude; 12.84/5.08 } 12.84/5.08 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (1) CR (EQUIVALENT) 12.84/5.08 Case Reductions: 12.84/5.08 The following Case expression 12.84/5.08 "case cmp x y of { 12.84/5.08 GT -> y : insertBy cmp x ys'; 12.84/5.08 _ -> x : ys} 12.84/5.08 " 12.84/5.08 is transformed to 12.84/5.08 "insertBy0 y cmp x ys' ys GT = y : insertBy cmp x ys'; 12.84/5.08 insertBy0 y cmp x ys' ys _ = x : ys; 12.84/5.08 " 12.84/5.08 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (2) 12.84/5.08 Obligation: 12.84/5.08 mainModule Main 12.84/5.08 module Maybe where { 12.84/5.08 import qualified List; 12.84/5.08 import qualified Main; 12.84/5.08 import qualified Prelude; 12.84/5.08 } 12.84/5.08 module List where { 12.84/5.08 import qualified Main; 12.84/5.08 import qualified Maybe; 12.84/5.08 import qualified Prelude; 12.84/5.08 insert :: Ord a => a -> [a] -> [a]; 12.84/5.08 insert e ls = insertBy compare e ls; 12.84/5.08 12.84/5.08 insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]; 12.84/5.08 insertBy _ x [] = x : []; 12.84/5.08 insertBy cmp x ys@(y : ys') = insertBy0 y cmp x ys' ys (cmp x y); 12.84/5.08 12.84/5.08 insertBy0 y cmp x ys' ys GT = y : insertBy cmp x ys'; 12.84/5.08 insertBy0 y cmp x ys' ys _ = x : ys; 12.84/5.08 12.84/5.08 } 12.84/5.08 module Main where { 12.84/5.08 import qualified List; 12.84/5.08 import qualified Maybe; 12.84/5.08 import qualified Prelude; 12.84/5.08 } 12.84/5.08 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (3) BR (EQUIVALENT) 12.84/5.08 Replaced joker patterns by fresh variables and removed binding patterns. 12.84/5.08 12.84/5.08 Binding Reductions: 12.84/5.08 The bind variable of the following binding Pattern 12.84/5.08 "ys@(wu : wv)" 12.84/5.08 is replaced by the following term 12.84/5.08 "wu : wv" 12.84/5.08 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (4) 12.84/5.08 Obligation: 12.84/5.08 mainModule Main 12.84/5.08 module Maybe where { 12.84/5.08 import qualified List; 12.84/5.08 import qualified Main; 12.84/5.08 import qualified Prelude; 12.84/5.08 } 12.84/5.08 module List where { 12.84/5.08 import qualified Main; 12.84/5.08 import qualified Maybe; 12.84/5.08 import qualified Prelude; 12.84/5.08 insert :: Ord a => a -> [a] -> [a]; 12.84/5.08 insert e ls = insertBy compare e ls; 12.84/5.08 12.84/5.08 insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]; 12.84/5.08 insertBy vz x [] = x : []; 12.84/5.08 insertBy cmp x (wu : wv) = insertBy0 wu cmp x wv (wu : wv) (cmp x wu); 12.84/5.08 12.84/5.08 insertBy0 y cmp x ys' ys GT = y : insertBy cmp x ys'; 12.84/5.08 insertBy0 y cmp x ys' ys vy = x : ys; 12.84/5.08 12.84/5.08 } 12.84/5.08 module Main where { 12.84/5.08 import qualified List; 12.84/5.08 import qualified Maybe; 12.84/5.08 import qualified Prelude; 12.84/5.08 } 12.84/5.08 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (5) COR (EQUIVALENT) 12.84/5.08 Cond Reductions: 12.84/5.08 The following Function with conditions 12.84/5.08 "undefined |Falseundefined; 12.84/5.08 " 12.84/5.08 is transformed to 12.84/5.08 "undefined = undefined1; 12.84/5.08 " 12.84/5.08 "undefined0 True = undefined; 12.84/5.08 " 12.84/5.08 "undefined1 = undefined0 False; 12.84/5.08 " 12.84/5.08 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (6) 12.84/5.08 Obligation: 12.84/5.08 mainModule Main 12.84/5.08 module Maybe where { 12.84/5.08 import qualified List; 12.84/5.08 import qualified Main; 12.84/5.08 import qualified Prelude; 12.84/5.08 } 12.84/5.08 module List where { 12.84/5.08 import qualified Main; 12.84/5.08 import qualified Maybe; 12.84/5.08 import qualified Prelude; 12.84/5.08 insert :: Ord a => a -> [a] -> [a]; 12.84/5.08 insert e ls = insertBy compare e ls; 12.84/5.08 12.84/5.08 insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]; 12.84/5.08 insertBy vz x [] = x : []; 12.84/5.08 insertBy cmp x (wu : wv) = insertBy0 wu cmp x wv (wu : wv) (cmp x wu); 12.84/5.08 12.84/5.08 insertBy0 y cmp x ys' ys GT = y : insertBy cmp x ys'; 12.84/5.08 insertBy0 y cmp x ys' ys vy = x : ys; 12.84/5.08 12.84/5.08 } 12.84/5.08 module Main where { 12.84/5.08 import qualified List; 12.84/5.08 import qualified Maybe; 12.84/5.08 import qualified Prelude; 12.84/5.08 } 12.84/5.08 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (7) Narrow (SOUND) 12.84/5.08 Haskell To QDPs 12.84/5.08 12.84/5.08 digraph dp_graph { 12.84/5.08 node [outthreshold=100, inthreshold=100];1[label="List.insert",fontsize=16,color="grey",shape="box"];1 -> 3[label="",style="dashed", color="grey", weight=3]; 12.84/5.08 3[label="List.insert ww3",fontsize=16,color="grey",shape="box"];3 -> 4[label="",style="dashed", color="grey", weight=3]; 12.84/5.08 4[label="List.insert ww3 ww4",fontsize=16,color="black",shape="triangle"];4 -> 5[label="",style="solid", color="black", weight=3]; 12.84/5.08 5[label="List.insertBy compare ww3 ww4",fontsize=16,color="burlywood",shape="box"];171[label="ww4/ww40 : ww41",fontsize=10,color="white",style="solid",shape="box"];5 -> 171[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 171 -> 6[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 172[label="ww4/[]",fontsize=10,color="white",style="solid",shape="box"];5 -> 172[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 172 -> 7[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 6[label="List.insertBy compare ww3 (ww40 : ww41)",fontsize=16,color="black",shape="box"];6 -> 8[label="",style="solid", color="black", weight=3]; 12.84/5.08 7[label="List.insertBy compare ww3 []",fontsize=16,color="black",shape="box"];7 -> 9[label="",style="solid", color="black", weight=3]; 12.84/5.08 8[label="List.insertBy0 ww40 compare ww3 ww41 (ww40 : ww41) (compare ww3 ww40)",fontsize=16,color="black",shape="box"];8 -> 10[label="",style="solid", color="black", weight=3]; 12.84/5.08 9[label="ww3 : []",fontsize=16,color="green",shape="box"];10[label="List.insertBy0 ww40 primCmpChar ww3 ww41 (ww40 : ww41) (primCmpChar ww3 ww40)",fontsize=16,color="burlywood",shape="triangle"];173[label="ww3/Char ww30",fontsize=10,color="white",style="solid",shape="box"];10 -> 173[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 173 -> 11[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 11[label="List.insertBy0 ww40 primCmpChar (Char ww30) ww41 (ww40 : ww41) (primCmpChar (Char ww30) ww40)",fontsize=16,color="burlywood",shape="box"];174[label="ww40/Char ww400",fontsize=10,color="white",style="solid",shape="box"];11 -> 174[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 174 -> 12[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 12[label="List.insertBy0 (Char ww400) primCmpChar (Char ww30) ww41 (Char ww400 : ww41) (primCmpChar (Char ww30) (Char ww400))",fontsize=16,color="black",shape="box"];12 -> 13[label="",style="solid", color="black", weight=3]; 12.84/5.08 13[label="List.insertBy0 (Char ww400) primCmpChar (Char ww30) ww41 (Char ww400 : ww41) (primCmpNat ww30 ww400)",fontsize=16,color="burlywood",shape="box"];175[label="ww30/Succ ww300",fontsize=10,color="white",style="solid",shape="box"];13 -> 175[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 175 -> 14[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 176[label="ww30/Zero",fontsize=10,color="white",style="solid",shape="box"];13 -> 176[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 176 -> 15[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 14[label="List.insertBy0 (Char ww400) primCmpChar (Char (Succ ww300)) ww41 (Char ww400 : ww41) (primCmpNat (Succ ww300) ww400)",fontsize=16,color="burlywood",shape="box"];177[label="ww400/Succ ww4000",fontsize=10,color="white",style="solid",shape="box"];14 -> 177[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 177 -> 16[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 178[label="ww400/Zero",fontsize=10,color="white",style="solid",shape="box"];14 -> 178[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 178 -> 17[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 15[label="List.insertBy0 (Char ww400) primCmpChar (Char Zero) ww41 (Char ww400 : ww41) (primCmpNat Zero ww400)",fontsize=16,color="burlywood",shape="box"];179[label="ww400/Succ ww4000",fontsize=10,color="white",style="solid",shape="box"];15 -> 179[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 179 -> 18[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 180[label="ww400/Zero",fontsize=10,color="white",style="solid",shape="box"];15 -> 180[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 180 -> 19[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 16[label="List.insertBy0 (Char (Succ ww4000)) primCmpChar (Char (Succ ww300)) ww41 (Char (Succ ww4000) : ww41) (primCmpNat (Succ ww300) (Succ ww4000))",fontsize=16,color="black",shape="box"];16 -> 20[label="",style="solid", color="black", weight=3]; 12.84/5.08 17[label="List.insertBy0 (Char Zero) primCmpChar (Char (Succ ww300)) ww41 (Char Zero : ww41) (primCmpNat (Succ ww300) Zero)",fontsize=16,color="black",shape="box"];17 -> 21[label="",style="solid", color="black", weight=3]; 12.84/5.08 18[label="List.insertBy0 (Char (Succ ww4000)) primCmpChar (Char Zero) ww41 (Char (Succ ww4000) : ww41) (primCmpNat Zero (Succ ww4000))",fontsize=16,color="black",shape="box"];18 -> 22[label="",style="solid", color="black", weight=3]; 12.84/5.08 19[label="List.insertBy0 (Char Zero) primCmpChar (Char Zero) ww41 (Char Zero : ww41) (primCmpNat Zero Zero)",fontsize=16,color="black",shape="box"];19 -> 23[label="",style="solid", color="black", weight=3]; 12.84/5.08 20 -> 117[label="",style="dashed", color="red", weight=0]; 12.84/5.08 20[label="List.insertBy0 (Char (Succ ww4000)) primCmpChar (Char (Succ ww300)) ww41 (Char (Succ ww4000) : ww41) (primCmpNat ww300 ww4000)",fontsize=16,color="magenta"];20 -> 118[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 20 -> 119[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 20 -> 120[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 20 -> 121[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 20 -> 122[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 21[label="List.insertBy0 (Char Zero) primCmpChar (Char (Succ ww300)) ww41 (Char Zero : ww41) GT",fontsize=16,color="black",shape="box"];21 -> 26[label="",style="solid", color="black", weight=3]; 12.84/5.08 22[label="List.insertBy0 (Char (Succ ww4000)) primCmpChar (Char Zero) ww41 (Char (Succ ww4000) : ww41) LT",fontsize=16,color="black",shape="box"];22 -> 27[label="",style="solid", color="black", weight=3]; 12.84/5.08 23[label="List.insertBy0 (Char Zero) primCmpChar (Char Zero) ww41 (Char Zero : ww41) EQ",fontsize=16,color="black",shape="box"];23 -> 28[label="",style="solid", color="black", weight=3]; 12.84/5.08 118[label="ww300",fontsize=16,color="green",shape="box"];119[label="ww41",fontsize=16,color="green",shape="box"];120[label="ww4000",fontsize=16,color="green",shape="box"];121[label="ww4000",fontsize=16,color="green",shape="box"];122[label="ww300",fontsize=16,color="green",shape="box"];117[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) (primCmpNat ww20 ww21)",fontsize=16,color="burlywood",shape="triangle"];181[label="ww20/Succ ww200",fontsize=10,color="white",style="solid",shape="box"];117 -> 181[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 181 -> 153[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 182[label="ww20/Zero",fontsize=10,color="white",style="solid",shape="box"];117 -> 182[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 182 -> 154[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 26[label="Char Zero : List.insertBy primCmpChar (Char (Succ ww300)) ww41",fontsize=16,color="green",shape="box"];26 -> 33[label="",style="dashed", color="green", weight=3]; 12.84/5.08 27[label="Char Zero : Char (Succ ww4000) : ww41",fontsize=16,color="green",shape="box"];28[label="Char Zero : Char Zero : ww41",fontsize=16,color="green",shape="box"];153[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) (primCmpNat (Succ ww200) ww21)",fontsize=16,color="burlywood",shape="box"];183[label="ww21/Succ ww210",fontsize=10,color="white",style="solid",shape="box"];153 -> 183[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 183 -> 155[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 184[label="ww21/Zero",fontsize=10,color="white",style="solid",shape="box"];153 -> 184[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 184 -> 156[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 154[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) (primCmpNat Zero ww21)",fontsize=16,color="burlywood",shape="box"];185[label="ww21/Succ ww210",fontsize=10,color="white",style="solid",shape="box"];154 -> 185[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 185 -> 157[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 186[label="ww21/Zero",fontsize=10,color="white",style="solid",shape="box"];154 -> 186[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 186 -> 158[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 33[label="List.insertBy primCmpChar (Char (Succ ww300)) ww41",fontsize=16,color="burlywood",shape="triangle"];187[label="ww41/ww410 : ww411",fontsize=10,color="white",style="solid",shape="box"];33 -> 187[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 187 -> 38[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 188[label="ww41/[]",fontsize=10,color="white",style="solid",shape="box"];33 -> 188[label="",style="solid", color="burlywood", weight=9]; 12.84/5.08 188 -> 39[label="",style="solid", color="burlywood", weight=3]; 12.84/5.08 155[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) (primCmpNat (Succ ww200) (Succ ww210))",fontsize=16,color="black",shape="box"];155 -> 159[label="",style="solid", color="black", weight=3]; 12.84/5.08 156[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) (primCmpNat (Succ ww200) Zero)",fontsize=16,color="black",shape="box"];156 -> 160[label="",style="solid", color="black", weight=3]; 12.84/5.08 157[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) (primCmpNat Zero (Succ ww210))",fontsize=16,color="black",shape="box"];157 -> 161[label="",style="solid", color="black", weight=3]; 12.84/5.08 158[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) (primCmpNat Zero Zero)",fontsize=16,color="black",shape="box"];158 -> 162[label="",style="solid", color="black", weight=3]; 12.84/5.08 38[label="List.insertBy primCmpChar (Char (Succ ww300)) (ww410 : ww411)",fontsize=16,color="black",shape="box"];38 -> 45[label="",style="solid", color="black", weight=3]; 12.84/5.08 39[label="List.insertBy primCmpChar (Char (Succ ww300)) []",fontsize=16,color="black",shape="box"];39 -> 46[label="",style="solid", color="black", weight=3]; 12.84/5.08 159 -> 117[label="",style="dashed", color="red", weight=0]; 12.84/5.08 159[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) (primCmpNat ww200 ww210)",fontsize=16,color="magenta"];159 -> 163[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 159 -> 164[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 160[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) GT",fontsize=16,color="black",shape="box"];160 -> 165[label="",style="solid", color="black", weight=3]; 12.84/5.08 161[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) LT",fontsize=16,color="black",shape="box"];161 -> 166[label="",style="solid", color="black", weight=3]; 12.84/5.08 162[label="List.insertBy0 (Char (Succ ww17)) primCmpChar (Char (Succ ww18)) ww19 (Char (Succ ww17) : ww19) EQ",fontsize=16,color="black",shape="box"];162 -> 167[label="",style="solid", color="black", weight=3]; 12.84/5.08 45 -> 10[label="",style="dashed", color="red", weight=0]; 12.84/5.08 45[label="List.insertBy0 ww410 primCmpChar (Char (Succ ww300)) ww411 (ww410 : ww411) (primCmpChar (Char (Succ ww300)) ww410)",fontsize=16,color="magenta"];45 -> 52[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 45 -> 53[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 45 -> 54[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 46[label="Char (Succ ww300) : []",fontsize=16,color="green",shape="box"];163[label="ww200",fontsize=16,color="green",shape="box"];164[label="ww210",fontsize=16,color="green",shape="box"];165[label="Char (Succ ww17) : List.insertBy primCmpChar (Char (Succ ww18)) ww19",fontsize=16,color="green",shape="box"];165 -> 168[label="",style="dashed", color="green", weight=3]; 12.84/5.08 166[label="Char (Succ ww18) : Char (Succ ww17) : ww19",fontsize=16,color="green",shape="box"];167[label="Char (Succ ww18) : Char (Succ ww17) : ww19",fontsize=16,color="green",shape="box"];52[label="Char (Succ ww300)",fontsize=16,color="green",shape="box"];53[label="ww410",fontsize=16,color="green",shape="box"];54[label="ww411",fontsize=16,color="green",shape="box"];168 -> 33[label="",style="dashed", color="red", weight=0]; 12.84/5.08 168[label="List.insertBy primCmpChar (Char (Succ ww18)) ww19",fontsize=16,color="magenta"];168 -> 169[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 168 -> 170[label="",style="dashed", color="magenta", weight=3]; 12.84/5.08 169[label="ww18",fontsize=16,color="green",shape="box"];170[label="ww19",fontsize=16,color="green",shape="box"];} 12.84/5.08 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (8) 12.84/5.08 Obligation: 12.84/5.08 Q DP problem: 12.84/5.08 The TRS P consists of the following rules: 12.84/5.08 12.84/5.08 new_insertBy00(Char(Succ(ww4000)), Char(Succ(ww300)), ww41) -> new_insertBy0(ww4000, ww300, ww41, ww300, ww4000) 12.84/5.08 new_insertBy00(Char(Zero), Char(Succ(ww300)), :(ww410, ww411)) -> new_insertBy00(ww410, Char(Succ(ww300)), ww411) 12.84/5.08 new_insertBy0(ww17, ww18, ww19, Succ(ww200), Succ(ww210)) -> new_insertBy0(ww17, ww18, ww19, ww200, ww210) 12.84/5.08 new_insertBy0(ww17, ww18, ww19, Succ(ww200), Zero) -> new_insertBy(ww18, ww19) 12.84/5.08 new_insertBy(ww300, :(ww410, ww411)) -> new_insertBy00(ww410, Char(Succ(ww300)), ww411) 12.84/5.08 12.84/5.08 R is empty. 12.84/5.08 Q is empty. 12.84/5.08 We have to consider all minimal (P,Q,R)-chains. 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (9) QDPSizeChangeProof (EQUIVALENT) 12.84/5.08 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.84/5.08 12.84/5.08 From the DPs we obtained the following set of size-change graphs: 12.84/5.08 *new_insertBy00(Char(Succ(ww4000)), Char(Succ(ww300)), ww41) -> new_insertBy0(ww4000, ww300, ww41, ww300, ww4000) 12.84/5.08 The graph contains the following edges 1 > 1, 2 > 2, 3 >= 3, 2 > 4, 1 > 5 12.84/5.08 12.84/5.08 12.84/5.08 *new_insertBy00(Char(Zero), Char(Succ(ww300)), :(ww410, ww411)) -> new_insertBy00(ww410, Char(Succ(ww300)), ww411) 12.84/5.08 The graph contains the following edges 3 > 1, 2 >= 2, 3 > 3 12.84/5.08 12.84/5.08 12.84/5.08 *new_insertBy(ww300, :(ww410, ww411)) -> new_insertBy00(ww410, Char(Succ(ww300)), ww411) 12.84/5.08 The graph contains the following edges 2 > 1, 2 > 3 12.84/5.08 12.84/5.08 12.84/5.08 *new_insertBy0(ww17, ww18, ww19, Succ(ww200), Succ(ww210)) -> new_insertBy0(ww17, ww18, ww19, ww200, ww210) 12.84/5.08 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 > 5 12.84/5.08 12.84/5.08 12.84/5.08 *new_insertBy0(ww17, ww18, ww19, Succ(ww200), Zero) -> new_insertBy(ww18, ww19) 12.84/5.08 The graph contains the following edges 2 >= 1, 3 >= 2 12.84/5.08 12.84/5.08 12.84/5.08 ---------------------------------------- 12.84/5.08 12.84/5.08 (10) 12.84/5.08 YES 12.84/5.11 EOF