123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657{-# OPTIONS --without-K --safe #-} open import Categories.Category.Core using (Category)open import Categories.Functor.Bifunctor using (Bifunctor) module Categories.Diagram.Cowedge {o ℓ e o′ ℓ′ e′} {C : Category o ℓ e} {D : Category o′ ℓ′ e′} (F : Bifunctor (Category.op C) C D) where private module C = Category C module D = Category D open D open HomReasoning open Equiv variable A : Obj open import Level open import Categories.Functoropen import Categories.Functor.Construction.Constantopen import Categories.NaturalTransformation.Dinatural open Functor F record Cowedge : Set (levelOfTerm F) where field E : Obj dinatural : DinaturalTransformation F (const E) module dinatural = DinaturalTransformation dinatural Cowedge-∘ : (W : Cowedge) → Cowedge.E W ⇒ A → CowedgeCowedge-∘ {A = A} W f = record { E = A ; dinatural = extranaturalˡ (λ X → f ∘ dinatural.α X) (assoc ○ ∘-resp-≈ʳ (extranatural-commˡ dinatural) ○ sym-assoc) } where open Cowedge W record Cowedge-Morphism (W₁ W₂ : Cowedge) : Set (levelOfTerm F) where private module W₁ = Cowedge W₁ module W₂ = Cowedge W₂ open DinaturalTransformation field u : W₁.E ⇒ W₂.E commute : ∀ {C} → u ∘ W₁.dinatural.α C ≈ W₂.dinatural.α C Cowedge-id : ∀ {W} → Cowedge-Morphism W WCowedge-id {W} = record { u = D.id ; commute = D.identityˡ } Cowedge-Morphism-∘ : {A B C : Cowedge} → Cowedge-Morphism B C → Cowedge-Morphism A B → Cowedge-Morphism A CCowedge-Morphism-∘ M N = record { u = u M ∘ u N ; commute = assoc ○ (∘-resp-≈ʳ (commute N) ○ commute M) } where open Cowedge-Morphism open HomReasoning