@@ -49,6 +49,14 @@ lemma IF_subset_THEN_distance_between_centers (subset : (J : Set X) ⊆ J') :
4949 apply Grid_subset_ball
5050 exact (subset (Grid.c_mem_Grid))
5151
52+ lemma IF_subset_THEN_not_disjoint {A : Grid X} {B: Grid X} (h : (A : Set X) ⊆ B) :
53+ ¬ Disjoint (B : Set X) (A : Set X) := by
54+ rw [disjoint_comm]
55+ intro disjoint
56+ have nonempty := Grid.nonempty A
57+ rw [← Mathlib.Tactic.PushNeg.empty_ne_eq_nonempty] at nonempty
58+ exact nonempty (Eq.symm ((Set.disjoint_of_subset_iff_left_eq_empty h).mp disjoint))
59+
5260lemma IF_disjoint_with_ball_THEN_distance_bigger_than_radius {J : X} {r : ℝ} {pSet : Set X} {p : X}
5361 (belongs : p ∈ pSet) (h : Disjoint (Metric.ball J r) pSet) :
5462 dist J p ≥ r := by
@@ -121,15 +129,9 @@ lemma union_𝓙₅ (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u
121129 _ ⊆ ball (c cube) (4 * D ^ s cube) := by
122130 exact Grid_subset_ball (i := cube)
123131 _ ⊆ ball (c cube) (100 * D ^ (s cube + 1 )) := by
124- unfold ball
125132 intro y xy
126- rw [mem_setOf_eq] at xy ⊢
127- have numbers : 4 * (D : ℝ) ^ s cube < 100 * D ^ (s cube + 1 ) := by
128- gcongr
129- linarith
130- exact one_lt_D (X := X)
131- linarith
132- exact gt_trans numbers xy
133+ rw [ball, mem_setOf_eq] at xy ⊢
134+ exact gt_trans (calculation_16 (X := X) (s := s cube)) xy
133135 have black : ¬↑(𝓘 p) ⊆ ball (c cube) (100 * D ^ (s cube + 1 )) := by
134136 have in_𝔖₀ := 𝔗_subset_𝔖₀ (hu₁ := hu₁) (hu₂ := hu₂) (hu := hu) (h2u := h2u)
135137 rw [subset_def] at in_𝔖₀
@@ -1069,7 +1071,82 @@ irreducible_def C7_5_11 (a n : ℕ) : ℝ≥0 := 2 ^ (Z * n / 2 - 201 * (a : ℝ
10691071lemma lower_oscillation_bound (hu₁ : u₁ ∈ t) (hu₂ : u₂ ∈ t) (hu : u₁ ≠ u₂)
10701072 (h2u : 𝓘 u₁ ≤ 𝓘 u₂) (hJ : J ∈ 𝓙₅ t u₁ u₂) :
10711073 C7_5_11 a n ≤ dist_{c J, 8 * D ^ s J} (𝒬 u₁) (𝒬 u₂) := by
1072- sorry
1074+ have existsBiggerThanJ : ∃ (J' : Grid X), J ≤ J' ∧ s J' = s J + 1 := by
1075+ apply Grid.exists_scale_succ
1076+ obtain ⟨⟨Jin𝓙₀, _⟩, ⟨jIsSubset : (J : Set X) ⊆ 𝓘 u₁, smaller : s J ≤ s (𝓘 u₁)⟩⟩ := hJ
1077+ obtain ⟨p, belongs⟩ := t.nonempty' hu₁
1078+ apply lt_of_le_of_ne smaller
1079+ by_contra! h
1080+ have u₁In𝓙₀ : 𝓘 u₁ ∈ 𝓙₀ (t.𝔖₀ u₁ u₂) := by
1081+ apply mem_of_eq_of_mem (h := Jin𝓙₀)
1082+ rw [eq_comm]
1083+ apply (eq_or_disjoint h).resolve_right
1084+ have notDisjoint := IF_subset_THEN_not_disjoint jIsSubset
1085+ rw [disjoint_comm] at notDisjoint
1086+ exact notDisjoint
1087+ cases u₁In𝓙₀ with
1088+ | inl min =>
1089+ have sameScale : s (𝓘 p) = s (𝓘 u₁) := by
1090+ linarith [
1091+ (scale_mem_Icc (i := 𝓘 p)).left,
1092+ show s (𝓘 p) ≤ s (𝓘 u₁) by exact (𝓘_le_𝓘 t hu₁ belongs).2
1093+ ]
1094+ suffices s (𝓘 u₁) > s (𝓘 p) by linarith
1095+ by_contra! smaller
1096+ have pIsSubset := (𝓘_le_𝓘 t hu₁ belongs).1
1097+ apply HasSubset.Subset.not_ssubset ((fundamental_dyadic smaller).resolve_right (IF_subset_THEN_not_disjoint pIsSubset))
1098+ apply HasSubset.Subset.ssubset_of_ne pIsSubset
1099+ by_contra! sameSet
1100+ apply Forest.𝓘_ne_𝓘 (hu := hu₁) (hp := belongs)
1101+ exact Grid.inj (Prod.ext sameSet sameScale)
1102+ | inr avoidance =>
1103+ have pIn𝔖₀ : p ∈ t.𝔖₀ u₁ u₂ := 𝔗_subset_𝔖₀ (hu₁ := hu₁) (hu₂ := hu₂) (hu := hu) (h2u := h2u) belongs
1104+ apply avoidance p pIn𝔖₀
1105+ calc (𝓘 p : Set X)
1106+ _ ⊆ 𝓘 u₁ := (𝓘_le_𝓘 t hu₁ belongs).1
1107+ _ ⊆ ball (c (𝓘 u₁)) (4 * D ^ s (𝓘 u₁)) := by
1108+ exact Grid_subset_ball
1109+ _ ⊆ ball (c (𝓘 u₁)) (100 * D ^ (s (𝓘 u₁) + 1 )) := by
1110+ intro x hx
1111+ exact gt_trans (calculation_16 (X := X) (s := s (𝓘 u₁))) hx
1112+ rcases existsBiggerThanJ with ⟨J', JleJ', scaleSmaller⟩
1113+ have notIn𝓙₀ : J' ∉ 𝓙₀ (t.𝔖₀ u₁ u₂) := by
1114+ apply bigger_than_𝓙_is_not_in_𝓙₀ (sle := by linarith) (le := JleJ')
1115+ exact mem_of_mem_inter_left hJ
1116+ unfold 𝓙₀ at notIn𝓙₀
1117+ simp only [mem_setOf_eq, not_or, not_forall, Classical.not_imp, Decidable.not_not] at notIn𝓙₀
1118+ push_neg at notIn𝓙₀
1119+ obtain ⟨_, ⟨ p, pIn, pSubset ⟩⟩ := notIn𝓙₀
1120+ have thus :=
1121+ calc 2 ^ ((Z : ℝ) * n / 2 )
1122+ _ ≤ dist_{𝔠 p, D ^ 𝔰 p / 4 } (𝒬 u₁) (𝒬 u₂) := pIn.2
1123+ _ ≤ dist_{c J, 128 * D^(s J + 2 )} (𝒬 u₁) (𝒬 u₂) := by
1124+ apply cdist_mono
1125+ intro point pointIn
1126+ calc dist point (c J)
1127+ _ ≤ dist point (c J') + dist (c J') (c J) := dist_triangle ..
1128+ _ ≤ 100 * D ^ (s J' + 1 ) + dist (c J') (c J) := by
1129+ rw [ball, Set.subset_def] at pSubset
1130+ have := pSubset point (ball_subset_Grid pointIn)
1131+ rw [mem_setOf_eq] at this
1132+ gcongr
1133+ _ ≤ 100 * D ^ (s J' + 1 ) + 4 * D ^ (s J') := by
1134+ have : dist (c J) (c J') < 4 * D ^ (s J') := IF_subset_THEN_distance_between_centers (subset := JleJ'.1 )
1135+ rw [dist_comm] at this
1136+ gcongr
1137+ _ = 100 * D ^ (s J + 2 ) + 4 * D ^ (s J + 1 ) := by
1138+ rw [scaleSmaller, add_assoc, show (1 : ℤ) + 1 = 2 by rfl]
1139+ _ < 128 * D^(s J + 2 ) := by
1140+ exact calculation_11 (s J) (X := X)
1141+ _ ≤ 2 ^ (200 * (a^3 ) + 4 * a) * dist_{c J, 8 * D ^ s J} (𝒬 u₁) (𝒬 u₂) := by
1142+ rw [show 128 * (D : ℝ)^(s J + 2 ) = 2 ^(200 *a^2 + 4 ) * (8 *D^(s J)) by exact_mod_cast calculation_12 (s := s J)]
1143+ rw [calculation_13]
1144+ apply cdist_le_iterate
1145+ have := defaultD_pos a
1146+ positivity
1147+ rw [C7_5_11]
1148+ push_cast
1149+ linarith [calculation_14 (X := X) (n := n), calculation_15 (X := X) (h := thus)]
10731150
10741151/-- The constant used in `correlation_distant_tree_parts`.
10751152Has value `2 ^ (541 * a ^ 3 - Z * n / (4 * a ^ 2 + 2 * a ^ 3))` in the blueprint. -/
0 commit comments