File tree Expand file tree Collapse file tree 1 file changed +34
-2
lines changed Expand file tree Collapse file tree 1 file changed +34
-2
lines changed Original file line number Diff line number Diff line change @@ -150,10 +150,42 @@ example : segment_length 0 = 1 := by
150
150
151
151
theorem segment_length_prop1 : ∀ n > 0 , n = 2 ^ n.size - 2 →
152
152
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
154
186
155
187
theorem segment_length_prop2 : ∀ n > 0 , ¬n = 2 ^ n.size - 2 →
156
188
segment_length (2 ^ (n + 2 ).size - 2 ) = segment_length n := by
157
- sorry
189
+ sorry
158
190
159
191
end LubySegment
You can’t perform that action at this time.
0 commit comments