Lean source · namespace BFPP

OrdinalCofinality.lean

BFPP/OrdinalCofinality.lean · 64 lines

1import BFPP.CofinalReindexing2import BFPP.SignRealization3import Mathlib.SetTheory.Ordinal.FundamentalSequence45/-! # Regular cofinal lengths for the sign construction -/67namespace BFPP89set_option autoImplicit false10open Set Order1112universe u1314theorem exists_ordinal_cofinal_from_bot (τ : Ordinal.{u}) [hτ : Fact (IsSuccLimit τ)] :15    ∃ ρ : Ordinal.{u}, ∃ hρ : IsSuccLimit ρ, ρ.cof.ord = ρ ∧16      ∃ φ : Iio ρ → Iio τ, Monotone φ ∧ φ ⟨0, hρ.pos⟩ = ⊥ ∧ IsCofinal (range φ) := by17  classical18  let ρ := τ.cof.ord19  have hρ : IsSuccLimit ρ := by20    apply Ordinal.one_lt_cof_iff.mp21    change 1 < τ.cof.ord.cof22    rw [Ordinal.cof_ord_cof]23    exact Ordinal.one_lt_cof_iff.mpr hτ.out24  have hreg : ρ.cof.ord = ρ := by simp [ρ]25  obtain ⟨f, hf⟩ := Ordinal.exists_isFundamentalSeq (o := τ) (a := ρ) rfl26  letI : Fact (IsSuccLimit ρ) := ⟨hρ⟩27  let φ : Iio ρ → Iio τ := fun i => if i.val = 0 then ⊥ else f i28  refine ⟨ρ, hρ, hreg, φ, ?_, ?_, ?_⟩29  · intro i j hij30    by_cases hi : i.val = 031    · simp only [φ, if_pos hi]32      exact bot_le33    · have hj : j.val ≠ 0 := by34        intro hj35        exact hi (le_antisymm (hj ▸ hij) bot_le)36      simpa only [φ, if_neg hi, if_neg hj] using hf.strictMono.monotone hij37  · simp [φ]38  · intro a39    obtain ⟨_, ⟨i, rfl⟩, hai⟩ := hf.isCofinal_range a40    obtain ⟨j, hij⟩ := exists_gt i41    have hj : j.val ≠ 0 := ne_of_gt (lt_of_le_of_lt bot_le hij)42    refine ⟨φ j, mem_range_self j, ?_⟩43    simpa only [φ, if_neg hj] using hai.trans (hf.strictMono hij).le4445variable {K : Type u} [TopologicalSpace K] [CompactSpace K] [T2Space K]4647theorem exists_regular_pair_of_not_totallySeparated (hF : IsFSpace K)48    (hK : ¬ TotallySeparatedSpace K) :49    ∃ ρ : Ordinal.{u}, ∃ hρ : IsSuccLimit ρ, ρ.cof.ord = ρ ∧50      @Nonempty (@InseparablePair K (OrdinalIndex ρ) (OrdinalIndex ρ) _ _51        (@ordinalIndexOrderBot ρ ⟨hρ⟩) _ (@ordinalIndexOrderBot ρ ⟨hρ⟩)) := by52  obtain ⟨p, q, hpq, hinsep⟩ := exists_clopenInseparable_of_not_totallySeparated hK53  have hd : Disjoint (closure ({p} : Set K)) (closure ({q} : Set K)) := by54    simpa only [isClosed_singleton.closure_eq, disjoint_singleton] using hpq55  obtain ⟨seed, hp, hq⟩ := exists_sign_extension ({p} : Set K) {q} hd56  obtain ⟨d, hlimit, hd, hbefore⟩ := exists_first_bad_limit hF seed p q hinsep57    (hp p (subset_closure (mem_singleton p))) (hq q (subset_closure (mem_singleton q)))58  letI : Fact (IsSuccLimit d) := ⟨hlimit⟩59  let F := (stoppedSignChain seed d hd hbefore).toInseparablePair60  obtain ⟨ρ, hρ, hreg, φ, hφ, hφ₀, hcof⟩ := exists_ordinal_cofinal_from_bot d61  letI : Fact (IsSuccLimit ρ) := ⟨hρ⟩62  exact ⟨ρ, hρ, hreg, ⟨F.reindex φ φ hφ hφ hφ₀ hφ₀ hcof hcof⟩⟩6364end BFPP

SHA-256

b423e541276177f329dd69ac0bb14736ac76c2b7147b4ec7843f7750b5aadda6