@@ -84,6 +84,65 @@ cases n with
8484 . use k; omega
8585
8686
87+ variable {a b c : ℕ}
88+
89+ lemma F_even (n i: ℕ) (_ : n ≥ 1 ) (h_even: Even n) (init_cfg: Cfg)
90+ (h : nth_cfg init_cfg i = ⟨F, ⟨one,
91+ Turing.ListBlank.mk [],
92+ Turing.ListBlank.mk (List.replicate (n-1 ) one)⟩⟩) :
93+ nth_cfg init_cfg (i+(n^2 +5 *n)/2 +3 ) = ⟨F, ⟨one,
94+ Turing.ListBlank.mk [],
95+ Turing.ListBlank.mk (List.replicate ((collatz n)-1 ) one)⟩⟩
96+ := by
97+ cases n with
98+ | zero => omega
99+ | succ n => cases n with
100+ | zero => tauto
101+ | succ n => obtain ⟨k, h_even⟩ := h_even
102+ cases k with
103+ | zero => omega
104+ | succ k =>
105+ have h_even : n = 2 * k := by omega
106+ subst n
107+ forward h
108+ rw [add_comm 1 (k*2 )] at h
109+ rw [List.replicate_succ] at h
110+ simp at h
111+ rw [← (ListBlank_empty_eq_single_zero (List.replicate _ one))] at h
112+ apply B_even at h
113+ . forward h
114+ rw [add_comm 1 k] at h
115+ rw [List.replicate_succ] at h
116+ simp at h
117+ rw [← (ListBlank_empty_eq_single_zero (List.replicate _ one))] at h
118+ apply E_zeroing at h
119+ forward h
120+ apply recF at h
121+ forward h
122+ simp [collatz]
123+ ring_nf at *
124+ simp
125+ have g : k * 14 / 2 = k * 7 := by omega
126+ rw [g] at h
127+ have g : (14 + k * 18 + k ^ 2 * 4 ) / 2 = 7 + k * 9 + k ^ 2 * 2 := by omega
128+ rw [g]
129+ have g : k ^ 2 * 4 / 2 = k ^ 2 * 2 := by omega
130+ rw [g] at h
131+ ring_nf at *
132+ simp [h]
133+ simp! [Turing.ListBlank.mk]
134+ rw [Quotient.eq'']
135+ right
136+ use (3 +k)
137+ simp
138+ rw [← List.replicate_one]
139+ rw [List.replicate_append_replicate]
140+ rw [← List.replicate_succ]
141+ rw [← List.replicate_succ]
142+ ring_nf
143+ tauto
144+ . use k; omega
145+
87146-- if n ≥ 1, n -> collatz n
88147theorem F_collatz (n: ℕ) (_ : n ≥ 1 ) (i: ℕ) (init_cfg: Cfg)
89148(h : nth_cfg init_cfg i = ⟨F, ⟨one,
0 commit comments