TRS: { sqr(0()) -> 0(), sqr(s(x)) -> +(sqr(x), s(double(x))), double(0()) -> 0(), double(s(x)) -> s(s(double(x))), +(x, 0()) -> x, +(x, s(y)) -> s(+(x, y)), sqr(s(x)) -> s(+(sqr(x), double(x)))} POP* + Boolean Semantic Labelling: Normal positions: pi(double_sl=1) = [1], pi(double_sl=0) = [1], pi(+_sl=1) = [1,2], pi(+_sl=0) = [2], pi(sqr_sl=1) = [1], pi(sqr_sl=0) = [1] Safe positions: pi(s_sl=1) = [1], pi(s_sl=0) = [1], pi(+_sl=0) = [1] Precedence: sqr_sl=0 > +_sl=0, sqr_sl=0 > s_sl=0, sqr_sl=0 > double_sl=0, +_sl=0 > s_sl=0, double_sl=0 > s_sl=0 empty Interpretation: 0^(0): | 0 sqr^(1): 0 | 0 1 | 0 +^(2): 00 | 0 01 | 0 10 | 1 11 | 0 s^(1): 0 | 0 1 | 1 double^(1): 0 | 0 1 | 0 Labelling: 0^(0): | 0 sqr^(1): 0 | 0 1 | 0 +^(2): 00 | 0 01 | 0 10 | 0 11 | 0 s^(1): 0 | 0 1 | 0 double^(1): 0 | 0 1 | 0 Labelled predicative System: { sqr_sl=0(0_sl=0();) -> 0_sl=0(), sqr_sl=0(s_sl=0(;x);) -> +_sl=0(s_sl=0(;double_sl=0(x;));sqr_sl=0(x;)), sqr_sl=0(s_sl=0(;x);) -> +_sl=0(s_sl=0(;double_sl=0(x;));sqr_sl=0(x;)), double_sl=0(0_sl=0();) -> 0_sl=0(), double_sl=0(s_sl=0(;x);) -> s_sl=0(;s_sl=0(;double_sl=0(x;))), double_sl=0(s_sl=0(;x);) -> s_sl=0(;s_sl=0(;double_sl=0(x;))), +_sl=0(0_sl=0();x) -> x, +_sl=0(0_sl=0();x) -> x, +_sl=0(s_sl=0(;y);x) -> s_sl=0(;+_sl=0(y;x)), +_sl=0(s_sl=0(;y);x) -> s_sl=0(;+_sl=0(y;x)), +_sl=0(s_sl=0(;y);x) -> s_sl=0(;+_sl=0(y;x)), +_sl=0(s_sl=0(;y);x) -> s_sl=0(;+_sl=0(y;x)), sqr_sl=0(s_sl=0(;x);) -> s_sl=0(;+_sl=0(double_sl=0(x;);sqr_sl=0(x;))), sqr_sl=0(s_sl=0(;x);) -> s_sl=0(;+_sl=0(double_sl=0(x;);sqr_sl=0(x;)))} Qed