Skip to content

Commit be95090

Browse files
Organize slice (#1784)
1 parent 05cf7be commit be95090

26 files changed

Lines changed: 507 additions & 375 deletions

src/foundation-core/injective-maps.lagda.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ module _
5353
map-injection : A → B
5454
map-injection = pr1 f
5555
56-
is-injective-injection : is-injective map-injection
57-
is-injective-injection = pr2 f
56+
is-injective-map-injection : is-injective map-injection
57+
is-injective-map-injection = pr2 f
5858
```
5959

6060
## Examples

src/foundation.lagda.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ open import foundation.coproduct-decompositions public
109109
open import foundation.coproduct-decompositions-subuniverse public
110110
open import foundation.coproduct-types public
111111
open import foundation.coproducts-pullbacks public
112-
open import foundation.coslice public
113112
open import foundation.cospan-diagrams public
114113
open import foundation.cospans public
115114
open import foundation.cumulative-large-sets public
@@ -204,6 +203,7 @@ open import foundation.equivalences-forks-over-equivalences-double-arrows public
204203
open import foundation.equivalences-inverse-sequential-diagrams public
205204
open import foundation.equivalences-maybe public
206205
open import foundation.equivalences-propositions public
206+
open import foundation.equivalences-slice public
207207
open import foundation.equivalences-span-diagrams public
208208
open import foundation.equivalences-span-diagrams-families-of-types public
209209
open import foundation.equivalences-spans public
@@ -345,11 +345,13 @@ open import foundation.monomorphisms public
345345
open import foundation.morphisms-arrows public
346346
open import foundation.morphisms-binary-relations public
347347
open import foundation.morphisms-coalgebras-maybe public
348+
open import foundation.morphisms-coslice public
348349
open import foundation.morphisms-cospan-diagrams public
349350
open import foundation.morphisms-cospans public
350351
open import foundation.morphisms-double-arrows public
351352
open import foundation.morphisms-forks-over-morphisms-double-arrows public
352353
open import foundation.morphisms-inverse-sequential-diagrams public
354+
open import foundation.morphisms-slice public
353355
open import foundation.morphisms-span-diagrams public
354356
open import foundation.morphisms-spans public
355357
open import foundation.morphisms-spans-families-of-types public

src/foundation/decidable-equivalence-relations.lagda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ open import foundation.functoriality-cartesian-product-types
2424
open import foundation.fundamental-theorem-of-identity-types
2525
open import foundation.images
2626
open import foundation.logical-equivalences
27+
open import foundation.morphisms-slice
2728
open import foundation.propositional-truncations
2829
open import foundation.reflecting-maps-equivalence-relations
2930
open import foundation.sets
30-
open import foundation.slice
3131
open import foundation.surjective-maps
3232
open import foundation.type-arithmetic-cartesian-product-types
3333
open import foundation.type-arithmetic-dependent-pair-types

src/foundation/double-negation-images.lagda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ open import foundation.double-negation
1313
open import foundation.embeddings
1414
open import foundation.fundamental-theorem-of-identity-types
1515
open import foundation.hilbert-epsilon-operators-maps
16-
open import foundation.slice
16+
open import foundation.morphisms-slice
1717
open import foundation.split-surjective-maps
1818
open import foundation.subtype-identity-principle
1919
open import foundation.universe-levels

src/foundation/equivalence-classes.lagda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ open import foundation.homotopies
2020
open import foundation.inhabited-subtypes
2121
open import foundation.locally-small-types
2222
open import foundation.logical-equivalences
23+
open import foundation.morphisms-slice
2324
open import foundation.propositional-truncations
2425
open import foundation.reflecting-maps-equivalence-relations
25-
open import foundation.slice
2626
open import foundation.small-types
2727
open import foundation.subtype-identity-principle
2828
open import foundation.subtypes
Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
# Equivalences in the slice over a type
2+
3+
```agda
4+
module foundation.equivalences-slice where
5+
```
6+
7+
<details><summary>Imports</summary>
8+
9+
```agda
10+
open import foundation.dependent-pair-types
11+
open import foundation.dependent-products-propositions
12+
open import foundation.equivalences
13+
open import foundation.fundamental-theorem-of-identity-types
14+
open import foundation.homotopies
15+
open import foundation.homotopy-induction
16+
open import foundation.logical-equivalences
17+
open import foundation.morphisms-slice
18+
open import foundation.slice
19+
open import foundation.structure-identity-principle
20+
open import foundation.type-arithmetic-dependent-pair-types
21+
open import foundation.univalence
22+
open import foundation.universe-levels
23+
24+
open import foundation-core.embeddings
25+
open import foundation-core.families-of-equivalences
26+
open import foundation-core.fibers-of-maps
27+
open import foundation-core.function-types
28+
open import foundation-core.functoriality-dependent-pair-types
29+
open import foundation-core.identity-types
30+
open import foundation-core.injective-maps
31+
open import foundation-core.propositions
32+
open import foundation-core.torsorial-type-families
33+
open import foundation-core.type-theoretic-principle-of-choice
34+
```
35+
36+
</details>
37+
38+
## Idea
39+
40+
The slice of a category over an object X is the category of morphisms into X. A
41+
{{#concept "morphism"}} in the slice from `f : A → X` to `g : B → X` consists of
42+
a function `h : A → B` such that the triangle `f ~ g ∘ h` commutes. We make
43+
these definitions for types.
44+
45+
## Definitions
46+
47+
### The predicate on a morphism in the slice of being an equivalence
48+
49+
```agda
50+
is-equiv-hom-slice :
51+
{l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3}
52+
(f : A → X) (g : B → X) → hom-slice f g → UU (l2 ⊔ l3)
53+
is-equiv-hom-slice f g h = is-equiv (map-hom-slice f g h)
54+
```
55+
56+
### The type of equivalences in the slice
57+
58+
```agda
59+
equiv-slice :
60+
{l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3} →
61+
(A → X) → (B → X) → UU (l1 ⊔ l2 ⊔ l3)
62+
equiv-slice {A = A} {B = B} f g = Σ (A ≃ B) (λ e → f ~ g ∘ map-equiv e)
63+
64+
module _
65+
{l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3}
66+
(f : A → X) (g : B → X) (e : equiv-slice f g)
67+
where
68+
69+
equiv-equiv-slice : A ≃ B
70+
equiv-equiv-slice = pr1 e
71+
72+
map-equiv-slice : A → B
73+
map-equiv-slice = map-equiv equiv-equiv-slice
74+
75+
is-equiv-map-equiv-slice : is-equiv map-equiv-slice
76+
is-equiv-map-equiv-slice = is-equiv-map-equiv equiv-equiv-slice
77+
78+
coh-equiv-slice : f ~ g ∘ map-equiv-slice
79+
coh-equiv-slice = pr2 e
80+
81+
hom-equiv-slice : hom-slice f g
82+
hom-equiv-slice = (map-equiv-slice , coh-equiv-slice)
83+
```
84+
85+
## Properties
86+
87+
### A morphism in the slice over `X` is an equivalence if and only if the induced map between fibers is a fiberwise equivalence
88+
89+
```agda
90+
module _
91+
{l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3}
92+
(f : A → X) (g : B → X)
93+
where
94+
95+
abstract
96+
is-fiberwise-equiv-fiberwise-equiv-equiv-slice :
97+
(t : hom-slice f g) → is-equiv (map-hom-slice f g t) →
98+
is-fiberwise-equiv (fiberwise-hom-hom-slice f g t)
99+
is-fiberwise-equiv-fiberwise-equiv-equiv-slice (h , H) =
100+
is-fiberwise-equiv-is-equiv-triangle f g h H
101+
102+
abstract
103+
is-equiv-hom-slice-is-fiberwise-equiv-fiberwise-hom-hom-slice :
104+
(t : hom-slice f g) →
105+
((x : X) → is-equiv (fiberwise-hom-hom-slice f g t x)) →
106+
is-equiv (map-hom-slice f g t)
107+
is-equiv-hom-slice-is-fiberwise-equiv-fiberwise-hom-hom-slice (h , H) =
108+
is-equiv-triangle-is-fiberwise-equiv f g h H
109+
110+
equiv-fiberwise-equiv-equiv-slice :
111+
equiv-slice f g ≃ fiberwise-equiv (fiber f) (fiber g)
112+
equiv-fiberwise-equiv-equiv-slice =
113+
equiv-Σ is-fiberwise-equiv (equiv-fiberwise-hom-hom-slice f g) α ∘e
114+
equiv-right-swap-Σ
115+
where
116+
α :
117+
(h : hom-slice f g) →
118+
is-equiv (map-hom-slice f g h) ≃
119+
is-fiberwise-equiv (map-equiv (equiv-fiberwise-hom-hom-slice f g) h)
120+
α h =
121+
equiv-iff-is-prop
122+
( is-property-is-equiv _)
123+
( is-prop-Π (λ _ → is-property-is-equiv _))
124+
( is-fiberwise-equiv-fiberwise-equiv-equiv-slice h)
125+
( is-equiv-hom-slice-is-fiberwise-equiv-fiberwise-hom-hom-slice h)
126+
127+
equiv-equiv-slice-fiberwise-equiv :
128+
fiberwise-equiv (fiber f) (fiber g) ≃ equiv-slice f g
129+
equiv-equiv-slice-fiberwise-equiv =
130+
inv-equiv equiv-fiberwise-equiv-equiv-slice
131+
132+
fiberwise-equiv-equiv-slice :
133+
equiv-slice f g → fiberwise-equiv (fiber f) (fiber g)
134+
fiberwise-equiv-equiv-slice =
135+
map-equiv equiv-fiberwise-equiv-equiv-slice
136+
137+
equiv-fam-equiv-equiv-slice :
138+
equiv-slice f g ≃ fam-equiv (fiber f) (fiber g)
139+
equiv-fam-equiv-equiv-slice =
140+
inv-distributive-Π-Σ ∘e equiv-fiberwise-equiv-equiv-slice
141+
```
142+
143+
### Logically equivalent injections into a type are equivalent slices over that type
144+
145+
```agda
146+
module _
147+
{l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3}
148+
where
149+
150+
abstract
151+
is-equiv-hom-slice-is-injective :
152+
{f : A → X} {g : B → X} →
153+
is-injective f → is-injective g →
154+
(h : hom-slice f g) →
155+
hom-slice g f →
156+
is-equiv-hom-slice f g h
157+
is-equiv-hom-slice-is-injective {f} {g} F G h i =
158+
is-equiv-is-invertible
159+
( map-hom-slice g f i)
160+
( λ y →
161+
G ( inv
162+
( ( triangle-hom-slice g f i y) ∙
163+
( triangle-hom-slice f g h (map-hom-slice g f i y)))))
164+
( λ x →
165+
F ( inv
166+
( ( triangle-hom-slice f g h x) ∙
167+
( triangle-hom-slice g f i (map-hom-slice f g h x)))))
168+
169+
is-equiv-hom-slice-injection :
170+
(f : injection A X) (g : injection B X)
171+
(h : hom-slice (map-injection f) (map-injection g)) →
172+
hom-slice (map-injection g) (map-injection f) →
173+
is-equiv-hom-slice (map-injection f) (map-injection g) h
174+
is-equiv-hom-slice-injection (f , F) (g , G) =
175+
is-equiv-hom-slice-is-injective F G
176+
```
177+
178+
### Logically equivalent embeddings into a type are equivalent slices over that type
179+
180+
```agda
181+
module _
182+
{l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3}
183+
where
184+
185+
is-equiv-hom-slice-emb :
186+
(f : A ↪ X) (g : B ↪ X)
187+
(h : hom-slice (map-emb f) (map-emb g)) →
188+
hom-slice (map-emb g) (map-emb f) →
189+
is-equiv-hom-slice (map-emb f) (map-emb g) h
190+
is-equiv-hom-slice-emb f g =
191+
is-equiv-hom-slice-injection (injection-emb f) (injection-emb g)
192+
```
193+
194+
### Characterization of the identity type of `Slice l A`
195+
196+
```agda
197+
module _
198+
{l1 l2 : Level} {A : UU l1}
199+
where
200+
201+
equiv-Slice : (f g : Slice l2 A) → UU (l1 ⊔ l2)
202+
equiv-Slice f g = equiv-slice (map-Slice f) (map-Slice g)
203+
204+
id-equiv-Slice : (f : Slice l2 A) → equiv-Slice f f
205+
id-equiv-Slice f = (id-equiv , refl-htpy)
206+
207+
equiv-eq-Slice : (f g : Slice l2 A) → f = g → equiv-Slice f g
208+
equiv-eq-Slice f .f refl = id-equiv-Slice f
209+
```
210+
211+
### Univalence in a slice
212+
213+
```agda
214+
module _
215+
{l1 l2 : Level} {A : UU l1}
216+
where
217+
218+
abstract
219+
is-torsorial-equiv-Slice : (f : Slice l2 A) → is-torsorial (equiv-Slice f)
220+
is-torsorial-equiv-Slice (X , f) =
221+
is-torsorial-Eq-structure
222+
( is-torsorial-equiv X)
223+
( X , id-equiv)
224+
( is-torsorial-htpy f)
225+
226+
abstract
227+
is-equiv-equiv-eq-Slice : (f g : Slice l2 A) → is-equiv (equiv-eq-Slice f g)
228+
is-equiv-equiv-eq-Slice f =
229+
fundamental-theorem-id
230+
( is-torsorial-equiv-Slice f)
231+
( equiv-eq-Slice f)
232+
233+
extensionality-Slice : (f g : Slice l2 A) → (f = g) ≃ equiv-Slice f g
234+
extensionality-Slice f g = (equiv-eq-Slice f g , is-equiv-equiv-eq-Slice f g)
235+
236+
eq-equiv-Slice : (f g : Slice l2 A) → equiv-Slice f g → f = g
237+
eq-equiv-Slice f g = map-inv-equiv (extensionality-Slice f g)
238+
```

src/foundation/extensions-types-global-subuniverses.lagda.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ open import foundation.universe-levels
3939
Consider a type `X`. An
4040
{{#concept "extension" Disambiguation="type in global subuniverse" Agda=extension-type-global-subuniverse}}
4141
of `X` in a [global subuniverse](foundation.global-subuniverses.md) `𝒫` is an
42-
object in the [coslice](foundation.coslice.md) under `X` in `𝒫`, i.e., it
43-
consists of a type `Y` in `𝒫` and a map `f : X → Y`.
42+
object in the coslice under `X` in `𝒫`, i.e., it consists of a type `Y` in `𝒫`
43+
and a map `f : X → Y`.
4444

4545
In the above definition of extensions of types in a global subuniverse our aim
4646
is to capture the most general concept of what it means to be an extension of a

src/foundation/extensions-types-subuniverses.lagda.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ open import foundation.universe-levels
4141
Consider a type `X`. An
4242
{{#concept "extension" Disambiguation="type in subuniverse" Agda=extension-type-subuniverse}}
4343
of `X` in a [subuniverse](foundation.subuniverses.md) `𝒫` is an object in the
44-
[coslice](foundation.coslice.md) under `X` in `𝒫`, i.e., it consists of a type
45-
`Y` in `𝒫` and a map `f : X → Y`.
44+
coslice under `X` in `𝒫`, i.e., it consists of a type `Y` in `𝒫` and a map
45+
`f : X → Y`.
4646

4747
In the above definition of extensions of types in a subuniverse our aim is to
4848
capture the most general concept of what it means to be an extension of a type

src/foundation/extensions-types.lagda.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ open import foundation.universe-levels
2626

2727
Consider a type `X`. An
2828
{{#concept "extension" Disambiguation="type" Agda=extension-type}} of `X` is an
29-
object in the [coslice](foundation.coslice.md) under `X`, i.e., it consists of a
30-
type `Y` and a map `f : X → Y`.
29+
object in the coslice under `X`, i.e., it consists of a type `Y` and a map
30+
`f : X → Y`.
3131

3232
In the above definition of extensions of types our aim is to capture the most
3333
general concept of what it means to be an extension of a type. Similarly, in any

src/foundation/fibered-equivalences.lagda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ module foundation.fibered-equivalences where
1010
open import foundation.dependent-pair-types
1111
open import foundation.embeddings
1212
open import foundation.equivalences
13+
open import foundation.equivalences-slice
1314
open import foundation.fibered-maps
1415
open import foundation.logical-equivalences
1516
open import foundation.pullbacks
16-
open import foundation.slice
1717
open import foundation.universe-levels
1818
1919
open import foundation-core.cartesian-product-types

0 commit comments

Comments
 (0)