open import Chapter5.Container
module Chapter8.Container.Morphism.Contornament.Composition.Vertical
         {I J K L M N : Set}
         {u₂₁ : K → I}{v₂₁ : L → J}
         {u₃₂ : M → K}{v₃₂ : N → L}
         {φ₁ : I ▸ J}{φ₂ : K ▸ L}{φ₃ : M ▸ N}
       where
open import Function renaming (_∘_ to _f∘_)
open import Data.Product
open import Relation.Binary.PropositionalEquality
open import Chapter8.Container.Morphism.Contornament
_∙_ : (υ : Contornament φ₁ u₂₁ v₂₁) → 
      Contornament (⟦ υ ⟧corn) u₃₂ v₃₂ → 
      Contornament φ₁ (u₂₁ f∘ u₃₂) (v₂₁ f∘ v₃₂)
υ ∙ τ = 
  record { extend = λ n sh₁ → Σ[ e₁ ∈ extend υ (v₃₂ n) sh₁ ]  extend τ n (sh₁ , e₁)
         ; refine = λ { {n}{sh₁} (e₁ , e₂) p₁ → refine τ e₂ p₁ }
         ; coherence⊢ = λ { {n} sh (e₁ , e₂) p₁ → 
                            trans (cong u₂₁ (coherence⊢ τ (sh , e₁) e₂ p₁)) 
                                  (coherence⊢ υ sh e₁ p₁) } }
  where open Contornament