Lemma inner_swap_inv (x y z w : V) : inner_swap x y z w · inner_swap x z y w = identity _. Proof. unfold inner_swap. apply pathsinv0. rewrite ! assoc'. use (z_iso_inv_to_left _ _ _ (_ ,, _)). { apply (_ ,, monoidal_associatorisolaw V _ _ _). } cbn. rewrite ! assoc. use (z_iso_inv_on_left _ _ _ _ (mon_lassociator _ _ _ ,, mon_rassociator _ _ _ ,, _)). { apply (_ ,, monoidal_associatorisolaw _ _ _ _). } cbn. rewrite id_right. etrans. 2: { apply pathsinv0. apply monoidal_associatorisolaw. } cbn. etrans. { apply maponpaths_2. rewrite assoc'. apply maponpaths. apply monoidal_associatorisolaw. } rewrite id_right. refine (! bifunctor_leftcomp V _ _ _ _ _ _ @ _). etrans. { apply maponpaths. rewrite assoc'. apply maponpaths. rewrite ! assoc. do 2 apply maponpaths_2. apply monoidal_associatorisolaw. } rewrite id_left. etrans. { apply maponpaths. rewrite assoc. apply maponpaths_2. rewrite assoc'. apply maponpaths. refine (! bifunctor_rightcomp V _ _ _ _ _ _ @ _). apply maponpaths. apply (monoidal_braiding_inverses V). } rewrite (bifunctor_rightid V). rewrite id_right. etrans. { apply maponpaths. apply monoidal_associatorisolaw. } apply (bifunctor_leftid V). Qed.
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.Isos. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.PrecategoryBinProduct. Require Import UniMath.CategoryTheory.Monoidal.WhiskeredBifunctors. Require Import UniMath.CategoryTheory.Monoidal.Categories. Import BifunctorNotations. Require Import UniMath.CategoryTheory.Monoidal.Structure.Symmetric. Import MonoidalNotations.