Other Agda modules in this chapter (87)
- RelativeCategories.BaseChange.BaseChange
- RelativeCategories.BaseChange.BaseChangeComparisonFamilies
- RelativeCategories.BaseChange.BaseChangeHigherIdentifications
- RelativeCategories.BaseChange.BasePostcomposition
- RelativeCategories.BaseChange.Identifications
- RelativeCategories.BaseChange.NativeProductBaseChange
- RelativeCategories.BaseChange.PulledFamilies
- RelativeCategories.BaseChange.SourceChange
- RelativeCategories.BaseChange.StructureChange
- RelativeCategories.Composition.EvaluatedPrecomposition
- RelativeCategories.Composition.Postcomposition
- RelativeCategories.Composition.PostcompositionEquivalences
- RelativeCategories.Composition.PostcompositionLaws
- RelativeCategories.Composition.PostcompositionReflection
- RelativeCategories.Composition.PrecompositionCompatibility
- RelativeCategories.ConeCalculus.ConeAction
- RelativeCategories.ConeCalculus.ConePasting
- RelativeCategories.ConeCalculus.ConeUncurrying
- RelativeCategories.ConeCalculus.EvaluatedRelativeCones
- RelativeCategories.ConeCalculus.NativePullbackTargets
- RelativeCategories.ConeCalculus.ProductTriangleCones
- RelativeCategories.ConeCalculus.PullbackRelativeComparisons
- RelativeCategories.ConeCalculus.PullbackTargets
- RelativeCategories.ConeCalculus.PullbackTriangles
- RelativeCategories.ConeCalculus.RelativeIntervalCones
- RelativeCategories.ConeCalculus.RestrictedConeLifts
- RelativeCategories.CoproductCalculus.CoproductDescent
- RelativeCategories.CoproductCalculus.CoproductMapping
- RelativeCategories.Coproducts
- RelativeCategories.DecodedMorphisms
- RelativeCategories.DiagramMorphisms
- RelativeCategories.Equivalences
- RelativeCategories.Evaluation.BaseIdentityTriangles
- RelativeCategories.Evaluation.Evaluation
- RelativeCategories.Evaluation.EvaluationRestriction
- RelativeCategories.Evaluation.EvaluationUnitCoherence
- RelativeCategories.Evaluation.PointComputations
- RelativeCategories.Evaluation.PointReductionCoherence
- RelativeCategories.Evaluation.ProductDependentEvaluation
- RelativeCategories.Evaluation.ProductUncurryingTriangles
- RelativeCategories.Evaluation.RestrictionEquivalences
- RelativeCategories.Evaluation.TriangleTransport
- RelativeCategories.Evaluation.UncurriedBaseTriangles
- RelativeCategories.Evaluation.UncurriedTriangles
- RelativeCategories.Evaluation.Uncurrying
- RelativeCategories.Evaluation.UncurryingComposition
- RelativeCategories.Evaluation.UncurryingRestriction
- RelativeCategories.Evaluation.UncurryingSubstitution
- RelativeCategories.Families.AbsolutePointFamilies
- RelativeCategories.Families.ArgumentFamilies
- RelativeCategories.Families.DecodedFamilies
- RelativeCategories.Families.Families
- RelativeCategories.Families.FamilyReflection
- RelativeCategories.Families.IdentificationFamilies
- RelativeCategories.Families.IntervalParameters
- RelativeCategories.Families.NativePointFamilies
- RelativeCategories.Functors
- RelativeCategories.IdentificationCalculus.ComparisonAlgebra
- RelativeCategories.IdentificationCalculus.ComparisonEncoding
- RelativeCategories.IdentificationCalculus.ComparisonLifting
- RelativeCategories.IdentificationCalculus.ComparisonRestriction
- RelativeCategories.IdentificationCalculus.ConstantNameChange
- RelativeCategories.IdentificationCalculus.ConstantNameNaturality
- RelativeCategories.IdentificationCalculus.ConstantNameRestriction
- RelativeCategories.IdentificationCalculus.ConstantNameUnit
- RelativeCategories.IdentificationCalculus.EquivalenceReflectionComputation
- RelativeCategories.IdentificationCalculus.FixedBoundaryComparisons
- RelativeCategories.IdentificationCalculus.HigherEncoding
- RelativeCategories.IdentificationCalculus.NamedPointEvaluation
- RelativeCategories.IdentificationCalculus.NamingCoherence
- RelativeCategories.IdentificationCalculus.NamingComparisons
- RelativeCategories.IdentificationCalculus.NamingIdentifications
- RelativeCategories.IdentificationCalculus.NamingLaws
- RelativeCategories.IdentificationCalculus.PostNamingCoherence
- RelativeCategories.Identifications
- RelativeCategories.MorphismDiagramRecovery
- RelativeCategories.MorphismDiagrams
- RelativeCategories.MorphismPostcomposition
- RelativeCategories.MorphismRetargeting
- RelativeCategories.MorphismTriangles
- RelativeCategories.MorphismWhiskering
- RelativeCategories.Morphisms
- RelativeCategories.NamedMorphisms
- RelativeCategories.Products
- RelativeCategories.PullbackMorphismLifting
- RelativeCategories.PullbackMorphisms
- RelativeCategories.TerminalBase
Complete compiler-highlighted source. Follow a symbol to its declaration.
# Relative families out of a coproduct Distribute the parameter across the coproduct, copair the two families, and descend along the distributivity equivalence. Both restrictions retain their triangles over the base. Comparisons on the two summands likewise determine a comparison of the entire relative family. ```agda {-# OPTIONS --safe --without-K #-} open import Agda.Primitive using (Level) open import SCT.VolumeI.Chapter01.Theory using (Theory) import SCT.VolumeI.Chapter01.Section04.MappingAnimae as Mapping import SCT.VolumeI.Chapter01.Section07.FunctorCategories as Categories import SCT.VolumeI.Chapter01.Section06.PullbackLaws as Pullbacks import SCT.VolumeI.Chapter01.Section05.Coproducts as Coproducts import SCT.VolumeI.Chapter01.Section06.UniversalCoproducts as Universality module SCT.VolumeI.Chapter03.RelativeCategories.CoproductCalculus.CoproductFamilies {c m a : Level} (𝒯 : Theory c m a) (M : Mapping.MappingAnimae 𝒯) (ℱ : Categories.FunctorCategories 𝒯 M) (P : Pullbacks.PullbackStructure 𝒯) (B : Coproducts.CoproductStructure 𝒯 M) (U : Universality.CoproductUniversality 𝒯 M B P) where open import SCT.VolumeI.Chapter01.Section05.Setup 𝒯 M open Coproducts.CoproductStructure B open import SCT.VolumeI.Chapter01.Section06.Distributivity 𝒯 M B P U using (module Distributivity) open import SCT.VolumeI.Chapter03.RelativeCategories.Functors 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Identifications 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Coproducts 𝒯 M ℱ P B using (module Sum) open import SCT.VolumeI.Chapter03.RelativeCategories.Families.ArgumentFamilies 𝒯 M ℱ P using (module Argument) open import SCT.VolumeI.Chapter03.RelativeCategories.Evaluation.RestrictionEquivalences 𝒯 M ℱ P using (module Restriction) module Families {C D E S : CAT} (p : MAP C S) (q : MAP D S) (r : MAP E S) (X : CAT) where module Domain = Sum p q using (projection; first; second) module Left = Argument Domain.first using (family) module Right = Argument Domain.second using (family) module Distributed = Sum (p ∘ pr₂ {C = X}) (q ∘ pr₂ {C = X}) using (projection; first; second; module Copair; module Compare) module Distribution = Distributed.Copair (Left.family X) (Right.family X) using (over; first-comparison; second-comparison) module Descend = Restriction (Domain.projection ∘ pr₂ {C = X}) r Distribution.over (Distributivity.distribute-isEquiv X C D) using (module Factor; module Reflect) module Copair (u : FunctorOver (p ∘ pr₂ {C = X}) r) (v : FunctorOver (q ∘ pr₂ {C = X}) r) where module Joined = Distributed.Copair u v using (over; first-comparison; second-comparison) module Lifted = Descend.Factor Joined.over using (value; comparison) value : FunctorOver (Domain.projection ∘ pr₂ {C = X}) r value = Lifted.value abstract first-comparison : FunctorOverIso (compose-over value (Left.family X)) u first-comparison = compose-iso-over Joined.first-comparison (compose-iso-over (prewhisker-over Distributed.first Lifted.comparison) (compose-iso-over (inverse-iso-over (associator-over Distributed.first Distribution.over value)) (postwhisker-over value (inverse-iso-over Distribution.first-comparison)))) second-comparison : FunctorOverIso (compose-over value (Right.family X)) v second-comparison = compose-iso-over Joined.second-comparison (compose-iso-over (prewhisker-over Distributed.second Lifted.comparison) (compose-iso-over (inverse-iso-over (associator-over Distributed.second Distribution.over value)) (postwhisker-over value (inverse-iso-over Distribution.second-comparison)))) module Compare (u v : FunctorOver (Domain.projection ∘ pr₂ {C = X}) r) (left : FunctorOverIso (compose-over u (Left.family X)) (compose-over v (Left.family X))) (right : FunctorOverIso (compose-over u (Right.family X)) (compose-over v (Right.family X))) where abstract first : FunctorOverIso (compose-over (compose-over u Distribution.over) Distributed.first) (compose-over (compose-over v Distribution.over) Distributed.first) first = compose-iso-over (inverse-iso-over (associator-over Distributed.first Distribution.over v)) (compose-iso-over (postwhisker-over v (inverse-iso-over Distribution.first-comparison)) (compose-iso-over left (compose-iso-over (postwhisker-over u Distribution.first-comparison) (associator-over Distributed.first Distribution.over u)))) second : FunctorOverIso (compose-over (compose-over u Distribution.over) Distributed.second) (compose-over (compose-over v Distribution.over) Distributed.second) second = compose-iso-over (inverse-iso-over (associator-over Distributed.second Distribution.over v)) (compose-iso-over (postwhisker-over v (inverse-iso-over Distribution.second-comparison)) (compose-iso-over right (compose-iso-over (postwhisker-over u Distribution.second-comparison) (associator-over Distributed.second Distribution.over u)))) comparison : FunctorOverIso u v comparison = Descend.Reflect.comparison u v (Distributed.Compare.comparison (compose-over u Distribution.over) (compose-over v Distribution.over) first second) ```