* @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 #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 #natmult 2 computeLine 3 computeLine#1 3 matrixMult#1 2 lineMult 3 :: 2 #mult 2 + 2 #succ 1 lineMult#2 4 #pos 1 #add 2 #0 0 #neg 1 matrixMult 2 * 2 #pred 1 lineMult#1 3 #s 1 nil 0 computeLine#2 4 INNERMOST tct_complexity/raML/clevermmult.raml.trs