The rewrite relation of the following TRS is considered.
|
append(@l1,@l2) |
→ |
append#1(@l1,@l2) |
(1) |
|
append#1(::(@x,@xs),@l2) |
→ |
::(@x,append(@xs,@l2)) |
(2) |
|
append#1(nil,@l2) |
→ |
@l2 |
(3) |
|
subtrees(@t) |
→ |
subtrees#1(@t) |
(4) |
|
subtrees#1(leaf) |
→ |
nil |
(5) |
|
subtrees#1(node(@x,@t1,@t2)) |
→ |
subtrees#2(subtrees(@t1),@t1,@t2,@x) |
(6) |
|
subtrees#2(@l1,@t1,@t2,@x) |
→ |
subtrees#3(subtrees(@t2),@l1,@t1,@t2,@x) |
(7) |
|
subtrees#3(@l2,@l1,@t1,@t2,@x) |
→ |
::(node(@x,@t1,@t2),append(@l1,@l2)) |
(8) |
The evaluation strategy is innermost.
|
append#(z0,z1) |
→ |
c(append#1#(z0,z1)) |
(10) |
|
originates from |
|
append(z0,z1) |
→ |
append#1(z0,z1) |
(9) |
|
|
append#1#(::(z0,z1),z2) |
→ |
c1(append#(z1,z2)) |
(12) |
|
originates from |
|
append#1(::(z0,z1),z2) |
→ |
::(z0,append(z1,z2)) |
(11) |
|
|
append#1#(nil,z0) |
→ |
c2 |
(14) |
|
originates from |
|
append#1(nil,z0) |
→ |
z0 |
(13) |
|
|
subtrees#(z0) |
→ |
c3(subtrees#1#(z0)) |
(16) |
|
originates from |
|
subtrees(z0) |
→ |
subtrees#1(z0) |
(15) |
|
|
subtrees#1#(leaf) |
→ |
c4 |
(17) |
|
originates from |
|
subtrees#1(leaf) |
→ |
nil |
(5) |
|
|
subtrees#1#(node(z0,z1,z2)) |
→ |
c5(subtrees#2#(subtrees(z1),z1,z2,z0),subtrees#(z1)) |
(19) |
|
originates from |
|
subtrees#1(node(z0,z1,z2)) |
→ |
subtrees#2(subtrees(z1),z1,z2,z0) |
(18) |
|
|
subtrees#2#(z0,z1,z2,z3) |
→ |
c6(subtrees#3#(subtrees(z2),z0,z1,z2,z3),subtrees#(z2)) |
(21) |
|
originates from |
|
subtrees#2(z0,z1,z2,z3) |
→ |
subtrees#3(subtrees(z2),z0,z1,z2,z3) |
(20) |
|
|
subtrees#3#(z0,z1,z2,z3,z4) |
→ |
c7(append#(z1,z0)) |
(23) |
|
originates from |
|
subtrees#3(z0,z1,z2,z3,z4) |
→ |
::(node(z4,z2,z3),append(z1,z0)) |
(22) |
|
Moreover, we add the following terms to the innermost strategy.
|
append#(z0,z1) |
→ |
c(append#1#(z0,z1)) |
(10) |
|
append#1#(::(z0,z1),z2) |
→ |
c1(append#(z1,z2)) |
(12) |
|
append#1#(nil,z0) |
→ |
c2 |
(14) |
|
subtrees#(z0) |
→ |
c3(subtrees#1#(z0)) |
(16) |
|
subtrees#1#(leaf) |
→ |
c4 |
(17) |
|
subtrees#1#(node(z0,z1,z2)) |
→ |
c5(subtrees#2#(subtrees(z1),z1,z2,z0),subtrees#(z1)) |
(19) |
|
subtrees#2#(z0,z1,z2,z3) |
→ |
c6(subtrees#3#(subtrees(z2),z0,z1,z2,z3),subtrees#(z2)) |
(21) |
|
subtrees#3#(z0,z1,z2,z3,z4) |
→ |
c7(append#(z1,z0)) |
(23) |
|
subtrees#3(z0,z1,z2,z3,z4) |
→ |
::(node(z4,z2,z3),append(z1,z0)) |
(22) |
|
subtrees#2(z0,z1,z2,z3) |
→ |
subtrees#3(subtrees(z2),z0,z1,z2,z3) |
(20) |
|
append(z0,z1) |
→ |
append#1(z0,z1) |
(9) |
|
append#1(nil,z0) |
→ |
z0 |
(13) |
|
subtrees(z0) |
→ |
subtrees#1(z0) |
(15) |
|
subtrees#1(node(z0,z1,z2)) |
→ |
subtrees#2(subtrees(z1),z1,z2,z0) |
(18) |
|
subtrees#1(leaf) |
→ |
nil |
(5) |
|
append#1(::(z0,z1),z2) |
→ |
::(z0,append(z1,z2)) |
(11) |
|
append#(z0,z1) |
→ |
c(append#1#(z0,z1)) |
(10) |
|
append#1#(::(z0,z1),z2) |
→ |
c1(append#(z1,z2)) |
(12) |
|
append#1#(nil,z0) |
→ |
c2 |
(14) |
|
subtrees#(z0) |
→ |
c3(subtrees#1#(z0)) |
(16) |
|
subtrees#1#(leaf) |
→ |
c4 |
(17) |
|
subtrees#1#(node(z0,z1,z2)) |
→ |
c5(subtrees#2#(subtrees(z1),z1,z2,z0),subtrees#(z1)) |
(19) |
|
subtrees#2#(z0,z1,z2,z3) |
→ |
c6(subtrees#3#(subtrees(z2),z0,z1,z2,z3),subtrees#(z2)) |
(21) |
|
subtrees#3#(z0,z1,z2,z3,z4) |
→ |
c7(append#(z1,z0)) |
(23) |
|
append#(z0,z1) |
→ |
c(append#1#(z0,z1)) |
(10) |
|
append#1#(::(z0,z1),z2) |
→ |
c1(append#(z1,z2)) |
(12) |
|
append#1#(nil,z0) |
→ |
c2 |
(14) |
|
subtrees#(z0) |
→ |
c3(subtrees#1#(z0)) |
(16) |
|
subtrees#1#(leaf) |
→ |
c4 |
(17) |
|
subtrees#1#(node(z0,z1,z2)) |
→ |
c5(subtrees#2#(subtrees(z1),z1,z2,z0),subtrees#(z1)) |
(19) |
|
subtrees#2#(z0,z1,z2,z3) |
→ |
c6(subtrees#3#(subtrees(z2),z0,z1,z2,z3),subtrees#(z2)) |
(21) |
|
subtrees#3#(z0,z1,z2,z3,z4) |
→ |
c7(append#(z1,z0)) |
(23) |
|
append#(z0,z1) |
→ |
c(append#1#(z0,z1)) |
(10) |
|
append#1#(::(z0,z1),z2) |
→ |
c1(append#(z1,z2)) |
(12) |
|
append#1#(nil,z0) |
→ |
c2 |
(14) |
|
subtrees#(z0) |
→ |
c3(subtrees#1#(z0)) |
(16) |
|
subtrees#1#(leaf) |
→ |
c4 |
(17) |
|
subtrees#1#(node(z0,z1,z2)) |
→ |
c5(subtrees#2#(subtrees(z1),z1,z2,z0),subtrees#(z1)) |
(19) |
|
subtrees#2#(z0,z1,z2,z3) |
→ |
c6(subtrees#3#(subtrees(z2),z0,z1,z2,z3),subtrees#(z2)) |
(21) |
|
subtrees#3#(z0,z1,z2,z3,z4) |
→ |
c7(append#(z1,z0)) |
(23) |
|
append#(z0,z1) |
→ |
c(append#1#(z0,z1)) |
(10) |
|
append#1#(::(z0,z1),z2) |
→ |
c1(append#(z1,z2)) |
(12) |
|
append#1#(nil,z0) |
→ |
c2 |
(14) |
|
subtrees#(z0) |
→ |
c3(subtrees#1#(z0)) |
(16) |
|
subtrees#1#(leaf) |
→ |
c4 |
(17) |
|
subtrees#1#(node(z0,z1,z2)) |
→ |
c5(subtrees#2#(subtrees(z1),z1,z2,z0),subtrees#(z1)) |
(19) |
|
subtrees#2#(z0,z1,z2,z3) |
→ |
c6(subtrees#3#(subtrees(z2),z0,z1,z2,z3),subtrees#(z2)) |
(21) |
|
subtrees#3#(z0,z1,z2,z3,z4) |
→ |
c7(append#(z1,z0)) |
(23) |
|
append#(z0,z1) |
→ |
c(append#1#(z0,z1)) |
(10) |
|
append#1#(::(z0,z1),z2) |
→ |
c1(append#(z1,z2)) |
(12) |
|
append#1#(nil,z0) |
→ |
c2 |
(14) |
|
subtrees#(z0) |
→ |
c3(subtrees#1#(z0)) |
(16) |
|
subtrees#1#(leaf) |
→ |
c4 |
(17) |
|
subtrees#1#(node(z0,z1,z2)) |
→ |
c5(subtrees#2#(subtrees(z1),z1,z2,z0),subtrees#(z1)) |
(19) |
|
subtrees#2#(z0,z1,z2,z3) |
→ |
c6(subtrees#3#(subtrees(z2),z0,z1,z2,z3),subtrees#(z2)) |
(21) |
|
subtrees#3#(z0,z1,z2,z3,z4) |
→ |
c7(append#(z1,z0)) |
(23) |
|
subtrees#3(z0,z1,z2,z3,z4) |
→ |
::(node(z4,z2,z3),append(z1,z0)) |
(22) |
|
subtrees#2(z0,z1,z2,z3) |
→ |
subtrees#3(subtrees(z2),z0,z1,z2,z3) |
(20) |
|
append(z0,z1) |
→ |
append#1(z0,z1) |
(9) |
|
append#1(nil,z0) |
→ |
z0 |
(13) |
|
subtrees(z0) |
→ |
subtrees#1(z0) |
(15) |
|
subtrees#1(node(z0,z1,z2)) |
→ |
subtrees#2(subtrees(z1),z1,z2,z0) |
(18) |
|
subtrees#1(leaf) |
→ |
nil |
(5) |
|
append#1(::(z0,z1),z2) |
→ |
::(z0,append(z1,z2)) |
(11) |
|
append#(z0,z1) |
→ |
c(append#1#(z0,z1)) |
(10) |
|
append#1#(::(z0,z1),z2) |
→ |
c1(append#(z1,z2)) |
(12) |
|
append#1#(nil,z0) |
→ |
c2 |
(14) |
|
subtrees#(z0) |
→ |
c3(subtrees#1#(z0)) |
(16) |
|
subtrees#1#(leaf) |
→ |
c4 |
(17) |
|
subtrees#1#(node(z0,z1,z2)) |
→ |
c5(subtrees#2#(subtrees(z1),z1,z2,z0),subtrees#(z1)) |
(19) |
|
subtrees#2#(z0,z1,z2,z3) |
→ |
c6(subtrees#3#(subtrees(z2),z0,z1,z2,z3),subtrees#(z2)) |
(21) |
|
subtrees#3#(z0,z1,z2,z3,z4) |
→ |
c7(append#(z1,z0)) |
(23) |
|
subtrees#3(z0,z1,z2,z3,z4) |
→ |
::(node(z4,z2,z3),append(z1,z0)) |
(22) |
|
subtrees#2(z0,z1,z2,z3) |
→ |
subtrees#3(subtrees(z2),z0,z1,z2,z3) |
(20) |
|
append(z0,z1) |
→ |
append#1(z0,z1) |
(9) |
|
append#1(nil,z0) |
→ |
z0 |
(13) |
|
subtrees(z0) |
→ |
subtrees#1(z0) |
(15) |
|
subtrees#1(node(z0,z1,z2)) |
→ |
subtrees#2(subtrees(z1),z1,z2,z0) |
(18) |
|
subtrees#1(leaf) |
→ |
nil |
(5) |
|
append#1(::(z0,z1),z2) |
→ |
::(z0,append(z1,z2)) |
(11) |
There are no rules in the TRS R. Hence, R/S has complexity O(1).