YES Problem: f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) if(true(),s(x),s(y)) -> s(x) if(false(),s(x),s(y)) -> s(y) g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) Proof: DP Processor: DPs: f#(s(x)) -> f#(x) g#(x,c(y)) -> g#(x,y) g#(x,c(y)) -> g#(s(x),y) g#(x,c(y)) -> f#(x) g#(x,c(y)) -> if#(f(x),c(g(s(x),y)),c(y)) g#(x,c(y)) -> g#(x,if(f(x),c(g(s(x),y)),c(y))) TRS: f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) if(true(),s(x),s(y)) -> s(x) if(false(),s(x),s(y)) -> s(y) g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) Usable Rule Processor: DPs: f#(s(x)) -> f#(x) g#(x,c(y)) -> g#(x,y) g#(x,c(y)) -> g#(s(x),y) g#(x,c(y)) -> f#(x) g#(x,c(y)) -> if#(f(x),c(g(s(x),y)),c(y)) g#(x,c(y)) -> g#(x,if(f(x),c(g(s(x),y)),c(y))) TRS: f12(x,y) -> x f12(x,y) -> y g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) CDG Processor: DPs: f#(s(x)) -> f#(x) g#(x,c(y)) -> g#(x,y) g#(x,c(y)) -> g#(s(x),y) g#(x,c(y)) -> f#(x) g#(x,c(y)) -> if#(f(x),c(g(s(x),y)),c(y)) g#(x,c(y)) -> g#(x,if(f(x),c(g(s(x),y)),c(y))) TRS: f12(x,y) -> x f12(x,y) -> y g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) graph: g#(x,c(y)) -> g#(s(x),y) -> g#(x,c(y)) -> g#(x,y) g#(x,c(y)) -> g#(s(x),y) -> g#(x,c(y)) -> g#(s(x),y) g#(x,c(y)) -> g#(s(x),y) -> g#(x,c(y)) -> f#(x) g#(x,c(y)) -> g#(s(x),y) -> g#(x,c(y)) -> if#(f(x),c(g(s(x),y)),c(y)) g#(x,c(y)) -> g#(s(x),y) -> g#(x,c(y)) -> g#(x,if(f(x),c(g(s(x),y)),c(y))) g#(x,c(y)) -> g#(x,y) -> g#(x,c(y)) -> g#(x,y) g#(x,c(y)) -> g#(x,y) -> g#(x,c(y)) -> g#(s(x),y) g#(x,c(y)) -> g#(x,y) -> g#(x,c(y)) -> f#(x) g#(x,c(y)) -> g#(x,y) -> g#(x,c(y)) -> if#(f(x),c(g(s(x),y)),c(y)) g#(x,c(y)) -> g#(x,y) -> g#(x,c(y)) -> g#(x,if(f(x),c(g(s(x),y)),c(y))) g#(x,c(y)) -> f#(x) -> f#(s(x)) -> f#(x) f#(s(x)) -> f#(x) -> f#(s(x)) -> f#(x) Restore Modifier: DPs: f#(s(x)) -> f#(x) g#(x,c(y)) -> g#(x,y) g#(x,c(y)) -> g#(s(x),y) g#(x,c(y)) -> f#(x) g#(x,c(y)) -> if#(f(x),c(g(s(x),y)),c(y)) g#(x,c(y)) -> g#(x,if(f(x),c(g(s(x),y)),c(y))) TRS: f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) if(true(),s(x),s(y)) -> s(x) if(false(),s(x),s(y)) -> s(y) g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) SCC Processor: #sccs: 2 #rules: 3 #arcs: 12/36 DPs: g#(x,c(y)) -> g#(s(x),y) g#(x,c(y)) -> g#(x,y) TRS: f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) if(true(),s(x),s(y)) -> s(x) if(false(),s(x),s(y)) -> s(y) g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) Matrix Interpretation Processor: dimension: 1 interpretation: [g#](x0, x1) = x0 + x1, [g](x0, x1) = x0 + x1 + 1, [c](x0) = x0 + 1, [if](x0, x1, x2) = x2, [s](x0) = 1, [false] = 0, [1] = 0, [true] = 0, [f](x0) = 0, [0] = 0 orientation: g#(x,c(y)) = x + y + 1 >= y + 1 = g#(s(x),y) g#(x,c(y)) = x + y + 1 >= x + y = g#(x,y) f(0()) = 0 >= 0 = true() f(1()) = 0 >= 0 = false() f(s(x)) = 0 >= 0 = f(x) if(true(),s(x),s(y)) = 1 >= 1 = s(x) if(false(),s(x),s(y)) = 1 >= 1 = s(y) g(x,c(y)) = x + y + 2 >= x + y + 2 = c(g(x,y)) g(x,c(y)) = x + y + 2 >= x + y + 2 = g(x,if(f(x),c(g(s(x),y)),c(y))) problem: DPs: g#(x,c(y)) -> g#(s(x),y) TRS: f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) if(true(),s(x),s(y)) -> s(x) if(false(),s(x),s(y)) -> s(y) g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) Matrix Interpretation Processor: dimension: 1 interpretation: [g#](x0, x1) = x1, [g](x0, x1) = x1 + 1, [c](x0) = x0 + 1, [if](x0, x1, x2) = 0, [s](x0) = 0, [false] = 0, [1] = 0, [true] = 0, [f](x0) = 0, [0] = 0 orientation: g#(x,c(y)) = y + 1 >= y = g#(s(x),y) f(0()) = 0 >= 0 = true() f(1()) = 0 >= 0 = false() f(s(x)) = 0 >= 0 = f(x) if(true(),s(x),s(y)) = 0 >= 0 = s(x) if(false(),s(x),s(y)) = 0 >= 0 = s(y) g(x,c(y)) = y + 2 >= y + 2 = c(g(x,y)) g(x,c(y)) = y + 2 >= 1 = g(x,if(f(x),c(g(s(x),y)),c(y))) problem: DPs: TRS: f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) if(true(),s(x),s(y)) -> s(x) if(false(),s(x),s(y)) -> s(y) g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) Qed DPs: f#(s(x)) -> f#(x) TRS: f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) if(true(),s(x),s(y)) -> s(x) if(false(),s(x),s(y)) -> s(y) g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) Matrix Interpretation Processor: dimension: 1 interpretation: [f#](x0) = x0 + 1, [g](x0, x1) = 0, [c](x0) = 0, [if](x0, x1, x2) = x0 + x1 + x2, [s](x0) = x0 + 1, [false] = 1, [1] = 1, [true] = 1, [f](x0) = x0, [0] = 1 orientation: f#(s(x)) = x + 2 >= x + 1 = f#(x) f(0()) = 1 >= 1 = true() f(1()) = 1 >= 1 = false() f(s(x)) = x + 1 >= x = f(x) if(true(),s(x),s(y)) = x + y + 3 >= x + 1 = s(x) if(false(),s(x),s(y)) = x + y + 3 >= y + 1 = s(y) g(x,c(y)) = 0 >= 0 = c(g(x,y)) g(x,c(y)) = 0 >= 0 = g(x,if(f(x),c(g(s(x),y)),c(y))) problem: DPs: TRS: f(0()) -> true() f(1()) -> false() f(s(x)) -> f(x) if(true(),s(x),s(y)) -> s(x) if(false(),s(x),s(y)) -> s(y) g(x,c(y)) -> c(g(x,y)) g(x,c(y)) -> g(x,if(f(x),c(g(s(x),y)),c(y))) Qed