Skip to content

Commit a78a3ba

Browse files
committed
Expand proof for segment_length_prop1 with partial progress
1 parent 763e7d3 commit a78a3ba

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

LubySequence/Segment.lean

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,42 @@ example : segment_length 0 = 1 := by
150150

151151
theorem segment_length_prop1 : ∀ n > 0, n = 2 ^ n.size - 2
152152
segment_length (2 ^ (n + 2).size - 2) = 1 + segment_length n := by
153-
sorry
153+
intro n n_gt_0 n_is_envelope
154+
have segment_of_n : segment n = 2 ^ (n.size - 1) := by
155+
rw [segment]
156+
have n_gt_2 : n ≥ 2 := by
157+
by_contra n_eq_1
158+
simp at n_eq_1
159+
have : n = 1 := by exact Nat.eq_of_le_of_lt_succ n_gt_0 n_eq_1
160+
simp [this] at n_is_envelope
161+
have pow2nsize : 2 ^ n.size - 2 + 2 = 2 ^ n.size := by
162+
exact Nat.sub_add_cancel (le_pow (size_pos.mpr n_gt_0))
163+
split
164+
· expose_names
165+
rw (occs := .pos [1]) [n_is_envelope]
166+
simp [pow2nsize]
167+
replace : (2 ^ n.size).size = n.size + 1 := by exact size_pow
168+
simp [this]
169+
· expose_names
170+
simp
171+
rw (occs := .pos [2]) [n_is_envelope] at h
172+
simp [pow2nsize] at h
173+
have : (2 ^ n.size).size = n.size + 1 := by exact size_pow
174+
simp [this] at h
175+
exact absurd n_is_envelope h
176+
· intro n_eq_0
177+
have : ¬n = 0 := by exact Nat.ne_zero_of_lt n_gt_0
178+
exact absurd n_eq_0 this
179+
rw (occs := .pos [2]) [segment_length]
180+
simp [segment_of_n]
181+
have : trailing_zeros (2 ^ (n.size - 1)) = n.size - 1 := by
182+
exact trailing_zeros_prop3 (n.size - 1)
183+
simp [this]
184+
--
185+
sorry
154186

155187
theorem segment_length_prop2 : ∀ n > 0, ¬n = 2 ^ n.size - 2
156188
segment_length (2 ^ (n + 2).size - 2) = segment_length n := by
157-
sorry
189+
sorry
158190

159191
end LubySegment

0 commit comments

Comments
 (0)