(0) Obligation:

Runtime Complexity Relative TRS:
The TRS R consists of the following rules:

*(@x, @y) → #mult(@x, @y)
+(@x, @y) → #add(@x, @y)
computeLine(@line, @m, @acc) → computeLine#1(@line, @acc, @m)
computeLine#1(::(@x, @xs), @acc, @m) → computeLine#2(@m, @acc, @x, @xs)
computeLine#1(nil, @acc, @m) → @acc
computeLine#2(::(@l, @ls), @acc, @x, @xs) → computeLine(@xs, @ls, lineMult(@x, @l, @acc))
computeLine#2(nil, @acc, @x, @xs) → nil
lineMult(@n, @l1, @l2) → lineMult#1(@l1, @l2, @n)
lineMult#1(::(@x, @xs), @l2, @n) → lineMult#2(@l2, @n, @x, @xs)
lineMult#1(nil, @l2, @n) → nil
lineMult#2(::(@y, @ys), @n, @x, @xs) → ::(+(*(@x, @n), @y), lineMult(@n, @xs, @ys))
lineMult#2(nil, @n, @x, @xs) → ::(*(@x, @n), lineMult(@n, @xs, nil))
matrixMult(@m1, @m2) → matrixMult#1(@m1, @m2)
matrixMult#1(::(@l, @ls), @m2) → ::(computeLine(@l, @m2, nil), matrixMult(@ls, @m2))
matrixMult#1(nil, @m2) → nil

The (relative) TRS S consists of the following rules:

#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))

Rewrite Strategy: INNERMOST

(1) CpxTrsToCdtProof (UPPER BOUND(ID) transformation)

Converted Cpx (relative) TRS to CDT

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
*(z0, z1) → #mult(z0, z1)
+(z0, z1) → #add(z0, z1)
computeLine(z0, z1, z2) → computeLine#1(z0, z2, z1)
computeLine#1(::(z0, z1), z2, z3) → computeLine#2(z3, z2, z0, z1)
computeLine#1(nil, z0, z1) → z0
computeLine#2(::(z0, z1), z2, z3, z4) → computeLine(z4, z1, lineMult(z3, z0, z2))
computeLine#2(nil, z0, z1, z2) → nil
lineMult(z0, z1, z2) → lineMult#1(z1, z2, z0)
lineMult#1(::(z0, z1), z2, z3) → lineMult#2(z2, z3, z0, z1)
lineMult#1(nil, z0, z1) → nil
lineMult#2(::(z0, z1), z2, z3, z4) → ::(+(*(z3, z2), z0), lineMult(z2, z4, z1))
lineMult#2(nil, z0, z1, z2) → ::(*(z1, z0), lineMult(z0, z2, nil))
matrixMult(z0, z1) → matrixMult#1(z0, z1)
matrixMult#1(::(z0, z1), z2) → ::(computeLine(z0, z2, nil), matrixMult(z1, z2))
matrixMult#1(nil, z0) → nil
Tuples:

#ADD(#0, z0) → c
#ADD(#neg(#s(#0)), z0) → c1(#PRED(z0))
#ADD(#neg(#s(#s(z0))), z1) → c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#0)), z0) → c3(#SUCC(z0))
#ADD(#pos(#s(#s(z0))), z1) → c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#0, #0) → c5
#MULT(#0, #neg(z0)) → c6
#MULT(#0, #pos(z0)) → c7
#MULT(#neg(z0), #0) → c8
#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #0) → c11
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#0, z0) → c14
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#PRED(#0) → c16
#PRED(#neg(#s(z0))) → c17
#PRED(#pos(#s(#0))) → c18
#PRED(#pos(#s(#s(z0)))) → c19
#SUCC(#0) → c20
#SUCC(#neg(#s(#0))) → c21
#SUCC(#neg(#s(#s(z0)))) → c22
#SUCC(#pos(#s(z0))) → c23
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#1(nil, z0, z1) → c28
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
COMPUTELINE#2(nil, z0, z1, z2) → c30
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#1(nil, z0, z1) → c33
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
MATRIXMULT#1(nil, z0) → c38
S tuples:

*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#1(nil, z0, z1) → c28
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
COMPUTELINE#2(nil, z0, z1, z2) → c30
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#1(nil, z0, z1) → c33
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
MATRIXMULT#1(nil, z0) → c38
K tuples:none
Defined Rule Symbols:

*, +, computeLine, computeLine#1, computeLine#2, lineMult, lineMult#1, lineMult#2, matrixMult, matrixMult#1, #add, #mult, #natmult, #pred, #succ

Defined Pair Symbols:

#ADD, #MULT, #NATMULT, #PRED, #SUCC, *', +', COMPUTELINE, COMPUTELINE#1, COMPUTELINE#2, LINEMULT, LINEMULT#1, LINEMULT#2, MATRIXMULT, MATRIXMULT#1

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38

(3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 21 trailing nodes:

#MULT(#0, #0) → c5
#PRED(#neg(#s(z0))) → c17
#SUCC(#pos(#s(z0))) → c23
#NATMULT(#0, z0) → c14
COMPUTELINE#1(nil, z0, z1) → c28
#SUCC(#0) → c20
LINEMULT#1(nil, z0, z1) → c33
#PRED(#pos(#s(#s(z0)))) → c19
#MULT(#0, #neg(z0)) → c6
#ADD(#0, z0) → c
#SUCC(#neg(#s(#s(z0)))) → c22
#MULT(#pos(z0), #0) → c11
MATRIXMULT#1(nil, z0) → c38
#MULT(#neg(z0), #0) → c8
#MULT(#0, #pos(z0)) → c7
#PRED(#pos(#s(#0))) → c18
COMPUTELINE#2(nil, z0, z1, z2) → c30
#PRED(#0) → c16
#ADD(#neg(#s(#0)), z0) → c1(#PRED(z0))
#ADD(#pos(#s(#0)), z0) → c3(#SUCC(z0))
#SUCC(#neg(#s(#0))) → c21

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
*(z0, z1) → #mult(z0, z1)
+(z0, z1) → #add(z0, z1)
computeLine(z0, z1, z2) → computeLine#1(z0, z2, z1)
computeLine#1(::(z0, z1), z2, z3) → computeLine#2(z3, z2, z0, z1)
computeLine#1(nil, z0, z1) → z0
computeLine#2(::(z0, z1), z2, z3, z4) → computeLine(z4, z1, lineMult(z3, z0, z2))
computeLine#2(nil, z0, z1, z2) → nil
lineMult(z0, z1, z2) → lineMult#1(z1, z2, z0)
lineMult#1(::(z0, z1), z2, z3) → lineMult#2(z2, z3, z0, z1)
lineMult#1(nil, z0, z1) → nil
lineMult#2(::(z0, z1), z2, z3, z4) → ::(+(*(z3, z2), z0), lineMult(z2, z4, z1))
lineMult#2(nil, z0, z1, z2) → ::(*(z1, z0), lineMult(z0, z2, nil))
matrixMult(z0, z1) → matrixMult#1(z0, z1)
matrixMult#1(::(z0, z1), z2) → ::(computeLine(z0, z2, nil), matrixMult(z1, z2))
matrixMult#1(nil, z0) → nil
Tuples:

#ADD(#neg(#s(#s(z0))), z1) → c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
S tuples:

*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
K tuples:none
Defined Rule Symbols:

*, +, computeLine, computeLine#1, computeLine#2, lineMult, lineMult#1, lineMult#2, matrixMult, matrixMult#1, #add, #mult, #natmult, #pred, #succ

Defined Pair Symbols:

#ADD, #MULT, #NATMULT, *', +', COMPUTELINE, COMPUTELINE#1, COMPUTELINE#2, LINEMULT, LINEMULT#1, LINEMULT#2, MATRIXMULT, MATRIXMULT#1

Compound Symbols:

c2, c4, c9, c10, c12, c13, c15, c24, c25, c26, c27, c29, c31, c32, c34, c35, c36, c37

(5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing tuple parts

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
*(z0, z1) → #mult(z0, z1)
+(z0, z1) → #add(z0, z1)
computeLine(z0, z1, z2) → computeLine#1(z0, z2, z1)
computeLine#1(::(z0, z1), z2, z3) → computeLine#2(z3, z2, z0, z1)
computeLine#1(nil, z0, z1) → z0
computeLine#2(::(z0, z1), z2, z3, z4) → computeLine(z4, z1, lineMult(z3, z0, z2))
computeLine#2(nil, z0, z1, z2) → nil
lineMult(z0, z1, z2) → lineMult#1(z1, z2, z0)
lineMult#1(::(z0, z1), z2, z3) → lineMult#2(z2, z3, z0, z1)
lineMult#1(nil, z0, z1) → nil
lineMult#2(::(z0, z1), z2, z3, z4) → ::(+(*(z3, z2), z0), lineMult(z2, z4, z1))
lineMult#2(nil, z0, z1, z2) → ::(*(z1, z0), lineMult(z0, z2, nil))
matrixMult(z0, z1) → matrixMult#1(z0, z1)
matrixMult#1(::(z0, z1), z2) → ::(computeLine(z0, z2, nil), matrixMult(z1, z2))
matrixMult#1(nil, z0) → nil
Tuples:

#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
K tuples:none
Defined Rule Symbols:

*, +, computeLine, computeLine#1, computeLine#2, lineMult, lineMult#1, lineMult#2, matrixMult, matrixMult#1, #add, #mult, #natmult, #pred, #succ

Defined Pair Symbols:

#MULT, #NATMULT, *', +', COMPUTELINE, COMPUTELINE#1, COMPUTELINE#2, LINEMULT, LINEMULT#1, LINEMULT#2, MATRIXMULT, MATRIXMULT#1, #ADD

Compound Symbols:

c9, c10, c12, c13, c15, c24, c25, c26, c27, c29, c31, c32, c34, c35, c36, c37, c2, c4

(7) CdtUsableRulesProof (EQUIVALENT transformation)

The following rules are not usable and were removed:

computeLine(z0, z1, z2) → computeLine#1(z0, z2, z1)
computeLine#1(::(z0, z1), z2, z3) → computeLine#2(z3, z2, z0, z1)
computeLine#1(nil, z0, z1) → z0
computeLine#2(::(z0, z1), z2, z3, z4) → computeLine(z4, z1, lineMult(z3, z0, z2))
computeLine#2(nil, z0, z1, z2) → nil
matrixMult(z0, z1) → matrixMult#1(z0, z1)
matrixMult#1(::(z0, z1), z2) → ::(computeLine(z0, z2, nil), matrixMult(z1, z2))
matrixMult#1(nil, z0) → nil

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
lineMult(z0, z1, z2) → lineMult#1(z1, z2, z0)
lineMult#1(::(z0, z1), z2, z3) → lineMult#2(z2, z3, z0, z1)
lineMult#1(nil, z0, z1) → nil
lineMult#2(::(z0, z1), z2, z3, z4) → ::(+(*(z3, z2), z0), lineMult(z2, z4, z1))
lineMult#2(nil, z0, z1, z2) → ::(*(z1, z0), lineMult(z0, z2, nil))
+(z0, z1) → #add(z0, z1)
*(z0, z1) → #mult(z0, z1)
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
Tuples:

#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
K tuples:none
Defined Rule Symbols:

#natmult, #add, #succ, lineMult, lineMult#1, lineMult#2, +, *, #mult, #pred

Defined Pair Symbols:

#MULT, #NATMULT, *', +', COMPUTELINE, COMPUTELINE#1, COMPUTELINE#2, LINEMULT, LINEMULT#1, LINEMULT#2, MATRIXMULT, MATRIXMULT#1, #ADD

Compound Symbols:

c9, c10, c12, c13, c15, c24, c25, c26, c27, c29, c31, c32, c34, c35, c36, c37, c2, c4

(9) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
We considered the (Usable) Rules:none
And the Tuples:

#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(#0) = [2]   
POL(#ADD(x1, x2)) = 0   
POL(#MULT(x1, x2)) = 0   
POL(#NATMULT(x1, x2)) = 0   
POL(#add(x1, x2)) = [2]x1   
POL(#mult(x1, x2)) = [4] + [5]x1 + [2]x2   
POL(#natmult(x1, x2)) = [2]x1 + [5]x2   
POL(#neg(x1)) = [3]   
POL(#pos(x1)) = 0   
POL(#pred(x1)) = [3] + [3]x1   
POL(#s(x1)) = 0   
POL(#succ(x1)) = [3] + [2]x1   
POL(*(x1, x2)) = [2] + [2]x1 + x2   
POL(*'(x1, x2)) = 0   
POL(+(x1, x2)) = [3] + [2]x1 + [3]x2   
POL(+'(x1, x2)) = 0   
POL(::(x1, x2)) = [4] + x1 + x2   
POL(COMPUTELINE(x1, x2, x3)) = 0   
POL(COMPUTELINE#1(x1, x2, x3)) = 0   
POL(COMPUTELINE#2(x1, x2, x3, x4)) = 0   
POL(LINEMULT(x1, x2, x3)) = 0   
POL(LINEMULT#1(x1, x2, x3)) = 0   
POL(LINEMULT#2(x1, x2, x3, x4)) = 0   
POL(MATRIXMULT(x1, x2)) = [4] + [2]x1   
POL(MATRIXMULT#1(x1, x2)) = [2]x1   
POL(c10(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c15(x1, x2)) = x1 + x2   
POL(c2(x1)) = x1   
POL(c24(x1)) = x1   
POL(c25(x1)) = x1   
POL(c26(x1)) = x1   
POL(c27(x1)) = x1   
POL(c29(x1, x2)) = x1 + x2   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c34(x1, x2, x3)) = x1 + x2 + x3   
POL(c35(x1, x2)) = x1 + x2   
POL(c36(x1)) = x1   
POL(c37(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c9(x1)) = x1   
POL(lineMult(x1, x2, x3)) = 0   
POL(lineMult#1(x1, x2, x3)) = [2] + [2]x1 + [3]x2 + [3]x3   
POL(lineMult#2(x1, x2, x3, x4)) = [2] + [2]x1 + [3]x2 + [5]x3 + [3]x4   
POL(nil) = 0   

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
lineMult(z0, z1, z2) → lineMult#1(z1, z2, z0)
lineMult#1(::(z0, z1), z2, z3) → lineMult#2(z2, z3, z0, z1)
lineMult#1(nil, z0, z1) → nil
lineMult#2(::(z0, z1), z2, z3, z4) → ::(+(*(z3, z2), z0), lineMult(z2, z4, z1))
lineMult#2(nil, z0, z1, z2) → ::(*(z1, z0), lineMult(z0, z2, nil))
+(z0, z1) → #add(z0, z1)
*(z0, z1) → #mult(z0, z1)
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
Tuples:

#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
K tuples:

MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
Defined Rule Symbols:

#natmult, #add, #succ, lineMult, lineMult#1, lineMult#2, +, *, #mult, #pred

Defined Pair Symbols:

#MULT, #NATMULT, *', +', COMPUTELINE, COMPUTELINE#1, COMPUTELINE#2, LINEMULT, LINEMULT#1, LINEMULT#2, MATRIXMULT, MATRIXMULT#1, #ADD

Compound Symbols:

c9, c10, c12, c13, c15, c24, c25, c26, c27, c29, c31, c32, c34, c35, c36, c37, c2, c4

(11) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(#0) = [2]   
POL(#ADD(x1, x2)) = 0   
POL(#MULT(x1, x2)) = 0   
POL(#NATMULT(x1, x2)) = 0   
POL(#add(x1, x2)) = [5] + [5]x2   
POL(#mult(x1, x2)) = [5] + [5]x1 + [2]x2   
POL(#natmult(x1, x2)) = [3] + [5]x1 + [2]x2   
POL(#neg(x1)) = 0   
POL(#pos(x1)) = 0   
POL(#pred(x1)) = [3] + [3]x1   
POL(#s(x1)) = [2]   
POL(#succ(x1)) = [4]   
POL(*(x1, x2)) = [2] + [3]x1 + [3]x2   
POL(*'(x1, x2)) = 0   
POL(+(x1, x2)) = [5] + [5]x1 + [2]x2   
POL(+'(x1, x2)) = 0   
POL(::(x1, x2)) = [1] + x1 + x2   
POL(COMPUTELINE(x1, x2, x3)) = x1   
POL(COMPUTELINE#1(x1, x2, x3)) = x1   
POL(COMPUTELINE#2(x1, x2, x3, x4)) = x3 + x4   
POL(LINEMULT(x1, x2, x3)) = 0   
POL(LINEMULT#1(x1, x2, x3)) = 0   
POL(LINEMULT#2(x1, x2, x3, x4)) = 0   
POL(MATRIXMULT(x1, x2)) = x1   
POL(MATRIXMULT#1(x1, x2)) = x1   
POL(c10(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c15(x1, x2)) = x1 + x2   
POL(c2(x1)) = x1   
POL(c24(x1)) = x1   
POL(c25(x1)) = x1   
POL(c26(x1)) = x1   
POL(c27(x1)) = x1   
POL(c29(x1, x2)) = x1 + x2   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c34(x1, x2, x3)) = x1 + x2 + x3   
POL(c35(x1, x2)) = x1 + x2   
POL(c36(x1)) = x1   
POL(c37(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c9(x1)) = x1   
POL(lineMult(x1, x2, x3)) = [3] + [5]x1 + [4]x2 + [4]x3   
POL(lineMult#1(x1, x2, x3)) = [5] + [2]x1 + [3]x2 + [3]x3   
POL(lineMult#2(x1, x2, x3, x4)) = [3] + [2]x1 + [5]x2 + [5]x3 + [3]x4   
POL(nil) = 0   

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
lineMult(z0, z1, z2) → lineMult#1(z1, z2, z0)
lineMult#1(::(z0, z1), z2, z3) → lineMult#2(z2, z3, z0, z1)
lineMult#1(nil, z0, z1) → nil
lineMult#2(::(z0, z1), z2, z3, z4) → ::(+(*(z3, z2), z0), lineMult(z2, z4, z1))
lineMult#2(nil, z0, z1, z2) → ::(*(z1, z0), lineMult(z0, z2, nil))
+(z0, z1) → #add(z0, z1)
*(z0, z1) → #mult(z0, z1)
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
Tuples:

#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
K tuples:

MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
Defined Rule Symbols:

#natmult, #add, #succ, lineMult, lineMult#1, lineMult#2, +, *, #mult, #pred

Defined Pair Symbols:

#MULT, #NATMULT, *', +', COMPUTELINE, COMPUTELINE#1, COMPUTELINE#2, LINEMULT, LINEMULT#1, LINEMULT#2, MATRIXMULT, MATRIXMULT#1, #ADD

Compound Symbols:

c9, c10, c12, c13, c15, c24, c25, c26, c27, c29, c31, c32, c34, c35, c36, c37, c2, c4

(13) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)

The following tuples could be moved from S to K by knowledge propagation:

COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
lineMult(z0, z1, z2) → lineMult#1(z1, z2, z0)
lineMult#1(::(z0, z1), z2, z3) → lineMult#2(z2, z3, z0, z1)
lineMult#1(nil, z0, z1) → nil
lineMult#2(::(z0, z1), z2, z3, z4) → ::(+(*(z3, z2), z0), lineMult(z2, z4, z1))
lineMult#2(nil, z0, z1, z2) → ::(*(z1, z0), lineMult(z0, z2, nil))
+(z0, z1) → #add(z0, z1)
*(z0, z1) → #mult(z0, z1)
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
Tuples:

#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
K tuples:

MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
Defined Rule Symbols:

#natmult, #add, #succ, lineMult, lineMult#1, lineMult#2, +, *, #mult, #pred

Defined Pair Symbols:

#MULT, #NATMULT, *', +', COMPUTELINE, COMPUTELINE#1, COMPUTELINE#2, LINEMULT, LINEMULT#1, LINEMULT#2, MATRIXMULT, MATRIXMULT#1, #ADD

Compound Symbols:

c9, c10, c12, c13, c15, c24, c25, c26, c27, c29, c31, c32, c34, c35, c36, c37, c2, c4

(15) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
We considered the (Usable) Rules:none
And the Tuples:

#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(#0) = 0   
POL(#ADD(x1, x2)) = 0   
POL(#MULT(x1, x2)) = x1   
POL(#NATMULT(x1, x2)) = 0   
POL(#add(x1, x2)) = 0   
POL(#mult(x1, x2)) = 0   
POL(#natmult(x1, x2)) = 0   
POL(#neg(x1)) = 0   
POL(#pos(x1)) = 0   
POL(#pred(x1)) = 0   
POL(#s(x1)) = 0   
POL(#succ(x1)) = 0   
POL(*(x1, x2)) = 0   
POL(*'(x1, x2)) = x1   
POL(+(x1, x2)) = 0   
POL(+'(x1, x2)) = 0   
POL(::(x1, x2)) = [2] + x1 + x2   
POL(COMPUTELINE(x1, x2, x3)) = [3]x1·x2   
POL(COMPUTELINE#1(x1, x2, x3)) = [3]x1·x3   
POL(COMPUTELINE#2(x1, x2, x3, x4)) = [2]x1 + [3]x1·x4 + [3]x1·x3   
POL(LINEMULT(x1, x2, x3)) = [2]x2   
POL(LINEMULT#1(x1, x2, x3)) = [2]x1   
POL(LINEMULT#2(x1, x2, x3, x4)) = [3] + x3 + [2]x4   
POL(MATRIXMULT(x1, x2)) = [3]x2 + [3]x1·x2   
POL(MATRIXMULT#1(x1, x2)) = [3]x1·x2   
POL(c10(x1)) = x1   
POL(c12(x1)) = x1   
POL(c13(x1)) = x1   
POL(c15(x1, x2)) = x1 + x2   
POL(c2(x1)) = x1   
POL(c24(x1)) = x1   
POL(c25(x1)) = x1   
POL(c26(x1)) = x1   
POL(c27(x1)) = x1   
POL(c29(x1, x2)) = x1 + x2   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c34(x1, x2, x3)) = x1 + x2 + x3   
POL(c35(x1, x2)) = x1 + x2   
POL(c36(x1)) = x1   
POL(c37(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c9(x1)) = x1   
POL(lineMult(x1, x2, x3)) = 0   
POL(lineMult#1(x1, x2, x3)) = 0   
POL(lineMult#2(x1, x2, x3, x4)) = 0   
POL(nil) = 0   

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
lineMult(z0, z1, z2) → lineMult#1(z1, z2, z0)
lineMult#1(::(z0, z1), z2, z3) → lineMult#2(z2, z3, z0, z1)
lineMult#1(nil, z0, z1) → nil
lineMult#2(::(z0, z1), z2, z3, z4) → ::(+(*(z3, z2), z0), lineMult(z2, z4, z1))
lineMult#2(nil, z0, z1, z2) → ::(*(z1, z0), lineMult(z0, z2, nil))
+(z0, z1) → #add(z0, z1)
*(z0, z1) → #mult(z0, z1)
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
Tuples:

#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c15(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c4(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
K tuples:

MATRIXMULT(z0, z1) → c36(MATRIXMULT#1(z0, z1))
MATRIXMULT#1(::(z0, z1), z2) → c37(COMPUTELINE(z0, z2, nil), MATRIXMULT(z1, z2))
COMPUTELINE#1(::(z0, z1), z2, z3) → c27(COMPUTELINE#2(z3, z2, z0, z1))
COMPUTELINE#2(::(z0, z1), z2, z3, z4) → c29(COMPUTELINE(z4, z1, lineMult(z3, z0, z2)), LINEMULT(z3, z0, z2))
COMPUTELINE(z0, z1, z2) → c26(COMPUTELINE#1(z0, z2, z1))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
LINEMULT#2(::(z0, z1), z2, z3, z4) → c34(+'(*(z3, z2), z0), *'(z3, z2), LINEMULT(z2, z4, z1))
LINEMULT#2(nil, z0, z1, z2) → c35(*'(z1, z0), LINEMULT(z0, z2, nil))
Defined Rule Symbols:

#natmult, #add, #succ, lineMult, lineMult#1, lineMult#2, +, *, #mult, #pred

Defined Pair Symbols:

#MULT, #NATMULT, *', +', COMPUTELINE, COMPUTELINE#1, COMPUTELINE#2, LINEMULT, LINEMULT#1, LINEMULT#2, MATRIXMULT, MATRIXMULT#1, #ADD

Compound Symbols:

c9, c10, c12, c13, c15, c24, c25, c26, c27, c29, c31, c32, c34, c35, c36, c37, c2, c4

(17) CdtKnowledgeProof (EQUIVALENT transformation)

The following tuples could be moved from S to K by knowledge propagation:

*'(z0, z1) → c24(#MULT(z0, z1))
+'(z0, z1) → c25(#ADD(z0, z1))
LINEMULT(z0, z1, z2) → c31(LINEMULT#1(z1, z2, z0))
#MULT(#neg(z0), #neg(z1)) → c9(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c10(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c12(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c13(#NATMULT(z0, z1))
#ADD(#neg(#s(#s(z0))), z1) → c2(#ADD(#pos(#s(z0)), z1))
LINEMULT#1(::(z0, z1), z2, z3) → c32(LINEMULT#2(z2, z3, z0, z1))
Now S is empty

(18) BOUNDS(1, 1)