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.CoproductFamilies
- 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 functors over a coproduct base A relative functor over a coproduct is a pair of relative functors on its two inverse images. Decompose its source by coproduct universality, restrict to the summands, and use the two specified pullback squares for its target. Taking cores gives the corresponding product of mapping animae. All base triangles are retained in these constructions. ```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.CoproductDescent {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 Pullbacks.PullbackStructure P open Universality 𝒯 M B P open CoproductUniversality U open import SCT.VolumeI.Chapter01.Section05.CoproductCalculus 𝒯 M B using (coproductMap; copair; copair-inclusions) open import SCT.VolumeI.Chapter01.Section05.RestrictionCalculus 𝒯 using (productMap-isEquiv) open import SCT.VolumeI.Chapter01.Section06.Cones 𝒯 using (Cone) open import SCT.VolumeI.Chapter01.Section06.PullbackSquares 𝒯 P using (IsPullback; pullbackCone-isPullback) open import SCT.VolumeI.Chapter01.Section06.CoproductCalculus.UniversalCoproductDescent 𝒯 M B P U using (module Cover) open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.ConeSymmetry 𝒯 using (coneSwap) open import SCT.VolumeI.Chapter01.Section06.PullbackSymmetry 𝒯 P using (pullback-swap) open import SCT.VolumeI.Chapter01.Section04.MappingProducts 𝒯 M using (module ProductComparison) open import SCT.VolumeI.Chapter03.RelativeCategories.Functors 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Coproducts 𝒯 M ℱ P B using (module Sum) open import SCT.VolumeI.Chapter03.RelativeCategories.CoproductCalculus.CoproductMapping 𝒯 M ℱ P B U using () renaming (module Restriction to Split) open import SCT.VolumeI.Chapter03.RelativeCategories.Composition.EvaluatedPrecomposition 𝒯 M ℱ P using (module Precompose) open import SCT.VolumeI.Chapter03.RelativeCategories.Composition.Postcomposition 𝒯 M ℱ P using (module Postcompose) open import SCT.VolumeI.Chapter03.RelativeCategories.Composition.PostcompositionEquivalences 𝒯 M ℱ P using (module Post) open import SCT.VolumeI.Chapter03.RelativeCategories.ConeCalculus.PullbackTargets 𝒯 M ℱ P using (module PullbackTarget) open import SCT.VolumeI.Chapter03.RelativeCategories.ConeCalculus.PullbackTriangles 𝒯 M ℱ P using (lift-triangle) module Separated {C D A Γ₀ Γ₁ S X : CAT} (i₀ : MAP Γ₀ S) (i₁ : MAP Γ₁ S) (cover : IsEquiv (copair i₀ i₁)) (projection : MAP A S) (r : MAP X S) (s : Cone projection i₀ C) (t : Cone projection i₁ D) (es : IsPullback s) (et : IsPullback t) where p = Cone.right s q = Cone.right t X₀ = Pullback r i₀ X₁ = Pullback r i₁ r₀ : MAP X₀ Γ₀ r₀ = pullback₂ r₁ : MAP X₁ Γ₁ r₁ = pullback₂ module Domain = Sum (i₀ ∘ r₀) (i₁ ∘ r₁) using (projection; module Copair) first : FunctorOver (i₀ ∘ r₀) r first = record { lift = pullback₁ ; comparison = pullbackMatch } second : FunctorOver (i₁ ∘ r₁) r second = record { lift = pullback₁ ; comparison = pullbackMatch } module Reassembled = Domain.Copair first second using (over) abstract reassembled-isEquiv : IsEquiv (FunctorLift.lift Reassembled.over) reassembled-isEquiv = Cover.copair-isEquiv i₀ i₁ r (coneSwap (pullbackCone r i₀)) (coneSwap (pullbackCone r i₁)) (pullback-swap (pullbackCone r i₀) (pullbackCone-isPullback r i₀)) (pullback-swap (pullbackCone r i₁) (pullbackCone-isPullback r i₁)) cover module Restrict = Precompose projection Reassembled.over using (functor; module Equivalence) module Pair = Split (i₀ ∘ r₀) (i₁ ∘ r₁) projection using (functor; functor-isEquiv) first-target : FunctorOver p (pullback₂ {f = projection} {i₀}) first-target = lift-triangle s second-target : FunctorOver q (pullback₂ {f = projection} {i₁}) second-target = lift-triangle t abstract first-target-isEquiv : IsEquiv (FunctorLift.lift first-target) first-target-isEquiv = es second-target-isEquiv : IsEquiv (FunctorLift.lift second-target) second-target-isEquiv = et module FirstPost = Postcompose r₀ first-target using (functor) module SecondPost = Postcompose r₁ second-target using (functor) module FirstTarget = PullbackTarget i₀ projection r₀ using (functor; functor-isEquiv) module SecondTarget = PullbackTarget i₁ projection r₁ using (functor; functor-isEquiv) first-component = FirstTarget.functor ∘ FirstPost.functor second-component = SecondTarget.functor ∘ SecondPost.functor abstract first-component-isEquiv : IsEquiv first-component first-component-isEquiv = equiv-compose FirstPost.functor FirstTarget.functor (Post.functor-isEquiv r₀ first-target first-target-isEquiv) FirstTarget.functor-isEquiv second-component-isEquiv : IsEquiv second-component second-component-isEquiv = equiv-compose SecondPost.functor SecondTarget.functor (Post.functor-isEquiv r₁ second-target second-target-isEquiv) SecondTarget.functor-isEquiv components = productMap (IsEquiv.inverse first-component-isEquiv) (IsEquiv.inverse second-component-isEquiv) functor : MAP (FunOver r projection) (FunOver r₀ p × FunOver r₁ q) functor = components ∘ (Pair.functor ∘ Restrict.functor) abstract functor-isEquiv : IsEquiv functor functor-isEquiv = equiv-compose (Pair.functor ∘ Restrict.functor) components (equiv-compose Restrict.functor Pair.functor (Restrict.Equivalence.functor-isEquiv reassembled-isEquiv) Pair.functor-isEquiv) (productMap-isEquiv _ _ (equiv-inverse first-component-isEquiv) (equiv-inverse second-component-isEquiv)) module Cores = ProductComparison One (FunOver r₀ p) (FunOver r₁ q) using (forward; forward-isEquiv) maps : MAP (MapOver r projection) (MapOver r₀ p × MapOver r₁ q) maps = Cores.forward ∘ mapPost functor abstract maps-isEquiv : IsEquiv maps maps-isEquiv = equiv-compose (mapPost functor) Cores.forward (mapPost-isEquiv functor functor-isEquiv) Cores.forward-isEquiv module Descent {C D Γ₀ Γ₁ X : CAT} (p : MAP C Γ₀) (q : MAP D Γ₁) (r : MAP X (Γ₀ ⊔ Γ₁)) where open Separated in₁ in₂ (equiv-transport ((copair-inclusions Γ₀ Γ₁) ⁻¹) (id-isEquiv (Γ₀ ⊔ Γ₁))) (coproductMap p q) r (coneSwap (coproductSquare₁ p q)) (coneSwap (coproductSquare₂ p q)) (pullback-swap (coproductSquare₁ p q) (inclusion₁-isPullback p q)) (pullback-swap (coproductSquare₂ p q) (inclusion₂-isPullback p q)) public ```