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.1 The basic vocabulary

We start by introducing the basic vocabulary of synthetic category theory.

Axiom A.1 (Primitives). The following are the primitives of synthetic category theory:

(1)

There are categories, which we denote by symbols like \(C\), \(D\), and \(E\). Among categories, there are animae.

Agda Categories

CAT

Assumption, type checked

  CAT : Context → Set 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.Section01.Vocabulary 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 Animae among categories

isAn

Assumption, type checked

    isAn : CAT Γ → Set a
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.Section01.Vocabulary where

module _ {Γ : Context} where

AN

Definition, checked

  record AN : Set (c ⊔ a) where
    field
      category : CAT Γ
      witness : isAn category
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.Section01.Vocabulary 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 ·

(2)

For categories \(C\) and \(D\), there is a primitive notion of a functor \(f\colon C\to D\). Every category has an identity functor \(\id _C\colon C\to C\). Given \(f\colon C\to D\) and \(g\colon D\to E\), there is a composite functor \(g\circ f\colon C\to E\), sometimes also denoted \(gf\).

Agda Functors

MAP

Assumption, type checked

    MAP : CAT Γ → CAT Γ → Set m
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.Section01.Vocabulary 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 Identity functors

id

Assumption, type checked

    id : (C : CAT Γ) → MAP 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.Section01.Vocabulary 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 Composition of functors

_∘_

Assumption, type checked

    _∘_ : {C D E : CAT Γ} → MAP D E → MAP C D → MAP C 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.Section01.Vocabulary 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 ·

(3)

There exists an anima \(*\), called the terminal category.

Agda The terminal category

One

Assumption, type checked

    One : 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.Section01.Vocabulary where

module _ {Γ : Context} where

one-isAn

Assumption, type checked

    one-isAn : isAn 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.Section01.Vocabulary 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 ·

Categories and functors play the foundational role in synthetic category theory that sets and functions play in naive set theory. The role of the animae among the categories is to encode the idea of a homotopy-coherent collection: where objects in classical mathematics assemble into sets, in synthetic category theory they assemble into animae. A category additionally allows objects to be related by morphisms that need not be invertible.

For now, animae form a primitive distinguished class of categories. We regard every category equivalent to an anima as an anima. Once we have introduced morphisms and their invertibility, we can define groupoids as those categories in which every morphism is invertible. In the next chapter, we will impose the axiom that the animae are precisely the groupoids.

Definition 1.1.1 (Terms). A functor \(f\colon C\to D\) may be displayed in term notation as \[ x:C\vdash f(x):D. \] The functor and the expression \(f(x)\) are two notations for the same datum. We call \(x:C\) its context. More generally, we may write \(C\vdash t:D\) when the name of the variable is left implicit.

Agda Terms are functors

Term

Definition, checked

  Term : CAT Γ → Set m
Proof / implementation
  Term C = MAP X 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.Section01.Terms where

module InContext {Γ : Context} (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 Expressions display functors

Term

Definition, checked

  Term : CAT Γ → Set m
Proof / implementation
  Term C = MAP X 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.Section01.Terms where

module InContext {Γ : Context} (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 ·

Throughout the chapter, we will indicate how the various rules we introduce may be written in their corresponding term notation. Conversely, any term expression obtained by combining these rules corresponds to a well-defined functor. The notation is inspired by type-theoretic approaches to synthetic category theory, such as [RS17; GWB24].

For example, composition of functors is displayed by substitution: for a second functor \(g\colon D\to E\), the term notation for the composite \(g\circ f\) is the expression \(x :C \vdash g(f(x)):E\). The term notation for the identity functor on \(C\) is \(x : C \vdash x : C\). We also refer to the latter as the universal term of \(C\).

Agda Substitution

_∘_

Assumption, type checked

    _∘_ : {C D E : CAT Γ} → MAP D E → MAP C D → MAP C 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.Section01.Vocabulary 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 Substitution by a functor

_∘_

Assumption, type checked

    _∘_ : {C D E : CAT Γ} → MAP D E → MAP C D → MAP C 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.Section01.Vocabulary 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 The universal term

id

Assumption, type checked

    id : (C : CAT Γ) → MAP 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.Section01.Vocabulary 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.1.2 (Objects). Given a term \(x:C\) in context \(\Gamma \), we say that \(x\) is an object (in context \(\Gamma )\) if \(\Gamma \) is an anima. If we speak about an object of \(C\), we mean an object in an arbitrary anima context.

An absolute object is a functor \(x\colon * \to C\), i.e. an object in context \(*\).

Agda Absolute objects

Obj-abs

Definition, checked

  Obj-abs : CAT Γ → Set m
Proof / implementation
  Obj-abs C = MAP One 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.Section01.Vocabulary 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 ·

As already mentioned in the introduction of this book, one major difference between classical mathematics and homotopy theory is the idea that equality is structure. In classical mathematics, equality is a yes-no-question: two elements of a set are either equal or not. In homotopy theory, we change our perspective and allow there to be potentially several different identifications. The collection of identifications thus needs to assemble into an anima.

We thus introduce a primitive anima of identifications between every pair of functors. All our definitions and constructions should always respect identifications; we choose to implement this via explicit rules rather than via some deeper foundational principle as is for example done in homotopy type theory.

Axiom A.2 (Identifications). Given parallel functors \(f,g\colon C\to D\), there is an anima \((f= g)\), called the anima of identifications of \(f\) and \(g\). An identification \(\alpha : f = g\) is an absolute object of this anima.

Agda The isomorphism anima

_=_

Assumption, type checked

    _=_ : {C D : CAT Γ} → MAP C D → MAP C D → 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.Section01.Vocabulary where

module _ {Γ : Context} where

=-isAn

Assumption, type checked

    =-isAn : {C D : CAT Γ} (f g : MAP C D) → isAn (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.Section01.Vocabulary 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 Identifications

_=₁_

Definition, checked

  _=₁_ : {C D : CAT Γ} → MAP C D → MAP C D → Set m
Proof / implementation
  f =₁ g = Obj-abs (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.Section01.Vocabulary 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 ·

For \(h\colon D\to E\) and \(k\colon B\to C\), there are functors \[ h\star -\colon (f= g)\to (hf= hg), \qquad -\star k\colon (f= g)\to (fk= gk), \] called postwhiskering and prewhiskering, respectively.

Agda Postwhiskering

postWhisker

Assumption, type checked

    postWhisker : {C D E : CAT Γ} {f g : MAP C D}
      (u : MAP D E) → MAP (f = g) ((u ∘ f) = (u ∘ 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.Section01.Vocabulary where

module _ {Γ : Context} where

_◁_

Definition, checked

    _◁_ : {P C D E : CAT Γ} {f g : MAP C D}
      → (u : MAP D E) → MAP P (f = g) → MAP P ((u ∘ f) = (u ∘ g))
Proof / implementation
    u ◁ α = postWhisker u ∘ α
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.Section01.Vocabulary where

module Operations 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 Prewhiskering

preWhisker

Assumption, type checked

    preWhisker : {B C D : CAT Γ} {f g : MAP C D}
      (k : MAP B C) → MAP (f = g) ((f ∘ k) = (g ∘ 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.Section01.Vocabulary where

module _ {Γ : Context} where

_▷_

Definition, checked

    _▷_ : {P B C D : CAT Γ} {f g : MAP C D}
      → MAP P (f = g) → (k : MAP B C) → MAP P ((f ∘ k) = (g ∘ k))
Proof / implementation
    α ▷ k = preWhisker 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.Section01.Vocabulary where

module Operations 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 ·

Notation 1.1.3. We also denote identifications \(\alpha : f = g\) in term notation as1 \[ x : C \vdash \alpha (x) : f(x) = g(x). \]

Agda Isomorphisms of whole expressions

_=₁_

Definition, checked

  _=₁_ : {C D : CAT Γ} → MAP C D → MAP C D → Set m
Proof / implementation
  f =₁ g = Obj-abs (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.Section01.Vocabulary 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 ·

Footnote 1

1There is a slight clash between this notation and that of Definition 1.1.1: this does not mean a functor \(C \to f(x) = g(x)\), which does not even make sense.

Return to text

Given an anima \(A\) and two absolute objects \(a,b:A\), we obtain an anima \(a = b\) of identifications between them. In particular, given two identifications \(\alpha ,\beta : f = g\), we may form the anima \(\alpha = \beta \). This construction may be iterated.

Agda Identifications of identifications

_=₂_

Definition, checked

  _=₂_ : {C D : CAT Γ} {f g : MAP C D} → f =₁ g → f =₁ g → Set m
Proof / implementation
  α =₂ β = α =₁ β
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.Section01.Vocabulary 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.1.4. A commutative square of functors, often displayed by means of a diagram

Agda Commutative squares

FunctorSquare

Definition, checked

  record FunctorSquare (C D C′ D′ : CAT Γ) : Set m where
    constructor functor-square-data
    field
      top : MAP C D
      left : MAP C C′
      right : MAP D D′
      bottom : MAP C′ D′
      cell : (right ∘ top) =₁ (bottom ∘ left)
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.Section03.Squares 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.

consists of four functors \(f\), \(g\), \(h\) and \(f'\) with sources and targets as displayed in the diagram, together with a specified identification \(\alpha \colon h \circ f = f' \circ g\).

We will often refer to the data of just the four functors \(f\), \(g\), \(h\) and \(f'\) as a square, and say that the square commutes whenever an identification \(\alpha \colon h \circ f = f' \circ g\) can be provided.

A commutative triangle of functors, displayed by means of a diagram

Agda Commutative triangles

FunctorOverBase

Definition, checked

  record FunctorOverBase {S : CAT Γ}
    (X Y : CategoryOverBase S) : Set m where
    constructor functor-over
    field
      functor : MAP (CategoryOverBase.category X) (CategoryOverBase.category Y)
      cell : (CategoryOverBase.map Y ∘ functor) =₁ CategoryOverBase.map X
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.Section03.RelativeFunctors where

module _ {Γ : Context} where
About this correspondence

The triangle is represented by a functor over a base: its underlying functor and specified commuting identification are bundled in this record. Triangles of identification families use the separate TriangleDiagram record.

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.

consists of three functors \(f\), \(g\) and \(h\) with sources and targets as displayed in the diagram, together with a specified identification \(\alpha \colon h = g \circ f\).

We will similarly display more general diagrams of functors by drawing directed planar graphs with vertices labeled by categories and edges labeled by functors. We consider diagrams whose faces are bounded by two directed paths with the same source and target, and fix a parenthesization for each composite. We say the diagram commutes if every face comes equipped with an identification between these two composites.

Definition 1.1.5 (Equivalence of categories). A functor \(f\colon C \to D\) is said to be an equivalence if there exists another functor \(g\colon D \to C\) equipped with identifications \(\id _{C} = gf\) and \(\id _{D} = fg\). We refer to \(g\) as the inverse of \(f\). Equivalences will often be introduced by writing \(f\colon C \iso D\). We may write \(C \simeq D\) to indicate that \(C\) and \(D\) are equivalent via an unnamed equivalence.

Agda Equivalence data

IsEquiv

Definition, checked

  record IsEquiv {C D : CAT Γ} (f : MAP C D) : Set m where
    field
      inverse : MAP D C
      left-inverse-law : (id C) =₁ (inverse ∘ f)
      right-inverse-law : (id D) =₁ (f ∘ inverse)
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.Section01.Vocabulary 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 A chosen inverse

inverse

Definition, checked

      inverse : MAP 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.Section01.Vocabulary where

module _ {Γ : Context} where

  record IsEquiv {C D : CAT Γ} (f : MAP C D) : Set m 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 An unnamed equivalence

Equiv

Definition, checked

  record Equiv (C D : CAT Γ) : Set m where
    field
      functor : MAP C D
      isEquiv : IsEquiv functor
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.Section01.Vocabulary 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 ·

The next two axioms belong to the universal constructions of group B. We introduce them here because they are needed to formulate the coherence axioms of group A. We begin with the universal property of the terminal category.

Axiom B.1 (Terminal category). For every category \(T\), there is a functor \(p_T\colon T\to *\). For any functors \(f,g\colon T\to *\), the functor \[ p_{(f= g)}\colon (f= g)\longrightarrow * \] is an equivalence.

Agda The terminal functor

terminate

Assumption, type checked

    terminate : (C : CAT Γ) → MAP C 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.Section01.Terminal 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 Terminal universality

terminal-identifications-isEquiv

Assumption, type checked

    terminal-identifications-isEquiv : {T : CAT Γ} (f g : MAP T One)
      → IsEquiv (terminate (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.Section01.Terminal where

module _ {Γ : Context} where

terminal-identifications-contractible

Derivation, checked

    terminal-identifications-contractible : {X : CAT Γ} (f g : MAP X One) → IsContractible (f = g)
Proof / implementation
    terminal-identifications-contractible = terminal-identifications-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.Section01.Terminal where

module Contractibility 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 ·

In particular, any two functors to \(*\) are identified.

Agda Uniqueness of terminal maps

terminal-identification

Derivation, checked

    terminal-identification : {P : CAT Γ} (f g : MAP P One) → f =₁ g
Proof / implementation
    terminal-identification f g = IsEquiv.inverse (terminal-identifications-isEquiv 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.Section01.Terminal where

module Constructions 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.1.6 (Contractible category). A category \(C\) is called contractible if the functor \(p_{C}\colon C \to *\) is an equivalence.

Agda Contractible categories

IsContractible

Definition, checked

    IsContractible : CAT Γ → Set m
Proof / implementation
    IsContractible C = IsEquiv (terminate 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.Section01.Terminal where

module Constructions 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.1.7 (Constant functor). Let \(C\) and \(D\) be categories and let \(x\) be an absolute object of \(D\). We define the constant functor \(\const _x\colon C \to D\) as the composite \(x \circ p_C\colon C \to D\): \[ \const _x: C \xrightarrow {p_C} * \xrightarrow {x} D. \]

Agda Constant functors

const

Definition, checked

    const : {P C : CAT Γ} → Obj-abs C → MAP P C
Proof / implementation
    const {P} x = x ∘ terminate P
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.Section01.Terminal where

module Constructions 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 ·

Remark 1.1.8. Observe that a category \(C\) is contractible if and only if there exists an absolute object \(x\colon * \to C\) equipped with an identification \(\id _C = \const _x\). Such an identification \(H\colon \id _C = \const _x\) is called a contraction of \(C\) onto \(x\).

Agda Characterizing contractibility

contractible-to-contraction

Derivation, checked

    contractible-to-contraction : {C : CAT Γ} → IsContractible C → Contraction C
Proof / implementation
    contractible-to-contraction e = record
      { center = IsEquiv.inverse e
      ; contraction = IsEquiv.left-inverse-law 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.Section01.Terminal where

module Contractibility where

  module _ {Γ : Context} where

contraction-to-contractible

Derivation, checked

    contraction-to-contractible : {C : CAT Γ} → Contraction C → IsContractible C
Proof / implementation
    contraction-to-contractible {C} H = record
      { inverse = Contraction.center H
      ; left-inverse-law = Contraction.contraction H
      ; right-inverse-law = terminal-identification (id One) (terminate C ∘ Contraction.center H)
      }
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.Section01.Terminal where

module Contractibility 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 Contractions

Contraction

Definition, checked

    record Contraction (C : CAT Γ) : Set m where
      field
        center : Obj-abs C
        contraction : (id C) =₁ (const center)
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.Section01.Terminal where

module Contractibility 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 ·

We will postpone most category constructors until later in the chapter, but we need one crucial one right now already in order to state various coherence relations.

Axiom B.2 (Product of categories). The product of categories \(C\) and \(D\) is a category \(C\times D\) equipped with projection functors \(\pr _1\colon C\times D\to C\) and \(\pr _2\colon C\times D\to D\).

Agda Binary products

_×_

Assumption, type checked

    _×_ : 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.Section01.Vocabulary 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 The two projections

pr₁

Assumption, type checked

    pr₁ : {C D : CAT Γ} → MAP (C × 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.Section01.Vocabulary where

module _ {Γ : Context} where

pr₂

Assumption, type checked

    pr₂ : {C D : CAT Γ} → MAP (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.Section01.Vocabulary 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 \(f\colon T\to C\) and \(g\colon T\to D\), there is a functor \((f,g)\colon T\to C\times D\) equipped with identifications \(\beta ^1_{f,g}:\pr _1(f,g)=f\) and \(\beta ^2_{f,g}:\pr _2(f,g)=g\). For any two functors \(h,k\colon T\to C\times D\), the functor \[ (\pr _1\star -,\pr _2\star -)\colon (h= k)\longrightarrow (\pr _1 h=\pr _1 k)\times (\pr _2 h=\pr _2 k) \] is an equivalence. If \(C\) and \(D\) are animae, then \(C\times D\) is an anima.

Agda Pairing functors

pair

Assumption, type checked

    pair : {P C D : CAT Γ} → MAP P C → MAP P D → MAP P (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.Section01.Vocabulary 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 Projection comparisons

pair-β₁

Assumption, type checked

    pair-β₁ : {P C D : CAT Γ} (f : MAP P C) (g : MAP P D)
      → (pr₁ ∘ pair f g) =₁ 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.Section01.Vocabulary where

module _ {Γ : Context} where

pair-β₂

Assumption, type checked

    pair-β₂ : {P C D : CAT Γ} (f : MAP P C) (g : MAP P D)
      → (pr₂ ∘ pair f g) =₁ 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.Section01.Vocabulary 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 Universality on isomorphism animae

product-coordinates

Definition, checked

      product-coordinates : {C D : CAT Γ} (f g : Term (C × D))
        → MAP (Equal f g) ((Equal (pr₁ ∘ f) (pr₁ ∘ g)) × (Equal (pr₂ ∘ f) (pr₂ ∘ g)))
Proof / implementation
      product-coordinates f g = pair (postWhisker pr₁) (postWhisker 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.Section02.Products where

module Coordinates where

  module _ {Γ : Context} where

    module _ {T : CAT Γ} where

product-coordinates-isEquiv

Assumption, type checked

    product-coordinates-isEquiv : {T C D : CAT Γ} (f g : MAP T (C × D))
      → IsEquiv (product-coordinates 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.Section02.Products 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 Products of animae

product-isAn

Assumption, type checked

    product-isAn : {C D : CAT Γ} → isAn C → isAn D → isAn (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.Section01.Vocabulary 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 ·

We refer to the functor \((f,g)\) as the pair construction. In term notation, it is written \[ x:T \vdash (f(x),g(x)): C \times D, \] with identifications \(\pr _1(f(x),g(x))= f(x)\) and \(\pr _2(f(x),g(x))= g(x)\). For arbitrary expressions \(h(x),k(x):C\times D\), two identifications \(\alpha (x):\pr _1 h(x)=\pr _1 k(x)\) and \(\beta (x):\pr _2 h(x)=\pr _2 k(x)\) give an identification \((\alpha (x),\beta (x)):h(x)= k(x)\) by applying an inverse of the displayed equivalence. Its two projections are identified with \(\alpha \) and \(\beta \).

Agda Pairing terms

pair

Assumption, type checked

    pair : {P C D : CAT Γ} → MAP P C → MAP P D → MAP P (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.Section01.Vocabulary 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 Lifting the two comparisons

pair⁼

Derivation, checked

      pair⁼ : {x x′ : Term C} {y y′ : Term D}
        → x = x′ → y = y′ → pair x y = pair x′ y′
Proof / implementation
      pair⁼ {x = x} {x′} {y} {y′} α β = ProductIdentification.identification
        (const ((pair-β₁ x′ y′) ⁻¹) ∙ (α ∙ const (pair-β₁ x y)))
        (const ((pair-β₂ x′ y′) ⁻¹) ∙ (β ∙ const (pair-β₂ x y)))
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.Section02.Products where

module Calculus where

  module _ {Γ : Context} where

    module _ {A X 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 Projections of a lifted comparison

pair⁼-β₁

Derivation, checked

      pair⁼-β₁ : {x x′ : Term C} {y y′ : Term D}
        (α : x = x′) (β : y = y′)
        → (pr₁ ◁ pair⁼ α β) =₁
            (const ((pair-β₁ x′ y′) ⁻¹) ∙ (α ∙ const (pair-β₁ x y)))
Proof / implementation
      pair⁼-β₁ {x = x} {x′} {y} {y′} α β = ProductIdentification.β₁
        (const ((pair-β₁ x′ y′) ⁻¹) ∙ (α ∙ const (pair-β₁ x y)))
        (const ((pair-β₂ x′ y′) ⁻¹) ∙ (β ∙ const (pair-β₂ x y)))
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.Section02.Products where

module Calculus where

  module _ {Γ : Context} where

    module _ {A X C D : CAT Γ} where

pair⁼-β₂

Derivation, checked

      pair⁼-β₂ : {x x′ : Term C} {y y′ : Term D}
        (α : x = x′) (β : y = y′)
        → (pr₂ ◁ pair⁼ α β) =₁
            (const ((pair-β₂ x′ y′) ⁻¹) ∙ (β ∙ const (pair-β₂ x y)))
Proof / implementation
      pair⁼-β₂ {x = x} {x′} {y} {y′} α β = ProductIdentification.β₂
        (const ((pair-β₁ x′ y′) ⁻¹) ∙ (α ∙ const (pair-β₁ x y)))
        (const ((pair-β₂ x′ y′) ⁻¹) ∙ (β ∙ const (pair-β₂ x y)))
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.Section02.Products where

module Calculus where

  module _ {Γ : Context} where

    module _ {A X 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 ·

Remark 1.1.9. Given categories \(C\) and \(D\), we define a span from \(C\) to \(D\) to be a triple \((T,f,g)\) consisting of a category \(T\) together with functors \(f\colon T \to C\) and \(g\colon T \to D\). Axiom B.2 may be rephrased as saying that the triple \((C \times D, \pr _1, \pr _2)\) is the terminal span from \(C\) to \(D\): every span \(C \leftarrow T \to D\) admits a factorization through \(C \times D\), and an identification of two functors \(T \to C \times D\) amounts to identifications between their respective components.

Agda Spans

Span

Definition, checked

  record Span (C D : CAT Γ) : Set (c ⊔ m) where
    field
      apex : CAT Γ
      left : MAP apex C
      right : MAP apex 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.Section02.Products where

module _ {Γ : Context} where

SpanMap

Definition, checked

  record SpanMap {C D : CAT Γ} (U Z : Span C D) : Set m where
    field
      functor : MAP (Span.apex U) (Span.apex Z)
      left-triangle : (Span.left Z ∘ functor) =₁ (Span.left U)
      right-triangle : (Span.right Z ∘ functor) =₁ (Span.right U)
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.Section02.Products 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 The product span

productSpan

Derivation, checked

    productSpan : (C D : CAT Γ) → Span C D
Proof / implementation
    productSpan C D = record { apex = C × D ; left = pr₁ ; right = 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.Section02.Products where

module ProductSpans where

  module _ {Γ : Context} where

toProductSpan

Derivation, checked

    toProductSpan : {C D : CAT Γ} (U : Span C D) → SpanMap U (productSpan C D)
Proof / implementation
    toProductSpan U = record
      { functor = pair (Span.left U) (Span.right U)
      ; left-triangle = pair-β₁ (Span.left U) (Span.right U)
      ; right-triangle = pair-β₂ (Span.left U) (Span.right U)
      }
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.Section02.Products where

module ProductSpans 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 Comparison of maps of spans

pair₌-unique

Derivation, checked

    pair₌-unique : {C D : CAT Γ} {z z′ : Term (C × D)}
      {x x′ : Term C} {y y′ : Term D}
      {b₁ : ((pr₁ ∘ z) = x)} {b₁′ : ((pr₁ ∘ z′) = x′)}
      {b₂ : ((pr₂ ∘ z) = y)} {b₂′ : ((pr₂ ∘ z′) = y′)}
      {α : x = x′} {β : y = y′}
      {ε ε′ : z = z′}
      → SquareCell₌ (pr₁ ◁ ε) α b₁ b₁′
      → SquareCell₌ (pr₂ ◁ ε) β b₂ b₂′
      → SquareCell₌ (pr₁ ◁ ε′) α b₁ b₁′
      → SquareCell₌ (pr₂ ◁ ε′) β b₂ b₂′
      → ε =₁ ε′
Proof / implementation
    pair₌-unique {b₁′ = b₁′} {b₂′ = b₂′} first second first′ second′ =
      pair₌-extensionality
        (cancel-left b₁′ (first′ ⁻¹ ∙ first))
        (cancel-left b₂′ (second′ ⁻¹ ∙ second))
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.Section03.Products.Pairing where

module _ {Γ : Context} where

  module _ {A 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 ·

Convention 1.1.10. A term of the form \(z : C \times D \vdash t : E\) may also be written as \[ x:C, y:D \vdash t(x,y) : E \] whenever the term \(t\) only depends on the variable \(z\) through the two projections \(\pr _1(z)\) and \(\pr _2(z)\). The expression \(t(x,y)\) is then obtained from \(t\) by replacing \(\pr _1(z)\) by \(x\) and \(\pr _2(z)\) by \(y\). For more than two variables we use a fixed parenthesization of their product.

Agda Product parameter notation

pr₁

Assumption, type checked

    pr₁ : {C D : CAT Γ} → MAP (C × 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.Section01.Vocabulary where

module _ {Γ : Context} where

pr₂

Assumption, type checked

    pr₂ : {C D : CAT Γ} → MAP (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.Section01.Vocabulary 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 ·