Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
In this pull request, dual to #999 I propose a definition of lifts of types. --------- Co-authored-by: Fredrik Bakke <fredrbak@gmail.com>
- Loading branch information
1 parent
8f11501
commit 7517af7
Showing
2 changed files
with
43 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Lifts of types | ||
|
||
```agda | ||
module foundation.lifts-types where | ||
``` | ||
|
||
<details><summary>Imports</summary> | ||
|
||
```agda | ||
open import foundation.dependent-pair-types | ||
open import foundation.universe-levels | ||
``` | ||
|
||
</details> | ||
|
||
## Idea | ||
|
||
Consider a type `X`. A {{#concept "lift" Disambiguation="type" Agda=lift-type}} | ||
of `X` is an object in the [slice](foundation.slice.md) over `X`, i.e., it | ||
consists of a type `Y` and a map `f : Y → X`. | ||
|
||
In the above definition of lifts of types our aim is to capture the most general | ||
concept of what it means to be an lift of a type. Similarly, in any | ||
[category](category-theory.categories.md) we would say that an lift of an object | ||
`X` consists of an object `Y` equipped with a morphism `f : Y → X`. | ||
|
||
## Definitions | ||
|
||
```agda | ||
lift-type : {l1 : Level} (l2 : Level) (X : UU l1) → UU (l1 ⊔ lsuc l2) | ||
lift-type l2 X = Σ (UU l2) (λ Y → Y → X) | ||
|
||
module _ | ||
{l1 l2 : Level} {X : UU l1} (Y : lift-type l2 X) | ||
where | ||
|
||
type-lift-type : UU l2 | ||
type-lift-type = pr1 Y | ||
|
||
projection-lift-type : type-lift-type → X | ||
projection-lift-type = pr2 Y | ||
``` |