Other Agda modules in this section (72)
- BaseChange.BaseChangeFamilyProjection
- BaseChange.BaseChangeNativePoints
- BaseChange.BaseChangeSubstitution
- BaseChange.BeckChevalley
- BaseChange.BeckChevalleyCones
- BaseChange.BeckChevalleyDomain
- BaseChange.BeckChevalleyEvaluation
- BaseChange.BeckChevalleyFamilies
- BaseChange.BeckChevalleyMapping
- BaseChange.BeckChevalleyUncurrying
- BaseChange.DependentProductSourceTransport
- BaseChange.DependentProductTargetTransport
- BaseChange.EvaluatedBaseChange
- BaseChange.ProductBaseChangeFamilies
- BaseChange.PullbackTargetsBaseChange
- ConstantFamilyEvaluation
- ConstantFamilyUniversalProperty
- Currying.ActedConeRestriction
- Currying.ChangedConeAction
- Currying.ConeRestrictionTriangles
- Currying.ConstantBaseFunctoriality
- Currying.CurryingPostcomposition
- Currying.DependentUncurryingFamilies
- Currying.EvaluatedPullbackTargets
- Currying.EvaluatedRelativeExponentialLaw
- Currying.FamilyProjection
- Currying.ParameterizedConeComparison
- Currying.ParameterizedPullbackPasting
- Currying.PointParameterProjection
- Currying.PointPullbackCone
- Currying.PointRestrictionOverBase
- Currying.PointRestrictionSquare
- Currying.ProjectedRelativeEvaluation
- Currying.PullbackTargetFamilies
- Currying.RelativeCurrying
- Currying.RelativeEvaluationFamilies
- Currying.RelativeTransposition
- Currying.SourceChangeFamilies
- Currying.TargetChangeIdentifications
- Currying.UncurriedFamilyProjection
- Currying.UncurriedFamilySubstitution
- Currying.UncurriedParameterComparison
- Currying.UncurriedTriangleComposition
- DependentProductAction
- DependentProductActionLaws
- DependentProductEmbeddings
- DependentProductUniqueness
- DependentProducts
- DependentProductsBaseChange
- ExponentiabilityCriterion
- ExponentiableFunctors
- InternalFunctorCalculus.ConstantFamilyNativeEvaluation
- InternalFunctorCalculus.ConstantFamilyReassociation
- InternalFunctorCalculus.InternalEvaluation
- InternalFunctorCalculus.InternalProductFamily
- InternalFunctorCalculus.RelativeInternalFunctors
- InternalFunctorFibers
- InternalFunctorSections
- InternalFunctors
- InternalFunctorsBaseChange
- ProductCalculus.DependentProductActionIdentifications
- ProductCalculus.FunctorCategoryUncurrying
- ProductCalculus.ProductDependentProducts
- ProductCalculus.ProductDependentUncurrying
- ProductCalculus.ProductEvaluationComposition
- ProductCalculus.ProductEvaluationFamilies
- ProductCalculus.ProductFamilyProjection
- ProductCalculus.ProductFamilyReassociation
- ProductCalculus.ProductParameterCones
- ProductCalculus.ReassociatedProductLifting
- SectionsOfDependentProducts
- TerminalExponentiability
Complete compiler-highlighted source. Follow a symbol to its declaration.
Corresponding book passages
# Internal functors from a constant family For `exercise:Description_Mapping_Object_Over_Gamma`, the pullback of `Fun(D,E) → Fun(D,Γ)` along the constant-family functor has the required relative mapping property. A map over `Γ` first gives a functor over its constant family; the relative exponential law then uncurries it. We use `Γ × D → Γ` for the constant family. Interchanging the two product factors gives the manuscript's `D × Γ → Γ`. The final comparison also replaces `K × D` by the chosen pullback, retaining its structure functor. The maps below specify the comparison as this composite of equivalences. ```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 module SCT.VolumeI.Chapter03.Section05.InternalFunctorCalculus.ConstantFamilyInternalFunctors {c m a : Level} (𝒯 : Theory c m a) (M : Mapping.MappingAnimae 𝒯) (ℱ : Categories.FunctorCategories 𝒯 M) (P : Pullbacks.PullbackStructure 𝒯) where open import SCT.VolumeI.Chapter01.Section07.Setup 𝒯 M ℱ open import SCT.VolumeI.Chapter01.Section05.Setup 𝒯 M using (mapPost; mapPost-isEquiv) open Pullbacks.PullbackStructure P open import SCT.VolumeI.Chapter01.Section06.Cones 𝒯 open import SCT.VolumeI.Chapter01.Section06.Coordinates.ProductSquares 𝒯 P using (module FirstFactor) open import SCT.VolumeI.Chapter03.RelativeCategories.Functors 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.Section05.Currying.EvaluatedPullbackTargets 𝒯 M ℱ P using (module PullbackTarget) open import SCT.VolumeI.Chapter03.Section05.Currying.EvaluatedRelativeExponentialLaw 𝒯 M ℱ P using (module Law) open import SCT.VolumeI.Chapter03.RelativeCategories.BaseChange.SourceChange 𝒯 M ℱ P using (module Change) open import SCT.VolumeI.Chapter03.RelativeCategories.Composition.EvaluatedPrecomposition 𝒯 M ℱ P using (module Precompose) module ConstantFamily (D : CAT) {E Γ : CAT} (q : MAP E Γ) where constant : MAP Γ (Fun D Γ) constant = funCurry pr₁ category : CAT category = Pullback (funPost q) constant projection : MAP category Γ projection = pullback₂ sections : MAP category (Fun D E) sections = pullback₁ abstract uncurry-constant : {K : CAT} (k : MAP K Γ) → funUncurry (constant ∘ k) =₁ (k ∘ pr₁) uncurry-constant k = pair-β₁ (k ∘ pr₁) (id D ∘ pr₂) ∙ ((funCurry-β pr₁ ▷ productMap k (id D)) ∙ funUncurry-restrict constant k) evaluation : FunctorOver (projection ∘ pr₁ {D = D}) q evaluation = record { lift = funUncurry sections ; comparison = uncurry-constant projection ∙ (funUncurryIso (pullbackMatch {f = funPost q} {constant}) ∙ (funPost-uncurry q sections) ⁻¹) } module At {K : CAT} (k : MAP K Γ) where module Target = PullbackTarget constant (funPost q) k module Exponential = Law q (constant ∘ k) module Structure = Change (uncurry-constant k) q functor : MAP (FunOver k projection) (FunOver (k ∘ pr₁ {D = D}) q) functor = Structure.functor ∘ (Exponential.functor ∘ Target.functor) abstract functor-isEquiv : IsEquiv functor functor-isEquiv = equiv-compose (Exponential.functor ∘ Target.functor) Structure.functor (equiv-compose Target.functor Exponential.functor Target.functor-isEquiv Exponential.functor-isEquiv) Structure.functor-isEquiv maps : MAP (MapOver k projection) (MapOver (k ∘ pr₁ {D = D}) q) maps = mapPost functor maps-isEquiv : IsEquiv maps maps-isEquiv = mapPost-isEquiv functor functor-isEquiv -- Replace the displayed product by the chosen pullback over Γ. module Domain = FirstFactor k D structure : MAP (Pullback k (pr₁ {Γ} {D})) Γ structure = k ∘ pullback₁ inclusion : FunctorOver (k ∘ pr₁ {D = D}) structure inclusion = record { lift = pullbackLift Domain.square ; comparison = (k ◁ ConeIso.leftIso (pullbackLift-β Domain.square)) ∙ comp-assoc (pullbackLift Domain.square) pullback₁ k } module Restriction = Precompose q inclusion abstract restriction-isEquiv : IsEquiv Restriction.functor restriction-isEquiv = Restriction.Equivalence.functor-isEquiv Domain.square-isPullback relative-functor : MAP (FunOver k projection) (FunOver structure q) relative-functor = IsEquiv.inverse restriction-isEquiv ∘ functor abstract relative-functor-isEquiv : IsEquiv relative-functor relative-functor-isEquiv = equiv-compose functor (IsEquiv.inverse restriction-isEquiv) functor-isEquiv (equiv-inverse restriction-isEquiv) relative-maps : MAP (MapOver k projection) (MapOver structure q) relative-maps = mapPost relative-functor relative-maps-isEquiv : IsEquiv relative-maps relative-maps-isEquiv = mapPost-isEquiv relative-functor relative-functor-isEquiv ```