LeanPool.ZFLean.Isomorphisms #
Imported Lean Pool material for LeanPool.ZFLean.Isomorphisms.
Imported ZFLean declaration.
Equations
- (A ≅ᶻ B) = ∃ (bij : ZFSet.{?u.1}) (is_func : A.IsFunc B bij), bij.IsBijective is_func
Instances For
Imported ZFLean declaration.
Equations
- ZFSet.«term_≅ᶻ_» = Lean.ParserDescr.trailingNode `ZFSet.«term_≅ᶻ_» 40 41 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≅ᶻ ") (Lean.ParserDescr.cat `term 41))
Instances For
@[implicit_reducible]
Equations
- ZFSet.instTransIsIso = { trans := ⋯ }
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)
:
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)
:
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.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)
:
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)
:
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)
:
f.IsInjective hf
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)
:
f.IsSurjective hf
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)
:
noncomputable def
ZFSet.currify
{A B C : ZFSet.{u_1}}
(f : ZFSet.{u_1})
(hf : (A.prod B).IsFunc C f := by zfun)
:
Imported ZFLean declaration.
Equations
- ZFSet.currify f hf = A.lambda (B.funs C) fun (a : ZFSet.{?u.1}) => if ha : a ∈ A then B.lambda C fun (b : ZFSet.{?u.1}) => if hb : b ∈ B then ↑(@ᶻf ⋯ ⟨a.pair b, ⋯⟩) else ∅ else ∅
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)
:
noncomputable def
ZFSet.uncurrify
{A B C : ZFSet.{u_1}}
(g : ZFSet.{u_1})
(hg : A.IsFunc (B.funs C) g := by zfun)
:
Imported ZFLean declaration.
Equations
- One or more equations did not get rendered due to their size.
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)
:
@[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)
:
theorem
ZFSet.uncurrify_of_currify
{A B C : ZFSet.{u_1}}
(g : ZFSet.{u_1})
(hg : (A.prod B).IsFunc C g := by zfun)
: