Chapter 1 code: rebuild2 edition, checked 14 October 2026. Included modules and omissions.

Read the Agda code alongside the book.Click dotted-underlined prose to read its Agda code alongside the book. Browse all code.

1.7 Functor categories

Given two categories \(C\) and \(D\), we are interested in forming the functor category \(\Fun (C,D)\) whose objects are precisely the functors from \(C\) to \(D\).

Agda Functor categories

Fun

Assumption, type checked

    Fun : CAT Γ → CAT Γ → CAT Γ
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorCategories where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Given any functor \(e \colon F \times C\to D\) and any category \(T\), we can form a functor \[ \mathit {u}_T\colon \Map (T,F)\to \Map (T\times C,D) \] by currying the composite \[ \Map (T,F)\times T\times C \xrightarrow {\ev _{\Map } \times \id _C} F\times C\xrightarrow {e} D. \] It satisfies the property that it evaluations on an absolute object of \(\Map (T,F)\), corresponding to a functor \(g\colon T\to F\), as \[ \mathit {u}_T(g)= e\circ (g\times \id _C). \]

Agda The evaluation-induced functor

evaluation-forward

Derivation, checked

    evaluation-forward : MAP (Map T F) (Map (T × C) D)
Proof / implementation
    evaluation-forward = mapCurry (map-isAn T F) evaluation-universal
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Evaluation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (T : CAT Γ) where

evaluation-represents

Derivation, checked

    evaluation-represents : {P : CAT Γ} (g : MAP P (Map T F))
      → uncurry (evaluation-forward ∘ g) =₁
          (evaluate (uncurry g) ∘ Associativity.backward P T C)
Proof / implementation
    evaluation-represents {P} g =
      ((evaluate-restrict mapEval (productMap g (id T))) ⁻¹ ▷ Associativity.backward P T C) ∙
        ((comp-assoc (Associativity.backward P T C)
          (productMap (productMap g (id T)) (id C)) (evaluate mapEval)) ⁻¹ ∙
          (((evaluate mapEval) ◁ Reassociation.backward-natural g) ∙
            (comp-assoc (productMap g (id (T × C)))
              (Associativity.backward (Map T F) T C) (evaluate mapEval) ∙
              ((mapCurry-β (map-isAn T F) evaluation-universal ▷ productMap g (id (T × C))) ∙
                Mapping.uncurry-restrict evaluation-forward g))))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Evaluation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (T : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Currying the evaluation family

evaluation-forward

Derivation, checked

    evaluation-forward : MAP (Map T F) (Map (T × C) D)
Proof / implementation
    evaluation-forward = mapCurry (map-isAn T F) evaluation-universal
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Evaluation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (T : CAT Γ) where

evaluation-represents

Derivation, checked

    evaluation-represents : {P : CAT Γ} (g : MAP P (Map T F))
      → uncurry (evaluation-forward ∘ g) =₁
          (evaluate (uncurry g) ∘ Associativity.backward P T C)
Proof / implementation
    evaluation-represents {P} g =
      ((evaluate-restrict mapEval (productMap g (id T))) ⁻¹ ▷ Associativity.backward P T C) ∙
        ((comp-assoc (Associativity.backward P T C)
          (productMap (productMap g (id T)) (id C)) (evaluate mapEval)) ⁻¹ ∙
          (((evaluate mapEval) ◁ Reassociation.backward-natural g) ∙
            (comp-assoc (productMap g (id (T × C)))
              (Associativity.backward (Map T F) T C) (evaluate mapEval) ∙
              ((mapCurry-β (map-isAn T F) evaluation-universal ▷ productMap g (id (T × C))) ∙
                Mapping.uncurry-restrict evaluation-forward g))))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Evaluation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (T : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Evaluation on a represented functor

evaluation-specialize

Derivation, checked

    evaluation-specialize : (g : MAP T F)
      → specialize-map evaluation-forward g =₁ evaluate g
Proof / implementation
    evaluation-specialize g = evaluate-cong (decode-name g) ∙ evaluation-decode (name g)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Evaluation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (T : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Definition 1.7.1. A functor category from \(C\) to \(D\) is a category \(F\) equipped with a functor \(e\colon F\times C\to D\) such that, for any category \(T\), the induced map \[ \mathit {u}_T\colon \Map (T,F)\iso \Map (T\times C,D) \] is an equivalence. We then call \(F\) the category of functors from \(C\) to \(D\) and \(e\) the evaluation functor.

Agda The universal property of a functor category

IsFunctorCategory

Definition, checked

  IsFunctorCategory : {F C D : CAT Γ} → MAP (F × C) D → Set (c ⊔ m)
Proof / implementation
  IsFunctorCategory e = (T : CAT Γ) → IsEquiv (evaluation-forward e T)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorCategories where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proposition 1.7.2. If \(F\) and \(F'\) both are categories of functors from \(C\) to \(D\) with evaluation functors \(e\) and \(e'\) respectively, then there is an equivalence \(\varphi \colon F'\iso F\) as well as \(\sigma \colon e\circ (\varphi \times \id _C)= e'\).

Agda Uniqueness of functor categories

functor-category-comparison-isEquiv

Derivation, checked

  functor-category-comparison-isEquiv : IsEquiv functor-category-comparison
Proof / implementation
  functor-category-comparison-isEquiv = record
    { inverse = back; left-inverse-law = left ⁻¹; right-inverse-law = right ⁻¹ }
    where
    back : MAP G F
    back = curry e u d
    left : (back ∘ functor-category-comparison) =₁ id F
    left = reflect e u _ _
      ((evaluate-id e) ⁻¹ ∙
        (functor-category-comparison-β ∙
          ((curry-β e u d ▷ productMap functor-category-comparison (id C)) ∙
            evaluate-restrict e back functor-category-comparison)))
    right : (functor-category-comparison ∘ back) =₁ id G
    right = reflect d v _ _
      ((evaluate-id d) ⁻¹ ∙
        (curry-β e u d ∙
          ((functor-category-comparison-β ▷ productMap back (id C)) ∙
            evaluate-restrict d functor-category-comparison back)))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F G C D : CAT Γ}
  (e : MAP (F × C) D) (u : IsFunctorCategory e)
  (d : MAP (G × C) D) (v : IsFunctorCategory d) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. Let \(v\) be an inverse of the equivalence \(u_{F'}\colon \Map (F',F)\iso \Map (F'\times C,D)\) and define \(\varphi :=v(e')\colon F'\to F\). By Construction 1.4.1, the identification \(u_{F'}\circ v=\id \) and the beta comparison for \(u_{F'}\) provide \[ \sigma \colon e\circ (\varphi \times \id _C)= e'. \] Exchanging the roles of \((F,e)\) and \((F',e')\), we similarly obtain a functor \(\psi \colon F\to F'\) together with \(e'\circ (\psi \times \id _C)= e\). Combining the two, the uncurried functors associated to \(\varphi \circ \psi \) and \(\id _F\) are identified: \[ e\circ ((\varphi \circ \psi )\times \id _C) = e'\circ (\psi \times \id _C) = e = e\circ (\id _F\times \id _C). \] Since \(u_F\) is an equivalence, it reflects this identification and gives \(\varphi \circ \psi =\id _F\). The same argument shows \(\psi \circ \varphi =\id _{F'}\), so \(\varphi \) is an equivalence with inverse \(\psi \). □

Agda Constructing the comparison functor

functor-category-comparison

Definition, checked

  functor-category-comparison : MAP F G
Proof / implementation
  functor-category-comparison = curry d v e
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F G C D : CAT Γ}
  (e : MAP (F × C) D) (u : IsFunctorCategory e)
  (d : MAP (G × C) D) (v : IsFunctorCategory d) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda The comparison with evaluation

functor-category-comparison-β

Derivation, checked

  functor-category-comparison-β : evaluate d functor-category-comparison =₁ e
Proof / implementation
  functor-category-comparison-β = curry-β d v e
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F G C D : CAT Γ}
  (e : MAP (F × C) D) (u : IsFunctorCategory e)
  (d : MAP (G × C) D) (v : IsFunctorCategory d) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda The comparison in the opposite direction

functor-category-comparison-isEquiv

Derivation, checked

  functor-category-comparison-isEquiv : IsEquiv functor-category-comparison
Proof / implementation
  functor-category-comparison-isEquiv = record
    { inverse = back; left-inverse-law = left ⁻¹; right-inverse-law = right ⁻¹ }
    where
    back : MAP G F
    back = curry e u d
    left : (back ∘ functor-category-comparison) =₁ id F
    left = reflect e u _ _
      ((evaluate-id e) ⁻¹ ∙
        (functor-category-comparison-β ∙
          ((curry-β e u d ▷ productMap functor-category-comparison (id C)) ∙
            evaluate-restrict e back functor-category-comparison)))
    right : (functor-category-comparison ∘ back) =₁ id G
    right = reflect d v _ _
      ((evaluate-id d) ⁻¹ ∙
        (curry-β e u d ∙
          ((functor-category-comparison-β ▷ productMap back (id C)) ∙
            evaluate-restrict d functor-category-comparison back)))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F G C D : CAT Γ}
  (e : MAP (F × C) D) (u : IsFunctorCategory e)
  (d : MAP (G × C) D) (v : IsFunctorCategory d) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Reflecting the two inverse comparisons

functor-category-comparison-isEquiv

Derivation, checked

  functor-category-comparison-isEquiv : IsEquiv functor-category-comparison
Proof / implementation
  functor-category-comparison-isEquiv = record
    { inverse = back; left-inverse-law = left ⁻¹; right-inverse-law = right ⁻¹ }
    where
    back : MAP G F
    back = curry e u d
    left : (back ∘ functor-category-comparison) =₁ id F
    left = reflect e u _ _
      ((evaluate-id e) ⁻¹ ∙
        (functor-category-comparison-β ∙
          ((curry-β e u d ▷ productMap functor-category-comparison (id C)) ∙
            evaluate-restrict e back functor-category-comparison)))
    right : (functor-category-comparison ∘ back) =₁ id G
    right = reflect d v _ _
      ((evaluate-id d) ⁻¹ ∙
        (curry-β e u d ∙
          ((functor-category-comparison-β ▷ productMap back (id C)) ∙
            evaluate-restrict d functor-category-comparison back)))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F G C D : CAT Γ}
  (e : MAP (F × C) D) (u : IsFunctorCategory e)
  (d : MAP (G × C) D) (v : IsFunctorCategory d) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Axiom B.8 (Functor category). For any two categories \(C\) and \(D\), there is a category \(\Fun (C, D)\) equipped with an evaluation functor \(\ev \colon \Fun (C,D) \times C \to D\) that exhibits it as a functor category from \(C\) to \(D\).

Agda The functor-category axiom

Fun

Assumption, type checked

    Fun : CAT Γ → CAT Γ → CAT Γ
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorCategories where

module _ {Γ : Context} where

funEval

Assumption, type checked

    funEval : {C D : CAT Γ} → MAP (Fun C D × C) D
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorCategories where

module _ {Γ : Context} where

funUniversal

Assumption, type checked

    funUniversal : (C D : CAT Γ) → IsFunctorCategory (funEval {C = C} {D = D})
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorCategories where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Definition 1.7.3. Given another category \(T\), choose an inverse \(v_T\) of the equivalence \(\mathit {u}_T\). For a functor \(f\colon T\times C\to D\), define its currying by applying \(v_T\): \[ f_c:=v_T(f)\colon T\longrightarrow \Fun (C,D). \] It comes equipped with a commutative diagram as follows:

Agda Currying

curry

Definition, checked

    curry : {T : CAT Γ} → MAP (T × C) D → MAP T F
Proof / implementation
    curry f = SpecializationFactorization.factor (chosen-factor f)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (universal : IsFunctorCategory e) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda The currying computation comparison

curry-β

Derivation, checked

    curry-β : {T : CAT Γ} (f : MAP (T × C) D) → evaluate e (curry f) =₁ f
Proof / implementation
    curry-β {T} f = SpecializationFactorization.triangle (chosen-factor f) ∙
      (evaluation-specialize e T (curry f)) ⁻¹
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (universal : IsFunctorCategory e) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Commutative diagram from the manuscript; its arrows and comparisons are described in the surrounding text.

Conversely, given a functor \(g\colon T \to \Fun (C,D)\), we call the composite \[ T \times C \xrightarrow {g \times \id _C} \Fun (C,D) \times C \xrightarrow {\ev } D \] the uncurrying of \(g\) and denote it by \(g^u\). The discussion before shows it is identified with \(\mathit {u}_T(g)\). Similarly, an identification \(\beta \colon g= h\) induces an identification \(\beta ^u\colon g^u= h^u\). At the level of mapping animae, uncurrying is the equivalence \[ (-)^u \colon \Map (T,\Fun (C,D))\iso \Map (T\times C,D) \] with inverse defined by currying.

Agda Uncurrying

funUncurry

Definition, checked

  funUncurry : {T : CAT Γ} → MAP T (Fun C D) → MAP (T × C) D
Proof / implementation
  funUncurry = evaluate (funEval {C = C} {D = D})
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {C D : CAT Γ} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda The mapping-anima beta comparison

evaluation-specialize

Derivation, checked

    evaluation-specialize : (g : MAP T F)
      → specialize-map evaluation-forward g =₁ evaluate g
Proof / implementation
    evaluation-specialize g = evaluate-cong (decode-name g) ∙ evaluation-decode (name g)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Evaluation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (T : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Uncurrying identifications

evaluate⁼

Derivation, checked

    evaluate⁼ : {T : CAT Γ} {f g : MAP T F} → f = g → evaluate f = evaluate g
Proof / implementation
    evaluate⁼ α = e ◁ productMap-cong α (const (id₌ (id C)))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Evaluation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ {X : CAT Γ} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Currying is inverse to uncurrying

curry-β

Derivation, checked

    curry-β : {T : CAT Γ} (f : MAP (T × C) D) → evaluate e (curry f) =₁ f
Proof / implementation
    curry-β {T} f = SpecializationFactorization.triangle (chosen-factor f) ∙
      (evaluation-specialize e T (curry f)) ⁻¹
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (universal : IsFunctorCategory e) where

curry-η

Derivation, checked

    curry-η : {T : CAT Γ} (g : MAP T F) → curry (evaluate e g) =₁ g
Proof / implementation
    curry-η g = representation-unique (curried-representation (evaluate e g))
      (record { term = g; evaluation = id₌ (evaluate e g) })
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (universal : IsFunctorCategory e) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

For parallel functors \(g,h\colon T\to \Fun (C,D)\), the induced functor \[ (g= h)\longrightarrow (g^u= h^u) \] is an equivalence. Indeed, represent \(g,h\) by points of \(\Map (T,\Fun (C,D))\), apply Lemma 1.3.10 to \(\mathit {u}_T\), and use Construction 1.4.1 at both ends.

Agda The equivalence on identification animae

evaluation-action-isEquiv

Derivation, checked

  evaluation-action-isEquiv : IsEquiv (evaluation-forward e T) → (f g : MAP T F)
    → IsEquiv (evaluation-action e f g)
Proof / implementation
  evaluation-action-isEquiv universal f g =
    endpoint-change-preserves-isEquiv (specialize⁼-functor (evaluation-forward e T) f g)
      (evaluation-action e f g) (evaluation-specialize e T f) (evaluation-specialize e T g)
      (replace-edges₌ (comp-unitʳ (specialize⁼-functor (evaluation-forward e T) f g))
        (id₌ (evaluation-action e f g)) (evaluation-specialize-inputs (id (Equal f g))))
      (specialize⁼-isEquiv (evaluation-forward e T) universal f g)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.EvaluationRepresentation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) (T : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Notation 1.7.4. In term notation, an expression \(x:T,y:C\vdash f(x,y):D\) may therefore be curried to \(x:T\vdash (y\mapsto f(x,y)):\Fun (C,D)\). Conversely, evaluation of \(x:T\vdash F(x):\Fun (C,D)\) and \(x:T\vdash c(x):C\) is formed by pairing, giving \(x:T\vdash F(x)(c(x)):D\). These conventions also apply to identifications of the whole functors, with the beta and eta comparisons above.

Agda Currying in term notation

curry

Definition, checked

    curry : {T : CAT Γ} → MAP (T × C) D → MAP T F
Proof / implementation
    curry f = SpecializationFactorization.factor (chosen-factor f)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (universal : IsFunctorCategory e) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Beta and eta for the whole functors

curry-β

Derivation, checked

    curry-β : {T : CAT Γ} (f : MAP (T × C) D) → evaluate e (curry f) =₁ f
Proof / implementation
    curry-β {T} f = SpecializationFactorization.triangle (chosen-factor f) ∙
      (evaluation-specialize e T (curry f)) ⁻¹
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (universal : IsFunctorCategory e) where

curry-η

Derivation, checked

    curry-η : {T : CAT Γ} (g : MAP T F) → curry (evaluate e g) =₁ g
Proof / implementation
    curry-η g = representation-unique (curried-representation (evaluate e g))
      (record { term = g; evaluation = id₌ (evaluate e g) })
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Currying where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (universal : IsFunctorCategory e) where
About this correspondence

These are the corresponding current results or underlying constructions. Some helpers used by the previous proof were consolidated or replaced; no line-by-line agreement of the two implementations is asserted.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Remark 1.7.5. By considering the terminal category, we observe that absolute objects \(*\to \Fun (C,D)\) correspond to functors \(C\simeq *\times C\to D\), justifying the notation and terminology of \(\Fun (C,D)\).

Agda Functors as absolute objects

funName

Derivation, checked

  funName : {C D : CAT Γ} → MAP C D → MAP One (Fun C D)
Proof / implementation
  funName {C} {D} g = funCurry {C = C} {D = D} (g ∘ pr₂ {C = One} {D = C})
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where

funName-β

Derivation, checked

  funName-β : {C D : CAT Γ} (g : MAP C D)
    → funUncurry {C = C} {D = D} (funName g) =₁ (g ∘ pr₂ {C = One} {D = C})
Proof / implementation
  funName-β {C} {D} g = funCurry-β {C = C} {D = D} (g ∘ pr₂ {C = One} {D = C})
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where
About this correspondence

The current links show the chosen point representing an ordinary functor and its evaluation comparison. They do not constitute a separate formalized equivalence of Agda types of absolute objects.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Construction 1.7.6 (Evaluation functor). Given categories \(C\) and \(D\), and \(x \colon *\to C\), the evaluation functor at \(x\) is defined as the composite \[ \ev _x\colon \Fun (C,D) \simeq \Fun (C,D) \times * \xrightarrow {\id \times x} \Fun (C,D) \times C \xrightarrow {\ev } D. \]

Agda Evaluation at an absolute object

evaluate

Definition, checked

  evaluate : {T : CAT Γ} → MAP T F → MAP (T × C) D
Proof / implementation
  evaluate g = e ∘ productMap g (id C)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Evaluation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where
About this correspondence

Evaluation at an absolute object is obtained by specializing this evaluation operation to a point with source One. The current formalization keeps the general evaluation operation instead of a separate evalAt abbreviation.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

The functoriality of the product naturally provides functoriality for the functor categories:

Construction 1.7.7 (Functoriality of functor categories). Given a functor \(g\colon D \to D'\), we define the functor \(g \circ -\colon \Fun (C,D) \to \Fun (C,D')\) as the currying of the composite \[ \Fun (C, D) \times C \xrightarrow {\ev } D \xrightarrow {g} D'. \] By assumption we obtain a commutative square as follows:

Agda Postcomposition on functor categories

funPost

Definition, checked

  funPost : {C D E : CAT Γ} → MAP D E → MAP (Fun C D) (Fun C E)
Proof / implementation
  funPost {C} {D} {E} f = funCurry {C = C} {D = E} (f ∘ funEval {C = C} {D = D})
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Postcomposition and evaluation

funPost-β

Derivation, checked

  funPost-β : {C D E : CAT Γ} (f : MAP D E)
    → funUncurry {C = C} {D = E} (funPost {C = C} f) =₁ (f ∘ funEval {C = C} {D = D})
Proof / implementation
  funPost-β {C} {D} {E} f = funCurry-β {C = C} {D = E} (f ∘ funEval {C = C} {D = D})
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Commutative diagram from the manuscript; its arrows and comparisons are described in the surrounding text.

Similarly, given a functor \(f\colon C' \to C\), we define the functor \(- \circ f\colon \Fun (C,D) \to \Fun (C',D)\) as the currying of the composite \[ \Fun (C,D) \times C' \xrightarrow {\id \times f} \Fun (C,D) \times C \xrightarrow {\ev } D. \] It satisfies the property that it makes the following square commute:

Agda Precomposition on functor categories

funPre

Definition, checked

  funPre : {B C D : CAT Γ} → MAP B C → MAP (Fun C D) (Fun B D)
Proof / implementation
  funPre {B} {C} {D} k = funCurry {C = B} {D = D}
    (funEval {C = C} {D = D} ∘ productMap (id (Fun C D)) k)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Precomposition and evaluation

funPre-β

Derivation, checked

  funPre-β : {B C D : CAT Γ} (k : MAP B C)
    → funUncurry {C = B} {D = D} (funPre {D = D} k) =₁
        (funEval {C = C} {D = D} ∘ productMap (id (Fun C D)) k)
Proof / implementation
  funPre-β {B} {C} {D} k = funCurry-β {C = B} {D = D}
    (funEval {C = C} {D = D} ∘ productMap (id (Fun C D)) k)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Commutative diagram from the manuscript; its arrows and comparisons are described in the surrounding text.

In a completely analogous way, every identification \(\beta \colon g = g'\) of functors \(D \to D'\) induces an identification \((\beta \circ -) \colon (g \circ -) = (g' \circ -)\) of functors \(\Fun (C,D) \to \Fun (C, D')\), and similarly for the construction \(- \circ f\).

Agda Composition acts on identifications

funPost-cong

Derivation, checked

  funPost-cong : {C D E : CAT Γ} {f g : MAP D E}
    → f =₁ g → funPost {C = C} f =₁ funPost {C = C} g
Proof / implementation
  funPost-cong {C = C} = funPost⁼ {C = C}
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where

funPre-cong

Derivation, checked

  funPre-cong : {B C D : CAT Γ} {k l : MAP B C}
    → k =₁ l → funPre {D = D} k =₁ funPre {D = D} l
Proof / implementation
  funPre-cong {D = D} = funPre⁼ {D = D}
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Exercise 1.7.8 (Exercise 1.9.6 (outside selection)). Formulate and prove that the assignments \(g \mapsto (g \circ -)\) and \(f \mapsto (- \circ f)\) are functorial, in the sense that they respect identity functors and composition of functors.

Agda Identity and composition laws

funPost-id

Derivation, checked

  funPost-id : (C D : CAT Γ) → funPost {C = C} (id D) =₁ id (Fun C D)
Proof / implementation
  funPost-id C D = reflect (funEval {C = C} {D = D}) (funUniversal C D) _ _
    ((evaluate-id (funEval {C = C} {D = D})) ⁻¹ ∙
      (comp-unitˡ (funEval {C = C} {D = D}) ∙ funPost-β {C = C} (id D)))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where

funPre-id

Derivation, checked

  funPre-id : (C D : CAT Γ) → funPre {D = D} (id C) =₁ id (Fun C D)
Proof / implementation
  funPre-id C D = reflect (funEval {C = C} {D = D}) (funUniversal C D) _ _
    ((evaluate-id (funEval {C = C} {D = D})) ⁻¹ ∙
      (comp-unitʳ (funEval {C = C} {D = D}) ∙
        ((funEval {C = C} {D = D} ◁ productMap-id (Fun C D) C) ∙ funPre-β {D = D} (id C))))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where

funPost-comp

Derivation, checked

  funPost-comp : {A B C D : CAT Γ} (f : MAP B C) (g : MAP C D)
    → (funPost {C = A} g ∘ funPost {C = A} f) =₁ funPost {C = A} (g ∘ f)
Proof / implementation
  funPost-comp {A} {B} {C} {D} f g = reflect (funEval {C = A} {D = D}) (funUniversal A D) _ _
    ((funPost-β {C = A} (g ∘ f)) ⁻¹ ∙
      ((comp-assoc (funEval {C = A} {D = B}) f g) ⁻¹ ∙
        ((g ◁ funPost-β {C = A} f) ∙ funPost-uncurry g (funPost {C = A} f))))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where

funPre-comp

Derivation, checked

  funPre-comp : {A B C D : CAT Γ} (f : MAP A B) (g : MAP B C)
    → (funPre {D = D} f ∘ funPre {D = D} g) =₁ funPre {D = D} (g ∘ f)
Proof / implementation
  funPre-comp {A} {B} {C} {D} f g = reflect (funEval {C = A} {D = D}) (funUniversal A D) _ _
    ((funPre-β {D = D} (g ∘ f)) ⁻¹ ∙
      ((funEval {C = C} {D = D} ◁
        (productMap-cong (comp-unitˡ (id (Fun C D))) (id₌ (g ∘ f)) ∙
          productMap-comp (id (Fun C D)) (id (Fun C D)) f g)) ∙
        (comp-assoc (productMap (id (Fun C D)) f) (productMap (id (Fun C D)) g)
          (funEval {C = C} {D = D}) ∙
          ((funPre-β {D = D} g ▷ productMap (id (Fun C D)) f) ∙ funPre-uncurry f (funPre {D = D} g)))))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

1.7.1 Properties of functor categories

The universal property of functor categories allows us to deduce their compatibilities with the terminal category, the initial category, products, coproducts and pullbacks from the corresponding properties of mapping animae. We will use Proposition 1.4.11 to test the comparison functors after applying \(\Map (T,-)\).

Lemma 1.7.9. For every category \(C\) the functor category \(\Fun (C,*)\) is contractible.

Agda Functors into the terminal category

funTerminal-isEquiv

Derivation, checked

  funTerminal-isEquiv : (C : CAT Γ) → IsEquiv (terminate (Fun C One))
Proof / implementation
  funTerminal-isEquiv C = record
    { inverse = funTerminalPoint C
    ; left-inverse-law = (reflect (funEval {C = C} {D = One}) (funUniversal C One)
        (funTerminalPoint C ∘ terminate (Fun C One)) (id (Fun C One))
        (terminal-identification _ _)) ⁻¹
    ; right-inverse-law = terminal-identification _ _ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProperties where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. For every category \(T\), the universal property of the functor category gives \[ \Map (T,\Fun (C,*))\simeq \Map (T\times C,*)\simeq *, \] where the last equivalence is Lemma 1.4.4. Thus \(\Fun (C,*)\to *\) induces an equivalence on mapping animae for every \(T\), and is an equivalence by Proposition 1.4.11. □

Agda Testing the terminal comparison on mapping animae

funTerminal-isEquiv

Derivation, checked

  funTerminal-isEquiv : (C : CAT Γ) → IsEquiv (terminate (Fun C One))
Proof / implementation
  funTerminal-isEquiv C = record
    { inverse = funTerminalPoint C
    ; left-inverse-law = (reflect (funEval {C = C} {D = One}) (funUniversal C One)
        (funTerminalPoint C ∘ terminate (Fun C One)) (id (Fun C One))
        (terminal-identification _ _)) ⁻¹
    ; right-inverse-law = terminal-identification _ _ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProperties where

module _ {Γ : Context} where
About this correspondence

The corresponding result is proved in rebuild2, but its current proof is not identified here with the particular mapping-anima chain in this paragraph. Open the full declaration to inspect the actual argument.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Detection of the terminal equivalence

funTerminal-isEquiv

Derivation, checked

  funTerminal-isEquiv : (C : CAT Γ) → IsEquiv (terminate (Fun C One))
Proof / implementation
  funTerminal-isEquiv C = record
    { inverse = funTerminalPoint C
    ; left-inverse-law = (reflect (funEval {C = C} {D = One}) (funUniversal C One)
        (funTerminalPoint C ∘ terminate (Fun C One)) (id (Fun C One))
        (terminal-identification _ _)) ⁻¹
    ; right-inverse-law = terminal-identification _ _ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProperties where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Lemma 1.7.10. Let \(C\), \(D\) and \(E\) be categories. Then the functor \[ (\pr _1 \circ \blank , \pr _2 \circ \blank )\colon \Fun (C, D \times E) \to \Fun (C, D) \times \Fun (C,E) \] is an equivalence.

Agda Functor categories preserve products

forward

Definition, checked

  forward : MAP Source Target
Proof / implementation
  forward = pair left right
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProducts where

module ProductComparison {Γ : Context} (E C D : CAT Γ) where

forward-isEquiv

Derivation, checked

  forward-isEquiv : IsEquiv forward
Proof / implementation
  forward-isEquiv = record
    { inverse = backward
    ; left-inverse-law = backward-forward ⁻¹
    ; right-inverse-law = forward-backward ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProducts where

module ProductComparison {Γ : Context} (E C D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. For every category \(T\), the universal property of functor categories and Proposition 1.4.5 give equivalences \[ \begin {aligned} \Map (T,\Fun (C,D\times E)) &\simeq \Map (T\times C,D\times E)\\ &\simeq \Map (T\times C,D)\times \Map (T\times C,E)\\ &\simeq \Map (T,\Fun (C,D))\times \Map (T,\Fun (C,E))\\ &\simeq \Map (T,\Fun (C,D)\times \Fun (C,E)). \end {aligned} \] This composite is induced by the functor in the statement: after uncurrying, its two components are postcomposition with \(\pr _1\) and \(\pr _2\), by Lemma 1.7.7. The result follows from Proposition 1.4.11. □

Agda The product comparison on mapping animae

forward-isEquiv

Derivation, checked

  forward-isEquiv : IsEquiv forward
Proof / implementation
  forward-isEquiv = record
    { inverse = backward
    ; left-inverse-law = backward-forward ⁻¹
    ; right-inverse-law = forward-backward ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProducts where

module ProductComparison {Γ : Context} (E C D : CAT Γ) where
About this correspondence

The corresponding result is proved in rebuild2, but its current proof is not identified here with the particular mapping-anima chain in this paragraph. Open the full declaration to inspect the actual argument.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Identifying the specified product functor

forward

Definition, checked

  forward : MAP Source Target
Proof / implementation
  forward = pair left right
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProducts where

module ProductComparison {Γ : Context} (E C D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Detecting the product equivalence

forward-isEquiv

Derivation, checked

  forward-isEquiv : IsEquiv forward
Proof / implementation
  forward-isEquiv = record
    { inverse = backward
    ; left-inverse-law = backward-forward ⁻¹
    ; right-inverse-law = forward-backward ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProducts where

module ProductComparison {Γ : Context} (E C D : CAT Γ) where
About this correspondence

These are the corresponding current results or underlying constructions. Some helpers used by the previous proof were consolidated or replaced; no line-by-line agreement of the two implementations is asserted.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Lemma 1.7.11. Let \(T\) be a category and let \(f\colon C \to E\) and \(g\colon D \to E\) be functors. Then the functor \[ (\pr _1 \circ \blank , \pr _2 \circ \blank )\colon \Fun (T,C \times _{E} D) \to \Fun (T,C) \times _{\Fun (T,E)} \Fun (T,D) \] induced by the identification \((f \circ \blank ) \circ (\pr _1 \circ \blank ) = (g \circ \blank ) \circ (\pr _2 \circ \blank )\) is an equivalence.

Agda Functor categories preserve pullbacks

fun-preserves-pullback

Derivation, checked

  fun-preserves-pullback : (s : Cone f g S) → IsPullback s → IsPullback (mappedCone s)
Proof / implementation
  fun-preserves-pullback = Preservation.isPullback
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorPullbacks where

module _ {Γ : Context} {C D E S : CAT Γ} {f : MAP C E} {g : MAP D E} (K : CAT Γ) where

comparison-isEquiv

Derivation, checked

  comparison-isEquiv : IsEquiv comparison
Proof / implementation
  comparison-isEquiv = fun-preserves-pullback K (pullback-cone f g) (pullback-cone-isPullback f g)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorPullbacks where

module FunctorPullback {Γ : Context} (K : CAT Γ) {C D E : CAT Γ} (f : MAP C E) (g : MAP D E) where
About this correspondence

The current proof uses native evaluation and complete cone comparisons. It proves preservation for the specified mapped cone; it does not identify its proof steps with the earlier uncurrying-square implementation.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. By Proposition 1.6.3, it suffices to show that the pullback square defining \(C \times _E D\) remains a pullback square after applying \(\Map (S,\Fun (T,-))\) for every category \(S\). Under uncurrying, its four corners are identified with \[ \Map (S\times T,C\times _E D),\quad \Map (S\times T,C),\quad \Map (S\times T,D),\quad \Map (S\times T,E). \] By Lemma 1.7.7, the four functors become postcomposition with the original projections, \(f\), and \(g\). These comparisons respect the specified commutativity identification, as follows by uncurrying its defining postcomposition identification. We conclude that this square agrees with the one obtained by applying \(\Map (S \times T, -)\) to the original pullback square, including its commutativity data. So the resulting square is a pullback by Proposition 1.6.3. □

Agda Testing the mapped pullback square

fun-preserves-pullback

Derivation, checked

  fun-preserves-pullback : (s : Cone f g S) → IsPullback s → IsPullback (mappedCone s)
Proof / implementation
  fun-preserves-pullback = Preservation.isPullback
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorPullbacks where

module _ {Γ : Context} {C D E S : CAT Γ} {f : MAP C E} {g : MAP D E} (K : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Uncurrying the four corners

evaluation-forward

Definition, checked

    evaluation-forward : MAP (Map T F) (Map (T × C) D)
Proof / implementation
    evaluation-forward = mapCurry (map-isAn T F) evaluation-universal
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Evaluation where

module _ {Γ : Context} {F C D : CAT Γ} (e : MAP (F × C) D) where

  module _ (T : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Uncurrying commutes with postcomposition

funPost-uncurry

Derivation, checked

  funPost-uncurry : {T C D E : CAT Γ} (f : MAP D E) (g : MAP T (Fun C D))
    → funUncurry {C = C} {D = E} (funPost {C = C} f ∘ g) =₁
        (f ∘ funUncurry {C = C} {D = D} g)
Proof / implementation
  funPost-uncurry {C = C} {D} {E} f g =
    comp-assoc (productMap g (id C)) (funEval {C = C} {D = D}) f ∙
      ((funPost-β {C = C} f ▷ productMap g (id C)) ∙
        evaluate-restrict (funEval {C = C} {D = E}) (funPost {C = C} f) g)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.Functoriality where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Uncurrying respects the specified matching

match-β

Derivation, checked

    match-β : Cone.match (uncurryCone value) =₂ desired
Proof / implementation
    match-β = restore-boundaries leftChange rightChange desired
      (evaluate-cong eE (Cone.match value))
      (reflect-β-One eE (funUniversal K E) (F ∘ left) (G ∘ right) rawMatch)
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorCones where

module FunctorCones {Γ : Context} (K : CAT Γ) {C D E : CAT Γ} (f : MAP C E) (g : MAP D E) where

  module CurriedCone {T : CAT Γ} (s : Cone f g (T × K)) where

compatible

Derivation, checked

    compatible : SquareCell₌ (F ◁ left) (G ◁ right) (const (Cone.match s)) (const (Cone.match t))
Proof / implementation
    compatible = Fact.factor matching-factor
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorCones where

module FunctorCones {Γ : Context} (K : CAT Γ) {C D E : CAT Γ} (f : MAP C E) (g : MAP D E) where

  module ReflectedCone {X T : CAT Γ} (s t : Cone F G T)
    (Φ : ConeIdentification X (uncurryCone s) (uncurryCone t)) where

uncurryCone-restrict

Derivation, checked

  uncurryCone-restrict : (r : MAP R T) (s : Cone (funPost {C = K} f) (funPost {C = K} g) T)
    → ConeIdentification₁ (FunctorCones.uncurryCone K f g (cone-restrict r s))
        (cone-restrict (productMap r (id K)) (FunctorCones.uncurryCone K f g s))
Proof / implementation
  uncurryCone-restrict = FunctorConeRestriction.comparison K f g
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorConeRestriction where

module _ {Γ : Context} (K : CAT Γ) {C D E T R : CAT Γ} (f : MAP C E) (g : MAP D E) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda The tested square is a pullback

isPullback

Derivation, checked

    isPullback : IsPullback (mappedCone s)
Proof / implementation
    isPullback = pullback-recognize (mappedCone s) factor β reflect-cones
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorPullbacks where

module _ {Γ : Context} {C D E S : CAT Γ} {f : MAP C E} {g : MAP D E} (K : CAT Γ) where

  module Preservation (s : Cone f g S) (universal : IsPullback s) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Lemma 1.7.12. For categories \(C\), \(D\) and \(E\), there is a preferred equivalence \[ \Fun (C,\Fun (D,E)) \iso \Fun (C \times D, E)\, . \]

Agda The exponential law

forward

Definition, checked

  forward : MAP Nested Flat
Proof / implementation
  forward = funCurry {C = A × B} {D = D} forwardEvaluation
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.ExponentialLaw where

module ExponentialLaw {Γ : Context} (A B D : CAT Γ) where

forward-isEquiv

Derivation, checked

  forward-isEquiv : IsEquiv forward
Proof / implementation
  forward-isEquiv = record
    { inverse = backward
    ; left-inverse-law = backward-forward ⁻¹
    ; right-inverse-law = forward-backward ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.ExponentialLaw where

module ExponentialLaw {Γ : Context} (A B D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. We define the preferred functor as the curried functor of the following composite: \[ \Fun (C,\Fun (D,E)) \times C \times D \xrightarrow {\ev \times \id _{D}} \Fun (D,E) \times D \xrightarrow {\ev } E. \] To construct an inverse, it will by currying suffice to construct a functor \(\Fun (C \times D,E) \times C \to \Fun (D,E)\), which we may take to be the curried functor of the following composite \[ \Fun (C \times D,E) \times C \times D \xrightarrow {\ev } E. \] By construction, these two functors are compatible with the chain of equivalences \begin {align*} \Map (T,\Fun (C,\Fun (D,E))) &\simeq \Map (T\times C,\Fun (D,E))\\ &\simeq \Map ((T\times C)\times D,E)\\ &\simeq \Map (T\times (C\times D),E)\\ &\simeq \Map (T,\Fun (C\times D,E))\, . \end {align*}

Agda The preferred exponential comparison

forwardEvaluation

Definition, checked

  forwardEvaluation : MAP (Nested × (A × B)) D
Proof / implementation
  forwardEvaluation = doubleEvaluation ∘ Associativity.backward Nested A B
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.ExponentialLaw where

module ExponentialLaw {Γ : Context} (A B D : CAT Γ) where

forward

Definition, checked

  forward : MAP Nested Flat
Proof / implementation
  forward = funCurry {C = A × B} {D = D} forwardEvaluation
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.ExponentialLaw where

module ExponentialLaw {Γ : Context} (A B D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda The twice-curried inverse construction

backwardEvaluation

Definition, checked

  backwardEvaluation : MAP ((Flat × A) × B) D
Proof / implementation
  backwardEvaluation = eFlat ∘ Associativity.forward Flat A B
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.ExponentialLaw where

module ExponentialLaw {Γ : Context} (A B D : CAT Γ) where

backwardFirstCurry

Definition, checked

  backwardFirstCurry : MAP (Flat × A) (Fun B D)
Proof / implementation
  backwardFirstCurry = funCurry {C = B} {D = D} backwardEvaluation
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.ExponentialLaw where

module ExponentialLaw {Γ : Context} (A B D : CAT Γ) where

backward

Definition, checked

  backward : MAP Flat Nested
Proof / implementation
  backward = funCurry {C = A} {D = Fun B D} backwardFirstCurry
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.ExponentialLaw where

module ExponentialLaw {Γ : Context} (A B D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Compatibility with the chain of mapping-anima equivalences

forward-isEquiv

Derivation, checked

  forward-isEquiv : IsEquiv forward
Proof / implementation
  forward-isEquiv = record
    { inverse = backward
    ; left-inverse-law = backward-forward ⁻¹
    ; right-inverse-law = forward-backward ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.ExponentialLaw where

module ExponentialLaw {Γ : Context} (A B D : CAT Γ) where
About this correspondence

The corresponding result is proved in rebuild2, but its current proof is not identified here with the particular mapping-anima chain in this paragraph. Open the full declaration to inspect the actual argument.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

This shows that applying \(\Map (T,-)\) to the preferred functor is an equivalence for all \(T\), hence that the preferred functor is an equivalence. □

Agda Detecting the exponential equivalence

forward-isEquiv

Derivation, checked

  forward-isEquiv : IsEquiv forward
Proof / implementation
  forward-isEquiv = record
    { inverse = backward
    ; left-inverse-law = backward-forward ⁻¹
    ; right-inverse-law = forward-backward ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.ExponentialLaw where

module ExponentialLaw {Γ : Context} (A B D : CAT Γ) where
About this correspondence

These are the corresponding current results or underlying constructions. Some helpers used by the previous proof were consolidated or replaced; no line-by-line agreement of the two implementations is asserted.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Lemma 1.7.13. For a category \(C\), the functor \(\ev _{*}\colon \Fun (*,C) \to C\) is an equivalence.

Agda Functors out of the terminal category

funOneEvaluation-isEquiv

Derivation, checked

  funOneEvaluation-isEquiv : (D : CAT Γ) → IsEquiv (funOneEvaluation D)
Proof / implementation
  funOneEvaluation-isEquiv D = record
    { inverse = funOneInverse D
    ; left-inverse-law = (funOneInverse-evaluation D) ⁻¹
    ; right-inverse-law = (funOneEvaluation-inverse D) ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProperties where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. We leave it to the reader to verify that an inverse is given by currying the equivalence \(C \times * \iso C\). □

Agda The inverse to evaluation at the terminal point

funOneInverse

Derivation, checked

  funOneInverse : (D : CAT Γ) → MAP D (Fun One D)
Proof / implementation
  funOneInverse D = funCurry {C = One} {D = D} pr₁
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProperties where

module _ {Γ : Context} where

funOneEvaluation-inverse

Derivation, checked

  funOneEvaluation-inverse : (D : CAT Γ)
    → (funOneEvaluation D ∘ funOneInverse D) =₁ id D
Proof / implementation
  funOneEvaluation-inverse D = pair-β₁ (id D) (terminate D) ∙
    ((funOneInverse-β D ▷ product-unitʳ-inverse D) ∙
      evaluate-terminal (funEval {C = One} {D = D}) (funOneInverse D))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProperties where

module _ {Γ : Context} where

funOneInverse-evaluation

Derivation, checked

  funOneInverse-evaluation : (D : CAT Γ)
    → (funOneInverse D ∘ funOneEvaluation D) =₁ id (Fun One D)
Proof / implementation
  funOneInverse-evaluation D = reflect e (funUniversal One D) _ _
    ((evaluate-id e) ⁻¹ ∙
      (comp-unitʳ e ∙
        ((e ◁ product-unitʳ-inverse-pr₁ F) ∙
          (comp-assoc pr₁ (product-unitʳ-inverse F) e ∙
            (pair-β₁ (funOneEvaluation D ∘ pr₁) (id One ∘ pr₂) ∙
              ((funOneInverse-β D ▷ productMap (funOneEvaluation D) (id One)) ∙
                evaluate-restrict e (funOneInverse D) (funOneEvaluation D)))))))
    where
    F : CAT Γ
    F = Fun One D
    e : MAP (F × One) D
    e = funEval {C = One} {D = D}
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProperties where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Lemma 1.7.14. For a category \(C\), the functor category \(\Fun (\emptyset ,C)\) is contractible, i.e. \(\Fun (\emptyset ,C) \iso *\).

Agda Functors out of the initial category

funInitial-isEquiv

Derivation, checked

  funInitial-isEquiv : (D : CAT Γ) → IsEquiv (terminate (Fun Zero D))
Proof / implementation
  funInitial-isEquiv D = record
    { inverse = funInitialPoint D
    ; left-inverse-law = (funInitial-contraction D) ⁻¹
    ; right-inverse-law = terminal-identification _ _ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.InitialDomain where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. For every category \(T\), there are equivalences \[ \Map (T,\Fun (\emptyset ,C)) \simeq \Map (T\times \emptyset ,C) \simeq \Map (\emptyset ,C) \simeq *, \] using Lemma 1.5.1 and the initial-category axiom. Hence \(\Fun (\emptyset ,C)\to *\) induces an equivalence on mapping animae for every \(T\), and Proposition 1.4.11 applies. □

Agda The initial-source comparison on mapping animae

funInitial-isEquiv

Derivation, checked

  funInitial-isEquiv : (D : CAT Γ) → IsEquiv (terminate (Fun Zero D))
Proof / implementation
  funInitial-isEquiv D = record
    { inverse = funInitialPoint D
    ; left-inverse-law = (funInitial-contraction D) ⁻¹
    ; right-inverse-law = terminal-identification _ _ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.InitialDomain where

module _ {Γ : Context} where
About this correspondence

The corresponding result is proved in rebuild2, but its current proof is not identified here with the particular mapping-anima chain in this paragraph. Open the full declaration to inspect the actual argument.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Detecting initial-source contractibility

funInitial-isEquiv

Derivation, checked

  funInitial-isEquiv : (D : CAT Γ) → IsEquiv (terminate (Fun Zero D))
Proof / implementation
  funInitial-isEquiv D = record
    { inverse = funInitialPoint D
    ; left-inverse-law = (funInitial-contraction D) ⁻¹
    ; right-inverse-law = terminal-identification _ _ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.InitialDomain where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Lemma 1.7.15. For categories \(C\), \(D\) and \(E\), restriction along the inclusions \(i_C\colon C \hookrightarrow C \sqcup D\) and \(i_D\colon D \hookrightarrow C \sqcup D\) induces an equivalence \[ (i_C^*,i_D^*)\colon \Fun (C\sqcup D, E) \iso \Fun (C,E) \times \Fun (D,E). \]

Agda Functors out of a coproduct

forward

Definition, checked

  forward : MAP Source Target
Proof / implementation
  forward = pair left right
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoproductDomain where

module CoproductDomain {Γ : Context} (C D E : CAT Γ) where

forward-isEquiv

Derivation, checked

  forward-isEquiv : IsEquiv forward
Proof / implementation
  forward-isEquiv = record
    { inverse = backward
    ; left-inverse-law = backward-forward ⁻¹
    ; right-inverse-law = forward-backward ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoproductDomain where

module CoproductDomain {Γ : Context} (C D E : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. For every category \(T\), there are equivalences \[ \begin {aligned} \Map (T,\Fun (C\sqcup D,E)) &\simeq \Map (T\times (C\sqcup D),E)\\ &\simeq \Map ((T\times C)\sqcup (T\times D),E)\\ &\simeq \Map (T\times C,E)\times \Map (T\times D,E)\\ &\simeq \Map (T,\Fun (C,E))\times \Map (T,\Fun (D,E))\\ &\simeq \Map (T,\Fun (C,E)\times \Fun (D,E)), \end {aligned} \] using distributivity, the coproduct axiom, and Proposition 1.4.5. This composite is induced by \((i_C^*,i_D^*)\): after uncurrying, its components are restriction along \(T\times i_C\) and \(T\times i_D\), which correspond under Corollary 1.6.17 to the two coproduct inclusions. The result follows from Proposition 1.4.11. □

Agda The coproduct comparison on mapping animae

forward-isEquiv

Derivation, checked

  forward-isEquiv : IsEquiv forward
Proof / implementation
  forward-isEquiv = record
    { inverse = backward
    ; left-inverse-law = backward-forward ⁻¹
    ; right-inverse-law = forward-backward ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoproductDomain where

module CoproductDomain {Γ : Context} (C D E : CAT Γ) where
About this correspondence

The corresponding result is proved in rebuild2, but its current proof is not identified here with the particular mapping-anima chain in this paragraph. Open the full declaration to inspect the actual argument.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Identifying restriction along the two inclusions

forward

Definition, checked

  forward : MAP Source Target
Proof / implementation
  forward = pair left right
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoproductDomain where

module CoproductDomain {Γ : Context} (C D E : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Detecting the coproduct-source equivalence

forward-isEquiv

Derivation, checked

  forward-isEquiv : IsEquiv forward
Proof / implementation
  forward-isEquiv = record
    { inverse = backward
    ; left-inverse-law = backward-forward ⁻¹
    ; right-inverse-law = forward-backward ⁻¹ }
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoproductDomain where

module CoproductDomain {Γ : Context} (C D E : CAT Γ) where
About this correspondence

These are the corresponding current results or underlying constructions. Some helpers used by the previous proof were consolidated or replaced; no line-by-line agreement of the two implementations is asserted.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

1.7.2 Mapping animae and functor categories

We now compare the mapping anima with the functor category. Currying mapping-anima evaluation defines a canonical functor \[ \imath _{C,D}:=(\ev _{\Map })_c\colon \Map (C,D)\longrightarrow \Fun (C,D). \] The following result identifies \(\Map (C,D)\) with the collection of objects of \(\Fun (C,D)\).

Agda The canonical mapping-anima inclusion

mappingInclusion

Definition, checked

  mappingInclusion : (C D : CAT Γ) → MAP (Map C D) (Fun C D)
Proof / implementation
  mappingInclusion C D = funCurry {C = C} {D = D} mapEval
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proposition 1.7.16. For any categories \(C\) and \(D\), there is a preferred equivalence \[ \Map (C,D)\iso \Fun (C,D)^\simeq . \] Under this equivalence, the canonical functor \(\imath _{\Fun (C,D)}\colon \Fun (C,D)^\simeq \to \Fun (C,D)\) is identified with \(\imath _{C,D}\).

Agda The core of a functor category

coreFunComparison

Derivation, checked

    coreFunComparison : MAP (Map C D) (Core (Fun C D))
Proof / implementation
    coreFunComparison = IsEquiv.inverse coreFunUncurrying-isEquiv
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where

  module _ (C D : CAT Γ) where

coreFunComparison-isEquiv

Derivation, checked

    coreFunComparison-isEquiv : IsEquiv coreFunComparison
Proof / implementation
    coreFunComparison-isEquiv = equiv-inverse coreFunUncurrying-isEquiv
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where

  module _ (C D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. The universal property of functor categories gives equivalences \[ \Fun (C,D)^\simeq =\Map (*,\Fun (C,D)) \simeq \Map (*\times C,D) \simeq \Map (C,D). \] The inverse of their composite is the desired equivalence. To check compatibility with the canonical functors, it suffices to uncurry. Both resulting functors \(\Map (C,D)\times C\to D\) are identified with mapping-anima evaluation. □

Agda The equivalence from the core to the mapping anima

coreFunUncurrying-isEquiv

Derivation, checked

    coreFunUncurrying-isEquiv : IsEquiv coreFunUncurrying
Proof / implementation
    coreFunUncurrying-isEquiv = equiv-compose
      (evaluation-forward (funEval {C = C} {D = D}) One)
      (Maps.mapPre (product-unitˡ-inverse C)) (funUniversal C D One)
      (Maps.mapPre-isEquiv (product-unitˡ-inverse C) (product-unitˡ-inverse-isEquiv C))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where

  module _ (C D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda The inverse is the preferred core comparison

coreFunComparison

Derivation, checked

    coreFunComparison : MAP (Map C D) (Core (Fun C D))
Proof / implementation
    coreFunComparison = IsEquiv.inverse coreFunUncurrying-isEquiv
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where

  module _ (C D : CAT Γ) where

coreFunComparison-isEquiv

Derivation, checked

    coreFunComparison-isEquiv : IsEquiv coreFunComparison
Proof / implementation
    coreFunComparison-isEquiv = equiv-inverse coreFunUncurrying-isEquiv
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where

  module _ (C D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Compatibility with the canonical inclusions

coreFunComparison-inclusion

Derivation, checked

    coreFunComparison-inclusion : (coreInclusion (Fun C D) ∘ coreFunComparison) =₁ mappingInclusion C D
Proof / implementation
    coreFunComparison-inclusion = comp-unitʳ (mappingInclusion C D) ∙
      ((mappingInclusion C D ◁ (IsEquiv.right-inverse-law coreFunUncurrying-isEquiv) ⁻¹) ∙
        (comp-assoc coreFunComparison coreFunUncurrying (mappingInclusion C D) ∙
          (mappingInclusion-coreUncurrying ⁻¹ ▷ coreFunComparison)))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where

  module _ (C D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Agda Both uncurried functors are mapping-anima evaluation

coreFunUncurrying-evaluation

Derivation, checked

    coreFunUncurrying-evaluation : uncurry coreFunUncurrying =₁
      funUncurry {C = C} {D = D} (coreInclusion (Fun C D))
Proof / implementation
    coreFunUncurrying-evaluation =
      (evaluate-restrict (funEval {C = C} {D = D}) mapEval (product-unitʳ-inverse A)) ⁻¹ ∙
        ((evaluate (funEval {C = C} {D = D}) mapEval ◁ terminal-regroup) ∙
          (comp-assoc (productMap (id A) (product-unitˡ-inverse C)) (Associativity.backward A One C)
            (evaluate (funEval {C = C} {D = D}) mapEval) ∙
            ((mapCurry-β (map-isAn One (Fun C D)) (evaluation-universal (funEval {C = C} {D = D}) One)
                ▷ productMap (id A) (product-unitˡ-inverse C)) ∙
              Maps.mapPre-uncurry (product-unitˡ-inverse C) (evaluation-forward (funEval {C = C} {D = D}) One))))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where

  module _ (C D : CAT Γ) where

mappingInclusion-coreUncurrying

Derivation, checked

    mappingInclusion-coreUncurrying : (mappingInclusion C D ∘ coreFunUncurrying) =₁ coreInclusion (Fun C D)
Proof / implementation
    mappingInclusion-coreUncurrying = reflect (funEval {C = C} {D = D}) (funUniversal C D) _ _
      (coreFunUncurrying-evaluation ∙
        ((mappingInclusion-β C D ▷ productMap coreFunUncurrying (id C)) ∙
          evaluate-restrict (funEval {C = C} {D = D}) (mappingInclusion C D) coreFunUncurrying))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.CoreOfFun where

module _ {Γ : Context} where

  module _ (C D : CAT Γ) where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proposition 1.7.17. For any anima \(X\), postcomposition with \(\imath _{C,D}\) induces an equivalence \[ (\imath _{C,D})_*\colon \Map (X,\Map (C,D))\iso \Map (X,\Fun (C,D)). \]

Agda The comparison on anima parameters

mappingInclusion-on-maps

Derivation, checked

  mappingInclusion-on-maps : (T C D : CAT Γ) → isAn T
    → IsEquiv (Maps.mapPost {C = T} (mappingInclusion C D))
Proof / implementation
  mappingInclusion-on-maps T C D tAn = equiv-transport
    (Maps.mapPost⁼ (coreFunComparison-inclusion C D) ∙
      Maps.mapPost-comp (coreFunComparison C D) (coreInclusion (Fun C D)))
    (equiv-compose (Maps.mapPost {C = T} (coreFunComparison C D))
      (Maps.mapPost {C = T} (coreInclusion (Fun C D)))
      (Maps.mapPost-isEquiv (coreFunComparison C D) (coreFunComparison-isEquiv C D))
      (core-universal T (Fun C D) tAn))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProperties where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·

Proof

Proof. By the preceding proposition, this is the universal property of the groupoid core of \(\Fun (C,D)\) from Corollary 1.4.13. □

Agda Apply the universal property of the core

mappingInclusion-on-maps

Derivation, checked

  mappingInclusion-on-maps : (T C D : CAT Γ) → isAn T
    → IsEquiv (Maps.mapPost {C = T} (mappingInclusion C D))
Proof / implementation
  mappingInclusion-on-maps T C D tAn = equiv-transport
    (Maps.mapPost⁼ (coreFunComparison-inclusion C D) ∙
      Maps.mapPost-comp (coreFunComparison C D) (coreInclusion (Fun C D)))
    (equiv-compose (Maps.mapPost {C = T} (coreFunComparison C D))
      (Maps.mapPost {C = T} (coreInclusion (Fun C D)))
      (Maps.mapPost-isEquiv (coreFunComparison C D) (coreFunComparison-isEquiv C D))
      (core-universal T (Fun C D) tAn))
Enclosing interface and module parameters

The enclosing headers show supplied parameters. Open the full module for imports and surrounding definitions.

{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section07.FunctorProperties where

module _ {Γ : Context} where
About this correspondence

This links to the current context-indexed formalization in rebuild2. The hypotheses are shown in the declaration and its enclosing context.

Checked source correspondences for Chapter 1 Sections 1.1–1.8, Chapter 2 Sections 2.1–2.6, and selected declarations throughout Chapter 3. Contextual inheritance is outside the formalization scope. Passage notes identify partial coverage, proof-route and representation differences.

Return to this passage ·