Other Agda modules in this section (8)
Chapter 1, rebuild2, checked 14 October 2026 · source revision b982f5a.
# Evaluation of a named structural functor A named structural functor evaluated along an arbitrary terminal coordinate has a fixed underlying family. Its complete square in an independently indexed change of that coordinate is the prerequisite for relative family comparisons. The operation retains the literal selected naming computation. ```agda {-# OPTIONS --without-K #-} module SCT.VolumeI.Chapter01.Section09.NamedEvaluation where open import SCT.VolumeI.Chapter01.Section01.Vocabulary hiding (_=_) import SCT.VolumeI.Chapter01.Section01.Terms as Terms open Operations open import SCT.VolumeI.Chapter01.Section01.Terminal open Constructions open import SCT.VolumeI.Chapter01.Section02.Coherence using (id₌; postWhisker-id₌; preWhisker-id₌; comp-unitˡ; comp-assoc; module Composition; module Boundaries) open Composition open Boundaries using (SquareCell₌) open import SCT.VolumeI.Chapter01.Section02.Specialization open import SCT.VolumeI.Chapter01.Section02.IdentificationSquares open import SCT.VolumeI.Chapter01.Section02.Whiskering open import SCT.VolumeI.Chapter01.Section03.ProductConstructions open import SCT.VolumeI.Chapter01.Section03.Products.ProductFunctor open import SCT.VolumeI.Chapter01.Section03.Identifications.Triangles open import SCT.VolumeI.Chapter01.Section07.Evaluation open import SCT.VolumeI.Chapter01.Section07.EvaluationRepresentation using (evaluate-restrict-substitution) open import SCT.VolumeI.Chapter01.Section07.FunctorCategories open import SCT.VolumeI.Chapter01.Section07.CoreOfFun using (funName; funName-β) private module _ {Γ : Context} {X : CAT Γ} where open Terms.Equalities X using (_=_) paste-fixed : {A B : CAT Γ} {x y x′ y′ x″ y″ : MAP A B} {t : x = y} {b : x′ = y′} {u : x″ = y″} {l : x =₁ x′} {r : y =₁ y′} {l′ : x′ =₁ x″} {r′ : y′ =₁ y″} → SquareCell₌ t b (const l) (const r) → SquareCell₌ b u (const l′) (const r′) → SquareCell₌ t u (const (l′ ∙ l)) (const (r′ ∙ r)) paste-fixed {l = l} {r} {l′} {r′} a b = replace-sides₌ (const-comp l′ l) (const-comp r′ r) (paste-square₌ a b) module NamedEvaluation {Γ : Context} {C S : CAT Γ} (p : MAP C S) where private eS : MAP (Fun C S × C) S eS = funEval {C = C} {D = S} point : MAP One (Fun C S) point = funName p named-evaluation : {K : CAT Γ} (z : MAP K One) → evaluate eS (point ∘ z) =₁ (p ∘ pr₂ {C = K} {D = C}) named-evaluation z = (p ◁ (comp-unitˡ pr₂ ∙ pair-β₂ (z ∘ pr₁) (id C ∘ pr₂))) ∙ (comp-assoc (productMap z (id C)) (pr₂ {C = One} {D = C}) p ∙ ((funName-β p ▷ productMap z (id C)) ∙ evaluate-restrict eS point z)) module _ {X K : CAT Γ} where open Terms.Equalities X using (_=_) abstract named-evaluation-inputs : {z z′ : MAP K One} (δ : z = z′) → SquareCell₌ (evaluate⁼ eS (point ◁ δ)) (const (id₌ (p ∘ pr₂ {C = K} {D = C}))) (const (named-evaluation z)) (const (named-evaluation z′)) named-evaluation-inputs {z} {z′} δ = replace-sides₌ (const-cong (normal z)) (const-cong (normal z′)) (paste-fixed (evaluate-restrict-substitution eS point δ) (paste-fixed (interchange-fixedOuter (funName-β p) change) projected)) where change : productMap z (id C) = productMap z′ (id C) change = productMap-cong δ (const (id₌ (id C))) projection : (w : MAP K One) → (pr₂ {C = One} {D = C} ∘ productMap w (id C)) =₁ pr₂ {C = K} {D = C} projection z = comp-unitˡ pr₂ ∙ pair-β₂ (z ∘ pr₁) (id C ∘ pr₂) reduce : (const {P = X} (id₌ (id C)) ▷ pr₂ {C = K} {D = C}) =₁ const {P = X} (id₌ (id C ∘ pr₂ {C = K} {D = C})) reduce = const-cong {X = X} (preWhisker-id₌ (id C) (pr₂ {C = K} {D = C})) ∙ pre-constant {A = X} (id₌ (id C)) (pr₂ {C = K} {D = C}) projection-square : SquareCell₌ (pr₂ {C = One} {D = C} ◁ change) (const {P = X} (id₌ (pr₂ {C = K} {D = C}))) (const (projection z)) (const (projection z′)) projection-square = paste-fixed (replace-edges₌ (id₌ (pr₂ {C = One} {D = C} ◁ change)) reduce (productMap-cong-triangle₂ δ (const (id₌ (id C))))) (transpose-square₌ (identity-square₌ (const {P = X} (comp-unitˡ (pr₂ {C = K} {D = C}))))) projected : SquareCell₌ ((p ∘ pr₂ {C = One} {D = C}) ◁ change) (const (id₌ (p ∘ pr₂ {C = K} {D = C}))) (const (post-triangle p pr₂ (productMap z (id C)) (projection z))) (const (post-triangle p pr₂ (productMap z′ (id C)) (projection z′))) projected = replace-edges₌ (id₌ _) (const-cong (postWhisker-id₌ p pr₂) ∙ post-constant p (id₌ pr₂)) (post-triangle-inner p pr₂ change (const (id₌ pr₂)) (projection z) (projection z′) projection-square) normal : (w : MAP K One) → ((post-triangle p pr₂ (productMap w (id C)) (projection w) ∙ (funName-β p ▷ productMap w (id C))) ∙ evaluate-restrict eS point w) =₂ named-evaluation w normal w = comp₌-assoc (p ◁ projection w) (comp-assoc (productMap w (id C)) pr₂ p) ((funName-β p ▷ productMap w (id C)) ∙ evaluate-restrict eS point w) ∙ comp₌-assoc (post-triangle p pr₂ (productMap w (id C)) (projection w)) (funName-β p ▷ productMap w (id C)) (evaluate-restrict eS point w) ```