Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
ddeee8e
factor out inequality of cardinalities
fredrik-bakke Oct 14, 2025
0f32894
`apply-twice-dependent-universal-property-trunc-Set'`
fredrik-bakke Oct 14, 2025
cacf6e5
fix mess
fredrik-bakke Oct 14, 2025
7ae5604
mere decidable emberddings
fredrik-bakke Oct 14, 2025
cfd7d6c
complemented inequality of cardinalities
fredrik-bakke Oct 14, 2025
1e48ab9
Merge branch 'master' into leq-cardinality
fredrik-bakke Oct 14, 2025
d3cb84e
imports and fix
fredrik-bakke Oct 14, 2025
68d3fe2
more edits
fredrik-bakke Oct 15, 2025
b8c8bfd
capitalize `Cardinal`
fredrik-bakke Oct 15, 2025
1780e5e
similarity of cardinalities
fredrik-bakke Oct 16, 2025
d30a833
cleanup
fredrik-bakke Oct 16, 2025
2a22efb
fix import
fredrik-bakke Oct 16, 2025
330fedc
Merge branch 'master' into leq-cardinality
fredrik-bakke Oct 16, 2025
aae3c7b
wip dependent sums and products of cardinals
fredrik-bakke Oct 16, 2025
553d88c
Fix capitalization in inequality-cardinalities.md
fredrik-bakke Oct 16, 2025
0d7365d
Clarify antisymmetry of leq-Cardinal under LEM
fredrik-bakke Oct 16, 2025
95ddf58
additions nonsurjective maps
fredrik-bakke Oct 16, 2025
bd2211f
inhabited cardinals
fredrik-bakke Oct 16, 2025
ded3d72
file names: use `cardinals` instead of `cardinalities`
fredrik-bakke Oct 17, 2025
af80d4d
Merge branch 'leq-cardinality' into fam-cardinals
fredrik-bakke Oct 17, 2025
3e96ca6
restore equality of cardinals
fredrik-bakke Oct 17, 2025
eff7780
restore equality of cardinals
fredrik-bakke Oct 17, 2025
b5dc80c
Merge remote-tracking branch 'origin/leq-cardinality' into fam-cardinals
fredrik-bakke Oct 17, 2025
b2c6677
fix
fredrik-bakke Oct 17, 2025
c11a8d0
fix links
fredrik-bakke Oct 17, 2025
ee8a5cf
inhabited cardinals form a set
fredrik-bakke Oct 17, 2025
593a302
Merge branch 'master' into fam-cardinals
fredrik-bakke Nov 15, 2025
4189fea
cardinality inductive sets and many edits
fredrik-bakke Nov 16, 2025
1818d4e
remove an import
fredrik-bakke Nov 16, 2025
d46c370
cardinality-preprojectivity
fredrik-bakke Nov 16, 2025
8519900
edits
fredrik-bakke Nov 16, 2025
022bb87
rename cardinality-recursive sets
fredrik-bakke Nov 16, 2025
e3e5a10
fixes
fredrik-bakke Nov 16, 2025
d9fb6fd
dependent sums and products of inhabited cardinals
fredrik-bakke Nov 16, 2025
211a48b
names
fredrik-bakke Nov 16, 2025
67e70bc
finite sets are cardinality-projective
fredrik-bakke Nov 16, 2025
5c16bb9
indent
fredrik-bakke Nov 16, 2025
11e82af
prove Kőnig's theorem
fredrik-bakke Nov 17, 2025
5203d49
fix
fredrik-bakke Nov 17, 2025
2787868
delete silly files
fredrik-bakke Nov 17, 2025
14225f8
fixes
fredrik-bakke Nov 17, 2025
e2fe8a3
optimize imports nonsurjective maps
fredrik-bakke Nov 17, 2025
ce4b134
Merge branch 'master' into fam-cardinals
fredrik-bakke Nov 17, 2025
169af11
typecheck!
fredrik-bakke Oct 29, 2025
d815eae
poset of cardinals
fredrik-bakke Oct 29, 2025
b706478
formatting
fredrik-bakke Oct 29, 2025
6ba4c96
edit
fredrik-bakke Oct 29, 2025
c6a5703
fixes
fredrik-bakke Oct 29, 2025
406f179
fixes
fredrik-bakke Nov 17, 2025
2e3064d
fixes
fredrik-bakke Nov 17, 2025
0901713
remove konigs theorem formalization
fredrik-bakke Nov 17, 2025
a5ca0ed
Kőnig's theorem
fredrik-bakke Nov 17, 2025
8edb660
disambiguation
fredrik-bakke Nov 17, 2025
ac0d3ac
fixes
fredrik-bakke Nov 17, 2025
d6170a6
edit
fredrik-bakke Nov 18, 2025
6789398
edits
fredrik-bakke Nov 23, 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
4 changes: 2 additions & 2 deletions src/finite-group-theory/transpositions.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -446,11 +446,11 @@ module _
apply-universal-property-trunc-Prop (pr2 Y)
( coproduct-Prop
( Id-Prop
( pair X (is-set-count eX))
( set-type-count eX)
( pr1 two-elements-transposition)
( x))
( Id-Prop
( pair X (is-set-count eX))
( set-type-count eX)
( pr1 (pr2 two-elements-transposition))
( x))
( λ q r →
Expand Down
26 changes: 20 additions & 6 deletions src/foundation-core/fibers-of-maps.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,24 @@ module _

## Properties

### Fibers of compositions

```agda
module _
{l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {X : UU l3}
(g : B → X) (h : A → B) {x : X}
where

inclusion-fiber-comp : (t : fiber g x) → fiber h (pr1 t) → fiber (g ∘ h) x
inclusion-fiber-comp (b , q) (a , p) = (a , ap g p ∙ q)

left-fiber-comp : fiber (g ∘ h) x → fiber g x
left-fiber-comp (a , r) = (h a , r)

right-fiber-comp : (q : fiber (g ∘ h) x) → fiber h (pr1 (left-fiber-comp q))
right-fiber-comp (a , r) = (a , refl)
```

### Characterization of the identity types of the fibers of a map

#### The case of `fiber`
Expand Down Expand Up @@ -376,15 +394,11 @@ module _

map-compute-fiber-comp :
fiber (g ∘ h) x → Σ (fiber g x) (λ t → fiber h (pr1 t))
pr1 (pr1 (map-compute-fiber-comp (a , p))) = h a
pr2 (pr1 (map-compute-fiber-comp (a , p))) = p
pr1 (pr2 (map-compute-fiber-comp (a , p))) = a
pr2 (pr2 (map-compute-fiber-comp (a , p))) = refl
map-compute-fiber-comp t = (left-fiber-comp g h t , right-fiber-comp g h t)

map-inv-compute-fiber-comp :
Σ (fiber g x) (λ t → fiber h (pr1 t)) → fiber (g ∘ h) x
pr1 (map-inv-compute-fiber-comp t) = pr1 (pr2 t)
pr2 (map-inv-compute-fiber-comp t) = ap g (pr2 (pr2 t)) ∙ pr2 (pr1 t)
map-inv-compute-fiber-comp (t , s) = inclusion-fiber-comp g h t s

is-section-map-inv-compute-fiber-comp :
is-section map-compute-fiber-comp map-inv-compute-fiber-comp
Expand Down
2 changes: 2 additions & 0 deletions src/foundation.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,7 @@ open import foundation.maps-in-global-subuniverses public
open import foundation.maps-in-subuniverses public
open import foundation.maximum-truncation-levels public
open import foundation.maybe public
open import foundation.mere-decidable-embeddings public
open import foundation.mere-embeddings public
open import foundation.mere-equality public
open import foundation.mere-equivalences public
Expand Down Expand Up @@ -338,6 +339,7 @@ open import foundation.negated-equality public
open import foundation.negation public
open import foundation.noncontractible-types public
open import foundation.noninjective-maps public
open import foundation.nonsurjective-maps public
open import foundation.null-homotopic-maps public
open import foundation.operations-span-diagrams public
open import foundation.operations-spans public
Expand Down
34 changes: 18 additions & 16 deletions src/foundation/0-connected-types.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,22 +159,24 @@ is-trunc-map-ev-is-connected k {A} {B} a H K =
### 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))
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
( point a)
( is-surjective-point-is-0-connected a H)
( P))

apply-dependent-universal-property-is-0-connected :
{l1 : Level} {A : UU l1} (a : A) → is-0-connected A →
{l : Level} (P : A → Prop l) → type-Prop (P a) → (x : A) → type-Prop (P x)
apply-dependent-universal-property-is-0-connected a H P =
map-inv-equiv (equiv-dependent-universal-property-is-0-connected a H P)
module _
{l1 : Level} {A : UU l1} (a : A) (H : is-0-connected A)
{l : Level} (P : A → Prop l)
where

equiv-dependent-universal-property-is-0-connected :
((x : A) → type-Prop (P x)) ≃ type-Prop (P a)
equiv-dependent-universal-property-is-0-connected =
( equiv-universal-property-unit (type-Prop (P a))) ∘e
( equiv-dependent-universal-property-surjection-is-surjective
( point a)
( is-surjective-point-is-0-connected a H)
( P))

apply-dependent-universal-property-is-0-connected :
type-Prop (P a) → (x : A) → type-Prop (P x)
apply-dependent-universal-property-is-0-connected =
map-inv-equiv equiv-dependent-universal-property-is-0-connected
```

### A type `A` is 0-connected if and only if every fiber inclusion `B a → Σ A B` is surjective
Expand Down
2 changes: 1 addition & 1 deletion src/foundation/axiom-of-choice.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ is-set-projective-AC0 :
is-set-projective-AC0 ac X A B f h =
map-trunc-Prop
( ( map-Σ
( λ g → ((map-surjection f) ∘ g) = h)
( λ g → map-surjection f ∘ g = h)
( precomp h A)
( λ s H → htpy-postcomp X H h)) ∘
( section-is-split-surjective (map-surjection f)))
Expand Down
4 changes: 2 additions & 2 deletions src/foundation/cantor-schroder-bernstein-escardo.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Escardó proved that a Cantor–Schröder–Bernstein theorem also holds for

```agda
module _
{l1 l2 : Level} (lem : LEM (l1 ⊔ l2))
{l1 l2 : Level} (lem : level-LEM (l1 ⊔ l2))
{A : UU l1} {B : UU l2}
where abstract

Expand All @@ -68,7 +68,7 @@ module _

```agda
module _
{l1 l2 : Level} (lem : LEM (l1 ⊔ l2))
{l1 l2 : Level} (lem : level-LEM (l1 ⊔ l2))
(A : Set l1) (B : Set l2)
where abstract

Expand Down
125 changes: 104 additions & 21 deletions src/foundation/connected-maps.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,19 @@ if its [fibers](foundation-core.fibers-of-maps.md) are
### Connected maps

```agda
is-connected-map-Prop :
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} → (A → B)Prop (l1 ⊔ l2)
is-connected-map-Prop k {B = B} f =
Π-Prop B (λ b → is-connected-Prop k (fiber f b))

is-connected-map :
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} → (A → B) → UU (l1 ⊔ l2)
is-connected-map k f = type-Prop (is-connected-map-Prop k f)

is-prop-is-connected-map :
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} (f : A → B) →
is-prop (is-connected-map k f)
is-prop-is-connected-map k f = is-prop-type-Prop (is-connected-map-Prop k f)
module _
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} (f : AB)
where

is-connected-map-Prop : Prop (l1 ⊔ l2)
is-connected-map-Prop =
Π-Prop B (λ b → is-connected-Prop k (fiber f b))

is-connected-map : UU (l1 ⊔ l2)
is-connected-map = type-Prop is-connected-map-Prop

is-prop-is-connected-map : is-prop is-connected-map
is-prop-is-connected-map = is-prop-type-Prop is-connected-map-Prop
```

### The type of connected maps between two types
Expand Down Expand Up @@ -325,6 +325,34 @@ is-connected-map-left-factor k {g = g} {h} H GH z =
( is-connected-equiv' (compute-fiber-comp g h z) (GH z))
```

### Composition and cancellation in commuting triangles

```agda
module _
{l1 l2 l3 : Level} {k : 𝕋} {A : UU l1} {B : UU l2} {X : UU l3}
(f : A → X) (g : B → X) (h : A → B) (K : f ~ g ∘ h)
where

abstract
is-connected-map-left-map-triangle :
is-connected-map k h →
is-connected-map k g →
is-connected-map k f
is-connected-map-left-map-triangle H G =
is-connected-map-htpy k K
( is-connected-map-comp k G H)

abstract
is-connected-map-right-map-triangle :
is-connected-map k f →
is-connected-map k h →
is-connected-map k g
is-connected-map-right-map-triangle F H =
is-connected-map-left-factor k
( H)
( is-connected-map-htpy' k K F)
```

### The total map induced by a family of maps is `k`-connected if and only if all maps in the family are `k`-connected

```agda
Expand Down Expand Up @@ -377,14 +405,26 @@ module _
is-equiv (precomp-Π f (λ b → type-Truncated-Type (P b)))

module _
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} {f : A → B}
{l1 l2 : Level} {k : 𝕋} {A : UU l1} {B : UU l2} {f : A → B}
(H : is-connected-map k f)
where

dependent-universal-property-is-connected-map :
is-connected-map k f → dependent-universal-property-connected-map k f
dependent-universal-property-is-connected-map H P =
is-equiv-precomp-Π-fiber-condition
( λ b → is-equiv-diagonal-exponential-is-connected (P b) (H b))
abstract
dependent-universal-property-is-connected-map :
dependent-universal-property-connected-map k f
dependent-universal-property-is-connected-map P =
is-equiv-precomp-Π-fiber-condition
( λ b → is-equiv-diagonal-exponential-is-connected (P b) (H b))

module _
{l1 l2 : Level} {k : 𝕋} {A : UU l1} {B : UU l2} (f : connected-map k A B)
where

dup-connected-map :
dependent-universal-property-connected-map k (map-connected-map f)
dup-connected-map =
dependent-universal-property-is-connected-map
( is-connected-map-connected-map f)

module _
{l1 l2 : Level} (k : 𝕋) {A : UU l1} {B : UU l2} (f : connected-map k A B)
Expand All @@ -397,11 +437,54 @@ module _
pr1 (equiv-dependent-universal-property-is-connected-map P) =
precomp-Π (map-connected-map f) (λ b → type-Truncated-Type (P b))
pr2 (equiv-dependent-universal-property-is-connected-map P) =
dependent-universal-property-is-connected-map k
dependent-universal-property-is-connected-map
( is-connected-map-connected-map f)
( P)
```

### The induction principle for connected maps

```agda
module _
{l1 l2 : Level} {k : 𝕋} {A : UU l1} {B : UU l2} {f : A → B}
(H : is-connected-map k f)
where

ind-is-connected-map :
{l3 : Level} (P : B → Truncated-Type l3 k) →
((a : A) → type-Truncated-Type (P (f a))) →
(b : B) → type-Truncated-Type (P b)
ind-is-connected-map P =
map-inv-is-equiv (dependent-universal-property-is-connected-map H P)

compute-ind-is-connected-map :
{l3 : Level} (P : B → Truncated-Type l3 k) →
(g : (a : A) → type-Truncated-Type (P (f a))) →
(x : A) → ind-is-connected-map P g (f x) = g x
compute-ind-is-connected-map P f =
htpy-eq
( is-section-map-inv-is-equiv
( dependent-universal-property-is-connected-map H P)
( f))

module _
{l1 l2 : Level} {k : 𝕋} {A : UU l1} {B : UU l2} (f : connected-map k A B)
where

ind-connected-map :
{l3 : Level} (P : B → Truncated-Type l3 k) →
((a : A) → type-Truncated-Type (P (map-connected-map f a))) →
(b : B) → type-Truncated-Type (P b)
ind-connected-map = ind-is-connected-map (is-connected-map-connected-map f)

compute-ind-connected-map :
{l3 : Level} (P : B → Truncated-Type l3 k) →
(g : (a : A) → type-Truncated-Type (P (map-connected-map f a))) →
(x : A) → ind-connected-map P g (map-connected-map f x) = g x
compute-ind-connected-map =
compute-ind-is-connected-map (is-connected-map-connected-map f)
```

### A map that satisfies the dependent universal property for connected maps is a connected map

**Proof:** Consider a map `f : A → B` such that the precomposition function
Expand Down Expand Up @@ -510,7 +593,7 @@ abstract
( precomp-Π f (λ b → type-Truncated-Type (P b)))
is-trunc-map-precomp-Π-is-connected-map k neg-two-𝕋 H P =
is-contr-map-is-equiv
( dependent-universal-property-is-connected-map k H
( dependent-universal-property-is-connected-map H
( λ b →
pair
( type-Truncated-Type (P b))
Expand Down
4 changes: 2 additions & 2 deletions src/foundation/decidable-embeddings.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,8 +219,8 @@ is-decidable-emb-id :
{l : Level} {A : UU l} → is-decidable-emb (id {A = A})
is-decidable-emb-id = (is-emb-id , is-decidable-map-id)

decidable-emb-id : {l : Level} {A : UU l} → A ↪ᵈ A
decidable-emb-id = (id , is-decidable-emb-id)
id-decidable-emb : {l : Level} {A : UU l} → A ↪ᵈ A
id-decidable-emb = (id , is-decidable-emb-id)

is-decidable-prop-map-id :
{l : Level} {A : UU l} → is-decidable-prop-map (id {A = A})
Expand Down
2 changes: 1 addition & 1 deletion src/foundation/diaconescus-theorem.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ instance-theorem-Diaconescu P ac-P =
( ac-P is-surjective-map-surjection-bool-suspension)

theorem-Diaconescu :
{l : Level} → level-AC0 l l → LEM l
{l : Level} → level-AC0 l l → level-LEM l
theorem-Diaconescu ac P =
instance-theorem-Diaconescu P
( ac (suspension-set-Prop P) (fiber map-surjection-bool-suspension))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ is-epimorphism-is-truncation-equivalence-Truncated-Type :
is-truncation-equivalence k f →
is-epimorphism-Truncated-Type k f
is-epimorphism-is-truncation-equivalence-Truncated-Type k f H X =
is-emb-is-equiv (is-equiv-precomp-is-truncation-equivalence k f H X)
is-emb-is-equiv (is-equiv-precomp-is-truncation-equivalence H X)
```

### A map is a `k`-epimorphism if and only if its `k`-truncation is a `k`-epimorphism
Expand Down Expand Up @@ -283,8 +283,7 @@ module _
is-epimorphism-Truncated-Type k f →
is-truncation-equivalence k (codiagonal-map f)
is-truncation-equivalence-codiagonal-map-is-epimorphism-Truncated-Type e =
is-truncation-equivalence-is-equiv-precomp k
( codiagonal-map f)
is-truncation-equivalence-is-equiv-precomp
( λ l X →
is-equiv-right-factor
( ( horizontal-map-cocone f f) ∘
Expand Down Expand Up @@ -330,7 +329,7 @@ module _
( is-equiv-comp
( map-equiv (equiv-up-pushout f f (type-Truncated-Type X)))
( precomp (codiagonal-map f) (type-Truncated-Type X))
( is-equiv-precomp-is-truncation-equivalence k (codiagonal-map f) e X)
(is-equiv-precomp-is-truncation-equivalence e X)
( is-equiv-map-equiv (equiv-up-pushout f f (type-Truncated-Type X))))

is-epimorphism-is-truncation-equivalence-codiagonal-map-Truncated-Type :
Expand Down
Loading