* @x @y #mult @x @y + @x @y #add @x @y appendreverse @toreverse @sofar appendreverse#1 @toreverse @sofar appendreverse#1 :: @a @as @sofar appendreverse @as :: @a @sofar appendreverse#1 nil @sofar @sofar bftMult @t @acc bftMult' tuple#2 :: @t nil nil @acc bftMult' @queue @acc bftMult'#1 bftMult'#2 @queue @acc bftMult'#1 tuple#2 @elem @queue @acc bftMult'#3 @elem @acc @queue bftMult'#2 tuple#2 @dequeue@1 @dequeue@2 dequeue @dequeue@1 @dequeue@2 bftMult'#3 :: @t @_@3 @acc @queue bftMult'#4 @t @acc @queue bftMult'#3 nil @acc @queue @acc bftMult'#4 leaf @acc @queue bftMult' @queue @acc bftMult'#4 node @y @t1 @t2 @acc @queue bftMult'#5 enqueue @t2 enqueue @t1 @queue @acc @y bftMult'#5 @queue' @acc @y bftMult' @queue' matrixMult @acc @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 dequeue @outq @inq dequeue#1 @outq @inq dequeue#1 :: @t @ts @inq tuple#2 :: @t nil tuple#2 @ts @inq dequeue#1 nil @inq dequeue#2 reverse @inq dequeue#2 :: @t @ts tuple#2 :: @t nil tuple#2 @ts nil dequeue#2 nil tuple#2 nil tuple#2 nil nil enqueue @t @queue enqueue#1 @queue @t enqueue#1 tuple#2 @outq @inq @t tuple#2 @outq :: @t @inq 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 reverse @xs appendreverse @xs 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 bftMult'#2 1 #natmult 2 reverse 1 bftMult'#5 3 appendreverse#1 2 computeLine#1 3 bftMult'#3 3 appendreverse 2 matrixMult#1 2 leaf 0 bftMult 2 lineMult 3 lineMult#2 4 #pos 1 #add 2 node 3 dequeue 2 bftMult'#1 2 tuple#2 2 nil 0 bftMult' 2 computeLine 3 bftMult'#4 3 dequeue#1 2 :: 2 #mult 2 + 2 #succ 1 #0 0 enqueue#1 2 #neg 1 matrixMult 2 * 2 enqueue 2 dequeue#2 1 #pred 1 lineMult#1 3 #s 1 computeLine#2 4 INNERMOST tct_complexity/raML/bft_mmult.raml.trs