Other Agda modules in this section (76)
- AbsoluteObjects
- Coherence
- Composition
- CompositionCalculus.CompositionInputBaseCalculus
- CompositionCalculus.CompositionInputCalculus
- CompositionCalculus.CompositionInputParameterChange
- CompositionCalculus.CompositionNaturality
- CompositionCalculus.CompositionParameterChange
- CompositionCalculus.CompositionRestrictionCalculus
- CompositionCalculus.InternalCoherence
- CompositionCalculus.InternalPentagon
- CompositionCalculus.RetainedComparisonLaws
- CompositionCalculus.RetainedCompositionBaseChange
- CompositionCalculus.RetainedCompositionParameterChange
- CompositionCalculus.RetainedCompositionRoutes
- CompositionCalculus.UniversalAssociatorRestriction
- CompositionCalculus.UniversalCoherence
- CompositionCalculus.UniversalCoherenceCalculus
- CompositionCalculus.UniversalUnitCalculus
- CompositionCalculus.UniversalUnitChange
- Core
- Currying
- EquivalenceDetection
- Everything
- Functoriality
- MappingAnimae
- MappingProducts
- Points
- ProductCalculus.PairSectionEvaluation
- ProductCalculus.ProductAssociativity
- ProductCalculus.ProductPairingComparisons
- ProductCalculus.ProductSecondCoordinate
- ProductCalculus.ProductSubstitution
- ProductCalculus.ProductSubstitutionPairing
- ProductCalculus.ProductSubstitutionUnits
- ProductCalculus.TerminalInsertion
- Setup
- SquareCalculus.EquivalenceSectionFrames
- SquareCalculus.FramedCornerCalculus
- SquareCalculus.ParameterSquareNaturality
- SquareCalculus.ParameterSquarePasting
- SquareCalculus.ParameterSquareUnits
- SquareCalculus.ProjectionSquares
- SquareCalculus.RetainedParameterChangeProjections
- SquareCalculus.SectionFrames
- SquareCalculus.SplitProjectionCalculus
- SquareCalculus.SplitProjectionNaturality
- SquareCalculus.SquareEvaluation
- SquareCalculus.SquareEvaluationPostcomposition
- SquareCalculus.SquareEvaluationVerticalPasting
- SquareCalculus.TriangleEvaluation
- Substitution.ApplicationRestriction
- Substitution.ApplicationRouteNormalization
- Substitution.CoherenceTransport
- Substitution.ComparisonCancellation
- Substitution.Compatibility
- Substitution.ConstantPointRestriction
- Substitution.ConstantSubstitution
- Substitution.DecodingNaturality
- Substitution.EvaluationInputChange
- Substitution.EvaluationParameterChange
- Substitution.IdentityParameterChange
- Substitution.IsomorphismReasoning
- Substitution.IteratedCompatibility
- Substitution.MappingProofCalculus
- Substitution.NestedApplicationRestriction
- Substitution.ParameterChange
- Substitution.ParameterChangeNaturality
- Substitution.PrecompositionNaturality
- Substitution.ProofCalculus
- Substitution.RetainedIdentityParameterChange
- Substitution.SectionComparisonEvaluation
- Substitution.SectionComparisonRestriction
- Substitution.SubstitutionCoherence
- Substitution.UncurriedIdentityParameterChange
- Uncurrying
Complete compiler-highlighted source. Follow a symbol to its declaration.
Corresponding book passages
# Specializing functors between mapping animae This implements `lem:Pair_Specific_Specialization`. Naming and decoding are kept visible: a functor between mapping animae is applied to the name of an external functor, and its resulting absolute point is decoded. The action on isomorphisms is an actual composite of functors between isomorphism animae. ```agda {-# OPTIONS --safe --without-K #-} open import Agda.Primitive using (Level) open import SCT.VolumeI.Chapter01.Theory using (Theory) import SCT.VolumeI.Chapter01.Section04.Setup as Setup import SCT.VolumeI.Chapter01.Section04.MappingAnimae as MappingAnimae import SCT.VolumeI.Chapter01.Section04.Points as Points module SCT.VolumeI.Chapter01.Section04.Substitution.Specialization {c m a : Level} (𝒯 : Theory c m a) (M : MappingAnimae.MappingAnimae 𝒯) where open Setup 𝒯 open MappingAnimae.MappingAnimae M open Points 𝒯 M specializeMap : {A B C D : CAT} → MAP (Map A B) (Map C D) → MAP A B → MAP C D specializeMap H f = decodeMap (H ∘ nameMap f) specializeMap-id : {A B : CAT} (f : MAP A B) → (specializeMap (id (Map A B)) f) =₁ f specializeMap-id f = decode-name f ∙ decodeMapIso (comp-unitˡ (nameMap f)) specializeMap-comp : {A B C D E F : CAT} (H : MAP (Map A B) (Map C D)) (K : MAP (Map C D) (Map E F)) (f : MAP A B) → (specializeMap (K ∘ H) f) =₁ (specializeMap K (specializeMap H f)) specializeMap-comp H K f = decodeMapIso ((K ◁ name-decode (H ∘ nameMap f)) ⁻¹ ∙ comp-assoc (nameMap f) H K) specializeMap-isoMap : {A B C D : CAT} (H : MAP (Map A B) (Map C D)) (f g : MAP A B) → MAP (f = g) (specializeMap H f = specializeMap H g) specializeMap-isoMap H f g = decodeMap-isoMap (H ∘ nameMap f) (H ∘ nameMap g) ∘ (postWhisker H ∘ nameMap-isoMap f g) specializeMapIso : {A B C D : CAT} (H : MAP (Map A B) (Map C D)) {f g : MAP A B} → f =₁ g → (specializeMap H f) =₁ (specializeMap H g) specializeMapIso H {f} {g} α = specializeMap-isoMap H f g ∘ α specializeMap-Iso₂ : {A B C D : CAT} (H : MAP (Map A B) (Map C D)) {f g : MAP A B} {α β : f =₁ g} → α =₂ β → (specializeMapIso H α) =₂ (specializeMapIso H β) specializeMap-Iso₂ H {f} {g} p = specializeMap-isoMap H f g ◁ p specializeMap-changeMap : {A B C D : CAT} (H K : MAP (Map A B) (Map C D)) (f : MAP A B) → MAP (H = K) (specializeMap H f = specializeMap K f) specializeMap-changeMap H K f = decodeMap-isoMap (H ∘ nameMap f) (K ∘ nameMap f) ∘ preWhisker (nameMap f) specializeMap-change : {A B C D : CAT} {H K : MAP (Map A B) (Map C D)} (τ : H =₁ K) (f : MAP A B) → (specializeMap H f) =₁ (specializeMap K f) specializeMap-change {H = H} {K} τ f = specializeMap-changeMap H K f ∘ τ specializeMap-isoMap-isEquiv : {A B C D : CAT} (H : MAP (Map A B) (Map C D)) → IsEquiv H → (f g : MAP A B) → IsEquiv (specializeMap-isoMap H f g) specializeMap-isoMap-isEquiv H e f g = equiv-compose (postWhisker H ∘ nameMap-isoMap f g) (decodeMap-isoMap (H ∘ nameMap f) (H ∘ nameMap g)) (equiv-compose (nameMap-isoMap f g) (postWhisker H) (nameMap-isoMap-isEquiv f g) (postWhisker-isEquiv H e (nameMap f) (nameMap g))) (decodeMap-isoMap-isEquiv (H ∘ nameMap f) (H ∘ nameMap g)) ``` When `H` is an equivalence, a functor and each specified comparison can be lifted. Image witnesses are retained, including for higher identifications. ```agda record SpecializationLift {A B C D : CAT} (H : MAP (Map A B) (Map C D)) (g : MAP C D) : Set m where field functor : MAP A B comparison : (specializeMap H functor) =₁ g specializeMap-lift : {A B C D : CAT} (H : MAP (Map A B) (Map C D)) → IsEquiv H → (g : MAP C D) → SpecializationLift H g specializeMap-lift H e g = let pointLift = equiv-lift e (nameMap g) point = FunctorLift.lift pointLift image = FunctorLift.comparison pointLift in record { functor = decodeMap point ; comparison = decode-name g ∙ decodeMapIso (image ∙ (H ◁ name-decode point)) } specializeMap-reflect : {A B C D : CAT} (H : MAP (Map A B) (Map C D)) → IsEquiv H → (f g : MAP A B) → (specializeMap H f) =₁ (specializeMap H g) → f =₁ g specializeMap-reflect H e f g α = FunctorLift.lift (equiv-lift (specializeMap-isoMap-isEquiv H e f g) α) specializeMap-reflect-β : {A B C D : CAT} (H : MAP (Map A B) (Map C D)) (e : IsEquiv H) (f g : MAP A B) (α : (specializeMap H f) =₁ (specializeMap H g)) → (specializeMapIso H (specializeMap-reflect H e f g α)) =₂ α specializeMap-reflect-β H e f g α = FunctorLift.comparison (equiv-lift (specializeMap-isoMap-isEquiv H e f g) α) specializeMap-reflect-Iso₂ : {A B C D : CAT} (H : MAP (Map A B) (Map C D)) → IsEquiv H → {f g : MAP A B} → (α β : f =₁ g) → (specializeMapIso H α) =₂ (specializeMapIso H β) → α =₂ β specializeMap-reflect-Iso₂ H e {f} {g} α β = equiv-reflect (specializeMap-isoMap-isEquiv H e f g) α β specializeMap-Iso₂-lift : {A B C D : CAT} (H : MAP (Map A B) (Map C D)) (e : IsEquiv H) {f g : MAP A B} (α β : f =₁ g) (p : (specializeMapIso H α) =₂ (specializeMapIso H β)) → FunctorLift (postWhisker (specializeMap-isoMap H f g)) p specializeMap-Iso₂-lift H e {f} {g} α β p = postWhisker-lift (specializeMap-isoMap H f g) (specializeMap-isoMap-isEquiv H e f g) p ```