@@ -108,9 +108,15 @@ identity₂ˡ = hom.identityˡ
108108identity₂ʳ : α ∘ᵥ id₂ ≈ α
109109identity₂ʳ = hom.identityʳ
110110
111+ identity₂² : id₂ ∘ᵥ id₂ {f = g} ≈ id₂ {f = g}
112+ identity₂² = hom.identity²
113+
111114assoc₂ : (α ∘ᵥ β) ∘ᵥ γ ≈ α ∘ᵥ β ∘ᵥ γ
112115assoc₂ = hom.assoc
113116
117+ sym-assoc₂ : α ∘ᵥ β ∘ᵥ γ ≈ (α ∘ᵥ β) ∘ᵥ γ
118+ sym-assoc₂ = hom.sym-assoc
119+
114120id₂◁ : id₂ {f = g} ◁ f ≈ id₂
115121id₂◁ = ⊚.identity
116122
@@ -153,12 +159,41 @@ refl⟩⊚⟨_ = ⊚-resp-≈ʳ
153159_⟩⊚⟨refl : α ≈ β → α ⊚₁ γ ≈ β ⊚₁ γ
154160_⟩⊚⟨refl = ⊚-resp-≈ˡ
155161
162+ ∘ᵥ-distr-⊚ : (α ∘ᵥ γ) ⊚₁ (β ∘ᵥ δ) ≈ (α ⊚₁ β) ∘ᵥ (γ ⊚₁ δ)
163+ ∘ᵥ-distr-⊚ = Functor.homomorphism ⊚
164+
165+ α⇐-⊚ : α⇐ ∘ᵥ (α ⊚₁ β ⊚₁ γ) ≈ ((α ⊚₁ β) ⊚₁ γ) ∘ᵥ α⇐
166+ α⇐-⊚ {α = α} {β = β} {γ = γ} = ⊚-assoc.⇐.commute ((α , β) , γ)
167+
168+ α⇒-⊚ : α⇒ ∘ᵥ ((α ⊚₁ β) ⊚₁ γ) ≈ (α ⊚₁ β ⊚₁ γ) ∘ᵥ α⇒
169+ α⇒-⊚ {α = α} {β = β} {γ = γ} = ⊚-assoc.⇒.commute ((α , β) , γ)
170+
156171∘ᵥ-distr-◁ : (α ◁ f) ∘ᵥ (β ◁ f) ≈ (α ∘ᵥ β) ◁ f
157172∘ᵥ-distr-◁ {f = f} = ⟺ (Functor.homomorphism (-⊚ f))
158173
159174∘ᵥ-distr-▷ : (f ▷ α) ∘ᵥ (f ▷ β) ≈ f ▷ (α ∘ᵥ β)
160175∘ᵥ-distr-▷ {f = f} = ⟺ (Functor.homomorphism (f ⊚-))
161176
177+ ◁-resp-≈ : α ≈ β → α ◁ f ≈ β ◁ f
178+ ◁-resp-≈ = _⟩⊚⟨refl
179+
180+ ▷-resp-≈ : α ≈ β → f ▷ α ≈ f ▷ β
181+ ▷-resp-≈ = refl⟩⊚⟨_
182+
183+ ▷-resp-sq : α ∘ᵥ β ≈ γ ∘ᵥ δ → f ▷ α ∘ᵥ f ▷ β ≈ f ▷ γ ∘ᵥ f ▷ δ
184+ ▷-resp-sq {α = α} {β = β} {γ = γ} {δ = δ} {f = f} sq = begin
185+ f ▷ α ∘ᵥ f ▷ β ≈⟨ ∘ᵥ-distr-▷ ⟩
186+ f ▷ (α ∘ᵥ β) ≈⟨ ▷-resp-≈ sq ⟩
187+ f ▷ (γ ∘ᵥ δ) ≈⟨ ⟺ ∘ᵥ-distr-▷ ⟩
188+ f ▷ γ ∘ᵥ f ▷ δ ∎
189+
190+ ◁-resp-sq : α ∘ᵥ β ≈ γ ∘ᵥ δ → α ◁ f ∘ᵥ β ◁ f ≈ γ ◁ f ∘ᵥ δ ◁ f
191+ ◁-resp-sq {α = α} {β = β} {γ = γ} {δ = δ} {f = f} sq = begin
192+ α ◁ f ∘ᵥ β ◁ f ≈⟨ ∘ᵥ-distr-◁ ⟩
193+ (α ∘ᵥ β) ◁ f ≈⟨ ◁-resp-≈ sq ⟩
194+ (γ ∘ᵥ δ)◁ f ≈⟨ ⟺ ∘ᵥ-distr-◁ ⟩
195+ γ ◁ f ∘ᵥ δ ◁ f ∎
196+
162197λ⇒-∘ᵥ-▷ : λ⇒ ∘ᵥ (id₁ ▷ α) ≈ α ∘ᵥ λ⇒
163198λ⇒-∘ᵥ-▷ {α = α} = begin
164199 λ⇒ ∘ᵥ (id₁ ▷ α) ≈˘⟨ refl⟩∘⟨ id.identity ⟩⊚⟨refl ⟩
@@ -189,6 +224,9 @@ _⟩⊚⟨refl = ⊚-resp-≈ˡ
189224α⇐-▷-◁ : α⇐ ∘ᵥ (f ▷ (γ ◁ g)) ≈ ((f ▷ γ) ◁ g) ∘ᵥ α⇐
190225α⇐-▷-◁ {f = f} {γ = γ} {g = g} = ⊚-assoc.⇐.commute ((id₂ , γ) , id₂)
191226
227+ α⇒-▷-◁ : α⇒ ∘ᵥ ((f ▷ γ) ◁ g) ≈ (f ▷ (γ ◁ g)) ∘ᵥ α⇒
228+ α⇒-▷-◁ {f = f} {γ = γ} {g = g} = ⟺ (conjugate-to associator associator α⇐-▷-◁)
229+
192230α⇒-▷-∘₁ : α⇒ ∘ᵥ (f ∘₁ g) ▷ γ ≈ f ▷ g ▷ γ ∘ᵥ α⇒
193231α⇒-▷-∘₁{f = f} {g = g} {γ = γ} = begin
194232 α⇒ ∘ᵥ (f ⊚₀ g) ▷ γ ≈˘⟨ refl⟩∘⟨ ⊚.identity ⟩⊚⟨refl ⟩
@@ -217,6 +255,57 @@ pentagon-inv : ∀ {E} {f : A ⇒₁ B} {g : B ⇒₁ C} {h : C ⇒₁ D} {i : D
217255 (α⇐ ◁ f ∘ᵥ α⇐) ∘ᵥ i ▷ α⇐ ≈ α⇐ ∘ᵥ α⇐ {f = i} {h} {g ∘₁ f}
218256pentagon-inv = to-≈ pentagon-iso
219257
258+ pentagon-var : ∀ {E} {f : A ⇒₁ B} {g : B ⇒₁ C} {h : C ⇒₁ D} {i : D ⇒₁ E} →
259+ (i ▷ α⇒ ∘ᵥ α⇒) ∘ᵥ α⇒ ◁ f ≈
260+ α⇒ {f = i} {h} {g ∘₁ f} ∘ᵥ α⇒
261+ pentagon-var {f = f} {g} {h} {i} = begin
262+ (i ▷ α⇒ ∘ᵥ α⇒) ∘ᵥ α⇒ ◁ f ≈⟨ assoc₂ ⟩
263+ i ▷ α⇒ ∘ᵥ α⇒ ∘ᵥ α⇒ ◁ f ≈⟨ pentagon ⟩
264+ α⇒ {f = i} {h} {g ∘₁ f} ∘ᵥ α⇒ ∎
265+
266+ pentagon-inv-var : ∀ {E} {f : A ⇒₁ B} {g : B ⇒₁ C} {h : C ⇒₁ D} {i : D ⇒₁ E} →
267+ α⇐ ◁ f ∘ᵥ α⇐ ∘ᵥ i ▷ α⇐
268+ ≈ α⇐ ∘ᵥ α⇐ {f = i} {h} {g ∘₁ f}
269+ pentagon-inv-var {f = f} {g} {h} {i} = begin
270+ α⇐ ◁ f ∘ᵥ α⇐ ∘ᵥ i ▷ α⇐ ≈⟨ sym-assoc₂ ⟩
271+ (α⇐ ◁ f ∘ᵥ α⇐) ∘ᵥ i ▷ α⇐ ≈⟨ pentagon-inv ⟩
272+ α⇐ ∘ᵥ α⇐ ∎
273+
274+ pentagon-conjugate₁ : ∀ {E} {f : A ⇒₁ B} {g : B ⇒₁ C} {h : C ⇒₁ D} {i : D ⇒₁ E} →
275+ α⇐ {f = i} {h} {g ∘₁ f} ∘ᵥ i ▷ α⇒ ∘ᵥ α⇒ ≈
276+ α⇒ ∘ᵥ α⇐ ◁ f
277+ pentagon-conjugate₁ {f = f} = conjugate-from (associator ◁ᵢ f) associator pentagon-var
278+
279+ pentagon-conjugate₂ : ∀ {E} {f : A ⇒₁ B} {g : B ⇒₁ C} {h : C ⇒₁ D} {i : D ⇒₁ E} →
280+ i ▷ α⇒ ∘ᵥ α⇒ ≈
281+ α⇒ {f = i} {h} {g ∘₁ f} ∘ᵥ α⇒ ∘ᵥ α⇐ ◁ f
282+ pentagon-conjugate₂ {f = f} {g} {h} {i} = begin
283+ i ▷ α⇒ ∘ᵥ α⇒ ≈⟨ switch-fromtoʳ (associator ◁ᵢ f) pentagon-var ⟩
284+ (α⇒ ∘ᵥ α⇒) ∘ᵥ α⇐ ◁ f ≈⟨ assoc₂ ⟩
285+ α⇒ {f = i} {h} {g ∘₁ f} ∘ᵥ α⇒ ∘ᵥ α⇐ ◁ f ∎
286+
287+ pentagon-conjugate₃ : ∀ {E} {f : A ⇒₁ B} {g : B ⇒₁ C} {h : C ⇒₁ D} {i : D ⇒₁ E} →
288+ α⇒ ◁ f ∘ᵥ α⇐ ≈
289+ (α⇐ ∘ᵥ i ▷ α⇐) ∘ᵥ α⇒ {f = i} {h} {g ∘₁ f}
290+ pentagon-conjugate₃ {f = f} {g} {h} {i} = begin
291+ α⇒ ◁ f ∘ᵥ α⇐ ≈⟨ ⟺ (conjugate-to associator (associator ◁ᵢ f) pentagon-inv-var) ⟩
292+ (α⇐ ∘ᵥ i ▷ α⇐) ∘ᵥ α⇒ ∎
293+
294+ pentagon-conjugate₄ : ∀ {E} {f : A ⇒₁ B} {g : B ⇒₁ C} {h : C ⇒₁ D} {i : D ⇒₁ E} →
295+ α⇒ ∘ᵥ α⇐ ◁ f ≈
296+ α⇐ {f = i} {h} {g ∘₁ f} ∘ᵥ i ▷ α⇒ ∘ᵥ α⇒
297+ pentagon-conjugate₄ {f = f} {g} {h} {i} = begin
298+ α⇒ ∘ᵥ α⇐ ◁ f ≈⟨ ⟺ (conjugate-from (associator ◁ᵢ f) associator pentagon-var) ⟩
299+ α⇐ ∘ᵥ i ▷ α⇒ ∘ᵥ α⇒ ∎
300+
301+ pentagon-conjugate₅ : ∀ {E} {f : A ⇒₁ B} {g : B ⇒₁ C} {h : C ⇒₁ D} {i : D ⇒₁ E} →
302+ α⇐ {f = i} {h} {g ∘₁ f} ∘ᵥ i ▷ α⇒ ≈
303+ α⇒ ∘ᵥ α⇐ ◁ f ∘ᵥ α⇐
304+ pentagon-conjugate₅ {f = f} {g} {h} {i} = begin
305+ α⇐ ∘ᵥ i ▷ α⇒ ≈⟨ conjugate-to (i ▷ᵢ associator) associator (⟺ pentagon-inv) ⟩
306+ α⇒ ∘ᵥ α⇐ ◁ f ∘ᵥ α⇐ ∎
307+
308+
220309module UnitorCoherence where
221310
222311 -- Extra coherence laws for the unitors.
@@ -316,6 +405,16 @@ module UnitorCoherence where
316405 id₁ ▷ (λ⇒ ∘ᵥ α⇒) ≈˘⟨ id.identity ⟩⊚⟨refl ⟩
317406 id.F₁ _ ⊚₁ (λ⇒ ∘ᵥ α⇒) ∎)
318407
408+ unitorˡ-coherence-iso : {f : B ⇒₁ C} {g : A ⇒₁ B} → unitorˡ ◁ᵢ g ≈ᵢ unitorˡ ∘ᵢ associator {f = id₁} {f} {g}
409+ unitorˡ-coherence-iso = ⌞ unitorˡ-coherence ⌟
410+
411+ unitorˡ-coherence-inv : [ f ⊚₀ g ⇒ (id₁ ⊚₀ f) ⊚₀ g ]⟨
412+ λ⇐ ◁ g
413+ ≈ λ⇐ ⇒⟨ id₁ ⊚₀ (f ⊚₀ g) ⟩
414+ α⇐
415+ ⟩
416+ unitorˡ-coherence-inv = to-≈ unitorˡ-coherence-iso
417+
319418 unitorʳ-coherence : [ (f ⊚₀ g) ⊚₀ id₁ ⇒ f ⊚₀ g ]⟨
320419 ρ⇒
321420 ≈ α⇒ ⇒⟨ f ⊚₀ (g ⊚₀ id₁) ⟩
@@ -328,4 +427,28 @@ module UnitorCoherence where
328427 (f ▷ ρ⇒ ∘ᵥ α⇒) ◁ id₁ ≈˘⟨ refl⟩⊚⟨ id.identity ⟩
329428 (f ▷ ρ⇒ ∘ᵥ α⇒) ⊚₁ id.F₁ _ ∎)
330429
331- open UnitorCoherence public using (unitorˡ-coherence; unitorʳ-coherence)
430+ unitorʳ-coherence-var₁ : [ (f ⊚₀ g) ⊚₀ id₁ ⇒ f ⊚₀ g ⊚₀ id₁ ]⟨
431+ α⇒
432+ ≈ ρ⇒ ⇒⟨ f ⊚₀ g ⟩
433+ f ▷ ρ⇐
434+ ⟩
435+ unitorʳ-coherence-var₁ {f = f} = switch-fromtoˡ (f ▷ᵢ unitorʳ) (⟺ unitorʳ-coherence)
436+
437+ unitorʳ-coherence-var₂ : [ f ⊚₀ g ⇒ f ⊚₀ g ⊚₀ id₁ ]⟨
438+ f ▷ ρ⇐
439+ ≈ ρ⇐ ⇒⟨ (f ⊚₀ g) ⊚₀ id₁ ⟩
440+ α⇒
441+ ⟩
442+ unitorʳ-coherence-var₂ = switch-fromtoʳ unitorʳ (⟺ unitorʳ-coherence-var₁)
443+
444+ unitorʳ-coherence-inv : [ f ⊚₀ g ⇒ (f ⊚₀ g) ⊚₀ id₁ ]⟨
445+ f ▷ ρ⇐ ⇒⟨ f ⊚₀ g ⊚₀ id₁ ⟩
446+ α⇐
447+ ≈ ρ⇐
448+ ⟩
449+ unitorʳ-coherence-inv = ⟺ (switch-fromtoˡ associator (⟺ unitorʳ-coherence-var₂))
450+
451+ open UnitorCoherence public
452+ using (unitorˡ-coherence; unitorˡ-coherence-inv;
453+ unitorʳ-coherence; unitorʳ-coherence-var₁;
454+ unitorʳ-coherence-var₂; unitorʳ-coherence-inv)
0 commit comments