Other Agda modules in this section (2)

Chapter 1, rebuild2, checked 14 October 2026 · source revision b982f5a.

Corresponding book passages
# Categories, functors, and absolute objects

The primitives below are assumptions, following `post:Synthetic_Categories`,
available in each ambient anima context. They specify neither an inductive
presentation nor Agda equality laws for synthetic categories.

```agda
{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section01.Vocabulary where

open import Agda.Primitive public using (Level; _⊔_)
```

## Ambient contexts

We work in one ambient foundation. Its category, functor and anima-witness
levels are independent and fixed globally. Contexts have their own level.

```agda
postulate
  c m a κ : Level
  Context : Set κ
  absolute : Context
```

`Context` is primitive, not an inductively generated syntax. We introduce its
extension operation below, once the categorical vocabulary defines animae.

## Categories and animae

```agda

postulate
  CAT : Context → Set c

module _ {Γ : Context} where
  infixr 30 _∘_
  infix 10 _=_

  postulate
    isAn : CAT Γ → Set a
    MAP : CAT Γ → CAT Γ → Set m
    id : (C : CAT Γ) → MAP C C
    _∘_ : {C D E : CAT Γ} → MAP D E → MAP C D → MAP C E
    One : CAT Γ
    one-isAn : isAn One

    _=_ : {C D : CAT Γ} → MAP C D → MAP C D → CAT Γ
    =-isAn : {C D : CAT Γ} (f g : MAP C D) → isAn (f = g)
    postWhisker : {C D E : CAT Γ} {f g : MAP C D}
      (u : MAP D E) → MAP (f = g) ((u ∘ f) = (u ∘ g))
    preWhisker : {B C D : CAT Γ} {f g : MAP C D}
      (k : MAP B C) → MAP (f = g) ((f ∘ k) = (g ∘ k))

  record AN : Set (c ⊔ a) where
    field
      category : CAT Γ
      witness : isAn category

```

Extension by an anima can be iterated using the vocabulary in the resulting
context. This declares no induction principle, weakening or substitution laws,
and imposes no strict equation on extension.

```agda
postulate
  extend : (Γ : Context) → AN {Γ} → Context
```

## Absolute objects and identifications

```agda
module _ {Γ : Context} where
  infix 10 _=₁_ _=₂_ _=₃_

  Obj-abs : CAT Γ → Set m
  Obj-abs C = MAP One C

  _=₁_ : {C D : CAT Γ} → MAP C D → MAP C D → Set m
  f =₁ g = Obj-abs (f = g)

  _=₂_ : {C D : CAT Γ} {f g : MAP C D} → f =₁ g → f =₁ g → Set m
  α =₂ β = α =₁ β

  _=₃_ : {C D : CAT Γ} {f g : MAP C D} {α β : f =₁ g}
    → α =₂ β → α =₂ β → Set m
  p =₃ q = p =₁ q

  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)

  record Equiv (C D : CAT Γ) : Set m where
    field
      functor : MAP C D
      isEquiv : IsEquiv functor
```

`Obj-abs C` means an **absolute object in the ambient theory**, a functor from
its `One`. Thus it is formed in the same ambient context as `C`. The name `Obj`
is reserved for the proposed notion of an object with an anima as parameter.

Whiskering acts on families with any common parameter category. This category
is distinct from the ambient anima context. In particular, whiskering acts on
absolute natural isomorphisms, whose source is `One`.

```agda
module Operations where
  module _ {Γ : Context} where
    infixr 35 _◁_ _▷_

    _◁_ : {P C D E : CAT Γ} {f g : MAP C D}
      → (u : MAP D E) → MAP P (f = g) → MAP P ((u ∘ f) = (u ∘ g))
    u ◁ α = postWhisker u ∘ α

    _▷_ : {P B C D : CAT Γ} {f g : MAP C D}
      → MAP P (f = g) → (k : MAP B C) → MAP P ((f ∘ k) = (g ∘ k))
    α ▷ k = preWhisker k ∘ α
```

## Chosen product data

The chosen product operations and projection identifications are primitive.
Their universal-property law belongs to Section02.Products.

```agda
module _ {Γ : Context} where
  infixl 20 _×_

  postulate
    _×_ : CAT Γ → CAT Γ → CAT Γ
    pr₁ : {C D : CAT Γ} → MAP (C × D) C
    pr₂ : {C D : CAT Γ} → MAP (C × D) D
    pair : {P C D : CAT Γ} → MAP P C → MAP P D → MAP P (C × D)
    pair-β₁ : {P C D : CAT Γ} (f : MAP P C) (g : MAP P D)
      → (pr₁ ∘ pair f g) =₁ f
    pair-β₂ : {P C D : CAT Γ} (f : MAP P C) (g : MAP P D)
      → (pr₂ ∘ pair f g) =₁ g
    product-isAn : {C D : CAT Γ} → isAn C → isAn D → isAn (C × D)
```