and S is the following TRS.
overlap#(Cons(z0,z1),z2) |
→ |
c8(overlap[Ite][True][Ite]#(member(z0,z2),Cons(z0,z1),z2),member#(z0,z2)) |
(17) |
|
originates from |
overlap(Cons(z0,z1),z2) |
→ |
overlap[Ite][True][Ite](member(z0,z2),Cons(z0,z1),z2) |
(16) |
|
overlap#(Nil,z0) |
→ |
c9 |
(19) |
|
originates from |
overlap(Nil,z0) |
→ |
False |
(18) |
|
member#(z0,Cons(z1,z2)) |
→ |
c10(member[Ite][True][Ite]#(!EQ(z1,z0),z0,Cons(z1,z2)),!EQ#(z1,z0)) |
(21) |
|
originates from |
member(z0,Cons(z1,z2)) |
→ |
member[Ite][True][Ite](!EQ(z1,z0),z0,Cons(z1,z2)) |
(20) |
|
member#(z0,Nil) |
→ |
c11 |
(23) |
|
originates from |
member(z0,Nil) |
→ |
False |
(22) |
|
notEmpty#(Cons(z0,z1)) |
→ |
c12 |
(25) |
|
originates from |
notEmpty(Cons(z0,z1)) |
→ |
True |
(24) |
|
notEmpty#(Nil) |
→ |
c13 |
(26) |
|
originates from |
notEmpty(Nil) |
→ |
False |
(6) |
|
goal#(z0,z1) |
→ |
c14(overlap#(z0,z1)) |
(28) |
|
originates from |
goal(z0,z1) |
→ |
overlap(z0,z1) |
(27) |
|
!EQ#(S(z0),S(z1)) |
→ |
c(!EQ#(z0,z1)) |
(30) |
|
originates from |
!EQ(S(z0),S(z1)) |
→ |
!EQ(z0,z1) |
(29) |
|
|
originates from |
!EQ(0,S(z0)) |
→ |
False |
(31) |
|
|
originates from |
!EQ(S(z0),0) |
→ |
False |
(33) |
|
|
originates from |
|
overlap[Ite][True][Ite]#(False,Cons(z0,z1),z2) |
→ |
c4(overlap#(z1,z2)) |
(37) |
|
originates from |
overlap[Ite][True][Ite](False,Cons(z0,z1),z2) |
→ |
overlap(z1,z2) |
(36) |
|
overlap[Ite][True][Ite]#(True,z0,z1) |
→ |
c5 |
(39) |
|
originates from |
overlap[Ite][True][Ite](True,z0,z1) |
→ |
True |
(38) |
|
member[Ite][True][Ite]#(False,z0,Cons(z1,z2)) |
→ |
c6(member#(z0,z2)) |
(41) |
|
originates from |
member[Ite][True][Ite](False,z0,Cons(z1,z2)) |
→ |
member(z0,z2) |
(40) |
|
member[Ite][True][Ite]#(True,z0,z1) |
→ |
c7 |
(43) |
|
originates from |
member[Ite][True][Ite](True,z0,z1) |
→ |
True |
(42) |
|
Moreover, we add the following terms to the innermost strategy.
!EQ#(S(z0),S(z1)) |
→ |
c(!EQ#(z0,z1)) |
(30) |
!EQ#(0,S(z0)) |
→ |
c1 |
(32) |
!EQ#(S(z0),0) |
→ |
c2 |
(34) |
!EQ#(0,0) |
→ |
c3 |
(35) |
overlap[Ite][True][Ite]#(False,Cons(z0,z1),z2) |
→ |
c4(overlap#(z1,z2)) |
(37) |
overlap[Ite][True][Ite]#(True,z0,z1) |
→ |
c5 |
(39) |
member[Ite][True][Ite]#(False,z0,Cons(z1,z2)) |
→ |
c6(member#(z0,z2)) |
(41) |
member[Ite][True][Ite]#(True,z0,z1) |
→ |
c7 |
(43) |
overlap#(Cons(z0,z1),z2) |
→ |
c8(overlap[Ite][True][Ite]#(member(z0,z2),Cons(z0,z1),z2),member#(z0,z2)) |
(17) |
overlap#(Nil,z0) |
→ |
c9 |
(19) |
member#(z0,Cons(z1,z2)) |
→ |
c10(member[Ite][True][Ite]#(!EQ(z1,z0),z0,Cons(z1,z2)),!EQ#(z1,z0)) |
(21) |
member#(z0,Nil) |
→ |
c11 |
(23) |
notEmpty#(Cons(z0,z1)) |
→ |
c12 |
(25) |
notEmpty#(Nil) |
→ |
c13 |
(26) |
goal#(z0,z1) |
→ |
c14(overlap#(z0,z1)) |
(28) |
!EQ#(S(z0),S(z1)) |
→ |
c(!EQ#(z0,z1)) |
(30) |
!EQ#(0,S(z0)) |
→ |
c1 |
(32) |
!EQ#(S(z0),0) |
→ |
c2 |
(34) |
!EQ#(0,0) |
→ |
c3 |
(35) |
overlap[Ite][True][Ite]#(False,Cons(z0,z1),z2) |
→ |
c4(overlap#(z1,z2)) |
(37) |
overlap[Ite][True][Ite]#(True,z0,z1) |
→ |
c5 |
(39) |
member[Ite][True][Ite]#(False,z0,Cons(z1,z2)) |
→ |
c6(member#(z0,z2)) |
(41) |
member[Ite][True][Ite]#(True,z0,z1) |
→ |
c7 |
(43) |
overlap#(Cons(z0,z1),z2) |
→ |
c8(overlap[Ite][True][Ite]#(member(z0,z2),Cons(z0,z1),z2),member#(z0,z2)) |
(17) |
overlap#(Nil,z0) |
→ |
c9 |
(19) |
member#(z0,Cons(z1,z2)) |
→ |
c10(member[Ite][True][Ite]#(!EQ(z1,z0),z0,Cons(z1,z2)),!EQ#(z1,z0)) |
(21) |
member#(z0,Nil) |
→ |
c11 |
(23) |
notEmpty#(Cons(z0,z1)) |
→ |
c12 |
(25) |
notEmpty#(Nil) |
→ |
c13 |
(26) |
goal#(z0,z1) |
→ |
c14(overlap#(z0,z1)) |
(28) |
!EQ#(S(z0),S(z1)) |
→ |
c(!EQ#(z0,z1)) |
(30) |
!EQ#(0,S(z0)) |
→ |
c1 |
(32) |
!EQ#(S(z0),0) |
→ |
c2 |
(34) |
!EQ#(0,0) |
→ |
c3 |
(35) |
overlap[Ite][True][Ite]#(False,Cons(z0,z1),z2) |
→ |
c4(overlap#(z1,z2)) |
(37) |
overlap[Ite][True][Ite]#(True,z0,z1) |
→ |
c5 |
(39) |
member[Ite][True][Ite]#(False,z0,Cons(z1,z2)) |
→ |
c6(member#(z0,z2)) |
(41) |
member[Ite][True][Ite]#(True,z0,z1) |
→ |
c7 |
(43) |
overlap#(Cons(z0,z1),z2) |
→ |
c8(overlap[Ite][True][Ite]#(member(z0,z2),Cons(z0,z1),z2),member#(z0,z2)) |
(17) |
overlap#(Nil,z0) |
→ |
c9 |
(19) |
member#(z0,Cons(z1,z2)) |
→ |
c10(member[Ite][True][Ite]#(!EQ(z1,z0),z0,Cons(z1,z2)),!EQ#(z1,z0)) |
(21) |
member#(z0,Nil) |
→ |
c11 |
(23) |
notEmpty#(Cons(z0,z1)) |
→ |
c12 |
(25) |
notEmpty#(Nil) |
→ |
c13 |
(26) |
goal#(z0,z1) |
→ |
c14(overlap#(z0,z1)) |
(28) |
member(z0,Cons(z1,z2)) |
→ |
member[Ite][True][Ite](!EQ(z1,z0),z0,Cons(z1,z2)) |
(20) |
!EQ(0,S(z0)) |
→ |
False |
(31) |
!EQ(S(z0),0) |
→ |
False |
(33) |
member[Ite][True][Ite](False,z0,Cons(z1,z2)) |
→ |
member(z0,z2) |
(40) |
member[Ite][True][Ite](True,z0,z1) |
→ |
True |
(42) |
!EQ(S(z0),S(z1)) |
→ |
!EQ(z0,z1) |
(29) |
!EQ(0,0) |
→ |
True |
(11) |
member(z0,Nil) |
→ |
False |
(22) |
!EQ#(S(z0),S(z1)) |
→ |
c(!EQ#(z0,z1)) |
(30) |
!EQ#(0,S(z0)) |
→ |
c1 |
(32) |
!EQ#(S(z0),0) |
→ |
c2 |
(34) |
!EQ#(0,0) |
→ |
c3 |
(35) |
overlap[Ite][True][Ite]#(False,Cons(z0,z1),z2) |
→ |
c4(overlap#(z1,z2)) |
(37) |
overlap[Ite][True][Ite]#(True,z0,z1) |
→ |
c5 |
(39) |
member[Ite][True][Ite]#(False,z0,Cons(z1,z2)) |
→ |
c6(member#(z0,z2)) |
(41) |
member[Ite][True][Ite]#(True,z0,z1) |
→ |
c7 |
(43) |
overlap#(Cons(z0,z1),z2) |
→ |
c8(overlap[Ite][True][Ite]#(member(z0,z2),Cons(z0,z1),z2),member#(z0,z2)) |
(17) |
overlap#(Nil,z0) |
→ |
c9 |
(19) |
member#(z0,Cons(z1,z2)) |
→ |
c10(member[Ite][True][Ite]#(!EQ(z1,z0),z0,Cons(z1,z2)),!EQ#(z1,z0)) |
(21) |
member#(z0,Nil) |
→ |
c11 |
(23) |
notEmpty#(Cons(z0,z1)) |
→ |
c12 |
(25) |
notEmpty#(Nil) |
→ |
c13 |
(26) |
goal#(z0,z1) |
→ |
c14(overlap#(z0,z1)) |
(28) |
!EQ#(S(z0),S(z1)) |
→ |
c(!EQ#(z0,z1)) |
(30) |
!EQ#(0,S(z0)) |
→ |
c1 |
(32) |
!EQ#(S(z0),0) |
→ |
c2 |
(34) |
!EQ#(0,0) |
→ |
c3 |
(35) |
overlap[Ite][True][Ite]#(False,Cons(z0,z1),z2) |
→ |
c4(overlap#(z1,z2)) |
(37) |
overlap[Ite][True][Ite]#(True,z0,z1) |
→ |
c5 |
(39) |
member[Ite][True][Ite]#(False,z0,Cons(z1,z2)) |
→ |
c6(member#(z0,z2)) |
(41) |
member[Ite][True][Ite]#(True,z0,z1) |
→ |
c7 |
(43) |
overlap#(Cons(z0,z1),z2) |
→ |
c8(overlap[Ite][True][Ite]#(member(z0,z2),Cons(z0,z1),z2),member#(z0,z2)) |
(17) |
overlap#(Nil,z0) |
→ |
c9 |
(19) |
member#(z0,Cons(z1,z2)) |
→ |
c10(member[Ite][True][Ite]#(!EQ(z1,z0),z0,Cons(z1,z2)),!EQ#(z1,z0)) |
(21) |
member#(z0,Nil) |
→ |
c11 |
(23) |
notEmpty#(Cons(z0,z1)) |
→ |
c12 |
(25) |
notEmpty#(Nil) |
→ |
c13 |
(26) |
goal#(z0,z1) |
→ |
c14(overlap#(z0,z1)) |
(28) |
There are no rules in the TRS R. Hence, R/S has complexity O(1).