The rewrite relation of the following TRS is considered.
plus(0,y) | → | y | (1) |
plus(s(x),y) | → | s(plus(x,y)) | (2) |
times(0,y) | → | 0 | (3) |
times(s(x),y) | → | plus(y,times(x,y)) | (4) |
eq_nat(0,s(y)) | → | false | (5) |
eq_nat(0,0) | → | true | (6) |
eq_nat(s(x),s(y)) | → | eq_nat(x,y) | (7) |
eq_nat(s(x),0) | → | false | (8) |
eq_rat(pair(a,b),pair(c,d)) | → | eq_nat(times(a,d),times(b,c)) | (9) |
div_rat(pair(a,b),pair(c,d)) | → | pair(times(a,d),times(b,c)) | (10) |
times_rat(pair(a,b),pair(c,d)) | → | pair(times(a,c),times(b,d)) | (11) |
plus_rat(pair(a,b),pair(c,d)) | → | pair(plus(times(a,d),times(c,b)),times(b,d)) | (12) |
non_zero_rat(pair(a,b)) | → | non_zero_nat(times(a,b)) | (13) |
non_zero_nat(s(0)) | → | true | (14) |
non_zero_nat(0) | → | false | (15) |
non_zero_nat(s(s(x))) | → | non_zero_nat(s(x)) | (16) |
2 | → | pair(s(s(0)),s(0)) | (17) |
minus_nat(s(x),s(y)) | → | minus_nat(x,y) | (18) |
sqrt2(r) | → | if_approx(non_zero_rat(r),eq_rat(2,times_rat(r,r)),r) | (19) |
if_approx(true,true,r) | → | r | (20) |
if_approx(true,false,r) | → | sqrt2(div_rat(plus_rat(r,div_rat(2,r)),2)) | (21) |
init | → | sqrt2(2) | (22) |
run_again(x) | → | run_again(init) | (23) |
plus#(s(x),y) | → | plus#(x,y) | (24) |
times#(s(x),y) | → | plus#(y,times(x,y)) | (25) |
times#(s(x),y) | → | times#(x,y) | (26) |
eq_nat#(s(x),s(y)) | → | eq_nat#(x,y) | (27) |
eq_rat#(pair(a,b),pair(c,d)) | → | eq_nat#(times(a,d),times(b,c)) | (28) |
eq_rat#(pair(a,b),pair(c,d)) | → | times#(a,d) | (29) |
eq_rat#(pair(a,b),pair(c,d)) | → | times#(b,c) | (30) |
div_rat#(pair(a,b),pair(c,d)) | → | times#(a,d) | (31) |
div_rat#(pair(a,b),pair(c,d)) | → | times#(b,c) | (32) |
times_rat#(pair(a,b),pair(c,d)) | → | times#(a,c) | (33) |
times_rat#(pair(a,b),pair(c,d)) | → | times#(b,d) | (34) |
plus_rat#(pair(a,b),pair(c,d)) | → | plus#(times(a,d),times(c,b)) | (35) |
plus_rat#(pair(a,b),pair(c,d)) | → | times#(a,d) | (36) |
plus_rat#(pair(a,b),pair(c,d)) | → | times#(c,b) | (37) |
plus_rat#(pair(a,b),pair(c,d)) | → | times#(b,d) | (38) |
non_zero_rat#(pair(a,b)) | → | non_zero_nat#(times(a,b)) | (39) |
non_zero_rat#(pair(a,b)) | → | times#(a,b) | (40) |
non_zero_nat#(s(s(x))) | → | non_zero_nat#(s(x)) | (41) |
minus_nat#(s(x),s(y)) | → | minus_nat#(x,y) | (42) |
sqrt2#(r) | → | if_approx#(non_zero_rat(r),eq_rat(2,times_rat(r,r)),r) | (43) |
sqrt2#(r) | → | non_zero_rat#(r) | (44) |
sqrt2#(r) | → | eq_rat#(2,times_rat(r,r)) | (45) |
sqrt2#(r) | → | 2# | (46) |
sqrt2#(r) | → | times_rat#(r,r) | (47) |
if_approx#(true,false,r) | → | sqrt2#(div_rat(plus_rat(r,div_rat(2,r)),2)) | (48) |
if_approx#(true,false,r) | → | div_rat#(plus_rat(r,div_rat(2,r)),2) | (49) |
if_approx#(true,false,r) | → | plus_rat#(r,div_rat(2,r)) | (50) |
if_approx#(true,false,r) | → | div_rat#(2,r) | (51) |
if_approx#(true,false,r) | → | 2# | (52) |
init# | → | sqrt2#(2) | (53) |
init# | → | 2# | (54) |
run_again#(x) | → | run_again#(init) | (55) |
run_again#(x) | → | init# | (56) |
plus#(s(x),y) | → | plus#(x,y) | (24) |
times#(s(x),y) | → | plus#(y,times(x,y)) | (25) |
times#(s(x),y) | → | times#(x,y) | (26) |
eq_nat#(s(x),s(y)) | → | eq_nat#(x,y) | (27) |
eq_rat#(pair(a,b),pair(c,d)) | → | eq_nat#(times(a,d),times(b,c)) | (28) |
eq_rat#(pair(a,b),pair(c,d)) | → | times#(a,d) | (29) |
eq_rat#(pair(a,b),pair(c,d)) | → | times#(b,c) | (30) |
div_rat#(pair(a,b),pair(c,d)) | → | times#(a,d) | (31) |
div_rat#(pair(a,b),pair(c,d)) | → | times#(b,c) | (32) |
times_rat#(pair(a,b),pair(c,d)) | → | times#(a,c) | (33) |
times_rat#(pair(a,b),pair(c,d)) | → | times#(b,d) | (34) |
plus_rat#(pair(a,b),pair(c,d)) | → | plus#(times(a,d),times(c,b)) | (35) |
plus_rat#(pair(a,b),pair(c,d)) | → | times#(a,d) | (36) |
plus_rat#(pair(a,b),pair(c,d)) | → | times#(c,b) | (37) |
plus_rat#(pair(a,b),pair(c,d)) | → | times#(b,d) | (38) |
non_zero_rat#(pair(a,b)) | → | non_zero_nat#(times(a,b)) | (39) |
non_zero_rat#(pair(a,b)) | → | times#(a,b) | (40) |
non_zero_nat#(s(s(x))) | → | non_zero_nat#(s(x)) | (41) |
minus_nat#(s(x),s(y)) | → | minus_nat#(x,y) | (42) |
sqrt2#(r) | → | if_approx#(non_zero_rat(r),eq_rat(2,times_rat(r,r)),r) | (43) |
sqrt2#(r) | → | non_zero_rat#(r) | (44) |
sqrt2#(r) | → | eq_rat#(2,times_rat(r,r)) | (45) |
sqrt2#(r) | → | 2# | (46) |
sqrt2#(r) | → | times_rat#(r,r) | (47) |
if_approx#(true,false,r) | → | sqrt2#(div_rat(plus_rat(r,div_rat(2,r)),2)) | (48) |
if_approx#(true,false,r) | → | div_rat#(plus_rat(r,div_rat(2,r)),2) | (49) |
if_approx#(true,false,r) | → | plus_rat#(r,div_rat(2,r)) | (50) |
if_approx#(true,false,r) | → | div_rat#(2,r) | (51) |
if_approx#(true,false,r) | → | 2# | (52) |
init# | → | sqrt2#(2) | (53) |
init# | → | 2# | (54) |
run_again#(x) | → | init# | (56) |
minus_nat(s(x),s(y)) | → | minus_nat(x,y) | (18) |
run_again(x) | → | run_again(init) | (23) |
We restrict the innermost strategy to the following left hand sides.
plus(0,x0) |
plus(s(x0),x1) |
times(0,x0) |
times(s(x0),x1) |
eq_nat(0,s(x0)) |
eq_nat(0,0) |
eq_nat(s(x0),s(x1)) |
eq_nat(s(x0),0) |
eq_rat(pair(x0,x1),pair(x2,x3)) |
div_rat(pair(x0,x1),pair(x2,x3)) |
times_rat(pair(x0,x1),pair(x2,x3)) |
plus_rat(pair(x0,x1),pair(x2,x3)) |
non_zero_rat(pair(x0,x1)) |
non_zero_nat(s(0)) |
non_zero_nat(0) |
non_zero_nat(s(s(x0))) |
2 |
sqrt2(x0) |
if_approx(true,true,x0) |
if_approx(true,false,x0) |
init |
→ |
init | → | sqrt2(2) | (22) |
We restrict the innermost strategy to the following left hand sides.
plus(0,x0) |
plus(s(x0),x1) |
times(0,x0) |
times(s(x0),x1) |
eq_nat(0,s(x0)) |
eq_nat(0,0) |
eq_nat(s(x0),s(x1)) |
eq_nat(s(x0),0) |
eq_rat(pair(x0,x1),pair(x2,x3)) |
div_rat(pair(x0,x1),pair(x2,x3)) |
times_rat(pair(x0,x1),pair(x2,x3)) |
plus_rat(pair(x0,x1),pair(x2,x3)) |
non_zero_rat(pair(x0,x1)) |
non_zero_nat(s(0)) |
non_zero_nat(0) |
non_zero_nat(s(s(x0))) |
2 |
sqrt2(x0) |
if_approx(true,true,x0) |
if_approx(true,false,x0) |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
→ |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),2)),eq_rat(2,times_rat(div_rat(plus_rat(2,div_rat(2,2)),2),div_rat(plus_rat(2,div_rat(2,2)),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (107) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(2,times_rat(div_rat(plus_rat(2,div_rat(2,2)),2),div_rat(plus_rat(2,div_rat(2,2)),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (108) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(2,div_rat(2,2)),2),div_rat(plus_rat(2,div_rat(2,2)),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (109) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(2,2)),2),div_rat(plus_rat(2,div_rat(2,2)),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (110) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),2)),2),div_rat(plus_rat(2,div_rat(2,2)),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (111) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),2),div_rat(plus_rat(2,div_rat(2,2)),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (112) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(2,div_rat(2,2)),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (113) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(2,2)),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (114) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),2)),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (115) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),2))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (116) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))))),div_rat(plus_rat(2,div_rat(2,2)),2))) | (117) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(2,2)),2))) | (118) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),2)),2))) | (119) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),2))) | (120) |
run_again#(y0) | → | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))))) | (121) |
t0 | = | run_again#(y0) |
→P | run_again#(if_approx(non_zero_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0)))),eq_rat(pair(s(s(0)),s(0)),times_rat(div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))))),div_rat(plus_rat(pair(s(s(0)),s(0)),div_rat(pair(s(s(0)),s(0)),pair(s(s(0)),s(0)))),pair(s(s(0)),s(0))))) | |
= | t1 |