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

Rename Axiom L to Preunivalence #866

Merged
merged 97 commits into from
Oct 20, 2023
Merged
Show file tree
Hide file tree
Changes from 94 commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
c27e3ea
text subtypes
fredrik-bakke Oct 17, 2023
e627749
precategory and embedding of subcategory
fredrik-bakke Oct 18, 2023
6a3d946
full maps/functors of precategories
fredrik-bakke Oct 18, 2023
a5dadca
fully faithful maps of precategories
fredrik-bakke Oct 18, 2023
dcfc5d4
fully faithful functors of precategories
fredrik-bakke Oct 18, 2023
c931841
fix definition of embeddings of precategories
fredrik-bakke Oct 18, 2023
64eb639
preunivalent categories
fredrik-bakke Oct 18, 2023
6e71dba
`is-emb-htpy-emb`
fredrik-bakke Oct 18, 2023
53b6500
wip subcategories are preunivalent
fredrik-bakke Oct 18, 2023
8438206
`is-contr-total-iso-Category`
fredrik-bakke Oct 18, 2023
e1c119a
remove repeat theorems `equivalence-induction`
fredrik-bakke Oct 18, 2023
0c762b5
isomorphism induction
fredrik-bakke Oct 18, 2023
eb4e0b5
singleton induction for propositions
fredrik-bakke Oct 18, 2023
57bba3c
`contains-is-iso-Subcategory`
fredrik-bakke Oct 18, 2023
9292127
remove unfinished work
fredrik-bakke Oct 18, 2023
be053af
full subprecategories
fredrik-bakke Oct 19, 2023
d11c8a4
full subcategories
fredrik-bakke Oct 19, 2023
7a0895e
remove unused imports
fredrik-bakke Oct 19, 2023
d7b00e7
remove unused imports
fredrik-bakke Oct 19, 2023
4df3184
Merge branch 'master' into subcategories
fredrik-bakke Oct 19, 2023
f571a69
Merge branch 'master' into subcategories
fredrik-bakke Oct 19, 2023
fba849f
Merge branch 'master' into subcategories
fredrik-bakke Oct 19, 2023
c81a9c5
subsingleton induction
fredrik-bakke Oct 19, 2023
2263aa1
Merge branch 'master' into subcategories
fredrik-bakke Oct 19, 2023
14c441e
explanation (sub)singleton induction
fredrik-bakke Oct 19, 2023
6a317e9
consistent variable naming
fredrik-bakke Oct 19, 2023
87f4a92
use `Full-Subprecategory` definitions
fredrik-bakke Oct 19, 2023
d92715b
nonunital precategories
fredrik-bakke Oct 19, 2023
cda7146
associativity is a property
fredrik-bakke Oct 19, 2023
b427092
comment
fredrik-bakke Oct 19, 2023
bb68640
underlying categorical structures
fredrik-bakke Oct 19, 2023
841c218
Update src/category-theory/full-subcategories.lagda.md
fredrik-bakke Oct 19, 2023
0874bd2
Update src/category-theory/full-subcategories.lagda.md
fredrik-bakke Oct 19, 2023
15bcd17
Update src/category-theory/full-subprecategories.lagda.md
fredrik-bakke Oct 19, 2023
77bd6b1
Update src/category-theory/full-subprecategories.lagda.md
fredrik-bakke Oct 19, 2023
d558b8a
Update src/category-theory/full-subcategories.lagda.md
fredrik-bakke Oct 19, 2023
23a157f
Update src/category-theory/full-subprecategories.lagda.md
fredrik-bakke Oct 19, 2023
d95ff98
Update src/category-theory/fully-faithful-functors-precategories.lagd…
fredrik-bakke Oct 19, 2023
33b8b1a
Update src/category-theory/full-subprecategories.lagda.md
fredrik-bakke Oct 19, 2023
429c904
Update src/category-theory/full-subcategories.lagda.md
fredrik-bakke Oct 19, 2023
e258229
"underlying precategory" and move univalence proofs for full subcats
fredrik-bakke Oct 19, 2023
9d2212b
hom-[sets]
fredrik-bakke Oct 19, 2023
c67d9ca
Fully faithful maps are the same as full and faithful maps
fredrik-bakke Oct 19, 2023
08f411a
intro `A`
fredrik-bakke Oct 19, 2023
da6f65e
a typo
fredrik-bakke Oct 19, 2023
7c0416b
Update src/category-theory/preunivalent-categories.lagda.md
fredrik-bakke Oct 19, 2023
5b3f1dd
Update src/category-theory/subcategories.lagda.md
fredrik-bakke Oct 19, 2023
e726233
Update src/category-theory/preunivalent-categories.lagda.md
fredrik-bakke Oct 19, 2023
9aa2459
Update src/category-theory/preunivalent-categories.lagda.md
fredrik-bakke Oct 19, 2023
2f68fb7
Update src/foundation/symmetric-difference.lagda.md
fredrik-bakke Oct 19, 2023
f814ed5
Update src/foundation/symmetric-difference.lagda.md
fredrik-bakke Oct 19, 2023
08805c3
Update src/foundation/complements-subtypes.lagda.md
fredrik-bakke Oct 19, 2023
e0c1912
contains-is-iso-is-category-Subprecategory
fredrik-bakke Oct 19, 2023
a220ff5
fixes subsingleton induction
fredrik-bakke Oct 19, 2023
7e5f58f
revert `is-identity-system-is-contr-total-equiv`
fredrik-bakke Oct 19, 2023
80ee49b
revert `is-identity-system-is-contr-total-equiv`
fredrik-bakke Oct 19, 2023
f2af23d
element instead of section
fredrik-bakke Oct 19, 2023
a6f61ca
refactor isomorphism induction
fredrik-bakke Oct 19, 2023
42e3015
refactor `equivalence-inducton`
fredrik-bakke Oct 19, 2023
9dec60c
use `is-torsorial`
fredrik-bakke Oct 19, 2023
e09b32c
pre-commit
fredrik-bakke Oct 19, 2023
81d435b
Merge branch 'subcategories' into semicategories
fredrik-bakke Oct 20, 2023
b4ceeb6
rename "axiom L" to "preunivalence axiom" and refactor univalence
fredrik-bakke Oct 20, 2023
e5c649f
nonunital precategories
fredrik-bakke Oct 19, 2023
16bb508
associativity is a property
fredrik-bakke Oct 19, 2023
ad3dba7
comment
fredrik-bakke Oct 19, 2023
bbf3f10
underlying categorical structures
fredrik-bakke Oct 19, 2023
3b24701
factor out file on composition operations
fredrik-bakke Oct 20, 2023
858c2c6
fix imports
fredrik-bakke Oct 20, 2023
cf78d6c
Merge branch 'semicategories' into preunivalence
fredrik-bakke Oct 20, 2023
0593b02
define strict categories
fredrik-bakke Oct 20, 2023
61f6a0c
Small subcategories (#861)
fredrik-bakke Oct 20, 2023
0555a91
Equalities induce
fredrik-bakke Oct 20, 2023
c1da305
associative composition _structure_ -> _operation_
fredrik-bakke Oct 20, 2023
4b5f36e
no more homo(morphisms)
fredrik-bakke Oct 20, 2023
b91179f
some headers categories and precategories
fredrik-bakke Oct 20, 2023
37cb168
The predicate on a composition operation on a binary family of sets o…
fredrik-bakke Oct 20, 2023
1b9848d
`composition-operation-(binary-family)-Set`
fredrik-bakke Oct 20, 2023
4c68f5a
text and references `composition-operations-on-binary-families-of-sets`
fredrik-bakke Oct 20, 2023
9c4d597
remove unused imports
fredrik-bakke Oct 20, 2023
256f624
self-review
fredrik-bakke Oct 20, 2023
4bfa154
Update src/category-theory/categories.lagda.md
fredrik-bakke Oct 20, 2023
1f8eac6
review
fredrik-bakke Oct 20, 2023
5ff1434
**Proof:**
fredrik-bakke Oct 20, 2023
abf8e22
Update src/category-theory/nonunital-precategories.lagda.md
fredrik-bakke Oct 20, 2023
05df0f3
Update src/category-theory/nonunital-precategories.lagda.md
fredrik-bakke Oct 20, 2023
7678001
pre-commit
fredrik-bakke Oct 20, 2023
9cd8155
Small subcategories (#861)
fredrik-bakke Oct 20, 2023
122b997
Nonunital precategories (#864)
fredrik-bakke Oct 20, 2023
5e85bc5
Merge branch 'master' into preunivalence
fredrik-bakke Oct 20, 2023
cb1e84b
remove wrong stuff
fredrik-bakke Oct 20, 2023
d400430
preunivalence, not axiom L
fredrik-bakke Oct 20, 2023
108643b
`L`
fredrik-bakke Oct 20, 2023
70eecca
Update src/foundation/universal-property-identity-types.lagda.md
fredrik-bakke Oct 20, 2023
09837f5
rename axioms
fredrik-bakke Oct 20, 2023
a6dfec0
oops
fredrik-bakke Oct 20, 2023
73777bb
Merge branch 'master' into preunivalence
fredrik-bakke Oct 20, 2023
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
2 changes: 1 addition & 1 deletion src/category-theory/categories.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ A **category** in Homotopy Type Theory is a
[isomorphisms](category-theory.isomorphisms-in-precategories.md). More
specifically, an equality between objects gives rise to an isomorphism between
them, by the J-rule. A precategory is a category if this function, called
`iso-eq`, is an [equivalence](foundation-core.equivalences.md). In particular.
`iso-eq`, is an [equivalence](foundation-core.equivalences.md). In particular,
being a category is a [proposition](foundation-core.propositions.md) since
`is-equiv` is a proposition.

Expand Down
4 changes: 2 additions & 2 deletions src/category-theory/preunivalent-categories.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ objects [embed](foundation-core.embeddings.md) into the
[isomorphisms](category-theory.isomorphisms-in-precategories.md). More
specifically, an equality between objects gives rise to an isomorphism between
them, by the J-rule. A precategory is a preunivalent category if this function,
called `iso-eq`, is an embedding. In particular. being preunivalent is a
called `iso-eq`, is an embedding. In particular, being preunivalent is a
[proposition](foundation-core.propositions.md) since `is-emb` is a proposition.

The idea of preunivalence is that it is a common generalization of univalent
Expand Down Expand Up @@ -217,4 +217,4 @@ module _

## See also

- [Axiom L](foundation.axiom-l.md)
- [The preunivalence axiom](foundation.preunivalence.md)
14 changes: 9 additions & 5 deletions src/foundation-core/sets.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,24 +55,28 @@ module _
### A type is a set if and only if it satisfies Streicher's axiom K

```agda
axiom-K : {l : Level} → UU l → UU l
axiom-K A = (x : A) (p : x = x) → refl = p
statement-axiom-K : {l : Level} → UU l → UU l
statement-axiom-K A = (x : A) (p : x = x) → refl = p
fredrik-bakke marked this conversation as resolved.
Show resolved Hide resolved

axiom-K : (l : Level) → UU (lsuc l)
axiom-K l = (A : UU l) → statement-axiom-K A
fredrik-bakke marked this conversation as resolved.
Show resolved Hide resolved

module _
{l : Level} {A : UU l}
where

abstract
is-set-axiom-K' : axiom-K A → (x y : A) → all-elements-equal (x = y)
is-set-axiom-K' :
statement-axiom-K A → (x y : A) → all-elements-equal (x = y)
is-set-axiom-K' K x .x refl q with K x q
... | refl = refl

abstract
is-set-axiom-K : axiom-K A → is-set A
is-set-axiom-K : statement-axiom-K A → is-set A
is-set-axiom-K H x y = is-prop-all-elements-equal (is-set-axiom-K' H x y)

abstract
axiom-K-is-set : is-set A → axiom-K A
axiom-K-is-set : is-set A → statement-axiom-K A
axiom-K-is-set H x p =
( inv (contraction (is-proof-irrelevant-is-prop (H x x) refl) refl)) ∙
( contraction (is-proof-irrelevant-is-prop (H x x) refl) p)
Expand Down
19 changes: 11 additions & 8 deletions src/foundation-core/univalence.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,11 @@ equiv-eq refl = id-equiv
map-eq : {l : Level} {A : UU l} {B : UU l} → A = B → A → B
map-eq = map-equiv ∘ equiv-eq

UNIVALENCE : {l : Level} (A B : UU l) → UU (lsuc l)
UNIVALENCE A B = is-equiv (equiv-eq {A = A} {B = B})
statement-univalence : {l : Level} (A B : UU l) → UU (lsuc l)
statement-univalence A B = is-equiv (equiv-eq {A = A} {B = B})

axiom-univalence : (l : Level) → UU (lsuc l)
axiom-univalence l = (A B : UU l) → statement-univalence A B
```

## Properties
Expand All @@ -49,21 +52,21 @@ UNIVALENCE A B = is-equiv (equiv-eq {A = A} {B = B})

```agda
abstract
is-contr-total-equiv-UNIVALENCE :
is-contr-total-equiv-univalence :
{l : Level} (A : UU l) →
((B : UU l) → UNIVALENCE A B) → is-contr (Σ (UU l) (λ X → A ≃ X))
is-contr-total-equiv-UNIVALENCE A UA =
((B : UU l) → statement-univalence A B) → is-contr (Σ (UU l) (A ≃_))
is-contr-total-equiv-univalence A UA =
fundamental-theorem-id' (λ B → equiv-eq) UA
```

### Contractibility of the total space of equivalences implies univalence

```agda
abstract
UNIVALENCE-is-contr-total-equiv :
univalence-is-contr-total-equiv :
{l : Level} (A : UU l) →
is-contr (Σ (UU l) (λ X → A ≃ X)) → (B : UU l) → UNIVALENCE A B
UNIVALENCE-is-contr-total-equiv A c =
is-contr (Σ (UU l) (A ≃_)) → (B : UU l) → statement-univalence A B
univalence-is-contr-total-equiv A c =
fundamental-theorem-id c (λ B → equiv-eq)
```

Expand Down
2 changes: 1 addition & 1 deletion src/foundation.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ open import foundation.apartness-relations public
open import foundation.arithmetic-law-coproduct-and-sigma-decompositions public
open import foundation.arithmetic-law-product-and-pi-decompositions public
open import foundation.automorphisms public
open import foundation.axiom-l public
open import foundation.axiom-of-choice public
open import foundation.bands public
open import foundation.binary-embeddings public
Expand Down Expand Up @@ -214,6 +213,7 @@ open import foundation.pointed-torsorial-type-families public
open import foundation.powersets public
open import foundation.preidempotent-maps public
open import foundation.preimages-of-subtypes public
open import foundation.preunivalence public
open import foundation.principle-of-omniscience public
open import foundation.product-decompositions public
open import foundation.product-decompositions-subuniverse public
Expand Down
67 changes: 0 additions & 67 deletions src/foundation/axiom-l.lagda.md

This file was deleted.

82 changes: 82 additions & 0 deletions src/foundation/preunivalence.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# The preunivalence axiom

```agda
module foundation.preunivalence where
```

<details><summary>Imports</summary>

```agda
open import foundation.dependent-pair-types
open import foundation.embeddings
open import foundation.equivalences
open import foundation.sets
open import foundation.subtypes
open import foundation.universe-levels

open import foundation-core.identity-types
open import foundation-core.univalence
```

</details>

## Idea

**The preunivalence axiom**, or **axiom L**, which is due to Peter Lumsdaine,
asserts that for any two types `X` and `Y` in a common universe, the map
`X = Y → X ≃ Y` is an [embedding](foundation-core.embeddings.md). This axiom is
a common generalization of the [univalence axiom](foundation.univalence.md) and
[axiom K](foundation-core.sets.md), in the sense that both univalence and axiom
K imply preunivalence.

## Definition

```agda
statement-preunivalence : {l : Level} (X Y : UU l) → UU (lsuc l)
statement-preunivalence X Y = is-emb (equiv-eq {A = X} {B = Y})

axiom-preunivalence : (l : Level) → UU (lsuc l)
axiom-preunivalence l = (X Y : UU l) → statement-preunivalence X Y
fredrik-bakke marked this conversation as resolved.
Show resolved Hide resolved

emb-preunivalence :
{l : Level} → axiom-preunivalence l → (X Y : UU l) → (X = Y) ↪ (X ≃ Y)
pr1 (emb-preunivalence L X Y) = equiv-eq
pr2 (emb-preunivalence L X Y) = L X Y

emb-map-preunivalence :
{l : Level} → axiom-preunivalence l → (X Y : UU l) → (X = Y) ↪ (X → Y)
emb-map-preunivalence L X Y =
comp-emb (emb-subtype is-equiv-Prop) (emb-preunivalence preuniv X Y)
```

## Properties

### Preunivalence generalizes univalence

```agda
preunivalence-univalence :
{l : Level} → axiom-univalence l → axiom-preunivalence l
preunivalence-univalence ua A B = is-emb-is-equiv (ua A B)
```

### Preunivalence generalizes axiom K

To show that preunivalence generalizes axiom K, we assume axiom K both for
types, and for the universe itself.

```agda
preunivalence-axiom-K :
{l : Level} → axiom-K l → statement-axiom-K (UU l) → axiom-preunivalence l
preunivalence-axiom-K K K-Type A B =
is-emb-is-prop-is-set
( is-set-axiom-K K-Type A B)
( is-set-equiv-is-set
( is-set-axiom-K (K A))
( is-set-axiom-K (K B)))
```

## See also

- Preunivalence is sufficient to prove that `Id : A → (A → 𝒰)` is an embedding.
This fact is proven in
[`foundation.universal-property-identity-types`](foundation.universal-property-identity-types.md)
4 changes: 2 additions & 2 deletions src/foundation/univalence.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ In this file we postulate the univalence axiom. Its statement is defined in
## Postulate

```agda
postulate univalence : {l : Level} (A B : UU l) → UNIVALENCE A B
postulate univalence : {l : Level} → axiom-univalence l
```

## Properties
Expand Down Expand Up @@ -86,7 +86,7 @@ module _
is-contr-total-equiv :
(A : UU l) → is-contr (Σ (UU l) (λ X → A ≃ X))
is-contr-total-equiv A =
is-contr-total-equiv-UNIVALENCE A (univalence A)
is-contr-total-equiv-univalence A (univalence A)

is-contr-total-equiv' :
(A : UU l) → is-contr (Σ (UU l) (λ X → X ≃ A))
Expand Down
48 changes: 25 additions & 23 deletions src/foundation/universal-property-identity-types.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ module foundation.universal-property-identity-types where

```agda
open import foundation.action-on-identifications-functions
open import foundation.axiom-l
open import foundation.dependent-pair-types
open import foundation.embeddings
open import foundation.equivalences
Expand All @@ -17,6 +16,7 @@ open import foundation.function-extensionality
open import foundation.functoriality-dependent-function-types
open import foundation.fundamental-theorem-of-identity-types
open import foundation.identity-types
open import foundation.preunivalence
open import foundation.type-theoretic-principle-of-choice
open import foundation.univalence
open import foundation.universe-levels
Expand All @@ -34,9 +34,9 @@ open import foundation-core.propositions

## Idea

The universal property of identity types characterizes families of maps out of
the identity type. This universal property is also known as the type theoretic
Yoneda lemma.
The **universal property of identity types** characterizes families of maps out
of the [identity type](foundation-core.identity-types.md). This universal
property is also known as the **type theoretic Yoneda lemma**.

## Theorem

Expand Down Expand Up @@ -76,15 +76,16 @@ equiv-ev-refl' a {B} =

### `Id : A → (A → 𝒰)` is an embedding

We first show that [axiom L](foundation.axiom-l.md) implies that the map
`Id : A → (A → 𝒰)` is an [embedding](foundation.embeddings.md). Since the
[univalence axiom](foundation.univalence.md) implies axiom L, it follows that
`Id : A → (A → 𝒰)` is an embedding under the postulates of agda-unimath.
We first show that [the preunivalence axiom](foundation.preunivalence.md)
implies that the map `Id : A → (A → 𝒰)` is an
[embedding](foundation.embeddings.md). Since the
[univalence axiom](foundation.univalence.md) implies preunivalence, it follows
that `Id : A → (A → 𝒰)` is an embedding under the postulates of agda-unimath.

#### Axiom L implies that `Id : A → (A → 𝒰)` is an embedding
#### Preunivalence implies that `Id : A → (A → 𝒰)` is an embedding

The proof that axiom L implies that `Id : A → (A → 𝒰)` is an embedding proceeds
via the
The proof that preunivalence implies that `Id : A → (A → 𝒰)` is an embedding
proceeds via the
[fundamental theorem of identity types](foundation.fundamental-theorem-of-identity-types.md)
by showing that the [fiber](foundation.fibers-of-maps.md) of `Id` at `Id a` is
[contractible](foundation.contractible-types.md) for each `a : A`. To see this,
Expand All @@ -108,18 +109,17 @@ above embedding is constructed as the composite of the following embeddings
↪ Σ (x : A), a = x.
```

In this composite, we used axiom L at the second step.
In this composite, we used preunivalence at the second step.

```agda
module _
{l : Level} (L : axiom-L l) (A : UU l)
{l : Level} (L : axiom-preunivalence l) (A : UU l)
where

is-emb-Id-axiom-L : is-emb (Id {A = A})
is-emb-Id-axiom-L a =
is-emb-Id-axiom-preunivalence : is-emb (Id {A = A})
is-emb-Id-axiom-preunivalence a =
fundamental-theorem-id
( pair
( pair a refl)
( ( a , refl) ,
( λ _ →
is-injective-emb
( emb-fiber a)
Expand All @@ -143,7 +143,7 @@ module _
( id-emb)
( λ x →
comp-emb
( emb-Π (λ y → emb-L L (Id x y) (Id a y)))
( emb-Π (λ y → emb-preunivalence L (Id x y) (Id a y)))
( emb-equiv equiv-funext))))
( emb-equiv (inv-equiv (equiv-fiber Id (Id a))))
```
Expand All @@ -156,7 +156,8 @@ module _
where

is-emb-Id : is-emb (Id {A = A})
is-emb-Id = is-emb-Id-axiom-L (axiom-L-univalence univalence) A
is-emb-Id =
is-emb-Id-axiom-preunivalence (preunivalence-univalence univalence) A
```

#### For any type family `B` over `A`, the type of pairs `(a , e)` consisting of `a : A` and a family of equivalences `e : (x : A) → (a = x) ≃ B x` is a proposition
Expand Down Expand Up @@ -195,11 +196,12 @@ module _

- In
[`foundation.torsorial-type-families`](foundation.torsorial-type-families.md)
we will show that the fiber of `Id : A → (A → 𝒰)`at`B : A → 𝒰`is equivalent
to`is-contr (Σ A B)`.
we will show that the fiber of `Id : A → (A → 𝒰)` at `B : A → 𝒰` is equivalent
to `is-contr (Σ A B)`.

## References

- The fact that axiom L is sufficient to prove that `Id : A → (A → 𝒰)` is an
embedding was first observed and formalized by Martín Escardó,
- The fact that preunivalence, or axiom L, is sufficient to prove that
`Id : A → (A → 𝒰)` is an embedding was first observed and formalized by Martín
Escardó,
[https://www.cs.bham.ac.uk//~mhe/TypeTopology/UF.IdEmbedding.html](https://www.cs.bham.ac.uk//~mhe/TypeTopology/UF.IdEmbedding.html).