Other Agda modules in this section (47)
- AbsoluteMorphisms
- CommutativeSquareAxiom
- CoreCoproducts
- DiagramCalculus.CoconeAssociativity
- DiagramCalculus.CompositeWitnesses
- DiagramCalculus.DegenerateCocones
- DiagramCalculus.DiagramComparisons
- DiagramCalculus.ExpressionComparisons
- DiagramCalculus.FramedCocones
- DiagramCalculus.IdentityBoundaries
- DiagramCalculus.IdentityComposites
- DiagramCalculus.IdentityPreservation
- DiagramCalculus.JunctionCalculus
- DiagramCalculus.MiddleVertex
- DiagramCalculus.MorphismComparisons
- DiagramCalculus.OuterVertices
- DiagramCalculus.SliceFibers
- DiagramCalculus.TriangleCorners
- DiagramCalculus.UniversalComparisons
- DiagramCalculus.VertexTransport
- EvaluationCalculus.ConstantConeComparison
- EvaluationCalculus.ConstantConeFrames
- EvaluationCalculus.ConstantConeNaturality
- EvaluationCalculus.ConstantDiagramEvaluation
- EvaluationCalculus.ConstantDiagramNaturality
- EvaluationCalculus.CoreInclusions
- EvaluationCalculus.EndpointFibers
- EvaluationCalculus.EndpointNaturality
- Everything
- HomAndSlices
- IntervalCore
- IntervalEndpoints
- Lattice
- Morphisms
- SquareCalculus.FourPoints
- SquareCalculus.LatticePullbacks
- SquareCalculus.LatticeUniqueness
- SquareCalculus.SquareCalculus
- SquareCalculus.SquareFamilies
- SquareCalculus.SquareRetractions
- SquareCalculus.SquareShape
- SquareGluing
- TriangleCore
- TrianglesAndComposites
- UniversalArrows
- WalkingMorphism
- WalkingTriangle
Complete compiler-highlighted source. Follow a symbol to its declaration.
# Evaluating a family at an absolute object Evaluation at a fixed object inserts that object as the second product coordinate. The comparisons below relate this formula to Section 1.7's evaluation functor, uncurrying, and restriction of a family of diagrams. ```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.Chapter02.Section01.EvaluationCalculus.EndpointEvaluation {c m a : Level} (π― : Theory c m a) (M : Mapping.MappingAnimae π―) (β± : Categories.FunctorCategories π― M) where open import SCT.VolumeI.Chapter01.Section07.Setup π― M β± public open import SCT.VolumeI.Chapter01.Section04.Uncurrying π― M using (productMap-pair) open import SCT.VolumeI.Chapter01.Section07.TerminalDomain π― M β± using (evalAt) open import SCT.VolumeI.Chapter01.Section07.AbsoluteObjects π― M β± public insert : {X I : CAT} β Obj-abs I β MAP X (X Γ I) insert {X} x = pair (id X) (const x) evaluate : {I C : CAT} β Obj-abs I β MAP (Fun I C) C evaluate x = funEval β insert x evaluate-agrees : {I C : CAT} (x : Obj-abs I) β (evalAt {D = C} x) =β (evaluate x) evaluate-agrees {I} {C} x = funEval β (pair-cong (comp-unitΛ‘ (id (Fun I C))) (idIso (const x)) β productMap-pair (id (Fun I C)) x (id (Fun I C)) (terminate (Fun I C))) insert-natural : {X Y I : CAT} (h : MAP X Y) (x : Obj-abs I) β (insert x β h) =β (productMap h (id I) β insert x) insert-natural {X} {Y} {I} h x = (pair-cong (comp-unitΚ³ h) (comp-unitΛ‘ (const x)) β productMap-pair h (id I) (id X) (const x)) β»ΒΉ β (pair-cong (comp-unitΛ‘ h) (const-pre x h) β pair-pre (id Y) (const x) h) evaluate-uncurry : {X I C : CAT} (x : Obj-abs I) (h : MAP X (Fun I C)) β (evaluate x β h) =β (funUncurry h β insert x) evaluate-uncurry {I = I} x h = (comp-assoc (insert x) (productMap h (id I)) funEval) β»ΒΉ β ((funEval β insert-natural h x) β comp-assoc h (insert x) funEval) evaluate-curry : {X I C : CAT} (x : Obj-abs I) (H : MAP (X Γ I) C) β (evaluate x β funCurry H) =β (H β insert x) evaluate-curry x H = (funCurry-Ξ² H β· insert x) β evaluate-uncurry x (funCurry H) evaluate-post : {I C D : CAT} (x : Obj-abs I) (F : MAP C D) β (evaluate x β funPost F) =β (F β evaluate x) evaluate-post x F = comp-assoc (insert x) funEval F β ((funPost-Ξ² F β· insert x) β evaluate-uncurry x (funPost F)) evaluate-post-at : {X I C D : CAT} (x : Obj-abs I) (F : MAP C D) (h : MAP X (Fun I C)) β (evaluate x β (funPost F β h)) =β (F β (evaluate x β h)) evaluate-post-at x F h = comp-assoc h (evaluate x) F β ((evaluate-post x F β· h) β (comp-assoc h (funPost F) (evaluate x)) β»ΒΉ) constantDiagram : (I C : CAT) β MAP C (Fun I C) constantDiagram I C = funCurry prβ evaluate-constant : {I C : CAT} (x : Obj-abs I) β (evaluate x β constantDiagram I C) =β (id C) evaluate-constant {C = C} x = pair-Ξ²β (id C) (const x) β evaluate-curry x prβ evaluate-name : {I C : CAT} (x : Obj-abs I) (f : MAP I C) β (evaluate x β nameFun f) =β (f β x) evaluate-name x f = (f β const-One x) β ((f β pair-Ξ²β (id One) (const x)) β (comp-assoc (insert x) prβ f β evaluate-curry x (f β prβ))) evaluate-cong : {I C : CAT} {x y : Obj-abs I} β x =β y β (evaluate {C = C} x) =β (evaluate y) evaluate-cong {I} {C} Ξ± = funEval β pair-cong (idIso (id (Fun I C))) (Ξ± β· terminate (Fun I C)) evaluate-pre : {I J C : CAT} (f : MAP I J) (x : Obj-abs I) β (evaluate x β funPre {D = C} f) =β (evaluate (f β x)) evaluate-pre {I} {J} {C} f x = (funEval β (pair-cong (comp-unitΛ‘ (id (Fun J C))) ((comp-assoc (terminate (Fun J C)) x f) β»ΒΉ) β productMap-pair (id (Fun J C)) f (id (Fun J C)) (const x))) β (comp-assoc (insert x) (productMap (id (Fun J C)) f) funEval β ((funPre-Ξ² f β· insert x) β evaluate-uncurry x (funPre f))) constantDiagram-point : {I C : CAT} (x : Obj-abs C) β (constantDiagram I C β x) =β (nameFun (const {P = I} x)) constantDiagram-point {I} {C} x = funReflect _ _ ((funCurry-Ξ² (const x β prβ)) β»ΒΉ β ((comp-assoc prβ (terminate I) x) β»ΒΉ β ((x β terminal-iso _ _) β (pair-Ξ²β (x β prβ) (id I β prβ) β ((funCurry-Ξ² prβ β· productMap x (id I)) β funUncurry-restrict (constantDiagram I C) x))))) ```