lt0(Nil,Cons(x',xs)) |
→ |
True |
(1) |
lt0(Cons(x',xs'),Cons(x,xs)) |
→ |
lt0(xs',xs) |
(2) |
g(x,Nil) |
→ |
Cons(Nil,Cons(Nil,Cons(Nil,Cons(Nil,Nil)))) |
(3) |
f(x,Nil) |
→ |
Cons(Nil,Cons(Nil,Cons(Nil,Cons(Nil,Nil)))) |
(4) |
notEmpty(Cons(x,xs)) |
→ |
True |
(5) |
notEmpty(Nil) |
→ |
False |
(6) |
lt0(x,Nil) |
→ |
False |
(7) |
g(x,Cons(x',xs)) |
→ |
g[Ite][False][Ite](lt0(x,Cons(Nil,Nil)),x,Cons(x',xs)) |
(8) |
f(x,Cons(x',xs)) |
→ |
f[Ite][False][Ite](lt0(x,Cons(Nil,Nil)),x,Cons(x',xs)) |
(9) |
number4(n) |
→ |
Cons(Nil,Cons(Nil,Cons(Nil,Cons(Nil,Nil)))) |
(10) |
goal(x,y) |
→ |
Cons(f(x,y),Cons(g(x,y),Nil)) |
(11) |
and S is the following TRS.
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
|
originates from |
lt0(Nil,Cons(z0,z1)) |
→ |
True |
(16) |
|
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
|
originates from |
lt0(Cons(z0,z1),Cons(z2,z3)) |
→ |
lt0(z1,z3) |
(18) |
|
|
originates from |
|
|
originates from |
g(z0,Nil) |
→ |
Cons(Nil,Cons(Nil,Cons(Nil,Cons(Nil,Nil)))) |
(22) |
|
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
|
originates from |
g(z0,Cons(z1,z2)) |
→ |
g[Ite][False][Ite](lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)) |
(24) |
|
|
originates from |
f(z0,Nil) |
→ |
Cons(Nil,Cons(Nil,Cons(Nil,Cons(Nil,Nil)))) |
(26) |
|
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
|
originates from |
f(z0,Cons(z1,z2)) |
→ |
f[Ite][False][Ite](lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)) |
(28) |
|
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
|
originates from |
notEmpty(Cons(z0,z1)) |
→ |
True |
(30) |
|
notEmpty#(Nil) |
→ |
c12 |
(32) |
|
originates from |
notEmpty(Nil) |
→ |
False |
(6) |
|
|
originates from |
number4(z0) |
→ |
Cons(Nil,Cons(Nil,Cons(Nil,Cons(Nil,Nil)))) |
(33) |
|
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
|
originates from |
goal(z0,z1) |
→ |
Cons(f(z0,z1),Cons(g(z0,z1),Nil)) |
(35) |
|
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
|
originates from |
g[Ite][False][Ite](False,Cons(z0,z1),z2) |
→ |
g(z1,Cons(Cons(Nil,Nil),z2)) |
(37) |
|
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
|
originates from |
g[Ite][False][Ite](True,z0,Cons(z1,z2)) |
→ |
g(z0,z2) |
(39) |
|
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
|
originates from |
f[Ite][False][Ite](False,Cons(z0,z1),z2) |
→ |
f(z1,Cons(Cons(Nil,Nil),z2)) |
(41) |
|
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
|
originates from |
f[Ite][False][Ite](True,z0,Cons(z1,z2)) |
→ |
f(z0,z2) |
(43) |
|
Moreover, we add the following terms to the innermost strategy.
g[Ite][False][Ite](False,Cons(z0,z1),z2) |
→ |
g(z1,Cons(Cons(Nil,Nil),z2)) |
(37) |
g[Ite][False][Ite](True,z0,Cons(z1,z2)) |
→ |
g(z0,z2) |
(39) |
f[Ite][False][Ite](False,Cons(z0,z1),z2) |
→ |
f(z1,Cons(Cons(Nil,Nil),z2)) |
(41) |
f[Ite][False][Ite](True,z0,Cons(z1,z2)) |
→ |
f(z0,z2) |
(43) |
g(z0,Nil) |
→ |
Cons(Nil,Cons(Nil,Cons(Nil,Cons(Nil,Nil)))) |
(22) |
g(z0,Cons(z1,z2)) |
→ |
g[Ite][False][Ite](lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)) |
(24) |
f(z0,Nil) |
→ |
Cons(Nil,Cons(Nil,Cons(Nil,Cons(Nil,Nil)))) |
(26) |
f(z0,Cons(z1,z2)) |
→ |
f[Ite][False][Ite](lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)) |
(28) |
notEmpty(Cons(z0,z1)) |
→ |
True |
(30) |
notEmpty(Nil) |
→ |
False |
(6) |
number4(z0) |
→ |
Cons(Nil,Cons(Nil,Cons(Nil,Cons(Nil,Nil)))) |
(33) |
goal(z0,z1) |
→ |
Cons(f(z0,z1),Cons(g(z0,z1),Nil)) |
(35) |
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
lt0#(z0,Nil) |
→ |
c6 |
(21) |
g#(z0,Nil) |
→ |
c7 |
(23) |
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
f#(z0,Nil) |
→ |
c9 |
(27) |
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
notEmpty#(Nil) |
→ |
c12 |
(32) |
number4#(z0) |
→ |
c13 |
(34) |
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
lt0#(z0,Nil) |
→ |
c6 |
(21) |
g#(z0,Nil) |
→ |
c7 |
(23) |
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
f#(z0,Nil) |
→ |
c9 |
(27) |
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
notEmpty#(Nil) |
→ |
c12 |
(32) |
number4#(z0) |
→ |
c13 |
(34) |
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
lt0#(z0,Nil) |
→ |
c6 |
(21) |
g#(z0,Nil) |
→ |
c7 |
(23) |
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
f#(z0,Nil) |
→ |
c9 |
(27) |
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
notEmpty#(Nil) |
→ |
c12 |
(32) |
number4#(z0) |
→ |
c13 |
(34) |
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
lt0#(z0,Nil) |
→ |
c6 |
(21) |
g#(z0,Nil) |
→ |
c7 |
(23) |
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
f#(z0,Nil) |
→ |
c9 |
(27) |
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
notEmpty#(Nil) |
→ |
c12 |
(32) |
number4#(z0) |
→ |
c13 |
(34) |
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
lt0#(z0,Nil) |
→ |
c6 |
(21) |
g#(z0,Nil) |
→ |
c7 |
(23) |
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
f#(z0,Nil) |
→ |
c9 |
(27) |
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
notEmpty#(Nil) |
→ |
c12 |
(32) |
number4#(z0) |
→ |
c13 |
(34) |
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
lt0#(z0,Nil) |
→ |
c6 |
(21) |
g#(z0,Nil) |
→ |
c7 |
(23) |
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
f#(z0,Nil) |
→ |
c9 |
(27) |
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
notEmpty#(Nil) |
→ |
c12 |
(32) |
number4#(z0) |
→ |
c13 |
(34) |
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
lt0#(z0,Nil) |
→ |
c6 |
(21) |
g#(z0,Nil) |
→ |
c7 |
(23) |
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
f#(z0,Nil) |
→ |
c9 |
(27) |
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
notEmpty#(Nil) |
→ |
c12 |
(32) |
number4#(z0) |
→ |
c13 |
(34) |
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
lt0#(z0,Nil) |
→ |
c6 |
(21) |
g#(z0,Nil) |
→ |
c7 |
(23) |
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
f#(z0,Nil) |
→ |
c9 |
(27) |
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
notEmpty#(Nil) |
→ |
c12 |
(32) |
number4#(z0) |
→ |
c13 |
(34) |
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
g[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c(g#(z1,Cons(Cons(Nil,Nil),z2))) |
(38) |
g[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c1(g#(z0,z2)) |
(40) |
f[Ite][False][Ite]#(False,Cons(z0,z1),z2) |
→ |
c2(f#(z1,Cons(Cons(Nil,Nil),z2))) |
(42) |
f[Ite][False][Ite]#(True,z0,Cons(z1,z2)) |
→ |
c3(f#(z0,z2)) |
(44) |
lt0#(Nil,Cons(z0,z1)) |
→ |
c4 |
(17) |
lt0#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c5(lt0#(z1,z3)) |
(19) |
lt0#(z0,Nil) |
→ |
c6 |
(21) |
g#(z0,Nil) |
→ |
c7 |
(23) |
g#(z0,Cons(z1,z2)) |
→ |
c8(g[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(25) |
f#(z0,Nil) |
→ |
c9 |
(27) |
f#(z0,Cons(z1,z2)) |
→ |
c10(f[Ite][False][Ite]#(lt0(z0,Cons(Nil,Nil)),z0,Cons(z1,z2)),lt0#(z0,Cons(Nil,Nil))) |
(29) |
notEmpty#(Cons(z0,z1)) |
→ |
c11 |
(31) |
notEmpty#(Nil) |
→ |
c12 |
(32) |
number4#(z0) |
→ |
c13 |
(34) |
goal#(z0,z1) |
→ |
c14(f#(z0,z1),g#(z0,z1)) |
(36) |
There are no rules in the TRS R. Hence, R/S has complexity O(1).