Documentation

ZFLean.Isomorphisms

Isomorphisms of ZF sets #

This file develops the theory of isomorphisms (bijections) between ZF sets, including the Cantor–Bernstein theorem, isomorphism stability under products, powersets and function spaces, and currying/uncurrying.

Equations
Instances For
    theorem ZFSet.isIso_symm x y : ZFSet.{u_1} :
    x ≅ᶻ yy ≅ᶻ x
    theorem ZFSet.isIso_trans x y z : ZFSet.{u_1} :
    x ≅ᶻ yy ≅ᶻ zx ≅ᶻ z
    theorem ZFSet.bijective_of_injective_on_subset {A B : ZFSet.{u_1}} (B_sub : B A) {u : ZFSet.{u_1}} {hu : A.IsFunc B u} (u_inj : u.IsInjective hu) :
    ∃ (v : ZFSet.{u_1}) (hv : A.IsFunc B v), v.IsBijective hv
    theorem ZFSet.isIso_of_biembedding {E F f g : ZFSet.{u_1}} {hf : E.IsFunc F f} (f_inj : f.IsInjective hf) {hg : F.IsFunc E g} (g_inj : g.IsInjective hg) :
    E ≅ᶻ F

    Cantor–Bernstein theorem: if there are injective functions f : A → B and g : B → A, then A and B are isomorphic.

    theorem ZFSet.schroeder_bernstein {E F f g : ZFSet.{u_1}} {hf : E.IsFunc F f} (f_inj : f.IsInjective hf) {hg : F.IsFunc E g} (g_inj : g.IsInjective hg) :
    E ≅ᶻ F

    Alias of ZFSet.isIso_of_biembedding.


    Cantor–Bernstein theorem: if there are injective functions f : A → B and g : B → A, then A and B are isomorphic.

    theorem ZFSet.isIso_of_prod {A B C D : ZFSet.{u_1}} (h : A ≅ᶻ C) (h' : B ≅ᶻ D) :
    A.prod B ≅ᶻ C.prod D
    theorem ZFSet.inv_Image_of_bijective {f A B : ZFSet.{u_1}} {hf : A.IsFunc B f} (bij : f.IsBijective hf) {X : ZFSet.{u_1}} (hX : X A) :
    ((f⁻¹ )[(f[X]) ]) = X
    theorem ZFSet.Image_inv_of_bijective {f A B : ZFSet.{u_1}} {hf : A.IsFunc B f} (bij : f.IsBijective hf) {X : ZFSet.{u_1}} (hX : X B) :
    (f[((f⁻¹ )[X]) ]) = X
    theorem ZFSet.IsInjective_of_left_inverse {A B f : ZFSet.{u_1}} (hf : A.IsFunc B f) {g : ZFSet.{u_1}} (hg : B.IsFunc A g) (left_inv : (g ∘ᶻ f) hg hf = 𝟙A) :
    theorem ZFSet.IsSurjective_of_right_inverse {A B f : ZFSet.{u_1}} (hf : A.IsFunc B f) {g : ZFSet.{u_1}} (hg : B.IsFunc A g) (right_inv : (f ∘ᶻ g) hf hg = 𝟙B) :
    theorem ZFSet.isIso_of_two_sided_inverse {A B f : ZFSet.{u_1}} {hf : A.IsFunc B f} {g : ZFSet.{u_1}} {hg : B.IsFunc A g} (left_inv : (g ∘ᶻ f) hg hf = 𝟙A) (right_inv : (f ∘ᶻ g) hf hg = 𝟙B) :
    A ≅ᶻ B
    theorem ZFSet.isIso_of_funs {A B C D : ZFSet.{u_1}} (h : A ≅ᶻ C) (h' : B ≅ᶻ D) :
    A.funs B ≅ᶻ C.funs D
    theorem ZFSet.ZFNat.iso_eq_iff {n m : ZFNat} :
    n ≅ᶻ m n = m
    noncomputable def ZFSet.currify {A B C : ZFSet.{u_1}} (f : ZFSet.{u_1}) (hf : (A.prod B).IsFunc C f := by zfun) :
    Equations
    Instances For
      theorem ZFSet.currify_is_func {A B C : ZFSet.{u_1}} (f : ZFSet.{u_1}) (hf : (A.prod B).IsFunc C f := by zfun) :
      A.IsFunc (B.funs C) (currify f hf)
      noncomputable def ZFSet.uncurrify {A B C : ZFSet.{u_1}} (g : ZFSet.{u_1}) (hg : A.IsFunc (B.funs C) g := by zfun) :
      Equations
      Instances For
        theorem ZFSet.uncurrify_is_func {A B C : ZFSet.{u_1}} (g : ZFSet.{u_1}) (hg : A.IsFunc (B.funs C) g := by zfun) :
        (A.prod B).IsFunc C (uncurrify g hg)
        @[simp]
        theorem ZFSet.currify_of_uncurrify {A B C : ZFSet.{u_1}} (f : ZFSet.{u_1}) (hf : A.IsFunc (B.funs C) f := by zfun) :
        currify (uncurrify f hf) = f
        theorem ZFSet.uncurrify_of_currify {A B C : ZFSet.{u_1}} (g : ZFSet.{u_1}) (hg : (A.prod B).IsFunc C g := by zfun) :
        uncurrify (currify g hg) = g
        theorem ZFSet.isIso_curry {A B C : ZFSet.{u_1}} :
        (A.prod B).funs C ≅ᶻ A.funs (B.funs C)