YES 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)))} DP: Strict: { purge#(.(x, y)) -> purge#(remove(x, y)), purge#(.(x, y)) -> remove#(x, y), remove#(x, .(y, z)) -> remove#(x, z)} Weak: { 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)))} EDG: {(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))} SCCS: Scc: {remove#(x, .(y, z)) -> remove#(x, z)} Scc: {purge#(.(x, y)) -> purge#(remove(x, y))} SCC: Strict: {remove#(x, .(y, z)) -> remove#(x, z)} Weak: { 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)))} SPSC: Simple Projection: pi(remove#) = 1 Strict: {} Qed SCC: Strict: {purge#(.(x, y)) -> purge#(remove(x, y))} Weak: { 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)))} POLY: Argument Filtering: pi(=) = [], pi(if) = [], pi(remove) = [], pi(.) = [], pi(purge#) = 0, pi(purge) = [], pi(nil) = [] Usable Rules: {} Interpretation: [remove] = 0, [.] = 1 Strict: {} Weak: { 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