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.CoproductFamilies
- 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 out of a coproduct Restriction to the two summands is an equivalence of relative functor categories. Its inverse copairs the two universal families. The native restriction computations prove the inverse laws, including the base triangles; the argument applies over an arbitrary absolute base. ```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.CoproductMapping {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.CoproductCalculus.CoproductFamilies 𝒯 M ℱ P B U using (module Families) open import SCT.VolumeI.Chapter03.RelativeCategories.Families.Families 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Families.FamilyReflection 𝒯 M ℱ P using (reflect-family) open import SCT.VolumeI.Chapter03.RelativeCategories.Evaluation.Evaluation 𝒯 M ℱ P using (module Curry) open import SCT.VolumeI.Chapter03.RelativeCategories.Composition.EvaluatedPrecomposition 𝒯 M ℱ P using (module Precompose) module Restriction {C D E S : CAT} (p : MAP C S) (q : MAP D S) (r : MAP E S) where module Domain = Sum p q using (projection; first; second) module Left = Precompose r Domain.first using (functor; family-comparison) module Right = Precompose r Domain.second using (functor; family-comparison) module LeftArgument = Argument Domain.first using (family) module RightArgument = Argument Domain.second using (family) Source = FunOver Domain.projection r Target = FunOver p r × FunOver q r functor : MAP Source Target functor = pair Left.functor Right.functor module Chosen = Families.Copair p q r Target (family p r pr₁) (family q r pr₂) using (value; first-comparison; second-comparison) inverse : MAP Target Source inverse = Curry.functor Domain.projection r (FunctorLift.lift Chosen.value) (FunctorLift.comparison Chosen.value) abstract inverse-evaluation : FunctorOverIso (family Domain.projection r inverse) Chosen.value inverse-evaluation = curried-beta Domain.projection r Chosen.value first-comparison : (Left.functor ∘ inverse) =₁ pr₁ first-comparison = reflect-family p r _ _ (compose-iso-over Chosen.first-comparison (compose-iso-over (prewhisker-over (LeftArgument.family Target) inverse-evaluation) (Left.family-comparison inverse))) second-comparison : (Right.functor ∘ inverse) =₁ pr₂ second-comparison = reflect-family q r _ _ (compose-iso-over Chosen.second-comparison (compose-iso-over (prewhisker-over (RightArgument.family Target) inverse-evaluation) (Right.family-comparison inverse))) right-inverse : (functor ∘ inverse) =₁ id Target right-inverse = pair-projections ∙ (pair-cong first-comparison second-comparison ∙ pair-pre Left.functor Right.functor inverse) reflect : {X : CAT} (F G : MAP X Source) → (functor ∘ F) =₁ (functor ∘ G) → F =₁ G reflect {X} F G α = reflect-family Domain.projection r F G (Families.Compare.comparison p q r X (family Domain.projection r F) (family Domain.projection r G) (compose-iso-over (Left.family-comparison G) (compose-iso-over (family-identification p r (project-pair₁ Left.functor Right.functor G ∙ ((pr₁ ◁ α) ∙ (project-pair₁ Left.functor Right.functor F) ⁻¹))) (inverse-iso-over (Left.family-comparison F)))) (compose-iso-over (Right.family-comparison G) (compose-iso-over (family-identification q r (project-pair₂ Left.functor Right.functor G ∙ ((pr₂ ◁ α) ∙ (project-pair₂ Left.functor Right.functor F) ⁻¹))) (inverse-iso-over (Right.family-comparison F))))) left-inverse : (inverse ∘ functor) =₁ id Source left-inverse = reflect (inverse ∘ functor) (id Source) ((comp-unitʳ functor) ⁻¹ ∙ (comp-unitˡ functor ∙ ((right-inverse ▷ functor) ∙ (comp-assoc functor inverse functor) ⁻¹))) functor-isEquiv : IsEquiv functor functor-isEquiv = record { inverse = inverse ; sectionIso = left-inverse ⁻¹ ; retractionIso = right-inverse ⁻¹ } ```