fpvandoorn/carleson
Source indexedlemma Β· leanprover/lean4:v4.32.0
antichain_decomposition
Carleson.Discrete.ForestComplement Β· Carleson/Discrete/ForestComplement.lean:250 to 286
Source documentation
Lemma 5.5.1.
We will not use the lemma in this form, as to decompose the Carleson sum it is also crucial that the union is disjoint. This is easier to formalize by decomposing into successive terms, taking advantage of disjointess at each step, instead of doing everything in one go. Still, we keep this lemma as it corresponds to the blueprint, and the key steps of its proof will also be the key steps when doing the successive decompositions.
Exact Lean statement
lemma antichain_decomposition : πpos (X := X) β© πβαΆ = ββ βͺ ββ βͺ ββ βͺ ββ
Complete declaration
Lean source
Full Lean sourceLean 4
lemma antichain_decomposition : πpos (X := X) β© πβαΆ = ββ βͺ ββ βͺ ββ βͺ ββ := by unfold ββ ββ ββ ββ πβ; simp_rw [β inter_union_distrib_left]; ext p simp_rw [mem_inter_iff, and_congr_right_iff, mem_compl_iff, mem_union]; intro h obtain β¨k, n, hkn, splitβ© := exists_k_n_j_of_mem_πpos h have pc : p β β k n := by rcases split with ml0 | β¨_, _, mc1β© Β· exact πβ_subset_β ml0 Β· exact ββ_subset_β mc1 iterate 5 rw [mem_iUnion_iff_mem_of_mem_β β¨pc, hknβ©] pick_goal 5; Β· exact fun _ _ β¦ πβ_subset_β pick_goal 4; Β· exact fun _ _ β¦ iUnionβ_subset fun _ _ β¦ iUnionβ_subset fun _ _ β¦ πβ_subset_β pick_goal 3; Β· exact fun _ _ β¦ iUnionβ_subset fun _ _ β¦ πβ_subset_β pick_goal 2; Β· exact fun _ _ β¦ iUnionβ_subset fun _ _ β¦ iUnionβ_subset fun _ _ β¦ πβ_subset_β pick_goal -1; Β· exact fun _ _ β¦ iUnionβ_subset fun _ _ β¦ ββ
_subset_β by_cases ml0 : p β πβ k n Β· simp_rw [ml0, true_or, iff_true, mem_iUnionβ]; push Not; intros exact fun a β¦ disjoint_left.mp πβ_disjoint_ββ ml0 (ββ
_subset_ββ a) simp_rw [ml0, false_or] at split β’ obtain β¨j, hj, mc1β© := split iterate 4 rw [mem_iUnion_iff_mem_of_mem_ββ β¨mc1, hjβ©] pick_goal 4; Β· exact fun _ β¦ iUnionβ_subset fun _ _ β¦ πβ_subset_ββ pick_goal 3; Β· exact fun _ β¦ πβ_subset_ββ pick_goal 2; Β· exact fun _ β¦ iUnionβ_subset fun _ _ β¦ πβ_subset_ββ pick_goal -1; Β· exact fun _ β¦ ββ
_subset_ββ by_cases mc2 : p β ββ k n j all_goals have mc2' := mc2 simp_rw [ββ, layersAbove, mem_sdiff, not_and, mc1, true_implies, not_notMem] at mc2' Β· change p β β (l β€ Z * (n + 1)), πβ k n j l at mc2' simp_rw [mc2', true_or, iff_true]; contrapose! mc2 exact ββ
_subset_ββ.trans ββ_subset_ββ |>.trans ββ_subset_ββ mc2 change p β β (l β€ Z * (n + 1)), πβ k n j l at mc2'; simp_rw [mc2', false_or] rw [not_notMem] at mc2; by_cases ml2 : p β πβ k n j Β· simp_rw [ml2, true_or, iff_true] exact fun a β¦ disjoint_left.mp πβ_disjoint_ββ ml2 (ββ
_subset_ββ.trans ββ_subset_ββ a) simp_rw [ml2, false_or] exact notMem_ββ
_iff_mem_πβ hkn hj h mc2 ml2