Other Agda modules in this section (32)
# Comparisons of framed morphism families
Identity, inverse and composition retain the two endpoint equations of a
comparison. The calculation is performed over an arbitrary projection before
specialization to the source and target evaluations.
```agda
{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter02.Section01.MorphismFamilyComparisons where
open import SCT.VolumeI.Chapter01.Section01.Vocabulary
open Operations
open import SCT.VolumeI.Chapter01.Section02.Coherence using (id₌; postWhisker-id₌; module Composition)
open Composition
open import SCT.VolumeI.Chapter01.Section02.Specialization using (comp₌-cong)
open import SCT.VolumeI.Chapter01.Section03.Identifications.Inverses using (comp₌-unitʳ-One)
open import SCT.VolumeI.Chapter01.Section03.Identifications.OverBase
using (CompatibleOver; compatible-inverse; compatible-comp)
open import SCT.VolumeI.Chapter02.Section01.Morphisms
using (MorphismFamily; MorphismFamilyIdentification; ev₀; ev₁)
open import SCT.VolumeI.Chapter02.Section01.MorphismFamilyOperations
using (family-comparison; module FamilyComparison)
private
module _ {Γ : Context} {P U C : CAT Γ} (pi : MAP U C)
{u : MAP P U} {x : MAP P C} (p : (pi ∘ u) =₁ x) where
identity-compatible : CompatibleOver pi p p (id₌ u)
identity-compatible = comp₌-unitʳ-One p ∙
comp₌-cong (id₌ p) (postWhisker-id₌ pi u)
module _ {Γ : Context} where
id-family-comparison : {P C : CAT Γ} {f g : MAP P C} (alpha : MorphismFamily f g)
→ MorphismFamilyIdentification One alpha alpha
id-family-comparison alpha = family-comparison alpha alpha (id₌ (MorphismFamily.arrow alpha))
(identity-compatible ev₀ (MorphismFamily.source-frame alpha))
(identity-compatible ev₁ (MorphismFamily.target-frame alpha))
inverse-family-comparison : {P C : CAT Γ} {f g : MAP P C}
{alpha beta : MorphismFamily f g}
→ MorphismFamilyIdentification One alpha beta → MorphismFamilyIdentification One beta alpha
inverse-family-comparison {alpha = alpha} {beta} given =
family-comparison beta alpha (Q.identification ⁻¹)
(compatible-inverse ev₀ (MorphismFamily.source-frame alpha) (MorphismFamily.source-frame beta)
Q.identification Q.source)
(compatible-inverse ev₁ (MorphismFamily.target-frame alpha) (MorphismFamily.target-frame beta)
Q.identification Q.target)
where module Q = FamilyComparison given
compose-family-comparisons : {P C : CAT Γ} {f g : MAP P C}
{alpha beta gamma : MorphismFamily f g}
→ MorphismFamilyIdentification One beta gamma → MorphismFamilyIdentification One alpha beta
→ MorphismFamilyIdentification One alpha gamma
compose-family-comparisons {alpha = alpha} {beta} {gamma} second first =
family-comparison alpha gamma (S.identification ∙ F.identification)
(compatible-comp ev₀ (MorphismFamily.source-frame alpha) (MorphismFamily.source-frame beta)
(MorphismFamily.source-frame gamma) S.identification F.identification S.source F.source)
(compatible-comp ev₁ (MorphismFamily.target-frame alpha) (MorphismFamily.target-frame beta)
(MorphismFamily.target-frame gamma) S.identification F.identification S.target F.target)
where
module F = FamilyComparison first
module S = FamilyComparison second
```