Lean source · namespace BFPP
ClopenPairs.lean
BFPP/ClopenPairs.lean · 103 lines
1import BFPP.IndexedGaps2import BFPP.ClopenCompleteness34/-! # Inseparable continuous families obtained from clopen gaps -/56namespace BFPP78set_option autoImplicit false9open Set TopologicalSpace1011universe u v w12variable {K : Type u} [TopologicalSpace K]13 {ι : Type v} {κ : Type w} [LinearOrder ι] [OrderBot ι] [LinearOrder κ] [OrderBot κ]1415noncomputable def clopenStep (C : Clopens K) : C(K, ℝ) :=16 ⟨(C : Set K).indicator (fun _ => 1), C.isClopen.continuous_indicator continuous_const⟩1718@[simp] theorem clopenStep_apply (C : Clopens K) (t : K) [Decidable (t ∈ C)] :19 clopenStep C t = if t ∈ C then 1 else 0 := by20 classical21 change (C : Set K).indicator (fun _ => (1 : ℝ)) t = _22 by_cases h : t ∈ C <;> simp [Set.indicator, h]2324noncomputable def clopenFamily (F : ι → Clopens K) (hm : Monotone F) (h₀ : F ⊥ = ⊥) :25 IncreasingFamily K ι where26 functions := fun i => clopenStep (F i)27 monotone t := by28 classical29 intro i j hij30 by_cases hi : t ∈ F i31 · have hj := hm hij hi32 simp [hi, hj]33 · simp only [clopenStep_apply, if_neg hi]34 split_ifs <;> norm_num35 bounds i t := by36 classical37 simp only [clopenStep_apply]38 split_ifs <;> norm_num39 at_bot := by40 classical41 ext t42 simp [h₀, clopenStep]4344@[simp] theorem clopenFamily_levels (F : ι → Clopens K) (hm : Monotone F) (h₀ : F ⊥ = ⊥)45 (i : ι) : (clopenFamily F hm h₀).levels i = (F i : Set K) := by46 classical47 ext t48 change (if t ∈ F i then (1 : ℝ) else 0) = 1 ↔ t ∈ F i49 by_cases h : t ∈ F i <;> simp [h]5051namespace IndexedGap5253variable [CompactSpace K] [T2Space K] [TotallyDisconnectedSpace K]5455noncomputable def toInseparablePair (g : IndexedGap (Clopens K) ι κ) :56 InseparablePair K ι κ where57 positive := clopenFamily g.lower g.lower_mono g.lower_bot58 negative := clopenFamily (fun j => (g.upper j)ᶜ)59 (fun _ _ hij => compl_le_compl (g.upper_anti hij)) (by rw [g.upper_bot, compl_top])60 orthogonal i j t := by61 classical62 change clopenStep (g.lower i) t * clopenStep (g.upper j)ᶜ t = 063 by_cases ht : t ∈ g.lower i64 · have ht' : t ∈ g.upper j := g.cross i j ht65 have ht'' : t ∉ (g.upper j)ᶜ := fun h => h ht'66 simp [ht, ht'']67 · simp [ht]68 inseparable := by69 classical70 simp only [clopenFamily_levels]71 apply Set.not_disjoint_iff.mp72 intro hd73 have hd' : Disjoint (closure (⋃ i, (g.lower i : Set K)))74 (closure (⋃ j, ((g.upper j)ᶜ : Set K))) := by75 refine hd.mono le_rfl (closure_mono ?_)76 intro t ht77 obtain ⟨j, hj⟩ := mem_iUnion.mp ht78 refine mem_iUnion.mpr ⟨j, ?_⟩79 change clopenStep (g.upper j)ᶜ t = 180 rw [clopenStep_apply]81 exact if_pos (show t ∈ (g.upper j)ᶜ from hj)82 obtain ⟨C, hC, hUC, hCV⟩ := exists_clopen_of_closed_subset_open isClosed_closure83 isClosed_closure.isOpen_compl (Set.disjoint_left.mp hd')84 apply g.no_interpolant85 refine ⟨⟨C, hC⟩, ?_, ?_⟩86 · intro i t ht87 exact hUC (subset_closure (mem_iUnion.mpr ⟨i, ht⟩))88 · intro j t ht89 by_contra hn90 exact hCV ht (subset_closure (mem_iUnion.mpr ⟨j, hn⟩))9192end IndexedGap9394theorem not_hasBFPP_of_zeroDimensional_not_ED95 [CompactSpace K] [T2Space K] [TotallyDisconnectedSpace K]96 (h : ¬ ExtremallyDisconnected K) : ¬ HasBFPP C(K, ℝ) := by97 obtain ⟨g⟩ := exists_clopen_chainGap h98 obtain ⟨ρ, σ, hρ, hσ, _, _, g'⟩ := g.exists_indexedGap99 letI : Fact (Order.IsSuccLimit ρ) := ⟨hρ⟩100 letI : Fact (Order.IsSuccLimit σ) := ⟨hσ⟩101 exact g'.some.toInseparablePair.not_hasBFPP102103end BFPPSHA-256
ddfff03e4515db66d5d8409b296f4aad506f98c7bc3e689962f69409113fc5e7