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

Simplicial Type Theory #1118

Draft
wants to merge 93 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
eb9f3e6
the directed interval type
fredrik-bakke Apr 17, 2024
7b8a548
The directed relation on the directed interval type
fredrik-bakke Apr 17, 2024
db3b59a
standard simplicial cubes
fredrik-bakke Apr 17, 2024
c6b8d8e
Simplicial arrows
fredrik-bakke Apr 17, 2024
db2f1bb
simplicial edges
fredrik-bakke Apr 17, 2024
692f30a
`_→₂_` notation simplicial edges
fredrik-bakke Apr 17, 2024
146189d
The action on simplicial edges of functions
fredrik-bakke Apr 17, 2024
cbb0a42
Simplicial natural transformations
fredrik-bakke Apr 17, 2024
cda98ba
The canonical inclusion of the booleans into the directed interval is…
fredrik-bakke Apr 17, 2024
ecd606e
Horizontal composition of simplicial arrows of functions
fredrik-bakke Apr 17, 2024
1c71fe4
Horizontal composition of simplicial edges between functions
fredrik-bakke Apr 17, 2024
b4ac7e4
Whiskering operations on simplicial arrows of functions
fredrik-bakke Apr 17, 2024
a2e82f2
Whiskering operations on simplicial edges between functions
fredrik-bakke Apr 18, 2024
f439a35
inline `(leq|Id)-2-Prop`
fredrik-bakke Apr 18, 2024
b5b9067
The boundary of the standard simplicial cube
fredrik-bakke Apr 18, 2024
44e8ef7
WIP 2-simplices
fredrik-bakke Apr 18, 2024
e6e6a16
comma types
fredrik-bakke Apr 18, 2024
e7c473a
Merge branch 'master' into simplicial-type-theory
fredrik-bakke Apr 19, 2024
3b869d3
action on simplicial edges of dependent functions
fredrik-bakke Apr 22, 2024
a64843d
some work
fredrik-bakke Apr 22, 2024
5d733e1
dependent simplicial edges
fredrik-bakke Apr 22, 2024
938888e
Characterizing equality of dependent simplicial edges over a fixed edge
fredrik-bakke Apr 22, 2024
c373277
free directed loops
fredrik-bakke Apr 23, 2024
0ce1e43
The universal property of the directed circle
fredrik-bakke Apr 23, 2024
897cf05
the directed circle
fredrik-bakke Apr 23, 2024
df77481
rewritinf rules for the directed circle
fredrik-bakke Apr 23, 2024
866ff56
Merge branch 'master' into simplicial-type-theory
fredrik-bakke Apr 23, 2024
c3c1464
fix links
fredrik-bakke Apr 23, 2024
a43ed06
negated equality universal-cover-circle
fredrik-bakke Apr 23, 2024
8084b1d
pre-commit
fredrik-bakke Apr 23, 2024
fc9641e
The loop of the circle is nontrivial
fredrik-bakke Apr 23, 2024
0f14dc1
simplicially discrete types
fredrik-bakke Apr 24, 2024
997c85f
a space
fredrik-bakke Apr 24, 2024
92e41f2
duality postcomposition pullbacks <-> pullback property pushouts
fredrik-bakke Apr 25, 2024
804d5fa
Simplicial mapping cylinders
fredrik-bakke Apr 25, 2024
0202ce2
nit `foundation`
fredrik-bakke Apr 25, 2024
16759ec
Merge branch 'master' into simplicial-type-theory
fredrik-bakke Apr 25, 2024
ff4d2da
fixes pushout-products
fredrik-bakke Apr 29, 2024
9582b53
propositions are local at inhabited types
fredrik-bakke Apr 29, 2024
0b31700
todos orthogonal maps
fredrik-bakke Apr 29, 2024
e91338a
Constant free directed loops
fredrik-bakke Apr 29, 2024
9f1dcd1
standard simplicial joins
fredrik-bakke Apr 29, 2024
2c3cee6
wip directed circle
fredrik-bakke Apr 29, 2024
2aa05f4
the representing arrow and directed edge
fredrik-bakke Apr 29, 2024
6b31f75
informal definition simplicial suspension
fredrik-bakke Apr 29, 2024
09a0edf
small fixes comma types
fredrik-bakke Apr 29, 2024
d1dd5a5
two easy examples of simplicially discrete types
fredrik-bakke Apr 29, 2024
750c2c8
simplicial cones
fredrik-bakke Apr 29, 2024
aa47a4e
informal definition simplicial spine
fredrik-bakke Apr 29, 2024
e9c3c2a
Merge branch 'master' into simplicial-type-theory
fredrik-bakke Apr 29, 2024
20380d0
rename directed relation module
fredrik-bakke Apr 29, 2024
59d064d
"simplicial edge" -> "directed edge"
fredrik-bakke Apr 29, 2024
679ca2e
pre-commit
fredrik-bakke Apr 29, 2024
7a866bb
add reference RS17
fredrik-bakke Apr 29, 2024
cd2cce9
small fixes
fredrik-bakke Apr 30, 2024
2b9f23b
simplicially covariant type families
fredrik-bakke May 1, 2024
a23f1a7
the directed interval is not 0-connected
fredrik-bakke May 2, 2024
d6521a1
strengthen The directed interval is not connected
fredrik-bakke May 2, 2024
2c28378
strengthen The directed interval is not connected
fredrik-bakke May 2, 2024
943e474
max and min operators on directed interval
fredrik-bakke May 6, 2024
151319e
prose fixes `erasing-equality`
fredrik-bakke May 6, 2024
e77ca01
add `--confluence-check` flag
fredrik-bakke May 6, 2024
66fab80
fix `rewriting-directed-circle`
fredrik-bakke May 6, 2024
f0780ab
fix `rewriting-directed-circle`
fredrik-bakke May 6, 2024
1984294
some nicer type setting
fredrik-bakke May 21, 2024
edb5321
define Simplicially fully-faithful maps
fredrik-bakke Jun 1, 2024
172f593
add reference `MR23b`
fredrik-bakke Jun 3, 2024
2ade64e
some work on logic
fredrik-bakke Jun 3, 2024
19503fa
more characterizations of directed edges
fredrik-bakke Jun 3, 2024
5270b4f
two corollaries for simplicially discrete types
fredrik-bakke Jun 3, 2024
0c9503e
pre-commit
fredrik-bakke Jun 3, 2024
aeb48db
detailed analysis of the image factorization of `bool -> 𝟚`
fredrik-bakke Jun 3, 2024
b777ffb
globularly coskeletal types
fredrik-bakke Jun 3, 2024
5a52a0d
a remark on standard simplices
fredrik-bakke Jun 3, 2024
6797c80
incomplete proof loop of directed circle is nontrivial
fredrik-bakke Jun 3, 2024
a6324af
line wrap
fredrik-bakke Jun 3, 2024
b90a040
rename relation to inequality directed interval type
fredrik-bakke Jun 3, 2024
73da6cb
wip simplicial spines
fredrik-bakke Jun 3, 2024
78453f4
wip directed edges in the booleans
fredrik-bakke Jun 3, 2024
025ef51
Merge branch 'master' into simplicial-type-theory
fredrik-bakke Jun 3, 2024
cfe7eda
null types are closed under Pi, exponentials, products and Sigma
fredrik-bakke Jun 3, 2024
7600f0e
simplicially discrete types are closed under Pi, exponentials, produc…
fredrik-bakke Jun 3, 2024
10930ef
`is-orthogonal-htpy`
fredrik-bakke Jun 4, 2024
fb4ef17
The canonical projection from a coproduct to the booleans
fredrik-bakke Jun 4, 2024
d3fec69
closure properties of null maps
fredrik-bakke Jun 4, 2024
3b9464f
a remark on null types
fredrik-bakke Jun 4, 2024
51536e0
A family over a simplicially discrete type is a family of simpliciall…
fredrik-bakke Jun 4, 2024
2d99de8
characterizing directed edges in the booleans
fredrik-bakke Jun 4, 2024
3a6b62d
some fixes
fredrik-bakke Jun 4, 2024
3e6ec97
rename coskeletal to globularly coskeletal
fredrik-bakke Jun 4, 2024
cfcf354
factor out coproducts of null types
fredrik-bakke Jun 4, 2024
c8571f1
The hom-types of a truncated type are truncated
fredrik-bakke Jun 4, 2024
807ac8d
work
fredrik-bakke Jun 5, 2024
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 agda-unimath.agda-lib
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
name: agda-unimath
include: src
flags: --without-K --exact-split --no-import-sorts --auto-inline -WnoWithoutKFlagPrimEraseEquality
flags: --without-K --exact-split --no-import-sorts --auto-inline --confluence-check -WnoWithoutKFlagPrimEraseEquality
34 changes: 33 additions & 1 deletion references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ @article{MP87
doi = {10.1016/0021-8693(87)90046-9}
}

@online{MR23,
@online{MR23a,
title = {Delooping the Sign Homomorphism in Univalent Mathematics},
author = {Mangel, Éléonore and Rijke, Egbert},
date = {2023-01-24},
Expand All @@ -352,6 +352,19 @@ @online{MR23
keywords = {20B30 03B15,Mathematics - Group Theory,Mathematics - Logic}
}

@online{MR23b,
title = {Commuting {{Cohesions}}},
author = {Myers, David Jaz and Riley, Mitchell},
date = {2023-01-31},
month = {01},
year = {2023},
eprint = {2301.13780},
eprinttype = {arxiv},
eprintclass = {math},
abstract = {Shulman's spatial type theory internalizes the modalities of Lawvere's axiomatic cohesion in a homotopy type theory, enabling many of the constructions from Schreiber's modal approach to differential cohomology to be carried out synthetically. In spatial type theory, every type carries a spatial cohesion among its points and every function is continuous with respect to this. But in mathematical practice, objects may be spatial in more than one way at the same time; for example, a simplicial space has both topological and simplicial structures. In this paper, we put forward a type theory with "commuting focuses" which allows for types to carry multiple kinds of spatial structure. The theory is a relatively painless extension of spatial type theory, and enables us to give a synthetic account of simplicial, differential, equivariant, and other cohesions carried by the same types. We demonstrate the theory by showing that the homotopy type of any differential stack may be computed from a discrete simplicial set derived from the \textbackslash v\{C\}ech nerve of any good cover. We also give other examples of commuting cohesions, such as differential equivariant types and supergeometric types, laying the groundwork for a synthetic account of Schreiber and Sati's proper orbifold cohomology.},
langid = {english}
}

@book{MRR88,
title = {A {{Course}} in {{Constructive Algebra}}},
author = {Mines, Ray and Richman, Fred and Ruitenburg, Wim},
Expand Down Expand Up @@ -452,6 +465,25 @@ @online{Rij22draft
pubstate = {draft}
}

@misc{RS17,
title = {A type theory for synthetic $\infty$-categories},
author = {Riehl, Emily and Shulman, Michael},
year = {2017},
shortjournal = {High. Struct.},
journal = {Higher Structures},
volume = {1},
year = {2017},
number = {1},
pages = {147--224},
issn = {2209-0606},
eprint = {1705.07442},
eprinttype = {arxiv},
eprintclass = {math},
archiveprefix = {arXiv},
primaryclass = {math.CT},
url = {https://emilyriehl.github.io/files/synthetic.pdf}
}

@article{RSS20,
title = {Modalities in Homotopy Type Theory},
author = {Rijke, Egbert and Shulman, Michael and Spitters, Bas},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,4 +202,4 @@ module _

## References

{{#bibliography}} {{#reference MR23}}
{{#bibliography}} {{#reference MR23a}}
Original file line number Diff line number Diff line change
Expand Up @@ -1598,4 +1598,4 @@ module _

## References

{{#bibliography}} {{#reference MR23}}
{{#bibliography}} {{#reference MR23a}}
Original file line number Diff line number Diff line change
Expand Up @@ -800,4 +800,4 @@ module _

## References

{{#bibliography}} {{#reference MR23}}
{{#bibliography}} {{#reference MR23a}}
62 changes: 43 additions & 19 deletions src/foundation-core/truncated-types.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ open import foundation-core.equality-dependent-pair-types
open import foundation-core.equivalences
open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.invertible-maps
open import foundation-core.propositions
open import foundation-core.retractions
open import foundation-core.retracts-of-types
open import foundation-core.transport-along-identifications
open import foundation-core.truncation-levels
Expand Down Expand Up @@ -75,8 +77,7 @@ module _
abstract
is-trunc-succ-is-trunc :
(k : 𝕋) {l : Level} {A : UU l} → is-trunc k A → is-trunc (succ-𝕋 k) A
pr1 (is-trunc-succ-is-trunc neg-two-𝕋 H x y) = eq-is-contr H
pr2 (is-trunc-succ-is-trunc neg-two-𝕋 H x .x) refl = left-inv (pr2 H x)
is-trunc-succ-is-trunc neg-two-𝕋 = is-prop-is-contr
is-trunc-succ-is-trunc (succ-𝕋 k) H x y = is-trunc-succ-is-trunc k (H x y)

truncated-type-succ-Truncated-Type :
Expand Down Expand Up @@ -121,11 +122,11 @@ module _
where

is-trunc-retract-of :
{k : 𝕋} {A : UU l1} {B : UU l2} →
(k : 𝕋) {A : UU l1} {B : UU l2} →
A retract-of B → is-trunc k B → is-trunc k A
is-trunc-retract-of {neg-two-𝕋} = is-contr-retract-of _
is-trunc-retract-of {succ-𝕋 k} R H x y =
is-trunc-retract-of (retract-eq R x y) (H (pr1 R x) (pr1 R y))
is-trunc-retract-of neg-two-𝕋 = is-contr-retract-of _
is-trunc-retract-of (succ-𝕋 k) R H x y =
is-trunc-retract-of k (retract-eq R x y) (H (pr1 R x) (pr1 R y))
```

### `k`-truncated types are closed under equivalences
Expand All @@ -136,7 +137,7 @@ abstract
{l1 l2 : Level} (k : 𝕋) {A : UU l1} (B : UU l2) (f : A → B) → is-equiv f →
is-trunc k B → is-trunc k A
is-trunc-is-equiv k B f is-equiv-f =
is-trunc-retract-of (pair f (pr2 is-equiv-f))
is-trunc-retract-of k (pair f (pr2 is-equiv-f))

abstract
is-trunc-equiv :
Expand Down Expand Up @@ -180,6 +181,18 @@ abstract
is-trunc-emb k f = is-trunc-is-emb k (map-emb f) (is-emb-map-emb f)
```

In fact, it suffices that the map's action on identifications has a retraction.

```agda
abstract
is-trunc-retraction-ap :
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} (f : A → B) →
((x y : A) → retraction (ap f {x} {y})) →
is-trunc (succ-𝕋 k) B → is-trunc (succ-𝕋 k) A
is-trunc-retraction-ap k f Ef H x y =
is-trunc-retract-of k (ap f , Ef x y) (H (f x) (f y))
```

### Truncated types are closed under dependent pair types

```agda
Expand Down Expand Up @@ -225,7 +238,7 @@ abstract
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} →
is-trunc k A → is-trunc k B → is-trunc k (A × B)
is-trunc-product k is-trunc-A is-trunc-B =
is-trunc-Σ is-trunc-A (λ x → is-trunc-B)
is-trunc-Σ is-trunc-A (λ _ → is-trunc-B)

product-Truncated-Type :
{l1 l2 : Level} (k : 𝕋) →
Expand All @@ -236,37 +249,43 @@ pr2 (product-Truncated-Type k A B) =
is-trunc-product k
( is-trunc-type-Truncated-Type A)
( is-trunc-type-Truncated-Type B)
```

We need only show that each factor is `k`-truncated given that the opposite
factor has an element when `k ≥ -1`.

```agda
is-trunc-product' :
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} →
(B → is-trunc (succ-𝕋 k) A) → (A → is-trunc (succ-𝕋 k) B) →
(B → is-trunc (succ-𝕋 k) A) →
(A → is-trunc (succ-𝕋 k) B) →
is-trunc (succ-𝕋 k) (A × B)
is-trunc-product' k f g (pair a b) (pair a' b') =
is-trunc-equiv k
( Eq-product (pair a b) (pair a' b'))
( Eq-product (a , b) (pair a' b'))
( equiv-pair-eq (pair a b) (pair a' b'))
( is-trunc-product k (f b a a') (g a b b'))

is-trunc-left-factor-product :
is-trunc-left-factor-product' :
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} →
is-trunc k (A × B) → B → is-trunc k A
is-trunc-left-factor-product neg-two-𝕋 {A} {B} H b =
is-trunc-left-factor-product' neg-two-𝕋 {A} {B} H b =
is-contr-left-factor-product A B H
is-trunc-left-factor-product (succ-𝕋 k) H b a a' =
is-trunc-left-factor-product k {A = (a = a')} {B = (b = b)}
is-trunc-left-factor-product' (succ-𝕋 k) H b a a' =
is-trunc-left-factor-product' k {A = (a = a')} {B = (b = b)}
( is-trunc-equiv' k
( pair a b = pair a' b)
( equiv-pair-eq (pair a b) (pair a' b))
( H (pair a b) (pair a' b)))
( refl)

is-trunc-right-factor-product :
is-trunc-right-factor-product' :
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} →
is-trunc k (A × B) → A → is-trunc k B
is-trunc-right-factor-product neg-two-𝕋 {A} {B} H a =
is-trunc-right-factor-product' neg-two-𝕋 {A} {B} H a =
is-contr-right-factor-product A B H
is-trunc-right-factor-product (succ-𝕋 k) {A} {B} H a b b' =
is-trunc-right-factor-product k {A = (a = a)} {B = (b = b')}
is-trunc-right-factor-product' (succ-𝕋 k) {A} {B} H a b b' =
is-trunc-right-factor-product' k {A = (a = a)} {B = (b = b')}
( is-trunc-equiv' k
( pair a b = pair a b')
( equiv-pair-eq (pair a b) (pair a b'))
Expand Down Expand Up @@ -334,7 +353,7 @@ abstract
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} →
is-trunc k B → is-trunc k (A → B)
is-trunc-function-type k {A} {B} is-trunc-B =
is-trunc-Π k {B = λ (x : A) → B} (λ x → is-trunc-B)
is-trunc-Π k {B = λ (x : A) → B} (λ _ → is-trunc-B)

function-type-Truncated-Type :
{l1 l2 : Level} {k : 𝕋} (A : UU l1) (B : Truncated-Type l2 k) →
Expand Down Expand Up @@ -402,7 +421,12 @@ module _
( is-trunc-function-type k H)
( λ h →
is-trunc-Π k (λ x → is-trunc-Id H (h (f x)) x))))
```

Alternatively, this follows from the fact that equivalences embed into function
types, and function types between `k`-truncated types are `k`-truncated.

```agda
type-equiv-Truncated-Type :
{l1 l2 : Level} {k : 𝕋} (A : Truncated-Type l1 k) (B : Truncated-Type l2 k) →
UU (l1 ⊔ l2)
Expand Down
4 changes: 2 additions & 2 deletions src/foundation-core/univalence.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ abstract
is-torsorial-equiv-based-univalence :
{l : Level} (A : UU l) →
based-univalence-axiom A → is-torsorial (λ (B : UU l) → A ≃ B)
is-torsorial-equiv-based-univalence A UA =
fundamental-theorem-id' (λ B → equiv-eq) UA
is-torsorial-equiv-based-univalence A =
fundamental-theorem-id' (λ B → equiv-eq)
```

### Contractibility of the total space of equivalences implies univalence
Expand Down
57 changes: 45 additions & 12 deletions src/foundation/0-connected-types.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,15 @@ open import foundation-core.truncation-levels

## Idea

A type is said to be connected if its type of connected components, i.e., its
set truncation, is contractible.
A type is said to be
{{#concept "0-connected" Disambiguation="type" Agda=is-0-connected}} if its type
of [connected components](foundation.connected-components.md), i.e., its
[set truncation](foundation.set-truncations.md), is
[contractible](foundation-core.contractible-types.md).

## Definitions

### The predicate on types of being 0-connected

```agda
is-0-connected-Prop : {l : Level} → UU l → Prop l
Expand All @@ -66,7 +73,13 @@ abstract
{l : Level} {A : UU l} → is-0-connected A → (x y : A) → mere-eq x y
mere-eq-is-0-connected {A = A} H x y =
apply-effectiveness-unit-trunc-Set (eq-is-contr H)
```

## Properties

### A type is 0-connected if there is an element of that type such that every element is merely equal to it

```agda
abstract
is-0-connected-mere-eq :
{l : Level} {A : UU l} (a : A) →
Expand All @@ -77,7 +90,11 @@ abstract
( apply-dependent-universal-property-trunc-Set'
( λ x → set-Prop (Id-Prop (trunc-Set A) (unit-trunc-Set a) x))
( λ x → apply-effectiveness-unit-trunc-Set' (e x)))
```

### A type is 0-connected if it is inhabited and all elements are merely equal

```agda
abstract
is-0-connected-mere-eq-is-inhabited :
{l : Level} {A : UU l} →
Expand All @@ -86,7 +103,11 @@ abstract
apply-universal-property-trunc-Prop H
( is-0-connected-Prop _)
( λ a → is-0-connected-mere-eq a (K a))
```

### A type is is 0-connected iff there is a point inclusion which is surjective

```agda
is-0-connected-is-surjective-point :
{l1 : Level} {A : UU l1} (a : A) →
is-surjective (point a) → is-0-connected A
Expand All @@ -107,10 +128,15 @@ abstract
( mere-eq-is-0-connected H a x)
( trunc-Prop (fiber (point a) x))
( λ where refl → unit-trunc-Prop (star , refl))
```

### The evaluation map at a point of a 0-connected type into a `k+1`-truncated type is `k`-truncated

```agda
is-trunc-map-ev-point-is-connected :
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} (a : A) →
is-0-connected A → is-trunc (succ-𝕋 k) B →
is-0-connected A →
is-trunc (succ-𝕋 k) B →
is-trunc-map k (ev-point' a {B})
is-trunc-map-ev-point-is-connected k {A} {B} a H K =
is-trunc-map-comp k
Expand All @@ -121,11 +147,14 @@ is-trunc-map-ev-point-is-connected k {A} {B} a H K =
( is-trunc-map-precomp-Π-is-surjective k
( is-surjective-point-is-0-connected a H)
( λ _ → (B , K)))
```

### 0-connected types satisfy the dependent universal property of 0-connected types

```agda
equiv-dependent-universal-property-is-0-connected :
{l1 : Level} {A : UU l1} (a : A) → is-0-connected A →
( {l : Level} (P : A → Prop l) →
((x : A) → type-Prop (P x)) ≃ type-Prop (P a))
{l : Level} (P : A → Prop l) → ((x : A) → type-Prop (P x)) ≃ type-Prop (P a)
equiv-dependent-universal-property-is-0-connected a H P =
( equiv-universal-property-unit (type-Prop (P a))) ∘e
( equiv-dependent-universal-property-surjection-is-surjective
Expand Down Expand Up @@ -167,19 +196,24 @@ abstract
is-0-connected A
is-0-connected-is-surjective-fiber-inclusion a H =
is-0-connected-mere-eq a (mere-eq-is-surjective-fiber-inclusion a H)
```

### 0-connected types are closed under equivalences

```agda
is-0-connected-equiv :
{l1 l2 : Level} {A : UU l1} {B : UU l2} →
(A ≃ B) → is-0-connected B → is-0-connected A
is-0-connected-equiv e = is-contr-equiv _ (equiv-trunc-Set e)
A ≃ B → is-0-connected B → is-0-connected A
is-0-connected-equiv {B = B} e =
is-contr-equiv (type-trunc-Set B) (equiv-trunc-Set e)

is-0-connected-equiv' :
{l1 l2 : Level} {A : UU l1} {B : UU l2} →
(A ≃ B) → is-0-connected A → is-0-connected B
A ≃ B → is-0-connected A → is-0-connected B
is-0-connected-equiv' e = is-0-connected-equiv (inv-equiv e)
```

### `0-connected` types are closed under cartesian products
### 0-connected types are closed under cartesian products

```agda
module _
Expand All @@ -195,12 +229,11 @@ module _
( is-contr-product p1 p2)
```

### A contractible type is `0`-connected
### Contractible types are 0-connected

```agda
is-0-connected-is-contr :
{l : Level} (X : UU l) →
is-contr X → is-0-connected X
{l : Level} (X : UU l) → is-contr X → is-0-connected X
is-0-connected-is-contr X p =
is-contr-equiv X (inv-equiv (equiv-unit-trunc-Set (X , is-set-is-contr p))) p
```
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ ap-inv f refl = refl
```agda
ap-const :
{l1 l2 : Level} {A : UU l1} {B : UU l2} (b : B) {x y : A}
(p : x = y) → (ap (const A b) p) = refl
(p : x = y) → ap (const A b) p = refl
ap-const b refl = refl
```

Expand Down
Loading