{-# OPTIONS --safe --lossy-unification #-} module Cubical.Categories.Constructions.BinProduct.Redundant.Assoc.ToLeft where open import Cubical.Foundations.Prelude open import Cubical.Categories.Category.Base open import Cubical.Categories.Functor.Base hiding (Id) open import Cubical.Categories.Instances.Functors.Redundant open import Cubical.Categories.Instances.Functors.Redundant.Bifunctor open import Cubical.Categories.NaturalTransformation open import Cubical.Data.Graph.Base open import Cubical.Data.Sum as Sum hiding (rec) open import Cubical.Data.Sigma open import Cubical.Categories.Constructions.BinProduct.Redundant.Base as BP open import Cubical.Categories.Constructions.Free.Category.Quiver as Free hiding (rec) open import Cubical.Categories.Constructions.Presented as Presented open import Cubical.Categories.Bifunctor.Redundant as Bif private variable ℓc ℓc' ℓd ℓd' ℓ ℓ' : Level open Category open Functor open NatTrans open Axioms open Bifunctor open BifunctorParAx private variable ℓe ℓe' ℓf ℓf' : Level module _ {C : Category ℓc ℓc'}{D : Category ℓd ℓd'} {E : Category ℓe ℓe'} where Assoc : Functor (C ×C (D ×C E)) ((C ×C D) ×C E) Assoc = rec C (D ×C E) (Bif.Sym (uncurry (rec D E (mkBifunctorParAx Assoc')))) where Assoc' : BifunctorParAx D E (FUNCTOR C ((C ×C D) ×C E)) Assoc' .Bif-ob d e .F-ob c = (c , d) , e Assoc' .Bif-ob d e .F-hom f = ηBif _ _ ⟪ ηBif _ _ ⟪ f ⟫l ⟫l Assoc' .Bif-homL g e .fst .N-ob c = ηBif _ _ ⟪ ηBif _ _ ⟪ g ⟫r ⟫l Assoc' .Bif-homR d h .fst .N-ob c = ηBif _ _ ⟪ h ⟫r Assoc' .Bif-homL g e .snd .fst f = ηBif _ _ ⟪ ηBif _ _ ⟪ f , g ⟫× ⟫l Assoc' .Bif-homR d h .snd .fst f = ηBif _ _ ⟪ ηBif _ _ ⟪ f ⟫l , h ⟫× Assoc' .Bif-hom× g h .fst .N-ob c = ηBif _ _ ⟪ ηBif _ _ ⟪ g ⟫r , h ⟫× Assoc' .Bif-hom× g h .snd .fst f = ηBif _ _ ⟪ ηBif _ _ ⟪ f , g ⟫× , h ⟫× Assoc' .Bif-ob d e .F-id = cong₂ (ηBif (C ×C D) E .Bif-homL) (ηBif C D .Bif-L-id) refl ∙ ηBif (C ×C D) E .Bif-L-id Assoc' .Bif-ob d e .F-seq f f' = cong₂ (ηBif (C ×C D) E .Bif-homL) (ηBif C D .Bif-L-seq f f') refl ∙ ηBif (C ×C D) E .Bif-L-seq (ηBif _ _ ⟪ f ⟫l) (ηBif _ _ ⟪ f' ⟫l) Assoc' .Bif-homL g e .fst .N-hom f = sym (ηBif _ _ .Bif-L-seq _ _) ∙ (λ i → ηBif _ _ ⟪ Bif-RL-commute (ηBif _ _) f g (~ i) ⟫l) ∙ (ηBif _ _ .Bif-L-seq _ _) Assoc' .Bif-homL g e .snd .snd f = (λ i → ηBif _ _ ⟪ ηBif _ _ .Bif-RL-fuse f g (~ i) ⟫l) ∙ ηBif _ _ .Bif-L-seq (ηBif _ _ ⟪ g ⟫r) (ηBif _ _ ⟪ f ⟫l) Assoc' .Bif-homR d h .fst .N-hom f = sym (Bif-RL-commute (ηBif _ _) (ηBif _ _ ⟪ f ⟫l) h) Assoc' .Bif-homR d h .snd .snd f = sym (ηBif _ _ .Bif-RL-fuse ((ηBif _ _ ⟪ f ⟫l)) h) Assoc' .Bif-hom× g h .fst .N-hom f = Bif-L×-fuse ((ηBif (C ×C D) E)) (ηBif C D ⟪ f ⟫l) (ηBif C D ⟪ g ⟫r) h ∙ cong₂ (ηBif (C ×C D) E .Bif-hom×) (sym (Bif-RL-commute (ηBif C D) f g)) refl ∙ sym (Bif-×L-fuse (ηBif (C ×C D) E) (ηBif C D ⟪ g ⟫r) (ηBif C D ⟪ f ⟫l) h) Assoc' .Bif-hom× g h .snd .snd f = (λ i → ηBif _ _ ⟪ ηBif _ _ .Bif-RL-fuse f g (~ i) , h ⟫×) ∙ sym (Bif-×L-fuse (ηBif _ _) (ηBif _ _ ⟪ g ⟫r) (ηBif _ _ ⟪ f ⟫l) h) Assoc' .Bif-×-id {d}{e} = RedundNatTrans≡ (funExt λ c → cong₂ (ηBif _ _ .Bif-hom×) (ηBif _ _ .Bif-R-id) refl ∙ ηBif _ _ .Bif-×-id) Assoc' .Bif-×-seq g g' h h' = RedundNatTrans≡ (funExt (λ c → cong₂ (ηBif _ _ .Bif-hom×) (ηBif C D .Bif-R-seq g g') refl ∙ ηBif _ _ .Bif-×-seq (ηBif _ _ ⟪ g ⟫r) (ηBif _ _ ⟪ g' ⟫r) h h')) Assoc' .Bif-L×-agree g = RedundNatTrans≡ (funExt (λ c → ηBif (C ×C D) E .Bif-L×-agree (ηBif C D ⟪ g ⟫r))) Assoc' .Bif-R×-agree h = RedundNatTrans≡ (funExt (λ c → ηBif (C ×C D) E .Bif-R×-agree h ∙ cong₂ (ηBif (C ×C D) E .Bif-hom×) (sym (ηBif C D .Bif-R-id)) refl))