@@ -4,10 +4,10 @@ Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Leonardo de Moura, Jeremy Avigad
5
5
-/
6
6
import Batteries.Data.Nat.Lemmas
7
- import Batteries.Logic
8
7
import Batteries.WF
9
- import Mathlib.Init.Data.Nat.Basic
10
8
import Mathlib.Util.AssertExists
9
+ import Mathlib.Mathport.Rename
10
+ import Mathlib.Data.Nat.Notation
11
11
12
12
#align_import init.data.nat.lemmas from "leanprover-community/lean" @"38b59111b2b4e6c572582b27e8937e92fc70ac02"
13
13
@@ -227,107 +227,32 @@ protected def ltByCases {a b : ℕ} {C : Sort u} (h₁ : a < b → C) (h₂ : a
227
227
228
228
/-! bit0/bit1 properties -/
229
229
section bit
230
- set_option linter.deprecated false
231
230
232
- protected theorem bit1_eq_succ_bit0 (n : ℕ) : 2 * n + 1 = succ (2 * n) :=
233
- rfl
234
- #align nat.bit1_eq_succ_bit0 Nat.bit1_eq_succ_bit0
235
-
236
- protected theorem bit1_succ_eq (n : ℕ) : 2 * (succ n) + 1 = succ (succ (2 * n + 1 )) :=
237
- Eq.trans (Nat.bit1_eq_succ_bit0 (succ n)) (congr_arg succ (Nat.bit0_succ_eq n))
238
- #align nat.bit1_succ_eq Nat.bit1_succ_eq
239
-
240
- protected theorem bit1_ne_one : ∀ {n : ℕ}, n ≠ 0 → 2 * n + 1 ≠ 1
241
- | 0 , h, _h1 => absurd rfl h
242
- | _n + 1 , _h, h1 => Nat.noConfusion h1 fun h2 => absurd h2 (succ_ne_zero _)
243
- #align nat.bit1_ne_one Nat.bit1_ne_one
244
-
245
- protected theorem bit0_ne_one : ∀ n : ℕ, 2 * n ≠ 1 := by
246
- omega
247
- #align nat.bit0_ne_one Nat.bit0_ne_one
231
+ #noalign nat.bit1_eq_succ_bit0
232
+ #noalign nat.bit1_succ_eq
233
+ #noalign nat.bit1_ne_one
234
+ #noalign nat.bit0_ne_one
248
235
249
236
#align nat.add_self_ne_one Nat.add_self_ne_one
250
237
251
- protected theorem bit1_ne_bit0 : ∀ n m : ℕ, 2 * n + 1 ≠ 2 * m := by
252
- omega
253
- #align nat.bit1_ne_bit0 Nat.bit1_ne_bit0
254
-
255
- protected theorem bit0_ne_bit1 : ∀ n m : ℕ, 2 * n ≠ 2 * m + 1 := by
256
- omega
257
- #align nat.bit0_ne_bit1 Nat.bit0_ne_bit1
258
-
259
- protected theorem bit0_inj : ∀ {n m : ℕ}, 2 * n = 2 * m → n = m := by
260
- omega
261
- #align nat.bit0_inj Nat.bit0_inj
262
-
263
- protected theorem bit1_inj : ∀ {n m : ℕ}, 2 * n + 1 = 2 * m + 1 → n = m := @fun n m h => by
264
- omega
265
- #align nat.bit1_inj Nat.bit1_inj
266
-
267
- protected theorem bit0_ne {n m : ℕ} : n ≠ m → 2 * n ≠ 2 * m := fun h₁ h₂ =>
268
- absurd (Nat.bit0_inj h₂) h₁
269
- #align nat.bit0_ne Nat.bit0_ne
270
-
271
- protected theorem bit1_ne {n m : ℕ} : n ≠ m → 2 * n + 1 ≠ 2 * m + 1 := fun h₁ h₂ =>
272
- absurd (Nat.bit1_inj h₂) h₁
273
- #align nat.bit1_ne Nat.bit1_ne
274
-
275
- protected theorem zero_ne_bit0 {n : ℕ} : n ≠ 0 → 0 ≠ 2 * n := fun h => Ne.symm (Nat.bit0_ne_zero h)
276
- #align nat.zero_ne_bit0 Nat.zero_ne_bit0
277
-
278
- protected theorem zero_ne_bit1 (n : ℕ) : 0 ≠ 2 * n + 1 :=
279
- Ne.symm (Nat.bit1_ne_zero n)
280
- #align nat.zero_ne_bit1 Nat.zero_ne_bit1
281
-
282
- protected theorem one_ne_bit0 (n : ℕ) : 1 ≠ 2 * n :=
283
- Ne.symm (Nat.bit0_ne_one n)
284
- #align nat.one_ne_bit0 Nat.one_ne_bit0
285
-
286
- protected theorem one_ne_bit1 {n : ℕ} : n ≠ 0 → 1 ≠ 2 * n + 1 := fun h => Ne.symm (Nat.bit1_ne_one h)
287
- #align nat.one_ne_bit1 Nat.one_ne_bit1
288
-
289
- protected theorem one_lt_bit1 : ∀ {n : Nat}, n ≠ 0 → 1 < 2 * n + 1
290
- | 0 , h => by contradiction
291
- | succ n, _h => by
292
- rw [Nat.bit1_succ_eq]
293
- apply succ_lt_succ
294
- apply zero_lt_succ
295
- #align nat.one_lt_bit1 Nat.one_lt_bit1
296
-
297
- protected theorem one_lt_bit0 : ∀ {n : Nat}, n ≠ 0 → 1 < 2 * n
298
- | 0 , h => by contradiction
299
- | succ n, _h => by
300
- rw [Nat.bit0_succ_eq]
301
- apply succ_lt_succ
302
- apply zero_lt_succ
303
- #align nat.one_lt_bit0 Nat.one_lt_bit0
304
-
305
- protected theorem bit0_lt {n m : Nat} (h : n < m) : 2 * n < 2 * m := by
306
- omega
307
- #align nat.bit0_lt Nat.bit0_lt
308
-
309
- protected theorem bit1_lt {n m : Nat} (h : n < m) : 2 * n + 1 < 2 * m + 1 := by
310
- omega
311
- #align nat.bit1_lt Nat.bit1_lt
312
-
313
- protected theorem bit0_lt_bit1 {n m : Nat} (h : n ≤ m) : 2 * n < 2 * m + 1 := by
314
- omega
315
- #align nat.bit0_lt_bit1 Nat.bit0_lt_bit1
316
-
317
- protected theorem bit1_lt_bit0 : ∀ {n m : Nat}, n < m → 2 * n + 1 < 2 * m := by
318
- omega
319
- #align nat.bit1_lt_bit0 Nat.bit1_lt_bit0
320
-
321
- protected theorem one_le_bit1 (n : ℕ) : 1 ≤ 2 * n + 1 :=
322
- show 1 ≤ succ (2 * n) from succ_le_succ (2 * n).zero_le
323
- #align nat.one_le_bit1 Nat.one_le_bit1
324
-
325
- protected theorem one_le_bit0 : ∀ n : ℕ, n ≠ 0 → 1 ≤ 2 * n
326
- | 0 , h => absurd rfl h
327
- | n + 1 , _h =>
328
- suffices 1 ≤ succ (succ (2 * n)) from Eq.symm (Nat.bit0_succ_eq n) ▸ this
329
- succ_le_succ (2 * n).succ.zero_le
330
- #align nat.one_le_bit0 Nat.one_le_bit0
238
+ #noalign nat.bit1_ne_bit0
239
+ #noalign nat.bit0_ne_bit1
240
+ #noalign nat.bit0_inj
241
+ #noalign nat.bit1_inj
242
+ #noalign nat.bit0_ne
243
+ #noalign nat.bit1_ne
244
+ #noalign nat.zero_ne_bit0
245
+ #noalign nat.zero_ne_bit1
246
+ #noalign nat.one_ne_bit0
247
+ #noalign nat.one_ne_bit1
248
+ #noalign nat.one_lt_bit1
249
+ #noalign nat.one_lt_bit0
250
+ #noalign nat.bit0_lt
251
+ #noalign nat.bit1_lt
252
+ #noalign nat.bit0_lt_bit1
253
+ #noalign nat.bit1_lt_bit0
254
+ #noalign nat.one_le_bit1
255
+ #noalign nat.one_le_bit0
331
256
332
257
end bit
333
258
0 commit comments