YES Problem: nonZero(0()) -> false() nonZero(s(x)) -> true() p(0()) -> 0() p(s(x)) -> x id_inc(x) -> x id_inc(x) -> s(x) random(x) -> rand(x,0()) rand(x,y) -> if(nonZero(x),x,y) if(false(),x,y) -> y if(true(),x,y) -> rand(p(x),id_inc(y)) Proof: DP Processor: DPs: random#(x) -> rand#(x,0()) rand#(x,y) -> nonZero#(x) rand#(x,y) -> if#(nonZero(x),x,y) if#(true(),x,y) -> id_inc#(y) if#(true(),x,y) -> p#(x) if#(true(),x,y) -> rand#(p(x),id_inc(y)) TRS: nonZero(0()) -> false() nonZero(s(x)) -> true() p(0()) -> 0() p(s(x)) -> x id_inc(x) -> x id_inc(x) -> s(x) random(x) -> rand(x,0()) rand(x,y) -> if(nonZero(x),x,y) if(false(),x,y) -> y if(true(),x,y) -> rand(p(x),id_inc(y)) Usable Rule Processor: DPs: random#(x) -> rand#(x,0()) rand#(x,y) -> nonZero#(x) rand#(x,y) -> if#(nonZero(x),x,y) if#(true(),x,y) -> id_inc#(y) if#(true(),x,y) -> p#(x) if#(true(),x,y) -> rand#(p(x),id_inc(y)) TRS: nonZero(0()) -> false() nonZero(s(x)) -> true() id_inc(x) -> x id_inc(x) -> s(x) p(0()) -> 0() p(s(x)) -> x Arctic Interpretation Processor: dimension: 1 usable rules: nonZero(0()) -> false() nonZero(s(x)) -> true() p(0()) -> 0() p(s(x)) -> x interpretation: [if#](x0, x1, x2) = -3x0 + x1, [rand#](x0, x1) = 1x0 + 0, [random#](x0) = 6x0 + 10, [id_inc#](x0) = 2, [p#](x0) = -14x0 + 1, [nonZero#](x0) = x0, [id_inc](x0) = 2x0 + 2, [p](x0) = -6x0 + 1, [true] = 6, [s](x0) = 10x0 + 4, [false] = 2, [nonZero](x0) = 3x0, [0] = 0 orientation: random#(x) = 6x + 10 >= 1x + 0 = rand#(x,0()) rand#(x,y) = 1x + 0 >= x = nonZero#(x) rand#(x,y) = 1x + 0 >= x = if#(nonZero(x),x,y) if#(true(),x,y) = x + 3 >= 2 = id_inc#(y) if#(true(),x,y) = x + 3 >= -14x + 1 = p#(x) if#(true(),x,y) = x + 3 >= -5x + 2 = rand#(p(x),id_inc(y)) nonZero(0()) = 3 >= 2 = false() nonZero(s(x)) = 13x + 7 >= 6 = true() id_inc(x) = 2x + 2 >= x = x id_inc(x) = 2x + 2 >= 10x + 4 = s(x) p(0()) = 1 >= 0 = 0() p(s(x)) = 4x + 1 >= x = x problem: DPs: TRS: nonZero(0()) -> false() nonZero(s(x)) -> true() id_inc(x) -> x id_inc(x) -> s(x) p(0()) -> 0() p(s(x)) -> x Qed