Other Agda modules in this section (54)
- AbsoluteObjects
- Contractible
- CoproductDomain
- Currying
- Evaluation
- EvaluationCalculus.CoreViaFunctorCategories
- EvaluationCalculus.EvaluatedAssociativitySquare
- EvaluationCalculus.EvaluatedProjectionNormalization
- EvaluationCalculus.EvaluatedRightUnit
- EvaluationCalculus.EvaluatedSeparationChange
- EvaluationCalculus.EvaluatedUnitSquare
- EvaluationCalculus.EvaluationNaturality
- EvaluationCalculus.IsomorphismLifting
- EvaluationCalculus.IteratedCompatibility
- EvaluationCalculus.MappingCompatibility
- EvaluationCalculus.MappingProofs
- EvaluationCalculus.MappingSubstitution
- EvaluationCalculus.MappingTests
- EvaluationCalculus.NestedCoordinateNaturality
- EvaluationCalculus.PostcompositionTriangleFrames
- EvaluationCalculus.PostcompositionUnitFrame
- EvaluationCalculus.PrecompositionMiddleEvaluation
- EvaluationCalculus.PrecompositionMiddleRestriction
- EvaluationCalculus.PrecompositionOuterFrame
- EvaluationCalculus.PrecompositionProductFrameComparison
- EvaluationCalculus.PrecompositionRestrictedOuterFrame
- EvaluationCalculus.PrecompositionTriangleFrames
- EvaluationCalculus.PrecompositionUnitEvaluation
- EvaluationCalculus.ProductSeparationUnits
- EvaluationCalculus.Representation
- EvaluationCalculus.RestrictedFrameNaturality
- EvaluationCalculus.RestrictedFrames
- EvaluationCalculus.SubstitutionCoherence
- EvaluationCalculus.UncurryingAction
- EvaluationCalculus.UncurryingUnits
- Everything
- ExponentialLaw
- FunctorCategories
- FunctorProducts
- FunctorPullbacks
- Functoriality
- MappingComparison
- PullbackCalculus.ConeCurrying
- PullbackCalculus.ConeReflection
- PullbackCalculus.ConeUncurrying
- PullbackCalculus.ConeUncurryingNormalization
- PullbackCalculus.ConeUncurryingPre
- PullbackCalculus.MappedCones
- PullbackCalculus.PullbackMappingTests
- PullbackCalculus.UncurryingCones
- PullbackCalculus.UncurryingSquares
- Setup
- TerminalDomain
- Uniqueness
Complete compiler-highlighted source. Follow a symbol to its declaration.
Corresponding book passages
# The core of a functor category For `core_of_Fun_is_Map`, first uncurry on the terminal parameter and restrict along `C → One × C`. This gives the equivalence from the core to the mapping anima. Its inverse is the preferred comparison. We check compatibility with the canonical inclusions by uncurrying, before using this result for general anima parameters. ```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 module SCT.VolumeI.Chapter01.Section07.CoreOfFun {c m a : Level} (𝒯 : Theory c m a) (M : Mapping.MappingAnimae 𝒯) (F : Categories.FunctorCategories 𝒯 M) where open import SCT.VolumeI.Chapter01.Section05.Setup 𝒯 M open import SCT.VolumeI.Chapter01.Section07.Currying 𝒯 M F open import SCT.VolumeI.Chapter01.Section07.Evaluation 𝒯 M open import SCT.VolumeI.Chapter01.Section04.Core 𝒯 M mappingInclusion : (C D : CAT) → MAP (Map C D) (Fun C D) mappingInclusion C D = funCurry mapEval module CoreOfFun (C D : CAT) where module U = Evaluation.At (funEval {C} {D}) One A = Core (Fun C D) uncurrying : MAP A (Map C D) uncurrying = mapPre (oneProduct-in C) ∘ U.forward uncurrying-isEquiv : IsEquiv uncurrying uncurrying-isEquiv = equiv-compose U.forward (mapPre (oneProduct-in C)) (funUniversal C D One) (mapPre-isEquiv (oneProduct-in C) (oneProduct-in-isEquiv C)) terminal-regroup : (Associativity.backward A One C ∘ productMap (id A) (oneProduct-in C)) =₁ (productMap (product-unitʳ-inverse A) (id C)) terminal-regroup = let k = productMap (id A) (oneProduct-in C) first = comp-unitˡ pr₁ ∙ pair-β₁ (id A ∘ pr₁) (oneProduct-in C ∘ pr₂) third = comp-unitˡ pr₂ ∙ ((oneProduct-retraction C ▷ pr₂) ∙ ((comp-assoc pr₂ (oneProduct-in C) pr₂) ⁻¹ ∙ ((pr₂ ◁ pair-β₂ (id A ∘ pr₁) (oneProduct-in C ∘ pr₂)) ∙ comp-assoc k pr₂ pr₂))) left-normal = pair-cong (pair-cong first (terminal-iso _ (terminate (A × C))) ∙ pair-pre pr₁ (pr₁ ∘ pr₂) k) third ∙ pair-pre (pair pr₁ (pr₁ ∘ pr₂)) (pr₂ ∘ pr₂) k right-normal = pair-cong (pair-cong (comp-unitˡ pr₁) (terminal-iso _ _) ∙ pair-pre (id A) (terminate A) pr₁) (comp-unitˡ pr₂) in right-normal ⁻¹ ∙ left-normal uncurrying-evaluation : (mapUncurry uncurrying) =₁ (funUncurry (coreInclusion (Fun C D))) uncurrying-evaluation = (funUncurry-restrict mapEval (product-unitʳ-inverse A)) ⁻¹ ∙ ((funUncurry mapEval ◁ terminal-regroup) ∙ (comp-assoc (productMap (id A) (oneProduct-in C)) (Associativity.backward A One C) (funUncurry mapEval) ∙ ((mapCurry-β (map-isAn One (Fun C D)) U.evaluation ▷ productMap (id A) (oneProduct-in C)) ∙ mapPre-uncurry (oneProduct-in C) U.forward))) inclusion-uncurrying : (mappingInclusion C D ∘ uncurrying) =₁ (coreInclusion (Fun C D)) inclusion-uncurrying = funReflect _ _ (uncurrying-evaluation ∙ ((funCurry-β mapEval ▷ productMap uncurrying (id C)) ∙ funUncurry-restrict (mappingInclusion C D) uncurrying)) comparison : MAP (Map C D) A comparison = IsEquiv.inverse uncurrying-isEquiv comparison-isEquiv : IsEquiv comparison comparison-isEquiv = equiv-inverse uncurrying-isEquiv inclusion-comparison : (coreInclusion (Fun C D) ∘ comparison) =₁ (mappingInclusion C D) inclusion-comparison = comp-unitʳ (mappingInclusion C D) ∙ ((mappingInclusion C D ◁ (IsEquiv.retractionIso uncurrying-isEquiv) ⁻¹) ∙ (comp-assoc comparison uncurrying (mappingInclusion C D) ∙ (inclusion-uncurrying ⁻¹ ▷ comparison))) comparison-on-maps : (X : CAT) → isAn X → IsEquiv (mapPost {C = X} comparison) comparison-on-maps X xAn = mapPost-isEquiv comparison comparison-isEquiv ```