@@ -106,3 +106,52 @@ instance : CommSemiring Nat where
106
106
mul_zero := Nat.mul_zero
107
107
108
108
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