Tensor is a Bifunctor in
This definition is necessary to define the fact that is monoidal.
We extract the map on morphisms as it is quite handy to use directly.
(~⊗#~) : (a =#> b) -> (a' =#> b') -> a ⊗ a' =#> b ⊗ b'
(~⊗#~) x y = MkCartDepLens (bimap x.cfwd y.cfwd)
(\v => IsoProd (x.cbwd v.π1) (y.cbwd v.π2))Using it we define the bifunctor .
Proposition
Tensor forms a bifunctor
TensorBifunctorCart : Bifunctor ContCart ContCart ContCart TensorBifunctorCart = MkFunctor (uncurry (⊗)) (\x, y, m => m.π1 ~⊗#~ m.π2) -- proofs in appendix