|
1 | 1 | import GoldbachTm.Tm31.TuringMachine31
|
| 2 | +import GoldbachTm.Tm31.PBP |
2 | 3 | import Mathlib.Data.Nat.Prime.Defs
|
3 | 4 |
|
4 |
| -theorem lemma_25 (n : ℕ): ∀ (i : ℕ), |
5 |
| -nth_cfg i = some ⟨⟨25, by omega⟩, ⟨Γ.zero, Turing.ListBlank.mk (List.replicate n Γ.one), Turing.ListBlank.mk []⟩⟩ → |
6 |
| -(∃ x y, x + y = n /\ Nat.Prime x /\ Nat.Prime y) → |
7 |
| -∃ j, nth_cfg (i+j) = some ⟨⟨25, by omega⟩, ⟨Γ.zero, Turing.ListBlank.mk (List.replicate (n+2) Γ.one), Turing.ListBlank.mk []⟩⟩ |
| 5 | +theorem lemma_25 (n : ℕ) (i : ℕ) |
| 6 | +(g : |
| 7 | +nth_cfg i = some ⟨⟨25, by omega⟩, ⟨Γ.zero, Turing.ListBlank.mk (List.replicate (n+4) Γ.one), Turing.ListBlank.mk []⟩⟩ ) |
| 8 | +( hpp : (∃ x y, x + y = n+4 /\ Nat.Prime x /\ Nat.Prime y)) : |
| 9 | +∃ j, nth_cfg (i+j) = some ⟨⟨25, by omega⟩, ⟨Γ.zero, Turing.ListBlank.mk (List.replicate (n+4+2) Γ.one), Turing.ListBlank.mk []⟩⟩ |
8 | 10 | := by
|
9 |
| -sorry |
| 11 | +forward g g i |
| 12 | +repeat rw [← List.replicate_succ] at g |
| 13 | +apply (leap_26 _ _ 0) at g |
| 14 | +any_goals omega |
| 15 | +refine (?_ ∘ g) ?_ |
| 16 | +. intros g |
| 17 | + obtain ⟨k, h⟩ := g |
| 18 | + use (1+k) |
| 19 | + ring_nf at * |
| 20 | + simp [h] |
| 21 | +. obtain ⟨x, y, _, hx, hy⟩ := hpp |
| 22 | + by_cases x ≤ y |
| 23 | + . use! x, y |
| 24 | + repeat any_goals apply And.intro |
| 25 | + any_goals assumption |
| 26 | + apply Nat.Prime.two_le at hx |
| 27 | + omega |
| 28 | + . use! y, x |
| 29 | + repeat any_goals apply And.intro |
| 30 | + any_goals assumption |
| 31 | + any_goals omega |
| 32 | + apply Nat.Prime.two_le at hy |
| 33 | + omega |
10 | 34 |
|
11 | 35 | theorem halt_lemma :
|
12 | 36 | (∃ (n x y: ℕ), Even n /\ n > 2 /\ x + y = n /\ Nat.Prime x /\ Nat.Prime y) →
|
|
0 commit comments