Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some extensions of the fundamental theorem of identity types #1243

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
bc13587
unbased extended fundamental theorem of identity types
fredrik-bakke Jan 27, 2025
7224734
some prose
fredrik-bakke Jan 27, 2025
e6d9ec6
Merge branch 'master' into unbased-extended-fundamental-thm-id
fredrik-bakke Jan 27, 2025
8cfd888
revert two symbols
fredrik-bakke Jan 27, 2025
92b0358
fundamental theorem of identity types for structures and subuniverses
fredrik-bakke Jan 27, 2025
8844fcb
mild explanation
fredrik-bakke Jan 27, 2025
a58c9cc
the unbased extended fundamental theorem proper
fredrik-bakke Jan 28, 2025
82bbf22
explanation extended fundamental theorem
fredrik-bakke Jan 28, 2025
3b7c9dc
universal property of identity types follows from injectivity of `equ…
fredrik-bakke Jan 28, 2025
612d84c
simplify proof unbased extended fundamental theorem
fredrik-bakke Jan 28, 2025
1108291
edits
fredrik-bakke Jan 28, 2025
f37ef88
the strong preunivalence axiom
fredrik-bakke Jan 28, 2025
231f43b
a choice of word
fredrik-bakke Jan 28, 2025
b50fde7
rename to "structured equality duality"
fredrik-bakke Jan 28, 2025
77a73a4
Merge branch 'master' into unbased-extended-fundamental-thm-id
fredrik-bakke Jan 28, 2025
0744c3f
citations and a historical correction
fredrik-bakke Jan 28, 2025
c2f255e
strengthen definition of preunivalent category
fredrik-bakke Jan 28, 2025
71a526a
self-review
fredrik-bakke Jan 28, 2025
d88be88
remove redundant text
fredrik-bakke Jan 28, 2025
0f950e2
fix a sentence
fredrik-bakke Jan 28, 2025
13d1eaf
review
fredrik-bakke Jan 28, 2025
70929fd
edits
fredrik-bakke Jan 28, 2025
2e284ce
more edits
fredrik-bakke Jan 29, 2025
d705788
fix link
fredrik-bakke Jan 29, 2025
daee207
transfer along equivalences
fredrik-bakke Jan 29, 2025
7610b17
Merge branch 'master' into unbased-extended-fundamental-thm-id
fredrik-bakke Feb 8, 2025
dee9f2c
edits
fredrik-bakke Jan 30, 2025
61b1733
restore preunivalent categories :(
fredrik-bakke Feb 8, 2025
ee1c3f2
crude justification for duality
fredrik-bakke Feb 9, 2025
1b297c1
Merge branch 'master' into unbased-extended-fundamental-thm-id
fredrik-bakke Feb 9, 2025
6e4f45a
Merge branch 'master' into unbased-extended-fundamental-thm-id
EgbertRijke Feb 10, 2025
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
10 changes: 10 additions & 0 deletions references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,16 @@ @article{Esc08
primaryclass = {cs.LO}
}

@online{Esc17YetAnother,
title = {Yet another characterization of univalence},
author = {Escardó, Martín Hötzel},
date = {2017-11-18},
year = {2017},
month = {11},
url = {https://groups.google.com/g/homotopytypetheory/c/FfiZj1vrkmQ/m/GJETdy0AAgAJ},
howpublished = {{{Google}} groups forum discussion}
}

@online{Esc19DefinitionsEquivalence,
title = {Definitions of Equivalence Satisfying Judgmental/Strict Groupoid Laws?},
author = {Escardó, Martín Hötzel},
Expand Down
2 changes: 2 additions & 0 deletions src/category-theory.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ open import category-theory.opposite-categories public
open import category-theory.opposite-large-precategories public
open import category-theory.opposite-precategories public
open import category-theory.opposite-preunivalent-categories public
open import category-theory.opposite-strongly-preunivalent-categories public
open import category-theory.pointed-endofunctors-categories public
open import category-theory.pointed-endofunctors-precategories public
open import category-theory.precategories public
Expand Down Expand Up @@ -160,6 +161,7 @@ open import category-theory.simplex-category public
open import category-theory.slice-precategories public
open import category-theory.split-essentially-surjective-functors-precategories public
open import category-theory.strict-categories public
open import category-theory.strongly-preunivalent-categories public
open import category-theory.structure-equivalences-set-magmoids public
open import category-theory.subcategories public
open import category-theory.subprecategories public
Expand Down
35 changes: 22 additions & 13 deletions src/category-theory/categories.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ open import category-theory.isomorphisms-in-precategories
open import category-theory.nonunital-precategories
open import category-theory.precategories
open import category-theory.preunivalent-categories
open import category-theory.strongly-preunivalent-categories

open import foundation.1-types
open import foundation.cartesian-product-types
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.fundamental-theorem-of-identity-types
open import foundation.identity-types
open import foundation.logical-equivalences
open import foundation.propositions
Expand Down Expand Up @@ -161,21 +163,24 @@ module _
nonunital-precategory-Precategory (precategory-Category C)
```

### The underlying preunivalent category of a category
### The underlying strongly preunivalent category of a category

```agda
module _
{l1 l2 : Level} (C : Category l1 l2)
where

is-preunivalent-category-Category :
is-preunivalent-Precategory (precategory-Category C)
is-preunivalent-category-Category x y =
is-emb-is-equiv (is-category-Category C x y)

preunivalent-category-Category : Preunivalent-Category l1 l2
pr1 preunivalent-category-Category = precategory-Category C
pr2 preunivalent-category-Category = is-preunivalent-category-Category
is-strongly-preunivalent-category-Category :
is-strongly-preunivalent-Precategory (precategory-Category C)
is-strongly-preunivalent-category-Category x =
is-set-is-contr
( fundamental-theorem-id'
( iso-eq-Precategory (precategory-Category C) x)
( is-category-Category C x))
fredrik-bakke marked this conversation as resolved.
Show resolved Hide resolved

strongly-preunivalent-category-Category : Strongly-Preunivalent-Category l1 l2
strongly-preunivalent-category-Category =
( precategory-Category C , is-strongly-preunivalent-category-Category)
```

### The total hom-type of a category
Expand Down Expand Up @@ -237,11 +242,13 @@ module _

is-1-type-obj-Category : is-1-type (obj-Category C)
is-1-type-obj-Category =
is-1-type-obj-Preunivalent-Category (preunivalent-category-Category C)
is-1-type-obj-Strongly-Preunivalent-Category
( strongly-preunivalent-category-Category C)

obj-1-type-Category : 1-Type l1
obj-1-type-Category =
obj-1-type-Preunivalent-Category (preunivalent-category-Category C)
obj-1-type-Strongly-Preunivalent-Category
( strongly-preunivalent-category-Category C)
```

### The total hom-type of a category is a 1-type
Expand All @@ -254,11 +261,13 @@ module _
is-1-type-total-hom-Category :
is-1-type (total-hom-Category C)
is-1-type-total-hom-Category =
is-1-type-total-hom-Preunivalent-Category (preunivalent-category-Category C)
is-1-type-total-hom-Strongly-Preunivalent-Category
( strongly-preunivalent-category-Category C)

total-hom-1-type-Category : 1-Type (l1 ⊔ l2)
total-hom-1-type-Category =
total-hom-1-type-Preunivalent-Category (preunivalent-category-Category C)
total-hom-1-type-Strongly-Preunivalent-Category
( strongly-preunivalent-category-Category C)
```

### A preunivalent category is a category if and only if `iso-eq` is surjective
Expand Down
42 changes: 24 additions & 18 deletions src/category-theory/gaunt-categories.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,17 @@ open import category-theory.isomorphisms-in-categories
open import category-theory.isomorphisms-in-precategories
open import category-theory.nonunital-precategories
open import category-theory.precategories
open import category-theory.preunivalent-categories
open import category-theory.rigid-objects-categories
open import category-theory.strict-categories
open import category-theory.strongly-preunivalent-categories

open import foundation.cartesian-product-types
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.propositions
open import foundation.sets
open import foundation.strictly-involutive-identity-types
open import foundation.surjective-maps
open import foundation.universe-levels
```

Expand Down Expand Up @@ -55,7 +56,7 @@ diagram relating the different notions of "category":
\ /
\ /
∨ ∨
Preunivalent categories
Strongly Preunivalent categories
|
|
Expand Down Expand Up @@ -231,13 +232,13 @@ precategory-Gaunt-Category :
precategory-Gaunt-Category C = precategory-Category (category-Gaunt-Category C)
```

### The underlying preunivalent category of a gaunt category
### The underlying strongly preunivalent category of a gaunt category

```agda
preunivalent-category-Gaunt-Category :
{l1 l2 : Level} → Gaunt-Category l1 l2 → Preunivalent-Category l1 l2
preunivalent-category-Gaunt-Category C =
preunivalent-category-Category (category-Gaunt-Category C)
strongly-preunivalent-category-Gaunt-Category :
{l1 l2 : Level} → Gaunt-Category l1 l2 → Strongly-Preunivalent-Category l1 l2
strongly-preunivalent-category-Gaunt-Category C =
strongly-preunivalent-category-Category (category-Gaunt-Category C)
```

### The total hom-type of a gaunt category
Expand Down Expand Up @@ -280,12 +281,13 @@ module _
### Preunivalent categories whose isomorphism-sets are propositions are strict categories

```agda
is-strict-category-is-prop-iso-Preunivalent-Category :
{l1 l2 : Level} (C : Preunivalent-Category l1 l2) →
is-prop-iso-Precategory (precategory-Preunivalent-Category C) →
is-strict-category-Preunivalent-Category C
is-strict-category-is-prop-iso-Preunivalent-Category C is-prop-iso-C x y =
is-prop-emb (emb-iso-eq-Preunivalent-Category C) (is-prop-iso-C x y)
is-strict-category-is-prop-iso-Strongly-Preunivalent-Category :
{l1 l2 : Level} (C : Strongly-Preunivalent-Category l1 l2) →
is-prop-iso-Precategory (precategory-Strongly-Preunivalent-Category C) →
is-strict-category-Strongly-Preunivalent-Category C
is-strict-category-is-prop-iso-Strongly-Preunivalent-Category
C is-prop-iso-C x y =
is-prop-emb (emb-iso-eq-Strongly-Preunivalent-Category C) (is-prop-iso-C x y)
```

### Gaunt categories are strict
Expand All @@ -295,8 +297,8 @@ is-strict-category-is-gaunt-Category :
{l1 l2 : Level} (C : Category l1 l2) →
is-gaunt-Category C → is-strict-category-Category C
is-strict-category-is-gaunt-Category C =
is-strict-category-is-prop-iso-Preunivalent-Category
( preunivalent-category-Category C)
is-strict-category-is-prop-iso-Strongly-Preunivalent-Category
( strongly-preunivalent-category-Category C)
```

### A strict category is gaunt if `iso-eq` is surjective
Expand All @@ -309,9 +311,13 @@ module _
is-category-is-surjective-iso-eq-Strict-Category :
is-surjective-iso-eq-Precategory (precategory-Strict-Category C) →
is-category-Precategory (precategory-Strict-Category C)
is-category-is-surjective-iso-eq-Strict-Category =
is-category-is-surjective-iso-eq-Preunivalent-Category
( preunivalent-category-Strict-Category C)
is-category-is-surjective-iso-eq-Strict-Category H x y =
is-equiv-is-emb-is-surjective
( H x y)
( is-preunivalent-Strongly-Preunivalent-Category
( strongly-preunivalent-category-Strict-Category C)
( x)
( y))

is-prop-iso-is-category-Strict-Category :
is-category-Precategory (precategory-Strict-Category C) →
Expand Down
16 changes: 8 additions & 8 deletions src/category-theory/initial-category.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ open import category-theory.functors-precategories
open import category-theory.gaunt-categories
open import category-theory.indiscrete-precategories
open import category-theory.precategories
open import category-theory.preunivalent-categories
open import category-theory.strict-categories
open import category-theory.strongly-preunivalent-categories

open import foundation.contractible-types
open import foundation.dependent-pair-types
Expand Down Expand Up @@ -104,16 +104,16 @@ pr1 initial-Category = initial-Precategory
pr2 initial-Category = is-category-initial-Category
```

### The initial preunivalent category
### The initial strongly preunivalent category

```agda
is-preunivalent-initial-Category :
is-preunivalent-Precategory initial-Precategory
is-preunivalent-initial-Category ()
is-strongly-preunivalent-initial-Category :
is-strongly-preunivalent-Precategory initial-Precategory
is-strongly-preunivalent-initial-Category ()

initial-Preunivalent-Category : Preunivalent-Category lzero lzero
initial-Preunivalent-Category =
preunivalent-category-Category initial-Category
-- initial-Preunivalent-Category : Preunivalent-Category lzero lzero
-- initial-Preunivalent-Category =
-- strongly-preunivalent-category-Category initial-Category
```

### The initial strict category
Expand Down
Loading