Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
8e94a76
defn: Comonoid
jajaperson Jan 3, 2026
38a605c
fixup: Indentation
jajaperson Jan 6, 2026
302da96
fixup: Actually use import
jajaperson Jan 6, 2026
2e41aa4
chore: Make presentation of duality functors more consistent
jajaperson Jan 8, 2026
656c282
defn: `^op^op→` isomorphism of precategories
jajaperson Jan 8, 2026
b1fbacc
defn: Total functor of displayed functor
jajaperson Jan 11, 2026
de884c7
chore: Move `Cat.Displayed.Adjoint` to `Cat.Displayed.Functor.Adjoint`
jajaperson Jan 11, 2026
728593a
defn: Whiskering of natural transformations
jajaperson Jan 11, 2026
177084f
defn: Total NT of displayed NT
jajaperson Jan 12, 2026
c491394
defn: Total of `Id'` and composite functors
jajaperson Jan 12, 2026
4c822ec
defn: Total adjunction of displayed adjunction
jajaperson Jan 13, 2026
4aa4213
defn: Σ-category of displayed categories
jajaperson Jan 13, 2026
db17a6a
defn: Some properties of displayed functors
jajaperson Jan 13, 2026
b7a539c
chore: `id-comm[]` → `id-comm-sym[]`
jajaperson Jan 16, 2026
5314160
fixup: Generalize some instances
jajaperson Jan 16, 2026
677f5af
chore: Steal `Nat'-path` from @mmcqd
jajaperson Jan 16, 2026
d252bd4
fixup: Typos
jajaperson Jan 16, 2026
a56e810
defn: Displayed category of displayed functors
jajaperson Jan 16, 2026
634f554
fixup: Remove weird auto quirks
jajaperson Jan 17, 2026
a0a0db1
prose: Naturality as a property of families of morphisms
jajaperson Feb 24, 2026
4d7de96
prose: Explain J-induction for inverse-unique
jajaperson Feb 24, 2026
4aad573
defn: Action of displayed functors on displayed isomorphisms
jajaperson Feb 24, 2026
f986f58
prose: Uncomment and describe some properties of natural isomorphisms
jajaperson Feb 24, 2026
c76f787
prose: Motivate displayed Σ-category
jajaperson Feb 24, 2026
136e15a
defn: Displayed essential surjectivity on objects
jajaperson Feb 24, 2026
b5c67b6
fixup: Export `adj-level'` utility
jajaperson Feb 24, 2026
f330d1a
prose: Tweak notation
jajaperson Feb 24, 2026
9ba3e84
defn: Functor from opposite monoids to comonoids
jajaperson Feb 24, 2026
505aedb
fixup: Build errors
jajaperson Feb 24, 2026
ec7efc3
chore: bump nixpkgs
ncfavier Oct 30, 2025
ff3608f
chore: remove `Recallᵢ`
ncfavier Jan 15, 2026
724ce1c
chore: bump agda
plt-amy Jan 15, 2026
167dba0
fixup: wait for overloading in nat solver goals
plt-amy Jan 20, 2026
e6e99d5
shake: bring cabal file up to date
ncfavier Jan 24, 2026
24d74c2
nix: use callCabal2nix for building the shakefile
ncfavier Jan 24, 2026
931f101
nix: bump GHC to 9.10
ncfavier Jan 25, 2026
dbeb5f0
chore: remove check.sh
ncfavier Jan 24, 2026
36635dd
chore: update .gitignore
ncfavier Jan 24, 2026
d1e7689
ci: include agda
ncfavier Jan 25, 2026
2f7815a
nix: move shells to shell.nix
ncfavier Jan 25, 2026
7a39b18
shake: restrict pandoc version
ncfavier Jan 26, 2026
c6a7a5b
chore: add cabal.project.local to .gitignore
ncfavier Jan 26, 2026
81b5914
chore: bump agda
plt-amy Jan 28, 2026
009e3b2
Fix inconsistent variable names between statement and proof
juliapath Feb 8, 2026
2b3e9ff
Fix typo
juliapath Feb 14, 2026
e27cde0
chore: faster eqn. reasoning in Displayed
plt-amy Jan 28, 2026
5ad79ce
fixup
plt-amy Jan 28, 2026
1152f42
fixup
plt-amy Jan 28, 2026
85fb455
defn: Utilities for handling displayed natural isomorphisms
jajaperson Mar 3, 2026
4138400
fixup: Nitpick
jajaperson Mar 9, 2026
4b4b05f
prose: Unhide and explain some code
jajaperson Mar 9, 2026
9f9914b
fixup: Botched rebase
jajaperson Mar 10, 2026
8b48936
Merge branch 'main' into monoidal-internalization
jajaperson Mar 10, 2026
598d60b
def: Displayed equivalence from ff and split-eso
jajaperson Apr 18, 2026
e4dfa11
Merge branch 'main' into monoidal-internalization
jajaperson Apr 18, 2026
b9375ea
def: Isomorphism of displayed cats gives equivalence
jajaperson Apr 19, 2026
d1a5c5c
fixup: Cleanup and tweak notation
jajaperson Apr 20, 2026
0d587b9
fixup: Typo
jajaperson Apr 20, 2026
39e65d1
fixup: Typo
jajaperson Apr 20, 2026
cbdb3e8
defn: Total equivalence
jajaperson Apr 21, 2026
bd8de89
fixup: Extract ff[ff] lemma to Cat.Displayed.Functor.Properties
jajaperson Apr 21, 2026
c0844d5
defn: Duality of monoids and comonoids
jajaperson Apr 22, 2026
517d4d2
defn: Total isomorphism of displayed categories
jajaperson Apr 22, 2026
8847e3a
chore: Use isomorphism of displayed precategories to make paths
jajaperson Apr 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 29 additions & 19 deletions src/1Lab/Equiv.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,29 @@ equiv→zag {f = f} eqv b =

</details>

We also show that the inverse of an equivalence is itself an
equivalence:

```agda
inverse-is-equiv : {f : A → B} (eqv : is-equiv f) → is-equiv (equiv→inverse eqv)
inverse-is-equiv {f = f} eqv .is-eqv x .centre = record
{ fst = f x ; snd = equiv→unit eqv x }
inverse-is-equiv {A = A} {B = B} {f = f} eqv .is-eqv x .paths (y , p) = q where
g = equiv→inverse eqv
η = equiv→unit eqv
ε = equiv→counit eqv
zag = equiv→zag eqv

q : (f x , η x) ≡ (y , p)
q i .fst = (ap f (sym p) ∙ ε y) i
q i .snd j = hcomp (∂ i ∨ ∂ j) λ where
k (k = i0) → zag y j i
k (i = i0) → η (p k) (j ∧ k)
k (i = i1) → p (k ∧ j)
k (j = i0) → g (∙-filler' (ap f (sym p)) (ε y) k i)
k (j = i1) → η (p k) (i ∨ k)
```

Finally, it'll be convenient for us to package some of the theorems
above into a proof that every equivalence is an isomorphism:

Expand Down Expand Up @@ -718,26 +741,10 @@ Iso→Equiv : Iso A B → A ≃ B
Iso→Equiv (f , is-iso) = record { fst = f ; snd = is-iso→is-equiv is-iso }
```

<!--
```agda
inverse-is-equiv : {f : A → B} (eqv : is-equiv f) → is-equiv (equiv→inverse eqv)
inverse-is-equiv {f = f} eqv .is-eqv x .centre = record
{ fst = f x ; snd = equiv→unit eqv x }
inverse-is-equiv {A = A} {B = B} {f = f} eqv .is-eqv x .paths (y , p) = q where
g = equiv→inverse eqv
η = equiv→unit eqv
ε = equiv→counit eqv
zag = equiv→zag eqv

q : (f x , η x) ≡ (y , p)
q i .fst = (ap f (sym p) ∙ ε y) i
q i .snd j = hcomp (∂ i ∨ ∂ j) λ where
k (k = i0) → zag y j i
k (i = i0) → η (p k) (j ∧ k)
k (i = i1) → p (k ∧ j)
k (j = i0) → g (∙-filler' (ap f (sym p)) (ε y) k i)
k (j = i1) → η (p k) (i ∨ k)
Finally, we provide two helper modules packaging useful data associated
to equivalences and isomorphisms.

```agda
module Equiv {ℓ ℓ'} {A : Type ℓ} {B : Type ℓ'} (f : A ≃ B) where
to = f .fst
from = equiv→inverse (f .snd)
Expand Down Expand Up @@ -781,7 +788,10 @@ module Iso {ℓ ℓ'} {A : Type ℓ} {B : Type ℓ'} ((f , f-iso) : Iso A B) whe

inverse : Iso B A
inverse = from , inverse-iso
```

<!--
```agda
injectiveP
: ∀ {ℓ ℓ'} {A : I → Type ℓ} {B : I → Type ℓ'} (f : ∀ i → Iso (A i) (B i)) {x y}
→ PathP (λ i → B i) (f i0 .fst x) (f i1 .fst y)
Expand Down
2 changes: 1 addition & 1 deletion src/1Lab/Function/Embedding.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ private variable
```
-->

# Embeddings {defines="embedding"}
# Embeddings {defines="embedding injective"}

One of the most important observations leading to the development of
categorical set theory is that injective maps _into_ a set $S$
Expand Down
5 changes: 4 additions & 1 deletion src/1Lab/Path.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -1279,13 +1279,16 @@ partial element.
~~~

Diagramatically, we'll depict extensions by drawing the relevant partial
element in red, and the total element in black. In Agda, we write
element in red, and the total element in black.[^dark] In Agda, we write
extension types using the type former `_[_↦_]`{.Agda}, which is written
mixfix as `A [ φ ↦ p ]`. We can formalise the red-black extensibility
diagram above by defining the partial element `left-true`{.Agda}, and
giving `refl`{.Agda} to `inS`{.Agda}, the constructor for
`_[_↦_]`{.Agda}.

[^dark]:
Or white, if you are using dark mode.

```agda
private
left-true : (i : I) → Partial (~ i) Bool
Expand Down
30 changes: 13 additions & 17 deletions src/Cat/Base.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,20 +181,10 @@ opposite precategory $C\op$. What we have to show is - by the type of
\circ_{op} h$. This computes into $(h \circ g) \circ f = h \circ (g
\circ f)$ - which is exactly what `sym (assoc C h g f)` shows!

```agda
C^op^op≡C : ∀ {o ℓ} {C : Precategory o ℓ} → C ^op ^op ≡ C
C^op^op≡C {C = C} i = precat i where
open Precategory
precat : C ^op ^op ≡ C
precat i .Ob = C .Ob
precat i .Hom = C .Hom
precat i .Hom-set = C .Hom-set
precat i .id = C .id
precat i ._∘_ = C ._∘_
precat i .idr = C .idr
precat i .idl = C .idl
precat i .assoc = C .assoc
```
For `_^op`{.Agda} to form a good basis for duality, it is important that
the operation be _involutive_. This, and other aspects of duality of
categories, is shown under [[duality of precategories]].


## The precategory of Sets {defines="category-of-sets"}

Expand Down Expand Up @@ -478,10 +468,10 @@ Natural transformations also dualise. The opposite of $\eta : F
}
```

<!--
<details>
<summary>We can also define `is-natural-transformation`{.Agda} as a
property of families of morphisms.</summary>
```agda
{-# INLINE NT #-}

is-natural-transformation
: ∀ {o ℓ o' ℓ'} {C : Precategory o ℓ} {D : Precategory o' ℓ'}
→ (F G : Functor C D)
Expand All @@ -491,6 +481,12 @@ is-natural-transformation {C = C} {D = D} F G η =
∀ x y (f : C .Precategory.Hom x y) → η y D.∘ F .F₁ f ≡ G .F₁ f D.∘ η x
where module D = Precategory D
open Functor
```
</details>

<!--
```agda
{-# INLINE NT #-}

infixr 30 _F∘_
infix 20 _=>_
Expand Down
12 changes: 6 additions & 6 deletions src/Cat/Bi/Instances/Displayed.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ as in the nondisplayed case.
module C' {x} = Cat (Fibre C x)

ni : make-natural-iso {D = Vf _ _} _ _
ni .eta _ = record { η' = λ x' → D.id' ; is-natural' = λ x y f → D.to-pathp[] D.id-comm[] }
ni .inv _ = record { η' = λ x' → D.id' ; is-natural' = λ x y f → D.to-pathp[] D.id-comm[] }
ni .eta _ = record { η' = λ x' → D.id' ; is-natural' = λ x y f → D.to-pathp[] D.id-comm-sym[] }
ni .inv _ = record { η' = λ x' → D.id' ; is-natural' = λ x y f → D.to-pathp[] D.id-comm-sym[] }
ni .eta∘inv _ = ext λ _ → D'.idl _
ni .inv∘eta _ = ext λ _ → D'.idl _
ni .natural x y f = ext λ _ →
Expand All @@ -140,8 +140,8 @@ the structural isomorphisms being identities.
Disp[] .unitor-l {B = B} = to-natural-iso ni where
module B = Disp B
ni : make-natural-iso {D = Vf _ _} _ _
ni .eta _ = record { η' = λ x' → B.id' ; is-natural' = λ x y f → B.to-pathp[] B.id-comm[] }
ni .inv _ = record { η' = λ x' → B.id' ; is-natural' = λ x y f → B.to-pathp[] B.id-comm[] }
ni .eta _ = record { η' = λ x' → B.id' ; is-natural' = λ x y f → B.to-pathp[] B.id-comm-sym[] }
ni .inv _ = record { η' = λ x' → B.id' ; is-natural' = λ x y f → B.to-pathp[] B.id-comm-sym[] }
ni .eta∘inv _ = ext λ _ → Cat.idl (Fibre B _) _
ni .inv∘eta _ = ext λ _ → Cat.idl (Fibre B _) _
ni .natural x y f = ext λ _ → Cat.elimr (Fibre B _) refl ∙ Cat.id-comm (Fibre B _)
Expand All @@ -150,8 +150,8 @@ the structural isomorphisms being identities.
module B' {x} = Cat (Fibre B x) using (_∘_ ; idl ; elimr)

ni : make-natural-iso {D = Vf _ _} _ _
ni .eta _ = record { η' = λ x' → B.id' ; is-natural' = λ x y f → B.to-pathp[] B.id-comm[] }
ni .inv _ = record { η' = λ x' → B.id' ; is-natural' = λ x y f → B.to-pathp[] B.id-comm[] }
ni .eta _ = record { η' = λ x' → B.id' ; is-natural' = λ x y f → B.to-pathp[] B.id-comm-sym[] }
ni .inv _ = record { η' = λ x' → B.id' ; is-natural' = λ x y f → B.to-pathp[] B.id-comm-sym[] }
ni .eta∘inv _ = ext λ _ → B'.idl _
ni .inv∘eta _ = ext λ _ → B'.idl _
ni .natural x y f = ext λ _ → B'.elimr refl ∙ ap₂ B'._∘_ (y .F-id') refl
Expand Down
4 changes: 2 additions & 2 deletions src/Cat/Displayed/Base.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ open import Cat.Base
module Cat.Displayed.Base where
```

# Displayed categories {defines=displayed-category}
# Displayed categories {defines="displayed-category base-category displayed-precategory"}

The core idea behind displayed categories is that we want to capture the
idea of being able to place extra structure over some sort of "base"
category. For instance, we can think of categories of algebraic objects
(monoids, groups, rings, etc) as being extra structure placed atop the
objects of Set, and extra conditions placed atop the morphisms of Set.

We start by defining a displayed category over a base category $\cB$
We start by defining a displayed category over a **base category** $\cB$
which will act as the category we add the extra structure to.

```agda
Expand Down
3 changes: 2 additions & 1 deletion src/Cat/Displayed/Cartesian/Discrete.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ description: |
---
<!--
```agda
open import Cat.Displayed.Functor.Equivalence
open import Cat.Displayed.Instances.Elements
open import Cat.Displayed.Cartesian
open import Cat.Displayed.Functor
Expand Down Expand Up @@ -432,7 +433,7 @@ is immediate.

```agda
∫≡dx : ∫ B (discrete→presheaf P p-disc) ≡ P
∫≡dx = Displayed-path pieces (λ _ → id-equiv) (is-iso→is-equiv p) where
∫≡dx = Displayed-path pieces $ iso[] (is-iso→is-equiv p) (λ _ → id-equiv) where
p : ∀ {a b} {f : B.Hom a b} {a'} {b'} → is-iso (pieces .F₁' {f = f} {a'} {b'})
p .from f = ap fst $ cart-lift _ _ .paths (_ , f)
p .rinv p = from-pathp (ap snd (cart-lift _ _ .paths _))
Expand Down
1 change: 0 additions & 1 deletion src/Cat/Displayed/Cocartesian/Discrete.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ open import Cat.Displayed.Functor
open import Cat.Instances.Functor
open import Cat.Displayed.Fibre
open import Cat.Displayed.Base
open import Cat.Displayed.Path
open import Cat.Prelude

import Cat.Displayed.Reasoning
Expand Down
Loading
Loading