MAYBE Problem: f(true(),x,y) -> f(gt(x,y),x,round(s(y))) round(0()) -> 0() round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(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) -> round#(s(y)) f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),x,round(s(y))) round#(s(s(x))) -> round#(x) gt#(s(u),s(v)) -> gt#(u,v) TRS: f(true(),x,y) -> f(gt(x,y),x,round(s(y))) round(0()) -> 0() round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(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) -> round#(s(y)) f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),x,round(s(y))) round#(s(s(x))) -> round#(x) gt#(s(u),s(v)) -> gt#(u,v) TRS: f10(x,y) -> x f10(x,y) -> y round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(x))) round(0()) -> 0() gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) CDG Processor: DPs: f#(true(),x,y) -> round#(s(y)) f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),x,round(s(y))) round#(s(s(x))) -> round#(x) gt#(s(u),s(v)) -> gt#(u,v) TRS: f10(x,y) -> x f10(x,y) -> y round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(x))) round(0()) -> 0() 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) round#(s(s(x))) -> round#(x) -> round#(s(s(x))) -> round#(x) f#(true(),x,y) -> gt#(x,y) -> gt#(s(u),s(v)) -> gt#(u,v) f#(true(),x,y) -> round#(s(y)) -> round#(s(s(x))) -> round#(x) f#(true(),x,y) -> f#(gt(x,y),x,round(s(y))) -> f#(true(),x,y) -> round#(s(y)) f#(true(),x,y) -> f#(gt(x,y),x,round(s(y))) -> f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),x,round(s(y))) -> f#(true(),x,y) -> f#(gt(x,y),x,round(s(y))) Restore Modifier: DPs: f#(true(),x,y) -> round#(s(y)) f#(true(),x,y) -> gt#(x,y) f#(true(),x,y) -> f#(gt(x,y),x,round(s(y))) round#(s(s(x))) -> round#(x) gt#(s(u),s(v)) -> gt#(u,v) TRS: f(true(),x,y) -> f(gt(x,y),x,round(s(y))) round(0()) -> 0() round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(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),x,round(s(y))) TRS: f(true(),x,y) -> f(gt(x,y),x,round(s(y))) round(0()) -> 0() round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Open DPs: round#(s(s(x))) -> round#(x) TRS: f(true(),x,y) -> f(gt(x,y),x,round(s(y))) round(0()) -> 0() round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Matrix Interpretation Processor: dimension: 1 interpretation: [round#](x0) = x0, [false] = 0, [0] = 0, [round](x0) = x0 + 1, [s](x0) = x0 + 1, [gt](x0, x1) = 0, [f](x0, x1, x2) = 0, [true] = 0 orientation: round#(s(s(x))) = x + 2 >= x = round#(x) f(true(),x,y) = 0 >= 0 = f(gt(x,y),x,round(s(y))) round(0()) = 1 >= 0 = 0() round(s(0())) = 2 >= 2 = s(s(0())) round(s(s(x))) = x + 3 >= x + 3 = s(s(round(x))) gt(0(),v) = 0 >= 0 = false() gt(s(u),0()) = 0 >= 0 = true() gt(s(u),s(v)) = 0 >= 0 = gt(u,v) problem: DPs: TRS: f(true(),x,y) -> f(gt(x,y),x,round(s(y))) round(0()) -> 0() round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(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),x,round(s(y))) round(0()) -> 0() round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(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, [round](x0) = x0 + 1, [s](x0) = x0 + 1, [gt](x0, x1) = x1, [f](x0, x1, x2) = x1, [true] = 0 orientation: gt#(s(u),s(v)) = u + 2 >= u + 1 = gt#(u,v) f(true(),x,y) = x >= x = f(gt(x,y),x,round(s(y))) round(0()) = 1 >= 0 = 0() round(s(0())) = 2 >= 2 = s(s(0())) round(s(s(x))) = x + 3 >= x + 3 = s(s(round(x))) gt(0(),v) = v >= 0 = false() gt(s(u),0()) = 0 >= 0 = true() gt(s(u),s(v)) = v + 1 >= v = gt(u,v) problem: DPs: TRS: f(true(),x,y) -> f(gt(x,y),x,round(s(y))) round(0()) -> 0() round(s(0())) -> s(s(0())) round(s(s(x))) -> s(s(round(x))) gt(0(),v) -> false() gt(s(u),0()) -> true() gt(s(u),s(v)) -> gt(u,v) Qed