Skip to content

Commit dce614b

Browse files
committed
F_even
1 parent 8784193 commit dce614b

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

CollatzFunction/NonHalt/Main.lean

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
88147
theorem F_collatz (n: ℕ) (_ : n ≥ 1) (i: ℕ) (init_cfg: Cfg)
89148
(h : nth_cfg init_cfg i = ⟨F, ⟨one,

0 commit comments

Comments
 (0)