Skip to content

Commit 84271fe

Browse files
authored
CommRing ℤ instance (#40)
* feat : instance Z CommRing * fix : typo SubNegMonoid * fix : unnecessary lemma
1 parent fd28beb commit 84271fe

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

Mathlib/Algebra/Group/Defs.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,8 @@ class SubNegMonoid (A : Type u) extends AddMonoid A, Neg A, Sub A :=
203203
(sub_eq_add_neg : ∀ a b : A, a - b = a + -b)
204204
(gsmul : ℤ → A → A := gsmul_rec)
205205
(gsmul_zero' : ∀ (a : A), gsmul 0 a = 0)
206-
(gpow_succ' (n : ℕ) (a : A) : gsmul (Int.ofNat n.succ) a = a + gsmul (Int.ofNat n) a)
207-
(gpow_neg' (n : ℕ) (a : A) : gsmul (Int.negSucc n) a = -(gsmul ↑(n.succ) a))
206+
(gsmul_succ' (n : ℕ) (a : A) : gsmul (Int.ofNat n.succ) a = a + gsmul (Int.ofNat n) a)
207+
(gsmul_neg' (n : ℕ) (a : A) : gsmul (Int.negSucc n) a = -(gsmul ↑(n.succ) a))
208208

209209
/-
210210

Mathlib/Algebra/Ring/Basic.lean

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,52 @@ instance : CommSemiring Nat where
106106
mul_zero := Nat.mul_zero
107107

108108
end Nat
109+
110+
namespace Int
111+
112+
instance : Numeric ℤ := ⟨Int.ofNat⟩
113+
114+
@[simp] theorem ofNat_eq_ofNat (n : ℕ): Numeric.ofNat n = ofNat n := rfl
115+
116+
instance : CommRing ℤ where
117+
mul_comm := Int.mul_comm
118+
mul_add := Int.distrib_left
119+
add_mul := Int.distrib_right
120+
ofNat_add := by simp [ofNat_add]
121+
ofNat_mul := by simp [ofNat_mul]
122+
ofNat_one := rfl
123+
ofNat_zero := rfl
124+
mul_one := Int.mul_one
125+
one_mul := Int.one_mul
126+
npow (n x) := HPow.hPow x n
127+
npow_zero' n := rfl
128+
npow_succ' n x := by
129+
rw [Int.mul_comm]
130+
exact rfl
131+
one := 1
132+
zero := 0
133+
mul_assoc := Int.mul_assoc
134+
add_comm := Int.add_comm
135+
add_assoc := Int.add_assoc
136+
add_zero := Int.add_zero
137+
zero_add := Int.zero_add
138+
add_left_neg := Int.add_left_neg
139+
nsmul := (·*·)
140+
nsmul_zero' := Int.zero_mul
141+
nsmul_succ' n x := by
142+
show ofNat (Nat.succ n) * x = x + ofNat n * x
143+
rw [Int.ofNat_succ, Int.distrib_right, Int.add_comm, Int.one_mul]
144+
sub_eq_add_neg a b := Int.sub_eq_add_neg
145+
gsmul := HMul.hMul
146+
gsmul_zero' := Int.zero_mul
147+
gsmul_succ' n x := by rw [Int.ofNat_succ, Int.distrib_right, Int.add_comm, Int.one_mul]
148+
gsmul_neg' n x := by
149+
cases x with
150+
| ofNat m =>
151+
rw [Int.negSucc_ofNat_ofNat, Int.ofNat_mul_ofNat]
152+
exact rfl
153+
| negSucc m =>
154+
rw [Int.mul_negSucc_ofNat_negSucc_ofNat, Int.ofNat_mul_negSucc_ofNat]
155+
exact rfl
156+
157+
end Int

0 commit comments

Comments
 (0)