Skip to main content
fpvandoorn/carleson
Source indexedlemma · leanprover/lean4:v4.32.0

antichain_L2

Carleson.Discrete.ForestComplement · Carleson/Discrete/ForestComplement.lean:541 to 588

Source documentation

Lemma 5.5.3

Exact Lean statement

lemma antichain_L2 : IsAntichain (· ≤ ·) (𝔏₂ (X := X) k n j)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma antichain_L2 : IsAntichain (·  ·) (𝔏₂ (X := X) k n j) := by  classical  by_contra h; rw [isAntichain_iff_forall_not_lt] at h; push Not at h  obtain p', mp', p, mp, l := h  have p200 : smul 2 p'  smul 200 p := by    calc      _  smul (11 / 10 + C2_1_2 a * 200) p' := by        apply smul_mono_left        calc          _  11 / 10 + 1 / 256 * (200 : ) := by gcongr; exact C2_1_2_le_inv_256 X          _  _ := by norm_num      _  _ := by        refine smul_C2_1_2 _ (by norm_num) ?_ (wiggle_order_11_10 l.le (C5_3_3_le (X := X)))        exact (𝓘_strictMono l).ne  have cp : p  ℭ₁ k n j := (𝔏₂_subset_ℭ₂.trans ℭ₂_subset_ℭ₁) mp  let C : Finset (LTSeries (ℭ₁' k n j)) := { s | s.head = p, cp }  have Cn : C.Nonempty := by    use RelSeries.singleton _ p, cp    rw [Finset.mem_filter_univ]; rfl  obtain z, mz, maxz := C.exists_max_image (·.length) Cn  rw [Finset.mem_filter_univ] at mz  by_cases mu : z.last.1  𝔘₁ k n j  · have px : z.head  z.last := z.monotone (Fin.zero_le _)    rw [mz] at px    apply absurd mp'; rw [𝔏₂, mem_setOf, not_and_or, not_not]; right; use z.last.1, mu    have : 𝓘 p' < 𝓘 p := 𝓘_strictMono l    exact (this.trans_le px.1).ne, (p200.trans px).trans (smul_mono_left (by norm_num))  · simp_rw [𝔘₁, mem_setOf, not_and, z.last.2, true_implies, not_forall, exists_prop] at mu    obtain q, mq, lq, ndjq := mu; rw [not_disjoint_iff] at ndjq; obtain ϑ, mϑ₁, mϑ₂ := ndjq    have cpos : 0 < C2_1_2 a := by rw [C2_1_2]; positivity    have s200 : smul 200 z.last.1  smul 200 q := by      refine lq.le, (?_ : ball_(q) (𝒬 q) 200  ball_(z.last.1) (𝒬 z.last.1) 200)      intro (r : Θ X) mr      rw [mem_ball] at mr mϑ₁      calc        _  dist_(z.last.1) r (𝒬 q) + dist_(z.last.1) (𝒬 q) ϑ + dist_(z.last.1) ϑ (𝒬 z.last.1) :=          dist_triangle4 ..        _  C2_1_2 a * dist_(q) r (𝒬 q) + C2_1_2 a * dist_(q) (𝒬 q) ϑ + 100 := by          gcongr <;> exact Grid.dist_strictMono lq        _  C2_1_2 a * (200 + 100) + 100 := by rw [mul_add]; gcongr; rw [dist_comm]; exact mϑ₂.le        _  (1 / 256) * 300 + 100 := by          rw [show (200 : ) + 100 = 300 by norm_num]; gcongr          exact C2_1_2_le_inv_256 X        _ < _ := by norm_num    have : z.last < q, mq := by      refine s200, (?_ : ¬(smul 200 q  smul 200 z.last.1))      rw [TileLike.le_def, not_and_or]; exact Or.inl (not_le_of_gt lq)    apply absurd maxz; push Not; use z.snoc q, mq this, by simp [C, mz], by simp