*(@x,@y) |
→ |
#mult(@x,@y) |
(1) |
+(@x,@y) |
→ |
#add(@x,@y) |
(2) |
computeLine(@line,@m,@acc) |
→ |
computeLine#1(@line,@acc,@m) |
(3) |
computeLine#1(::(@x,@xs),@acc,@m) |
→ |
computeLine#2(@m,@acc,@x,@xs) |
(4) |
computeLine#1(nil,@acc,@m) |
→ |
@acc |
(5) |
computeLine#2(::(@l,@ls),@acc,@x,@xs) |
→ |
computeLine(@xs,@ls,lineMult(@x,@l,@acc)) |
(6) |
computeLine#2(nil,@acc,@x,@xs) |
→ |
nil |
(7) |
lineMult(@n,@l1,@l2) |
→ |
lineMult#1(@l1,@l2,@n) |
(8) |
lineMult#1(::(@x,@xs),@l2,@n) |
→ |
lineMult#2(@l2,@n,@x,@xs) |
(9) |
lineMult#1(nil,@l2,@n) |
→ |
nil |
(10) |
lineMult#2(::(@y,@ys),@n,@x,@xs) |
→ |
::(+(*(@x,@n),@y),lineMult(@n,@xs,@ys)) |
(11) |
lineMult#2(nil,@n,@x,@xs) |
→ |
::(*(@x,@n),lineMult(@n,@xs,nil)) |
(12) |
matrixMult(@m1,@m2) |
→ |
matrixMult#1(@m1,@m2) |
(13) |
matrixMult#1(::(@l,@ls),@m2) |
→ |
::(computeLine(@l,@m2,nil),matrixMult(@ls,@m2)) |
(14) |
matrixMult#1(nil,@m2) |
→ |
nil |
(15) |
and S is the following TRS.
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
|
originates from |
*(z0,z1) |
→ |
#mult(z0,z1) |
(40) |
|
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
|
originates from |
+(z0,z1) |
→ |
#add(z0,z1) |
(42) |
|
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
|
originates from |
computeLine(z0,z1,z2) |
→ |
computeLine#1(z0,z2,z1) |
(44) |
|
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
|
originates from |
computeLine#1(::(z0,z1),z2,z3) |
→ |
computeLine#2(z3,z2,z0,z1) |
(46) |
|
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
|
originates from |
computeLine#1(nil,z0,z1) |
→ |
z0 |
(48) |
|
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
|
originates from |
computeLine#2(::(z0,z1),z2,z3,z4) |
→ |
computeLine(z4,z1,lineMult(z3,z0,z2)) |
(50) |
|
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
|
originates from |
computeLine#2(nil,z0,z1,z2) |
→ |
nil |
(52) |
|
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
|
originates from |
lineMult(z0,z1,z2) |
→ |
lineMult#1(z1,z2,z0) |
(54) |
|
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
|
originates from |
lineMult#1(::(z0,z1),z2,z3) |
→ |
lineMult#2(z2,z3,z0,z1) |
(56) |
|
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
|
originates from |
lineMult#1(nil,z0,z1) |
→ |
nil |
(58) |
|
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
|
originates from |
lineMult#2(::(z0,z1),z2,z3,z4) |
→ |
::(+(*(z3,z2),z0),lineMult(z2,z4,z1)) |
(60) |
|
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
|
originates from |
lineMult#2(nil,z0,z1,z2) |
→ |
::(*(z1,z0),lineMult(z0,z2,nil)) |
(62) |
|
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
|
originates from |
matrixMult(z0,z1) |
→ |
matrixMult#1(z0,z1) |
(64) |
|
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
|
originates from |
matrixMult#1(::(z0,z1),z2) |
→ |
::(computeLine(z0,z2,nil),matrixMult(z1,z2)) |
(66) |
|
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
|
originates from |
matrixMult#1(nil,z0) |
→ |
nil |
(68) |
|
|
originates from |
|
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
|
originates from |
#add(#neg(#s(#0)),z0) |
→ |
#pred(z0) |
(72) |
|
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
|
originates from |
#add(#neg(#s(#s(z0))),z1) |
→ |
#pred(#add(#pos(#s(z0)),z1)) |
(74) |
|
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
|
originates from |
#add(#pos(#s(#0)),z0) |
→ |
#succ(z0) |
(76) |
|
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
|
originates from |
#add(#pos(#s(#s(z0))),z1) |
→ |
#succ(#add(#pos(#s(z0)),z1)) |
(78) |
|
|
originates from |
|
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
|
originates from |
#mult(#0,#neg(z0)) |
→ |
#0 |
(81) |
|
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
|
originates from |
#mult(#0,#pos(z0)) |
→ |
#0 |
(83) |
|
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
|
originates from |
#mult(#neg(z0),#0) |
→ |
#0 |
(85) |
|
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
|
originates from |
#mult(#neg(z0),#neg(z1)) |
→ |
#pos(#natmult(z0,z1)) |
(87) |
|
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
|
originates from |
#mult(#neg(z0),#pos(z1)) |
→ |
#neg(#natmult(z0,z1)) |
(89) |
|
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
|
originates from |
#mult(#pos(z0),#0) |
→ |
#0 |
(91) |
|
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
|
originates from |
#mult(#pos(z0),#neg(z1)) |
→ |
#neg(#natmult(z0,z1)) |
(93) |
|
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
|
originates from |
#mult(#pos(z0),#pos(z1)) |
→ |
#pos(#natmult(z0,z1)) |
(95) |
|
#natmult#(#0,z0) |
→ |
c14 |
(98) |
|
originates from |
#natmult(#0,z0) |
→ |
#0 |
(97) |
|
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
|
originates from |
#natmult(#s(z0),z1) |
→ |
#add(#pos(z1),#natmult(z0,z1)) |
(99) |
|
|
originates from |
#pred(#0) |
→ |
#neg(#s(#0)) |
(32) |
|
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
|
originates from |
#pred(#neg(#s(z0))) |
→ |
#neg(#s(#s(z0))) |
(102) |
|
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
|
originates from |
#pred(#pos(#s(#0))) |
→ |
#0 |
(34) |
|
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
|
originates from |
#pred(#pos(#s(#s(z0)))) |
→ |
#pos(#s(z0)) |
(105) |
|
|
originates from |
#succ(#0) |
→ |
#pos(#s(#0)) |
(36) |
|
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
|
originates from |
#succ(#neg(#s(#0))) |
→ |
#0 |
(37) |
|
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
|
originates from |
#succ(#neg(#s(#s(z0)))) |
→ |
#neg(#s(z0)) |
(109) |
|
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
|
originates from |
#succ(#pos(#s(z0))) |
→ |
#pos(#s(#s(z0))) |
(111) |
|
Moreover, we add the following terms to the innermost strategy.
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
#add#(#0,z0) |
→ |
c |
(71) |
#add#(#neg(#s(#0)),z0) |
→ |
c1(#pred#(z0)) |
(73) |
#add#(#neg(#s(#s(z0))),z1) |
→ |
c2(#pred#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(75) |
#add#(#pos(#s(#0)),z0) |
→ |
c3(#succ#(z0)) |
(77) |
#add#(#pos(#s(#s(z0))),z1) |
→ |
c4(#succ#(#add(#pos(#s(z0)),z1)),#add#(#pos(#s(z0)),z1)) |
(79) |
#mult#(#0,#0) |
→ |
c5 |
(80) |
#mult#(#0,#neg(z0)) |
→ |
c6 |
(82) |
#mult#(#0,#pos(z0)) |
→ |
c7 |
(84) |
#mult#(#neg(z0),#0) |
→ |
c8 |
(86) |
#mult#(#neg(z0),#neg(z1)) |
→ |
c9(#natmult#(z0,z1)) |
(88) |
#mult#(#neg(z0),#pos(z1)) |
→ |
c10(#natmult#(z0,z1)) |
(90) |
#mult#(#pos(z0),#0) |
→ |
c11 |
(92) |
#mult#(#pos(z0),#neg(z1)) |
→ |
c12(#natmult#(z0,z1)) |
(94) |
#mult#(#pos(z0),#pos(z1)) |
→ |
c13(#natmult#(z0,z1)) |
(96) |
#natmult#(#0,z0) |
→ |
c14 |
(98) |
#natmult#(#s(z0),z1) |
→ |
c15(#add#(#pos(z1),#natmult(z0,z1)),#natmult#(z0,z1)) |
(100) |
#pred#(#0) |
→ |
c16 |
(101) |
#pred#(#neg(#s(z0))) |
→ |
c17 |
(103) |
#pred#(#pos(#s(#0))) |
→ |
c18 |
(104) |
#pred#(#pos(#s(#s(z0)))) |
→ |
c19 |
(106) |
#succ#(#0) |
→ |
c20 |
(107) |
#succ#(#neg(#s(#0))) |
→ |
c21 |
(108) |
#succ#(#neg(#s(#s(z0)))) |
→ |
c22 |
(110) |
#succ#(#pos(#s(z0))) |
→ |
c23 |
(112) |
*#(z0,z1) |
→ |
c24(#mult#(z0,z1)) |
(41) |
+#(z0,z1) |
→ |
c25(#add#(z0,z1)) |
(43) |
computeLine#(z0,z1,z2) |
→ |
c26(computeLine#1#(z0,z2,z1)) |
(45) |
computeLine#1#(::(z0,z1),z2,z3) |
→ |
c27(computeLine#2#(z3,z2,z0,z1)) |
(47) |
computeLine#1#(nil,z0,z1) |
→ |
c28 |
(49) |
computeLine#2#(::(z0,z1),z2,z3,z4) |
→ |
c29(computeLine#(z4,z1,lineMult(z3,z0,z2)),lineMult#(z3,z0,z2)) |
(51) |
computeLine#2#(nil,z0,z1,z2) |
→ |
c30 |
(53) |
lineMult#(z0,z1,z2) |
→ |
c31(lineMult#1#(z1,z2,z0)) |
(55) |
lineMult#1#(::(z0,z1),z2,z3) |
→ |
c32(lineMult#2#(z2,z3,z0,z1)) |
(57) |
lineMult#1#(nil,z0,z1) |
→ |
c33 |
(59) |
lineMult#2#(::(z0,z1),z2,z3,z4) |
→ |
c34(+#(*(z3,z2),z0),*#(z3,z2),lineMult#(z2,z4,z1)) |
(61) |
lineMult#2#(nil,z0,z1,z2) |
→ |
c35(*#(z1,z0),lineMult#(z0,z2,nil)) |
(63) |
matrixMult#(z0,z1) |
→ |
c36(matrixMult#1#(z0,z1)) |
(65) |
matrixMult#1#(::(z0,z1),z2) |
→ |
c37(computeLine#(z0,z2,nil),matrixMult#(z1,z2)) |
(67) |
matrixMult#1#(nil,z0) |
→ |
c38 |
(69) |
There are no rules in the TRS R. Hence, R/S has complexity O(1).