Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
9f7ceb0
some informal proofs for truncation equivalences
fredrik-bakke Sep 23, 2025
c97413c
edits
fredrik-bakke Sep 23, 2025
1fff72c
edit
fredrik-bakke Sep 23, 2025
e799da9
edits
fredrik-bakke Sep 23, 2025
92788a9
refactor, simplify, and informalize proof of `is-connected-map-is-con…
fredrik-bakke Sep 23, 2025
7b2dcb0
Retractions of `k`-equivalences are `k`-equivalences
fredrik-bakke Sep 23, 2025
004e459
simplify informal proof slightly
fredrik-bakke Sep 23, 2025
5b8442e
edits
fredrik-bakke Sep 25, 2025
ec05b43
edits
fredrik-bakke Sep 25, 2025
9ab3cc4
Merge branch 'master' into informal-proof-truncation-equivs
fredrik-bakke Sep 25, 2025
26a8447
more edits
fredrik-bakke Sep 25, 2025
08301c9
edits `connected-maps`
fredrik-bakke Sep 25, 2025
85b1305
edits
fredrik-bakke Sep 25, 2025
fb3887f
pre-commit
fredrik-bakke Sep 25, 2025
7f2f7cd
`subuniverse-connected-maps`
fredrik-bakke Sep 25, 2025
c0f65ce
`K`-connected maps are closed under cobase change
fredrik-bakke Sep 25, 2025
f00102e
`K`-connected maps are closed under retracts of maps informal proof
fredrik-bakke Sep 26, 2025
8943ae1
edits
fredrik-bakke Sep 28, 2025
3ed7b96
Coproducts of `K`-connected maps
fredrik-bakke Sep 28, 2025
35d57cb
edits
fredrik-bakke Sep 29, 2025
65cf586
lots of edits
fredrik-bakke Sep 29, 2025
a36ebc1
`is-equiv-postcomp-extension`
fredrik-bakke Sep 29, 2025
f1945a4
map-separated types
fredrik-bakke Sep 29, 2025
2140a78
`is-subuniverse-localization-map`
fredrik-bakke Sep 29, 2025
f946d4c
fix indentation
fredrik-bakke Sep 29, 2025
b4fc42d
fix a silly name
fredrik-bakke Sep 30, 2025
d13feda
fix another silly name
fredrik-bakke Sep 30, 2025
68dae00
`is-trunc-map-postcomp-extension`
fredrik-bakke Sep 30, 2025
242d30d
`postcomposition-extensions-maps`
fredrik-bakke Sep 30, 2025
c2e67a9
edits `extensions-maps`
fredrik-bakke Sep 30, 2025
7e76f72
fix import
fredrik-bakke Sep 30, 2025
f8a4c1f
rename files
fredrik-bakke Sep 30, 2025
b3d9701
fix links in `foundation.projective-types`
fredrik-bakke Oct 1, 2025
c31efdc
work separation, subuniverse connected maps and equivalences
fredrik-bakke Oct 2, 2025
d5fc08b
more fiber computation
fredrik-bakke Oct 2, 2025
a6a95fb
`is-subuniverse-equiv-terminal-map-fibers-is-inhabited-family-fiber-Π…
fredrik-bakke Oct 2, 2025
2e104cc
round off conditions subuniverse connected maps
fredrik-bakke Oct 2, 2025
225c8c0
pre-commit
fredrik-bakke Oct 2, 2025
f6b197e
forgot one
fredrik-bakke Oct 2, 2025
5827064
fix a link
fredrik-bakke Oct 3, 2025
d79da3e
modulation!
fredrik-bakke Oct 3, 2025
8cfb546
modulation!
fredrik-bakke Oct 3, 2025
479b9e4
more edits
fredrik-bakke Oct 3, 2025
018c2de
another pushout characterization of smash
fredrik-bakke Oct 22, 2025
62797d1
(𝑛+1)-truncated pointed maps induce 𝑛-truncated maps on loop spaces
fredrik-bakke Oct 23, 2025
261dae1
Merge branch 'master' into informal-proof-truncation-equivs
fredrik-bakke Oct 23, 2025
c999911
edits loop spaces
fredrik-bakke Oct 23, 2025
632bd92
The loop space of a (𝑘+1)-truncated type is 𝑘-truncated
fredrik-bakke Oct 24, 2025
c7347c9
If A is (𝑛+𝑘)-truncated then ΩⁿA is 𝑘-truncated
fredrik-bakke Oct 24, 2025
f15dde7
mildly simplify a proof
fredrik-bakke Oct 24, 2025
da3b38a
add a link
fredrik-bakke Oct 24, 2025
fe3ed62
Computing extension types as a dependent product
fredrik-bakke Oct 25, 2025
dd2a0b7
edits
fredrik-bakke Oct 31, 2025
542c7e0
revert stupid name change
fredrik-bakke Nov 6, 2025
8e8c485
revert stupid name change
fredrik-bakke Nov 6, 2025
282c71d
revert stupid name change
fredrik-bakke Nov 6, 2025
ce1e7fd
fix a renaming mistake
fredrik-bakke Nov 6, 2025
2e972ca
Merge branch 'master' into informal-proof-truncation-equivs
fredrik-bakke Nov 6, 2025
3ed97cc
revert another naming change
fredrik-bakke Nov 6, 2025
e581125
Revert "revert another naming change"
fredrik-bakke Nov 6, 2025
15517ad
fixes
fredrik-bakke Nov 6, 2025
00260e6
Merge branch 'master' into informal-proof-truncation-equivs
fredrik-bakke Nov 6, 2025
e9da00c
remove relative separation work
fredrik-bakke Nov 6, 2025
7ed317c
a header
fredrik-bakke Nov 6, 2025
75d66ea
remove subuniverse equivalence work
fredrik-bakke Nov 6, 2025
38deb3b
pre-commit
fredrik-bakke Nov 6, 2025
7e87462
reorg `connected-types`
fredrik-bakke Nov 7, 2025
4f5546b
Coproducts of -1-connected types are not 0-connected
fredrik-bakke Nov 7, 2025
b318d76
edits 0-connected types
fredrik-bakke Nov 7, 2025
3b4efed
edit
fredrik-bakke Nov 7, 2025
9bb5004
edit
fredrik-bakke Nov 7, 2025
b978a5e
pre-commit
fredrik-bakke Nov 7, 2025
6c008e5
Revert "remove subuniverse equivalence work"
fredrik-bakke Nov 7, 2025
ef6c832
remove unfinished stuff
fredrik-bakke Nov 7, 2025
d36c16a
remove unfinished stuff
fredrik-bakke Nov 7, 2025
26bb550
Merge branch 'master' into subuniverse-equivalences
fredrik-bakke Nov 10, 2025
ee26ace
add extension conditions
fredrik-bakke Nov 10, 2025
0b127d2
subuniverse connected types and some refactoring
fredrik-bakke Nov 10, 2025
ad63937
factor out subuniverse connected maps over a type
fredrik-bakke Nov 10, 2025
8227be9
remove unused imports
fredrik-bakke Nov 10, 2025
54c9356
`K`-connected types are closed under equivalences
fredrik-bakke Nov 10, 2025
db412b1
wording
fredrik-bakke Nov 10, 2025
a6adeeb
capitalization
fredrik-bakke Nov 10, 2025
867c11b
`is-prop-is-subuniverse-equiv`
fredrik-bakke Nov 10, 2025
cfe8d7f
universe levels subuniverse equivalences
fredrik-bakke Nov 10, 2025
268918a
subuniverse orthogonal maps
fredrik-bakke Nov 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
25 changes: 24 additions & 1 deletion src/foundation/contractible-types.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ open import foundation-core.contractible-maps
open import foundation-core.equivalences
open import foundation-core.function-types
open import foundation-core.functoriality-dependent-pair-types
open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.propositions
open import foundation-core.subtypes
Expand Down Expand Up @@ -197,12 +198,34 @@ module _
is-equiv-is-invertible
( ev-point' (center H))
( λ f → eq-htpy (λ x → ap f (contraction H x)))
( λ x → refl)
( refl-htpy)

equiv-diagonal-exponential-is-contr :
{l : Level} (X : UU l) → is-contr A → X ≃ (A → X)
pr1 (equiv-diagonal-exponential-is-contr X H) =
diagonal-exponential X A
pr2 (equiv-diagonal-exponential-is-contr X H) =
is-equiv-diagonal-exponential-is-contr H X

abstract
is-equiv-diagonal-exponential-is-contr' :
is-contr A →
{l : Level} (X : UU l) → is-equiv (diagonal-exponential A X)
is-equiv-diagonal-exponential-is-contr' H X =
is-equiv-is-invertible
( λ _ → center H)
( λ x → eq-htpy (contraction H ∘ x))
( contraction H)

equiv-diagonal-exponential-is-contr' :
{l : Level} (X : UU l) → is-contr A → A ≃ (X → A)
equiv-diagonal-exponential-is-contr' X H =
( diagonal-exponential A X , is-equiv-diagonal-exponential-is-contr' H X)

abstract
is-contr-is-equiv-diagonal-exponential' :
({l : Level} (X : UU l) → is-equiv (diagonal-exponential A X)) →
is-contr A
is-contr-is-equiv-diagonal-exponential' H =
is-contr-is-equiv-self-diagonal-exponential (H A)
```
5 changes: 3 additions & 2 deletions src/foundation/diagonal-maps-of-types.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ open import foundation.universe-levels

open import foundation-core.cartesian-product-types
open import foundation-core.constant-maps
open import foundation-core.contractible-types
open import foundation-core.equivalences
open import foundation-core.fibers-of-maps
open import foundation-core.function-types
Expand Down Expand Up @@ -70,7 +71,7 @@ module _
inv-htpy htpy-diagonal-exponential-Id-ap-diagonal-exponential-htpy-eq
```

### Given an element of the exponent the diagonal map is injective
### If the exponent has an element then the diagonal map is injective

```agda
module _
Expand All @@ -86,7 +87,7 @@ module _
pr2 diagonal-exponential-injection = is-injective-diagonal-exponential
```

### The action on identifications of an (exponential) diagonal is a diagonal
### The action on identifications of a diagonal is a diagonal

```agda
module _
Expand Down
2 changes: 1 addition & 1 deletion src/group-theory/invertible-elements-monoids.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ An element `x : M` in a [monoid](group-theory.monoids.md) `M` is said to be
is said to be **right invertible** if there is an element `y : M` such that
`xy = e`. The element `x` is said to be
{{#concept "invertible" WD="invertible element" WDID=Q67474638 Agda=is-invertible-element-Monoid}}
if it has a two-sided inverse, i.e., if if there is an element `y : M` such that
if it has a two-sided inverse, i.e., if there is an element `y : M` such that
`xy = e` and `yx = e`. Left inverses of elements are also called **retractions**
and right inverses are also called **sections**.

Expand Down
5 changes: 5 additions & 0 deletions src/orthogonal-factorization-systems.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ open import orthogonal-factorization-systems.sigma-closed-modalities public
open import orthogonal-factorization-systems.sigma-closed-reflective-modalities public
open import orthogonal-factorization-systems.sigma-closed-reflective-subuniverses public
open import orthogonal-factorization-systems.stable-orthogonal-factorization-systems public
open import orthogonal-factorization-systems.subuniverse-connected-maps public
open import orthogonal-factorization-systems.subuniverse-connected-maps-over-type public
open import orthogonal-factorization-systems.subuniverse-connected-types public
open import orthogonal-factorization-systems.subuniverse-equivalences public
open import orthogonal-factorization-systems.subuniverse-orthogonal-maps public
open import orthogonal-factorization-systems.types-colocal-at-maps public
open import orthogonal-factorization-systems.types-local-at-maps public
open import orthogonal-factorization-systems.types-separated-at-maps public
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ module _
pr1 is-localization-Y
pr1 (pr2 (is-subuniverse-localization-is-localization is-localization-Y)) = η
pr2 (pr2 (is-subuniverse-localization-is-localization is-localization-Y))
Z is-local-Z =
pr2 is-localization-Y Z is-local-Z
(Z , is-local-Z) =
pr2 is-localization-Y Z is-local-Z
```

It remains to construct a converse.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ open import foundation.dependent-pair-types
open import foundation.subuniverses
open import foundation.universe-levels

open import orthogonal-factorization-systems.subuniverse-equivalences
open import orthogonal-factorization-systems.types-local-at-maps
```

Expand All @@ -20,29 +21,38 @@ open import orthogonal-factorization-systems.types-local-at-maps
## Idea

Let `P` be a [subuniverse](foundation.subuniverses.md). Given a type `X`, its
**localization** at `P`, or **`P`-localization**, is a type `Y` in `P` and a map
`η : X → Y` such that every type in `P` is
`[-local](orthogonal-factorization-systems.types-local-at-maps.md). I.e., for
every `Z` in `P`, the [precomposition map](foundation-core.function-types.md)
{{#concept "localization" Disambiguation="of a type at a subuniverse" Agda=subuniverse-localization}}
at `P`, or **`P`-localization**, is a type `Y` in `P` and a `P`-equivalence
: X → Y`, i.e., a map such that for every `Z` in `P` the
[precomposition map](foundation-core.function-types.md)

```text
- ∘ η : (Y → Z) → (X → Z)
```

is an [equivalence](foundation-core.equivalences.md).
is an [equivalence](foundation-core.equivalences.md). In other words, every type
in `P` is `η`[-local](orthogonal-factorization-systems.types-local-at-maps.md).

## Definition

### The predicate on a map of being a localization at a subuniverse

```agda
is-subuniverse-localization-map :
{l1 l2 lP : Level} (P : subuniverse l1 lP) {A : UU l2} {PA : UU l1}
(η : A → PA) → UU (lsuc l1 ⊔ l2 ⊔ lP)
is-subuniverse-localization-map P {A} {PA} η =
is-in-subuniverse P PA × is-subuniverse-equiv P η
```

### The predicate of being a localization at a subuniverse

```agda
is-subuniverse-localization :
{l1 l2 lP : Level} (P : subuniverse l1 lP) →
UU l2 → UU l1 → UU (lsuc l1 ⊔ l2 ⊔ lP)
is-subuniverse-localization {l1} {l2} P X Y =
( is-in-subuniverse P Y) ×
( Σ ( X → Y)
( λ η → (Z : UU l1) → is-in-subuniverse P Z → is-local η Z))
(is-in-subuniverse P Y) × (subuniverse-equiv P X Y)
```

```agda
Expand All @@ -58,8 +68,7 @@ module _
unit-is-subuniverse-localization = pr1 (pr2 is-localization-Y)

is-local-at-unit-is-in-subuniverse-is-subuniverse-localization :
(Z : UU l1) → is-in-subuniverse P Z →
is-local unit-is-subuniverse-localization Z
(Z : type-subuniverse P) → is-local unit-is-subuniverse-localization (pr1 Z)
is-local-at-unit-is-in-subuniverse-is-subuniverse-localization =
pr2 (pr2 is-localization-Y)
```
Expand Down Expand Up @@ -91,15 +100,19 @@ module _
is-in-subuniverse-is-subuniverse-localization P
( is-subuniverse-localization-subuniverse-localization)

type-subuniverse-subuniverse-localization : type-subuniverse P
type-subuniverse-subuniverse-localization =
( type-subuniverse-localization ,
is-in-subuniverse-subuniverse-localization)

unit-subuniverse-localization : X → type-subuniverse-localization
unit-subuniverse-localization =
unit-is-subuniverse-localization P
( is-subuniverse-localization-subuniverse-localization)

is-local-at-unit-is-in-subuniverse-subuniverse-localization :
(Z : UU l1) →
is-in-subuniverse P Z → is-local unit-subuniverse-localization Z
is-local-at-unit-is-in-subuniverse-subuniverse-localization =
is-subuniverse-equiv-unit-subuniverse-localization :
is-subuniverse-equiv P unit-subuniverse-localization
is-subuniverse-equiv-unit-subuniverse-localization =
is-local-at-unit-is-in-subuniverse-is-subuniverse-localization P
( is-subuniverse-localization-subuniverse-localization)
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ module _
pr1 (pr2 (pr2 (has-all-localizations-is-reflective-subuniverse A))) =
unit-is-reflective-subuniverse 𝒫 is-reflective-𝒫
pr2 (pr2 (pr2 (has-all-localizations-is-reflective-subuniverse A)))
X is-in-subuniverse-X =
( X , is-in-subuniverse-X) =
is-local-is-in-subuniverse-is-reflective-subuniverse
𝒫 is-reflective-𝒫 X A is-in-subuniverse-X

Expand All @@ -186,8 +186,9 @@ module _
is-in-subuniverse-subuniverse-localization 𝒫 (L A)
pr2 (pr2 (pr2 is-reflective-has-all-localizations-subuniverse))
A B is-in-subuniverse-A =
is-local-at-unit-is-in-subuniverse-subuniverse-localization
𝒫 (L B) A is-in-subuniverse-A
is-subuniverse-equiv-unit-subuniverse-localization 𝒫
( L B)
( A , is-in-subuniverse-A)
```

## Recursion for reflective subuniverses
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# `K`-connected maps over a type with respect to a subuniverse

```agda
module orthogonal-factorization-systems.subuniverse-connected-maps-over-type where
```

<details><summary>Imports</summary>

```agda
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.fundamental-theorem-of-identity-types
open import foundation.structure-identity-principle
open import foundation.subuniverses
open import foundation.univalence
open import foundation.universe-levels

open import foundation-core.function-types
open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.torsorial-type-families

open import orthogonal-factorization-systems.subuniverse-connected-maps
```

</details>

## Idea

Given a [subuniverse](foundation.subuniverses.md) `K` we consider the type of
`K`-connected maps over a type `X`.

## Definitions

### The type of `K`-connected maps over a type

```agda
Subuniverse-Connected-Map :
{l1 l2 l3 : Level} (l4 : Level) (K : subuniverse l1 l2) (A : UU l3) →
UU (lsuc l1 ⊔ l2 ⊔ l3 ⊔ lsuc l4)
Subuniverse-Connected-Map l4 K A = Σ (UU l4) (subuniverse-connected-map K A)

module _
{l1 l2 l3 l4 : Level} (K : subuniverse l1 l2)
{A : UU l3} (f : Subuniverse-Connected-Map l4 K A)
where

type-Subuniverse-Connected-Map : UU l4
type-Subuniverse-Connected-Map = pr1 f

subuniverse-connected-map-Subuniverse-Connected-Map :
subuniverse-connected-map K A type-Subuniverse-Connected-Map
subuniverse-connected-map-Subuniverse-Connected-Map = pr2 f

map-Subuniverse-Connected-Map : A → type-Subuniverse-Connected-Map
map-Subuniverse-Connected-Map =
map-subuniverse-connected-map K
( subuniverse-connected-map-Subuniverse-Connected-Map)

is-subuniverse-connected-map-Subuniverse-Connected-Map :
is-subuniverse-connected-map K map-Subuniverse-Connected-Map
is-subuniverse-connected-map-Subuniverse-Connected-Map =
is-subuniverse-connected-map-subuniverse-connected-map K
( subuniverse-connected-map-Subuniverse-Connected-Map)
```

## Properties

### Characterization of equality

```agda
equiv-Subuniverse-Connected-Map :
{l1 l2 l3 l4 : Level} (K : subuniverse l1 l2) {A : UU l3} →
(f g : Subuniverse-Connected-Map l4 K A) → UU (l3 ⊔ l4)
equiv-Subuniverse-Connected-Map K f g =
Σ ( type-Subuniverse-Connected-Map K f ≃ type-Subuniverse-Connected-Map K g)
( λ e →
map-equiv e ∘ map-Subuniverse-Connected-Map K f ~
map-Subuniverse-Connected-Map K g)

module _
{l1 l2 l3 l4 : Level} (K : subuniverse l1 l2) {A : UU l3}
(f : Subuniverse-Connected-Map l4 K A)
where

id-equiv-Subuniverse-Connected-Map : equiv-Subuniverse-Connected-Map K f f
id-equiv-Subuniverse-Connected-Map = (id-equiv , refl-htpy)

is-torsorial-equiv-Subuniverse-Connected-Map :
is-torsorial (equiv-Subuniverse-Connected-Map K f)
is-torsorial-equiv-Subuniverse-Connected-Map =
is-torsorial-Eq-structure
( is-torsorial-equiv (type-Subuniverse-Connected-Map K f))
( type-Subuniverse-Connected-Map K f , id-equiv)
( is-torsorial-htpy-subuniverse-connected-map K
( subuniverse-connected-map-Subuniverse-Connected-Map K f))

equiv-eq-Subuniverse-Connected-Map :
(g : Subuniverse-Connected-Map l4 K A) →
f = g → equiv-Subuniverse-Connected-Map K f g
equiv-eq-Subuniverse-Connected-Map .f refl =
id-equiv-Subuniverse-Connected-Map

is-equiv-equiv-eq-Subuniverse-Connected-Map :
(g : Subuniverse-Connected-Map l4 K A) →
is-equiv (equiv-eq-Subuniverse-Connected-Map g)
is-equiv-equiv-eq-Subuniverse-Connected-Map =
fundamental-theorem-id
( is-torsorial-equiv-Subuniverse-Connected-Map)
( equiv-eq-Subuniverse-Connected-Map)

extensionality-Subuniverse-Connected-Map :
(g : Subuniverse-Connected-Map l4 K A) →
(f = g) ≃ equiv-Subuniverse-Connected-Map K f g
extensionality-Subuniverse-Connected-Map g =
( equiv-eq-Subuniverse-Connected-Map g ,
is-equiv-equiv-eq-Subuniverse-Connected-Map g)

eq-equiv-Subuniverse-Connected-Map :
(g : Subuniverse-Connected-Map l4 K A) →
equiv-Subuniverse-Connected-Map K f g → f = g
eq-equiv-Subuniverse-Connected-Map g =
map-inv-equiv (extensionality-Subuniverse-Connected-Map g)
```
Loading
Loading