# The Cantor–Schröder–Bernstein–Escardó theorem ```agda module foundation.cantor-schroder-bernstein-escardo where ```
Imports ```agda open import elementary-number-theory.natural-numbers open import foundation.cantor-schroder-bernstein-decidable-embeddings open import foundation.decidable-propositions open import foundation.dependent-pair-types open import foundation.function-types open import foundation.injective-maps open import foundation.law-of-excluded-middle open import foundation.propositions open import foundation.universe-levels open import foundation-core.embeddings open import foundation-core.equivalences open import foundation-core.fibers-of-maps open import foundation-core.propositional-maps open import foundation-core.sets ```
## Idea The classical Cantor–Schröder–Bernstein theorem asserts that from any pair of [injective maps](foundation-core.injective-maps.md) `f : A → B` and `g : B → A` we can construct a bijection between `A` and `B`. In a recent generalization, Escardó proved that a Cantor–Schröder–Bernstein theorem also holds for ∞-groupoids. His generalization asserts that given two types that [embed](foundation-core.embeddings.md) into each other, then the types are [equivalent](foundation-core.equivalences.md). {{#cite Esc21}} ## Theorem ### The Cantor-Schröder-Bernstein-Escardó theorem ```agda module _ {l1 l2 : Level} (lem : level-LEM (l1 ⊔ l2)) {A : UU l1} {B : UU l2} where abstract Cantor-Schröder-Bernstein-Escardó' : {f : A → B} {g : B → A} → is-emb g → is-emb f → A ≃ B Cantor-Schröder-Bernstein-Escardó' {f} {g} G F = Cantor-Schröder-Bernstein-WLPO' ( λ P → lem (Π-Prop ℕ (prop-Decidable-Prop ∘ P))) ( G , λ y → lem (fiber g y , is-prop-map-is-emb G y)) ( F , λ y → lem (fiber f y , is-prop-map-is-emb F y)) Cantor-Schröder-Bernstein-Escardó : A ↪ B → B ↪ A → A ≃ B Cantor-Schröder-Bernstein-Escardó (f , F) (g , G) = Cantor-Schröder-Bernstein-Escardó' G F ``` ## Corollaries ### The Cantor–Schröder–Bernstein theorem ```agda module _ {l1 l2 : Level} (lem : level-LEM (l1 ⊔ l2)) (A : Set l1) (B : Set l2) where abstract Cantor-Schröder-Bernstein : injection (type-Set A) (type-Set B) → injection (type-Set B) (type-Set A) → (type-Set A) ≃ (type-Set B) Cantor-Schröder-Bernstein f g = Cantor-Schröder-Bernstein-Escardó lem ( emb-injection B f) ( emb-injection A g) ``` ## References - Escardó's formalizations of this theorem can be found at . {{#cite TypeTopology}} {{#bibliography}} ## See also The Cantor–Schröder–Bernstein–Escardó theorem holds constructively for many notions of finite type, including - [Dedekind finite types](univalent-combinatorics.dedekind-finite-types.md) - [Finite types](univalent-combinatorics.finite-types.md) (unformalized) - [Finitely enumerable types](univalent-combinatorics.finitely-enumerable-types.md) - [Kuratowski finite sets](univalent-combinatorics.kuratowski-finite-sets.md) - [Subfinite types](univalent-combinatorics.subfinite-types.md) - [Subfinitely enumerable types](univalent-combinatorics.subfinitely-enumerable-types.md) ## External links - The Cantor–Schröder–Bernstein theorem is the 25th theorem on [Freek Wiedijk's](http://www.cs.ru.nl/F.Wiedijk/) list of [100 theorems](literature.100-theorems.md) {{#cite 100theorems}}.