tensor product functor