Definition lunitors_equiv {C : category} (T : bifunctor C C C) (I : C) : lunitor0 T I ≃ left_unitor (bifunctor_to_functorfromproductcat T) I. Proof. use weqtotal2. { use weqtotal2. - apply idweq. - intro lu. use weq_iso. + intro lunat. intros x y f. etrans. { apply maponpaths_2 ; apply when_bifunctor_becomes_leftwhiskering. } apply (lunat x y f). + intro lunattrans. intros x y f. use (_ @ lunattrans x y f). apply maponpaths_2. apply (! when_bifunctor_becomes_leftwhiskering _ _ _). + intro. repeat (apply impred_isaprop ; intro) ; apply homset_property. + intro. apply isaprop_is_nat_trans. apply homset_property. } intro lunat. simpl. use (weqtotaltoforall (X := C) (λ x, C ⟦ x, bifunctor_on_objects T I x ⟧)). Defined.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.PrecategoryBinProduct. Require Import UniMath.CategoryTheory.Monoidal.WhiskeredBifunctors. Require Import UniMath.CategoryTheory.Monoidal.Categories. Require Import UniMath.CategoryTheory.Monoidal.AlternativeDefinitions.MonoidalCategoriesTensored. Require Import UniMath.CategoryTheory.Monoidal.AlternativeDefinitions.MonoidalCategoriesReordered.