and S is the following TRS.
prefix#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c12(and#(!EQ(z0,z2),prefix(z1,z3)),!EQ#(z0,z2),prefix#(z1,z3)) |
(27) |
|
originates from |
prefix(Cons(z0,z1),Cons(z2,z3)) |
→ |
and(!EQ(z0,z2),prefix(z1,z3)) |
(26) |
|
prefix#(Cons(z0,z1),Nil) |
→ |
c13 |
(29) |
|
originates from |
prefix(Cons(z0,z1),Nil) |
→ |
False |
(28) |
|
prefix#(Nil,z0) |
→ |
c14 |
(31) |
|
originates from |
prefix(Nil,z0) |
→ |
True |
(30) |
|
domatch#(Cons(z0,z1),Nil,z2) |
→ |
c15 |
(33) |
|
originates from |
domatch(Cons(z0,z1),Nil,z2) |
→ |
Nil |
(32) |
|
domatch#(Nil,Nil,z0) |
→ |
c16 |
(35) |
|
originates from |
domatch(Nil,Nil,z0) |
→ |
Cons(z0,Nil) |
(34) |
|
domatch#(z0,Cons(z1,z2),z3) |
→ |
c17(domatch[Ite]#(prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3),prefix#(z0,Cons(z1,z2))) |
(37) |
|
originates from |
domatch(z0,Cons(z1,z2),z3) |
→ |
domatch[Ite](prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3) |
(36) |
|
eqNatList#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c18(eqNatList[Ite]#(!EQ(z0,z2),z2,z3,z0,z1),!EQ#(z0,z2)) |
(39) |
|
originates from |
eqNatList(Cons(z0,z1),Cons(z2,z3)) |
→ |
eqNatList[Ite](!EQ(z0,z2),z2,z3,z0,z1) |
(38) |
|
eqNatList#(Cons(z0,z1),Nil) |
→ |
c19 |
(41) |
|
originates from |
eqNatList(Cons(z0,z1),Nil) |
→ |
False |
(40) |
|
eqNatList#(Nil,Cons(z0,z1)) |
→ |
c20 |
(43) |
|
originates from |
eqNatList(Nil,Cons(z0,z1)) |
→ |
False |
(42) |
|
eqNatList#(Nil,Nil) |
→ |
c21 |
(44) |
|
originates from |
eqNatList(Nil,Nil) |
→ |
True |
(10) |
|
notEmpty#(Cons(z0,z1)) |
→ |
c22 |
(46) |
|
originates from |
notEmpty(Cons(z0,z1)) |
→ |
True |
(45) |
|
notEmpty#(Nil) |
→ |
c23 |
(47) |
|
originates from |
notEmpty(Nil) |
→ |
False |
(12) |
|
strmatch#(z0,z1) |
→ |
c24(domatch#(z0,z1,Nil)) |
(49) |
|
originates from |
strmatch(z0,z1) |
→ |
domatch(z0,z1,Nil) |
(48) |
|
and#(False,False) |
→ |
c |
(50) |
|
originates from |
and(False,False) |
→ |
False |
(14) |
|
and#(True,False) |
→ |
c1 |
(51) |
|
originates from |
and(True,False) |
→ |
False |
(15) |
|
and#(False,True) |
→ |
c2 |
(52) |
|
originates from |
and(False,True) |
→ |
False |
(16) |
|
and#(True,True) |
→ |
c3 |
(53) |
|
originates from |
and(True,True) |
→ |
True |
(17) |
|
!EQ#(S(z0),S(z1)) |
→ |
c4(!EQ#(z0,z1)) |
(55) |
|
originates from |
!EQ(S(z0),S(z1)) |
→ |
!EQ(z0,z1) |
(54) |
|
|
originates from |
!EQ(0,S(z0)) |
→ |
False |
(56) |
|
|
originates from |
!EQ(S(z0),0) |
→ |
False |
(58) |
|
|
originates from |
|
domatch[Ite]#(False,z0,Cons(z1,z2),z3) |
→ |
c8(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(62) |
|
originates from |
domatch[Ite](False,z0,Cons(z1,z2),z3) |
→ |
domatch(z0,z2,Cons(z3,Cons(Nil,Nil))) |
(61) |
|
domatch[Ite]#(True,z0,Cons(z1,z2),z3) |
→ |
c9(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(64) |
|
originates from |
domatch[Ite](True,z0,Cons(z1,z2),z3) |
→ |
Cons(z3,domatch(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(63) |
|
eqNatList[Ite]#(False,z0,z1,z2,z3) |
→ |
c10 |
(66) |
|
originates from |
eqNatList[Ite](False,z0,z1,z2,z3) |
→ |
False |
(65) |
|
eqNatList[Ite]#(True,z0,z1,z2,z3) |
→ |
c11(eqNatList#(z3,z1)) |
(68) |
|
originates from |
eqNatList[Ite](True,z0,z1,z2,z3) |
→ |
eqNatList(z3,z1) |
(67) |
|
Moreover, we add the following terms to the innermost strategy.
and#(False,False) |
and#(True,False) |
and#(False,True) |
and#(True,True) |
!EQ#(S(z0),S(z1)) |
!EQ#(0,S(z0)) |
!EQ#(S(z0),0) |
!EQ#(0,0) |
domatch[Ite]#(False,z0,Cons(z1,z2),z3) |
domatch[Ite]#(True,z0,Cons(z1,z2),z3) |
eqNatList[Ite]#(False,z0,z1,z2,z3) |
eqNatList[Ite]#(True,z0,z1,z2,z3) |
prefix#(Cons(z0,z1),Cons(z2,z3)) |
prefix#(Cons(z0,z1),Nil) |
prefix#(Nil,z0) |
domatch#(Cons(z0,z1),Nil,z2) |
domatch#(Nil,Nil,z0) |
domatch#(z0,Cons(z1,z2),z3) |
eqNatList#(Cons(z0,z1),Cons(z2,z3)) |
eqNatList#(Cons(z0,z1),Nil) |
eqNatList#(Nil,Cons(z0,z1)) |
eqNatList#(Nil,Nil) |
notEmpty#(Cons(z0,z1)) |
notEmpty#(Nil) |
strmatch#(z0,z1) |
domatch[Ite](False,z0,Cons(z1,z2),z3) |
→ |
domatch(z0,z2,Cons(z3,Cons(Nil,Nil))) |
(61) |
domatch[Ite](True,z0,Cons(z1,z2),z3) |
→ |
Cons(z3,domatch(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(63) |
eqNatList[Ite](False,z0,z1,z2,z3) |
→ |
False |
(65) |
eqNatList[Ite](True,z0,z1,z2,z3) |
→ |
eqNatList(z3,z1) |
(67) |
domatch(Cons(z0,z1),Nil,z2) |
→ |
Nil |
(32) |
domatch(Nil,Nil,z0) |
→ |
Cons(z0,Nil) |
(34) |
domatch(z0,Cons(z1,z2),z3) |
→ |
domatch[Ite](prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3) |
(36) |
eqNatList(Cons(z0,z1),Cons(z2,z3)) |
→ |
eqNatList[Ite](!EQ(z0,z2),z2,z3,z0,z1) |
(38) |
eqNatList(Cons(z0,z1),Nil) |
→ |
False |
(40) |
eqNatList(Nil,Cons(z0,z1)) |
→ |
False |
(42) |
eqNatList(Nil,Nil) |
→ |
True |
(10) |
notEmpty(Cons(z0,z1)) |
→ |
True |
(45) |
notEmpty(Nil) |
→ |
False |
(12) |
strmatch(z0,z1) |
→ |
domatch(z0,z1,Nil) |
(48) |
and#(False,False) |
→ |
c |
(50) |
and#(True,False) |
→ |
c1 |
(51) |
and#(False,True) |
→ |
c2 |
(52) |
and#(True,True) |
→ |
c3 |
(53) |
!EQ#(S(z0),S(z1)) |
→ |
c4(!EQ#(z0,z1)) |
(55) |
!EQ#(0,S(z0)) |
→ |
c5 |
(57) |
!EQ#(S(z0),0) |
→ |
c6 |
(59) |
!EQ#(0,0) |
→ |
c7 |
(60) |
domatch[Ite]#(False,z0,Cons(z1,z2),z3) |
→ |
c8(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(62) |
domatch[Ite]#(True,z0,Cons(z1,z2),z3) |
→ |
c9(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(64) |
eqNatList[Ite]#(False,z0,z1,z2,z3) |
→ |
c10 |
(66) |
eqNatList[Ite]#(True,z0,z1,z2,z3) |
→ |
c11(eqNatList#(z3,z1)) |
(68) |
prefix#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c12(and#(!EQ(z0,z2),prefix(z1,z3)),!EQ#(z0,z2),prefix#(z1,z3)) |
(27) |
prefix#(Cons(z0,z1),Nil) |
→ |
c13 |
(29) |
prefix#(Nil,z0) |
→ |
c14 |
(31) |
domatch#(Cons(z0,z1),Nil,z2) |
→ |
c15 |
(33) |
domatch#(Nil,Nil,z0) |
→ |
c16 |
(35) |
domatch#(z0,Cons(z1,z2),z3) |
→ |
c17(domatch[Ite]#(prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3),prefix#(z0,Cons(z1,z2))) |
(37) |
eqNatList#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c18(eqNatList[Ite]#(!EQ(z0,z2),z2,z3,z0,z1),!EQ#(z0,z2)) |
(39) |
eqNatList#(Cons(z0,z1),Nil) |
→ |
c19 |
(41) |
eqNatList#(Nil,Cons(z0,z1)) |
→ |
c20 |
(43) |
eqNatList#(Nil,Nil) |
→ |
c21 |
(44) |
notEmpty#(Cons(z0,z1)) |
→ |
c22 |
(46) |
notEmpty#(Nil) |
→ |
c23 |
(47) |
strmatch#(z0,z1) |
→ |
c24(domatch#(z0,z1,Nil)) |
(49) |
and#(False,False) |
→ |
c |
(50) |
and#(True,False) |
→ |
c1 |
(51) |
and#(False,True) |
→ |
c2 |
(52) |
and#(True,True) |
→ |
c3 |
(53) |
!EQ#(S(z0),S(z1)) |
→ |
c4(!EQ#(z0,z1)) |
(55) |
!EQ#(0,S(z0)) |
→ |
c5 |
(57) |
!EQ#(S(z0),0) |
→ |
c6 |
(59) |
!EQ#(0,0) |
→ |
c7 |
(60) |
domatch[Ite]#(False,z0,Cons(z1,z2),z3) |
→ |
c8(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(62) |
domatch[Ite]#(True,z0,Cons(z1,z2),z3) |
→ |
c9(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(64) |
eqNatList[Ite]#(False,z0,z1,z2,z3) |
→ |
c10 |
(66) |
eqNatList[Ite]#(True,z0,z1,z2,z3) |
→ |
c11(eqNatList#(z3,z1)) |
(68) |
prefix#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c12(and#(!EQ(z0,z2),prefix(z1,z3)),!EQ#(z0,z2),prefix#(z1,z3)) |
(27) |
prefix#(Cons(z0,z1),Nil) |
→ |
c13 |
(29) |
prefix#(Nil,z0) |
→ |
c14 |
(31) |
domatch#(Cons(z0,z1),Nil,z2) |
→ |
c15 |
(33) |
domatch#(Nil,Nil,z0) |
→ |
c16 |
(35) |
domatch#(z0,Cons(z1,z2),z3) |
→ |
c17(domatch[Ite]#(prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3),prefix#(z0,Cons(z1,z2))) |
(37) |
eqNatList#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c18(eqNatList[Ite]#(!EQ(z0,z2),z2,z3,z0,z1),!EQ#(z0,z2)) |
(39) |
eqNatList#(Cons(z0,z1),Nil) |
→ |
c19 |
(41) |
eqNatList#(Nil,Cons(z0,z1)) |
→ |
c20 |
(43) |
eqNatList#(Nil,Nil) |
→ |
c21 |
(44) |
notEmpty#(Cons(z0,z1)) |
→ |
c22 |
(46) |
notEmpty#(Nil) |
→ |
c23 |
(47) |
strmatch#(z0,z1) |
→ |
c24(domatch#(z0,z1,Nil)) |
(49) |
and#(False,False) |
→ |
c |
(50) |
and#(True,False) |
→ |
c1 |
(51) |
and#(False,True) |
→ |
c2 |
(52) |
and#(True,True) |
→ |
c3 |
(53) |
!EQ#(S(z0),S(z1)) |
→ |
c4(!EQ#(z0,z1)) |
(55) |
!EQ#(0,S(z0)) |
→ |
c5 |
(57) |
!EQ#(S(z0),0) |
→ |
c6 |
(59) |
!EQ#(0,0) |
→ |
c7 |
(60) |
domatch[Ite]#(False,z0,Cons(z1,z2),z3) |
→ |
c8(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(62) |
domatch[Ite]#(True,z0,Cons(z1,z2),z3) |
→ |
c9(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(64) |
eqNatList[Ite]#(False,z0,z1,z2,z3) |
→ |
c10 |
(66) |
eqNatList[Ite]#(True,z0,z1,z2,z3) |
→ |
c11(eqNatList#(z3,z1)) |
(68) |
prefix#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c12(and#(!EQ(z0,z2),prefix(z1,z3)),!EQ#(z0,z2),prefix#(z1,z3)) |
(27) |
prefix#(Cons(z0,z1),Nil) |
→ |
c13 |
(29) |
prefix#(Nil,z0) |
→ |
c14 |
(31) |
domatch#(Cons(z0,z1),Nil,z2) |
→ |
c15 |
(33) |
domatch#(Nil,Nil,z0) |
→ |
c16 |
(35) |
domatch#(z0,Cons(z1,z2),z3) |
→ |
c17(domatch[Ite]#(prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3),prefix#(z0,Cons(z1,z2))) |
(37) |
eqNatList#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c18(eqNatList[Ite]#(!EQ(z0,z2),z2,z3,z0,z1),!EQ#(z0,z2)) |
(39) |
eqNatList#(Cons(z0,z1),Nil) |
→ |
c19 |
(41) |
eqNatList#(Nil,Cons(z0,z1)) |
→ |
c20 |
(43) |
eqNatList#(Nil,Nil) |
→ |
c21 |
(44) |
notEmpty#(Cons(z0,z1)) |
→ |
c22 |
(46) |
notEmpty#(Nil) |
→ |
c23 |
(47) |
strmatch#(z0,z1) |
→ |
c24(domatch#(z0,z1,Nil)) |
(49) |
and#(False,False) |
→ |
c |
(50) |
and#(True,False) |
→ |
c1 |
(51) |
and#(False,True) |
→ |
c2 |
(52) |
and#(True,True) |
→ |
c3 |
(53) |
!EQ#(S(z0),S(z1)) |
→ |
c4(!EQ#(z0,z1)) |
(55) |
!EQ#(0,S(z0)) |
→ |
c5 |
(57) |
!EQ#(S(z0),0) |
→ |
c6 |
(59) |
!EQ#(0,0) |
→ |
c7 |
(60) |
domatch[Ite]#(False,z0,Cons(z1,z2),z3) |
→ |
c8(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(62) |
domatch[Ite]#(True,z0,Cons(z1,z2),z3) |
→ |
c9(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(64) |
eqNatList[Ite]#(False,z0,z1,z2,z3) |
→ |
c10 |
(66) |
eqNatList[Ite]#(True,z0,z1,z2,z3) |
→ |
c11(eqNatList#(z3,z1)) |
(68) |
prefix#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c12(and#(!EQ(z0,z2),prefix(z1,z3)),!EQ#(z0,z2),prefix#(z1,z3)) |
(27) |
prefix#(Cons(z0,z1),Nil) |
→ |
c13 |
(29) |
prefix#(Nil,z0) |
→ |
c14 |
(31) |
domatch#(Cons(z0,z1),Nil,z2) |
→ |
c15 |
(33) |
domatch#(Nil,Nil,z0) |
→ |
c16 |
(35) |
domatch#(z0,Cons(z1,z2),z3) |
→ |
c17(domatch[Ite]#(prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3),prefix#(z0,Cons(z1,z2))) |
(37) |
eqNatList#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c18(eqNatList[Ite]#(!EQ(z0,z2),z2,z3,z0,z1),!EQ#(z0,z2)) |
(39) |
eqNatList#(Cons(z0,z1),Nil) |
→ |
c19 |
(41) |
eqNatList#(Nil,Cons(z0,z1)) |
→ |
c20 |
(43) |
eqNatList#(Nil,Nil) |
→ |
c21 |
(44) |
notEmpty#(Cons(z0,z1)) |
→ |
c22 |
(46) |
notEmpty#(Nil) |
→ |
c23 |
(47) |
strmatch#(z0,z1) |
→ |
c24(domatch#(z0,z1,Nil)) |
(49) |
and#(False,False) |
→ |
c |
(50) |
and#(True,False) |
→ |
c1 |
(51) |
and#(False,True) |
→ |
c2 |
(52) |
and#(True,True) |
→ |
c3 |
(53) |
!EQ#(S(z0),S(z1)) |
→ |
c4(!EQ#(z0,z1)) |
(55) |
!EQ#(0,S(z0)) |
→ |
c5 |
(57) |
!EQ#(S(z0),0) |
→ |
c6 |
(59) |
!EQ#(0,0) |
→ |
c7 |
(60) |
domatch[Ite]#(False,z0,Cons(z1,z2),z3) |
→ |
c8(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(62) |
domatch[Ite]#(True,z0,Cons(z1,z2),z3) |
→ |
c9(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(64) |
eqNatList[Ite]#(False,z0,z1,z2,z3) |
→ |
c10 |
(66) |
eqNatList[Ite]#(True,z0,z1,z2,z3) |
→ |
c11(eqNatList#(z3,z1)) |
(68) |
prefix#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c12(and#(!EQ(z0,z2),prefix(z1,z3)),!EQ#(z0,z2),prefix#(z1,z3)) |
(27) |
prefix#(Cons(z0,z1),Nil) |
→ |
c13 |
(29) |
prefix#(Nil,z0) |
→ |
c14 |
(31) |
domatch#(Cons(z0,z1),Nil,z2) |
→ |
c15 |
(33) |
domatch#(Nil,Nil,z0) |
→ |
c16 |
(35) |
domatch#(z0,Cons(z1,z2),z3) |
→ |
c17(domatch[Ite]#(prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3),prefix#(z0,Cons(z1,z2))) |
(37) |
eqNatList#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c18(eqNatList[Ite]#(!EQ(z0,z2),z2,z3,z0,z1),!EQ#(z0,z2)) |
(39) |
eqNatList#(Cons(z0,z1),Nil) |
→ |
c19 |
(41) |
eqNatList#(Nil,Cons(z0,z1)) |
→ |
c20 |
(43) |
eqNatList#(Nil,Nil) |
→ |
c21 |
(44) |
notEmpty#(Cons(z0,z1)) |
→ |
c22 |
(46) |
notEmpty#(Nil) |
→ |
c23 |
(47) |
strmatch#(z0,z1) |
→ |
c24(domatch#(z0,z1,Nil)) |
(49) |
and#(False,False) |
→ |
c |
(50) |
and#(True,False) |
→ |
c1 |
(51) |
and#(False,True) |
→ |
c2 |
(52) |
and#(True,True) |
→ |
c3 |
(53) |
!EQ#(S(z0),S(z1)) |
→ |
c4(!EQ#(z0,z1)) |
(55) |
!EQ#(0,S(z0)) |
→ |
c5 |
(57) |
!EQ#(S(z0),0) |
→ |
c6 |
(59) |
!EQ#(0,0) |
→ |
c7 |
(60) |
domatch[Ite]#(False,z0,Cons(z1,z2),z3) |
→ |
c8(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(62) |
domatch[Ite]#(True,z0,Cons(z1,z2),z3) |
→ |
c9(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(64) |
eqNatList[Ite]#(False,z0,z1,z2,z3) |
→ |
c10 |
(66) |
eqNatList[Ite]#(True,z0,z1,z2,z3) |
→ |
c11(eqNatList#(z3,z1)) |
(68) |
prefix#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c12(and#(!EQ(z0,z2),prefix(z1,z3)),!EQ#(z0,z2),prefix#(z1,z3)) |
(27) |
prefix#(Cons(z0,z1),Nil) |
→ |
c13 |
(29) |
prefix#(Nil,z0) |
→ |
c14 |
(31) |
domatch#(Cons(z0,z1),Nil,z2) |
→ |
c15 |
(33) |
domatch#(Nil,Nil,z0) |
→ |
c16 |
(35) |
domatch#(z0,Cons(z1,z2),z3) |
→ |
c17(domatch[Ite]#(prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3),prefix#(z0,Cons(z1,z2))) |
(37) |
eqNatList#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c18(eqNatList[Ite]#(!EQ(z0,z2),z2,z3,z0,z1),!EQ#(z0,z2)) |
(39) |
eqNatList#(Cons(z0,z1),Nil) |
→ |
c19 |
(41) |
eqNatList#(Nil,Cons(z0,z1)) |
→ |
c20 |
(43) |
eqNatList#(Nil,Nil) |
→ |
c21 |
(44) |
notEmpty#(Cons(z0,z1)) |
→ |
c22 |
(46) |
notEmpty#(Nil) |
→ |
c23 |
(47) |
strmatch#(z0,z1) |
→ |
c24(domatch#(z0,z1,Nil)) |
(49) |
and#(False,False) |
→ |
c |
(50) |
and#(True,False) |
→ |
c1 |
(51) |
and#(False,True) |
→ |
c2 |
(52) |
and#(True,True) |
→ |
c3 |
(53) |
!EQ#(S(z0),S(z1)) |
→ |
c4(!EQ#(z0,z1)) |
(55) |
!EQ#(0,S(z0)) |
→ |
c5 |
(57) |
!EQ#(S(z0),0) |
→ |
c6 |
(59) |
!EQ#(0,0) |
→ |
c7 |
(60) |
domatch[Ite]#(False,z0,Cons(z1,z2),z3) |
→ |
c8(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(62) |
domatch[Ite]#(True,z0,Cons(z1,z2),z3) |
→ |
c9(domatch#(z0,z2,Cons(z3,Cons(Nil,Nil)))) |
(64) |
eqNatList[Ite]#(False,z0,z1,z2,z3) |
→ |
c10 |
(66) |
eqNatList[Ite]#(True,z0,z1,z2,z3) |
→ |
c11(eqNatList#(z3,z1)) |
(68) |
prefix#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c12(and#(!EQ(z0,z2),prefix(z1,z3)),!EQ#(z0,z2),prefix#(z1,z3)) |
(27) |
prefix#(Cons(z0,z1),Nil) |
→ |
c13 |
(29) |
prefix#(Nil,z0) |
→ |
c14 |
(31) |
domatch#(Cons(z0,z1),Nil,z2) |
→ |
c15 |
(33) |
domatch#(Nil,Nil,z0) |
→ |
c16 |
(35) |
domatch#(z0,Cons(z1,z2),z3) |
→ |
c17(domatch[Ite]#(prefix(z0,Cons(z1,z2)),z0,Cons(z1,z2),z3),prefix#(z0,Cons(z1,z2))) |
(37) |
eqNatList#(Cons(z0,z1),Cons(z2,z3)) |
→ |
c18(eqNatList[Ite]#(!EQ(z0,z2),z2,z3,z0,z1),!EQ#(z0,z2)) |
(39) |
eqNatList#(Cons(z0,z1),Nil) |
→ |
c19 |
(41) |
eqNatList#(Nil,Cons(z0,z1)) |
→ |
c20 |
(43) |
eqNatList#(Nil,Nil) |
→ |
c21 |
(44) |
notEmpty#(Cons(z0,z1)) |
→ |
c22 |
(46) |
notEmpty#(Nil) |
→ |
c23 |
(47) |
strmatch#(z0,z1) |
→ |
c24(domatch#(z0,z1,Nil)) |
(49) |
There are no rules in the TRS R. Hence, R/S has complexity O(1).