MAYBE Problem: f(true(),x,y) -> f(gt(x,y),trunc(x),s(y)) trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Proof: DP Processor: DPs: f#(true(),x,y) -> trunc#(x) f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),trunc(x),s(y)) trunc#(s(s(x))) -> trunc#(x) gt#(s(u),s(v)) -> gt#(u,v) TRS: f(true(),x,y) -> f(gt(x,y),trunc(x),s(y)) trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Usable Rule Processor: DPs: f#(true(),x,y) -> trunc#(x) f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),trunc(x),s(y)) trunc#(s(s(x))) -> trunc#(x) gt#(s(u),s(v)) -> gt#(u,v) TRS: f10(x,y) -> x f10(x,y) -> y trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) CDG Processor: DPs: f#(true(),x,y) -> trunc#(x) f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),trunc(x),s(y)) trunc#(s(s(x))) -> trunc#(x) gt#(s(u),s(v)) -> gt#(u,v) TRS: f10(x,y) -> x f10(x,y) -> y trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) graph: gt#(s(u),s(v)) -> gt#(u,v) -> gt#(s(u),s(v)) -> gt#(u,v) trunc#(s(s(x))) -> trunc#(x) -> trunc#(s(s(x))) -> trunc#(x) f#(true(),x,y) -> gt#(x,y) -> gt#(s(u),s(v)) -> gt#(u,v) f#(true(),x,y) -> trunc#(x) -> trunc#(s(s(x))) -> trunc#(x) f#(true(),x,y) -> f#(gt(x,y),trunc(x),s(y)) -> f#(true(),x,y) -> trunc#(x) f#(true(),x,y) -> f#(gt(x,y),trunc(x),s(y)) -> f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),trunc(x),s(y)) -> f#(true(),x,y) -> f#(gt(x,y),trunc(x),s(y)) Restore Modifier: DPs: f#(true(),x,y) -> trunc#(x) f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),trunc(x),s(y)) trunc#(s(s(x))) -> trunc#(x) gt#(s(u),s(v)) -> gt#(u,v) TRS: f(true(),x,y) -> f(gt(x,y),trunc(x),s(y)) trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) SCC Processor: #sccs: 3 #rules: 3 #arcs: 7/25 DPs: f#(true(),x,y) -> f#(gt(x,y),trunc(x),s(y)) TRS: f(true(),x,y) -> f(gt(x,y),trunc(x),s(y)) trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Open DPs: trunc#(s(s(x))) -> trunc#(x) TRS: f(true(),x,y) -> f(gt(x,y),trunc(x),s(y)) trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Matrix Interpretation Processor: dimension: 1 interpretation: [trunc#](x0) = x0, [false] = 0, [0] = 1, [s](x0) = x0 + 1, [trunc](x0) = x0, [gt](x0, x1) = x0, [f](x0, x1, x2) = 0, [true] = 1 orientation: trunc#(s(s(x))) = x + 2 >= x = trunc#(x) f(true(),x,y) = 0 >= 0 = f(gt(x,y),trunc(x),s(y)) trunc(0()) = 1 >= 1 = 0() trunc(s(0())) = 2 >= 1 = 0() trunc(s(s(x))) = x + 2 >= x + 2 = s(s(trunc(x))) gt(0(),v) = 1 >= 0 = false() gt(s(u),0()) = u + 1 >= 1 = true() gt(s(u),s(v)) = u + 1 >= u = gt(u,v) problem: DPs: TRS: f(true(),x,y) -> f(gt(x,y),trunc(x),s(y)) trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Qed DPs: gt#(s(u),s(v)) -> gt#(u,v) TRS: f(true(),x,y) -> f(gt(x,y),trunc(x),s(y)) trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Matrix Interpretation Processor: dimension: 1 interpretation: [gt#](x0, x1) = x0 + 1, [false] = 0, [0] = 0, [s](x0) = x0 + 1, [trunc](x0) = x0, [gt](x0, x1) = x1 + 1, [f](x0, x1, x2) = 0, [true] = 0 orientation: gt#(s(u),s(v)) = u + 2 >= u + 1 = gt#(u,v) f(true(),x,y) = 0 >= 0 = f(gt(x,y),trunc(x),s(y)) trunc(0()) = 0 >= 0 = 0() trunc(s(0())) = 1 >= 0 = 0() trunc(s(s(x))) = x + 2 >= x + 2 = s(s(trunc(x))) gt(0(),v) = v + 1 >= 0 = false() gt(s(u),0()) = 1 >= 0 = true() gt(s(u),s(v)) = v + 2 >= v + 1 = gt(u,v) problem: DPs: TRS: f(true(),x,y) -> f(gt(x,y),trunc(x),s(y)) trunc(0()) -> 0() trunc(s(0())) -> 0() trunc(s(s(x))) -> s(s(trunc(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Qed