YES Problem: nonZero(0()) -> false() nonZero(s(x)) -> true() p(s(0())) -> 0() p(s(s(x))) -> s(p(s(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: p#(s(s(x))) -> p#(s(x)) 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(s(0())) -> 0() p(s(s(x))) -> s(p(s(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)) TDG Processor: DPs: p#(s(s(x))) -> p#(s(x)) 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(s(0())) -> 0() p(s(s(x))) -> s(p(s(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)) graph: if#(true(),x,y) -> rand#(p(x),id_inc(y)) -> rand#(x,y) -> if#(nonZero(x),x,y) if#(true(),x,y) -> rand#(p(x),id_inc(y)) -> rand#(x,y) -> nonZero#(x) if#(true(),x,y) -> p#(x) -> p#(s(s(x))) -> p#(s(x)) rand#(x,y) -> if#(nonZero(x),x,y) -> if#(true(),x,y) -> rand#(p(x),id_inc(y)) rand#(x,y) -> if#(nonZero(x),x,y) -> if#(true(),x,y) -> p#(x) rand#(x,y) -> if#(nonZero(x),x,y) -> if#(true(),x,y) -> id_inc#(y) random#(x) -> rand#(x,0()) -> rand#(x,y) -> if#(nonZero(x),x,y) random#(x) -> rand#(x,0()) -> rand#(x,y) -> nonZero#(x) p#(s(s(x))) -> p#(s(x)) -> p#(s(s(x))) -> p#(s(x)) SCC Processor: #sccs: 2 #rules: 3 #arcs: 9/49 DPs: if#(true(),x,y) -> rand#(p(x),id_inc(y)) rand#(x,y) -> if#(nonZero(x),x,y) TRS: nonZero(0()) -> false() nonZero(s(x)) -> true() p(s(0())) -> 0() p(s(s(x))) -> s(p(s(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: if#(true(),x,y) -> rand#(p(x),id_inc(y)) rand#(x,y) -> if#(nonZero(x),x,y) TRS: id_inc(x) -> x id_inc(x) -> s(x) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) nonZero(0()) -> false() nonZero(s(x)) -> true() Arctic Interpretation Processor: dimension: 1 usable rules: p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) nonZero(0()) -> false() nonZero(s(x)) -> true() interpretation: [if#](x0, x1, x2) = x0 + x1 + 0, [rand#](x0, x1) = 1x0 + 2, [id_inc](x0) = x0 + 2, [p](x0) = -2x0 + 0, [true] = 2, [s](x0) = 2x0 + 4, [false] = 1, [nonZero](x0) = x0 + 0, [0] = 2 orientation: if#(true(),x,y) = x + 2 >= -1x + 2 = rand#(p(x),id_inc(y)) rand#(x,y) = 1x + 2 >= x + 0 = if#(nonZero(x),x,y) id_inc(x) = x + 2 >= x = x id_inc(x) = x + 2 >= 2x + 4 = s(x) p(s(0())) = 2 >= 2 = 0() p(s(s(x))) = 2x + 4 >= 2x + 4 = s(p(s(x))) nonZero(0()) = 2 >= 1 = false() nonZero(s(x)) = 2x + 4 >= 2 = true() problem: DPs: if#(true(),x,y) -> rand#(p(x),id_inc(y)) TRS: id_inc(x) -> x id_inc(x) -> s(x) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) nonZero(0()) -> false() nonZero(s(x)) -> true() Restore Modifier: DPs: if#(true(),x,y) -> rand#(p(x),id_inc(y)) TRS: nonZero(0()) -> false() nonZero(s(x)) -> true() p(s(0())) -> 0() p(s(s(x))) -> s(p(s(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)) SCC Processor: #sccs: 0 #rules: 0 #arcs: 2/1 DPs: p#(s(s(x))) -> p#(s(x)) TRS: nonZero(0()) -> false() nonZero(s(x)) -> true() p(s(0())) -> 0() p(s(s(x))) -> s(p(s(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)) Subterm Criterion Processor: simple projection: pi(p#) = 0 problem: DPs: TRS: nonZero(0()) -> false() nonZero(s(x)) -> true() p(s(0())) -> 0() p(s(s(x))) -> s(p(s(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)) Qed