and S is the following TRS.
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(33) |
|
originates from |
*(z0,z1) |
→ |
#mult(z0,z1) |
(32) |
|
dyade#(z0,z1) |
→ |
c25(dyade#1#(z0,z1)) |
(35) |
|
originates from |
dyade(z0,z1) |
→ |
dyade#1(z0,z1) |
(34) |
|
dyade#1#(::(z0,z1),z2) |
→ |
c26(mult#(z0,z2),dyade#(z1,z2)) |
(37) |
|
originates from |
dyade#1(::(z0,z1),z2) |
→ |
::(mult(z0,z2),dyade(z1,z2)) |
(36) |
|
dyade#1#(nil,z0) |
→ |
c27 |
(39) |
|
originates from |
dyade#1(nil,z0) |
→ |
nil |
(38) |
|
mult#(z0,z1) |
→ |
c28(mult#1#(z1,z0)) |
(41) |
|
originates from |
mult(z0,z1) |
→ |
mult#1(z1,z0) |
(40) |
|
mult#1#(::(z0,z1),z2) |
→ |
c29(*#(z2,z0),mult#(z2,z1)) |
(43) |
|
originates from |
mult#1(::(z0,z1),z2) |
→ |
::(*(z2,z0),mult(z2,z1)) |
(42) |
|
mult#1#(nil,z0) |
→ |
c30 |
(45) |
|
originates from |
mult#1(nil,z0) |
→ |
nil |
(44) |
|
|
originates from |
|
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(49) |
|
originates from |
#add(#neg(#s(#0)),z0) |
→ |
#pred(z0) |
(48) |
|
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(51) |
|
originates from |
#add(#neg(#s(#s(z0))),z1) |
→ |
#pred(#add(#pos(#s(z0)),z1)) |
(50) |
|
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(53) |
|
originates from |
#add(#pos(#s(#0)),z0) |
→ |
#succ(z0) |
(52) |
|
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(55) |
|
originates from |
#add(#pos(#s(#s(z0))),z1) |
→ |
#succ(#add(#pos(#s(z0)),z1)) |
(54) |
|
|
originates from |
|
#mult#(#0,#neg(z0)) |
→ |
c6 |
(58) |
|
originates from |
#mult(#0,#neg(z0)) |
→ |
#0 |
(57) |
|
#mult#(#0,#pos(z0)) |
→ |
c7 |
(60) |
|
originates from |
#mult(#0,#pos(z0)) |
→ |
#0 |
(59) |
|
#mult#(#neg(z0),#0) |
→ |
c8 |
(62) |
|
originates from |
#mult(#neg(z0),#0) |
→ |
#0 |
(61) |
|
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(64) |
|
originates from |
#mult(#neg(z0),#neg(z1)) |
→ |
#pos(#natmult(z0,z1)) |
(63) |
|
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(66) |
|
originates from |
#mult(#neg(z0),#pos(z1)) |
→ |
#neg(#natmult(z0,z1)) |
(65) |
|
#mult#(#pos(z0),#0) |
→ |
c11 |
(68) |
|
originates from |
#mult(#pos(z0),#0) |
→ |
#0 |
(67) |
|
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(70) |
|
originates from |
#mult(#pos(z0),#neg(z1)) |
→ |
#neg(#natmult(z0,z1)) |
(69) |
|
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(72) |
|
originates from |
#mult(#pos(z0),#pos(z1)) |
→ |
#pos(#natmult(z0,z1)) |
(71) |
|
#natmult#(#0,z0) |
→ |
c14 |
(74) |
|
originates from |
#natmult(#0,z0) |
→ |
#0 |
(73) |
|
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(76) |
|
originates from |
#natmult(#s(z0),z1) |
→ |
#add(#pos(z1),#natmult(z0,z1)) |
(75) |
|
|
originates from |
#pred(#0) |
→ |
#neg(#s(#0)) |
(24) |
|
#pred#(#neg(#s(z0))) |
→ |
c17 |
(79) |
|
originates from |
#pred(#neg(#s(z0))) |
→ |
#neg(#s(#s(z0))) |
(78) |
|
#pred#(#pos(#s(#0))) |
→ |
c18 |
(80) |
|
originates from |
#pred(#pos(#s(#0))) |
→ |
#0 |
(26) |
|
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(82) |
|
originates from |
#pred(#pos(#s(#s(z0)))) |
→ |
#pos(#s(z0)) |
(81) |
|
|
originates from |
#succ(#0) |
→ |
#pos(#s(#0)) |
(28) |
|
#succ#(#neg(#s(#0))) |
→ |
c21 |
(84) |
|
originates from |
#succ(#neg(#s(#0))) |
→ |
#0 |
(29) |
|
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(86) |
|
originates from |
#succ(#neg(#s(#s(z0)))) |
→ |
#neg(#s(z0)) |
(85) |
|
#succ#(#pos(#s(z0))) |
→ |
c23 |
(88) |
|
originates from |
#succ(#pos(#s(z0))) |
→ |
#pos(#s(#s(z0))) |
(87) |
|
Moreover, we add the following terms to the innermost strategy.
#add#(#0,z0) |
→ |
c |
(47) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(49) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(51) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(53) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(55) |
#mult#(#0,#0) |
→ |
c5 |
(56) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(58) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(60) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(62) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(64) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(66) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(68) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(70) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(72) |
#natmult#(#0,z0) |
→ |
c14 |
(74) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(76) |
#pred#(#0) |
→ |
c16 |
(77) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(79) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(80) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(82) |
#succ#(#0) |
→ |
c20 |
(83) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(84) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(86) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(88) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(33) |
dyade#(z0,z1) |
→ |
c25(dyade#1#(z0,z1)) |
(35) |
dyade#1#(::(z0,z1),z2) |
→ |
c26(mult#(z0,z2),dyade#(z1,z2)) |
(37) |
dyade#1#(nil,z0) |
→ |
c27 |
(39) |
mult#(z0,z1) |
→ |
c28(mult#1#(z1,z0)) |
(41) |
mult#1#(::(z0,z1),z2) |
→ |
c29(*#(z2,z0),mult#(z2,z1)) |
(43) |
mult#1#(nil,z0) |
→ |
c30 |
(45) |
#add#(#0,z0) |
→ |
c |
(47) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(49) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(51) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(53) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(55) |
#mult#(#0,#0) |
→ |
c5 |
(56) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(58) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(60) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(62) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(64) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(66) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(68) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(70) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(72) |
#natmult#(#0,z0) |
→ |
c14 |
(74) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(76) |
#pred#(#0) |
→ |
c16 |
(77) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(79) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(80) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(82) |
#succ#(#0) |
→ |
c20 |
(83) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(84) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(86) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(88) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(33) |
dyade#(z0,z1) |
→ |
c25(dyade#1#(z0,z1)) |
(35) |
dyade#1#(::(z0,z1),z2) |
→ |
c26(mult#(z0,z2),dyade#(z1,z2)) |
(37) |
dyade#1#(nil,z0) |
→ |
c27 |
(39) |
mult#(z0,z1) |
→ |
c28(mult#1#(z1,z0)) |
(41) |
mult#1#(::(z0,z1),z2) |
→ |
c29(*#(z2,z0),mult#(z2,z1)) |
(43) |
mult#1#(nil,z0) |
→ |
c30 |
(45) |
#add#(#0,z0) |
→ |
c |
(47) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(49) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(51) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(53) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(55) |
#mult#(#0,#0) |
→ |
c5 |
(56) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(58) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(60) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(62) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(64) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(66) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(68) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(70) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(72) |
#natmult#(#0,z0) |
→ |
c14 |
(74) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(76) |
#pred#(#0) |
→ |
c16 |
(77) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(79) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(80) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(82) |
#succ#(#0) |
→ |
c20 |
(83) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(84) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(86) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(88) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(33) |
dyade#(z0,z1) |
→ |
c25(dyade#1#(z0,z1)) |
(35) |
dyade#1#(::(z0,z1),z2) |
→ |
c26(mult#(z0,z2),dyade#(z1,z2)) |
(37) |
dyade#1#(nil,z0) |
→ |
c27 |
(39) |
mult#(z0,z1) |
→ |
c28(mult#1#(z1,z0)) |
(41) |
mult#1#(::(z0,z1),z2) |
→ |
c29(*#(z2,z0),mult#(z2,z1)) |
(43) |
mult#1#(nil,z0) |
→ |
c30 |
(45) |
#add#(#0,z0) |
→ |
c |
(47) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(49) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(51) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(53) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(55) |
#mult#(#0,#0) |
→ |
c5 |
(56) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(58) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(60) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(62) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(64) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(66) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(68) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(70) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(72) |
#natmult#(#0,z0) |
→ |
c14 |
(74) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(76) |
#pred#(#0) |
→ |
c16 |
(77) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(79) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(80) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(82) |
#succ#(#0) |
→ |
c20 |
(83) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(84) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(86) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(88) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(33) |
dyade#(z0,z1) |
→ |
c25(dyade#1#(z0,z1)) |
(35) |
dyade#1#(::(z0,z1),z2) |
→ |
c26(mult#(z0,z2),dyade#(z1,z2)) |
(37) |
dyade#1#(nil,z0) |
→ |
c27 |
(39) |
mult#(z0,z1) |
→ |
c28(mult#1#(z1,z0)) |
(41) |
mult#1#(::(z0,z1),z2) |
→ |
c29(*#(z2,z0),mult#(z2,z1)) |
(43) |
mult#1#(nil,z0) |
→ |
c30 |
(45) |
#add#(#0,z0) |
→ |
c |
(47) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(49) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(51) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(53) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(55) |
#mult#(#0,#0) |
→ |
c5 |
(56) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(58) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(60) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(62) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(64) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(66) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(68) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(70) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(72) |
#natmult#(#0,z0) |
→ |
c14 |
(74) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(76) |
#pred#(#0) |
→ |
c16 |
(77) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(79) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(80) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(82) |
#succ#(#0) |
→ |
c20 |
(83) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(84) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(86) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(88) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(33) |
dyade#(z0,z1) |
→ |
c25(dyade#1#(z0,z1)) |
(35) |
dyade#1#(::(z0,z1),z2) |
→ |
c26(mult#(z0,z2),dyade#(z1,z2)) |
(37) |
dyade#1#(nil,z0) |
→ |
c27 |
(39) |
mult#(z0,z1) |
→ |
c28(mult#1#(z1,z0)) |
(41) |
mult#1#(::(z0,z1),z2) |
→ |
c29(*#(z2,z0),mult#(z2,z1)) |
(43) |
mult#1#(nil,z0) |
→ |
c30 |
(45) |
There are no rules in the TRS R. Hence, R/S has complexity O(1).