YES Problem: purge(nil()) -> nil() purge(.(x,y)) -> .(x,purge(remove(x,y))) remove(x,nil()) -> nil() remove(x,.(y,z)) -> if(=(x,y),remove(x,z),.(y,remove(x,z))) Proof: DP Processor: DPs: purge#(.(x,y)) -> remove#(x,y) purge#(.(x,y)) -> purge#(remove(x,y)) remove#(x,.(y,z)) -> remove#(x,z) TRS: purge(nil()) -> nil() purge(.(x,y)) -> .(x,purge(remove(x,y))) remove(x,nil()) -> nil() remove(x,.(y,z)) -> if(=(x,y),remove(x,z),.(y,remove(x,z))) Usable Rule Processor: DPs: purge#(.(x,y)) -> remove#(x,y) purge#(.(x,y)) -> purge#(remove(x,y)) remove#(x,.(y,z)) -> remove#(x,z) TRS: f8(x,y) -> x f8(x,y) -> y remove(x,nil()) -> nil() remove(x,.(y,z)) -> if(=(x,y),remove(x,z),.(y,remove(x,z))) TDG Processor: DPs: purge#(.(x,y)) -> remove#(x,y) purge#(.(x,y)) -> purge#(remove(x,y)) remove#(x,.(y,z)) -> remove#(x,z) TRS: f8(x,y) -> x f8(x,y) -> y remove(x,nil()) -> nil() remove(x,.(y,z)) -> if(=(x,y),remove(x,z),.(y,remove(x,z))) graph: remove#(x,.(y,z)) -> remove#(x,z) -> remove#(x,.(y,z)) -> remove#(x,z) purge#(.(x,y)) -> remove#(x,y) -> remove#(x,.(y,z)) -> remove#(x,z) purge#(.(x,y)) -> purge#(remove(x,y)) -> purge#(.(x,y)) -> purge#(remove(x,y)) purge#(.(x,y)) -> purge#(remove(x,y)) -> purge#(.(x,y)) -> remove#(x,y) CDG Processor: DPs: purge#(.(x,y)) -> remove#(x,y) purge#(.(x,y)) -> purge#(remove(x,y)) remove#(x,.(y,z)) -> remove#(x,z) TRS: f8(x,y) -> x f8(x,y) -> y remove(x,nil()) -> nil() remove(x,.(y,z)) -> if(=(x,y),remove(x,z),.(y,remove(x,z))) graph: remove#(x,.(y,z)) -> remove#(x,z) -> remove#(x,.(y,z)) -> remove#(x,z) purge#(.(x,y)) -> remove#(x,y) -> remove#(x,.(y,z)) -> remove#(x,z) Restore Modifier: DPs: purge#(.(x,y)) -> remove#(x,y) purge#(.(x,y)) -> purge#(remove(x,y)) remove#(x,.(y,z)) -> remove#(x,z) TRS: purge(nil()) -> nil() purge(.(x,y)) -> .(x,purge(remove(x,y))) remove(x,nil()) -> nil() remove(x,.(y,z)) -> if(=(x,y),remove(x,z),.(y,remove(x,z))) SCC Processor: #sccs: 1 #rules: 1 #arcs: 2/9 DPs: remove#(x,.(y,z)) -> remove#(x,z) TRS: purge(nil()) -> nil() purge(.(x,y)) -> .(x,purge(remove(x,y))) remove(x,nil()) -> nil() remove(x,.(y,z)) -> if(=(x,y),remove(x,z),.(y,remove(x,z))) Matrix Interpretation Processor: dimension: 1 interpretation: [remove#](x0, x1) = x1 + 1, [if](x0, x1, x2) = x1 + 1, [=](x0, x1) = 0, [remove](x0, x1) = x1, [.](x0, x1) = x1 + 1, [purge](x0) = x0, [nil] = 0 orientation: remove#(x,.(y,z)) = z + 2 >= z + 1 = remove#(x,z) purge(nil()) = 0 >= 0 = nil() purge(.(x,y)) = y + 1 >= y + 1 = .(x,purge(remove(x,y))) remove(x,nil()) = 0 >= 0 = nil() remove(x,.(y,z)) = z + 1 >= z + 1 = if(=(x,y),remove(x,z),.(y,remove(x,z))) problem: DPs: TRS: purge(nil()) -> nil() purge(.(x,y)) -> .(x,purge(remove(x,y))) remove(x,nil()) -> nil() remove(x,.(y,z)) -> if(=(x,y),remove(x,z),.(y,remove(x,z))) Qed