@@ -5,8 +5,6 @@ Authors: Robert Y. Lewis
5
5
-/
6
6
7
7
import algebra.order.ring
8
- import data.int.basic
9
- import tactic.norm_num
10
8
11
9
/-!
12
10
# Lemmas for `linarith`
@@ -17,33 +15,6 @@ If you find yourself looking for a theorem here, you might be in the wrong place
17
15
18
16
namespace linarith
19
17
20
- lemma int.coe_nat_bit0 (n : ℕ) : (↑(bit0 n : ℕ) : ℤ) = bit0 (↑n : ℤ) := by simp [bit0]
21
- lemma int.coe_nat_bit1 (n : ℕ) : (↑(bit1 n : ℕ) : ℤ) = bit1 (↑n : ℤ) := by simp [bit1, bit0]
22
- lemma int.coe_nat_bit0_mul (n : ℕ) (x : ℕ) : (↑(bit0 n * x) : ℤ) = (↑(bit0 n) : ℤ) * (↑x : ℤ) :=
23
- by simp
24
- lemma int.coe_nat_bit1_mul (n : ℕ) (x : ℕ) : (↑(bit1 n * x) : ℤ) = (↑(bit1 n) : ℤ) * (↑x : ℤ) :=
25
- by simp
26
- lemma int.coe_nat_one_mul (x : ℕ) : (↑(1 * x) : ℤ) = 1 * (↑x : ℤ) := by simp
27
- lemma int.coe_nat_zero_mul (x : ℕ) : (↑(0 * x) : ℤ) = 0 * (↑x : ℤ) := by simp
28
- lemma int.coe_nat_mul_bit0 (n : ℕ) (x : ℕ) : (↑(x * bit0 n) : ℤ) = (↑x : ℤ) * (↑(bit0 n) : ℤ) :=
29
- by simp
30
- lemma int.coe_nat_mul_bit1 (n : ℕ) (x : ℕ) : (↑(x * bit1 n) : ℤ) = (↑x : ℤ) * (↑(bit1 n) : ℤ) :=
31
- by simp
32
- lemma int.coe_nat_mul_one (x : ℕ) : (↑(x * 1 ) : ℤ) = (↑x : ℤ) * 1 := by simp
33
- lemma int.coe_nat_mul_zero (x : ℕ) : (↑(x * 0 ) : ℤ) = (↑x : ℤ) * 0 := by simp
34
-
35
- lemma nat_eq_subst {n1 n2 : ℕ} {z1 z2 : ℤ} (hn : n1 = n2) (h1 : ↑n1 = z1) (h2 : ↑n2 = z2) :
36
- z1 = z2 :=
37
- by simpa [eq.symm h1, eq.symm h2, int.coe_nat_eq_coe_nat_iff]
38
-
39
- lemma nat_le_subst {n1 n2 : ℕ} {z1 z2 : ℤ} (hn : n1 ≤ n2) (h1 : ↑n1 = z1) (h2 : ↑n2 = z2) :
40
- z1 ≤ z2 :=
41
- by simpa [eq.symm h1, eq.symm h2, int.coe_nat_le]
42
-
43
- lemma nat_lt_subst {n1 n2 : ℕ} {z1 z2 : ℤ} (hn : n1 < n2) (h1 : ↑n1 = z1) (h2 : ↑n2 = z2) :
44
- z1 < z2 :=
45
- by simpa [eq.symm h1, eq.symm h2, int.coe_nat_lt]
46
-
47
18
lemma eq_of_eq_of_eq {α} [ordered_semiring α] {a b : α} (ha : a = 0 ) (hb : b = 0 ) : a + b = 0 :=
48
19
by simp *
49
20
@@ -75,7 +46,6 @@ by simp *
75
46
lemma eq_of_not_lt_of_not_gt {α} [linear_order α] (a b : α) (h1 : ¬ a < b) (h2 : ¬ b < a) : a = b :=
76
47
le_antisymm (le_of_not_gt h2) (le_of_not_gt h1)
77
48
78
-
79
49
-- used in the `nlinarith` normalization steps. The `_` argument is for uniformity.
80
50
@[nolint unused_arguments]
81
51
lemma mul_zero_eq {α} {R : α → α → Prop } [semiring α] {a b : α} (_ : R a 0 ) (h : b = 0 ) :
0 commit comments