@@ -88,6 +88,8 @@ lemma one : map_fun f (1 : 𝕎 R) = 1 := by map_fun_tac
88
88
89
89
lemma add : map_fun f (x + y) = map_fun f x + map_fun f y := by map_fun_tac
90
90
91
+ lemma sub : map_fun f (x - y) = map_fun f x - map_fun f y := by map_fun_tac
92
+
91
93
lemma mul : map_fun f (x * y) = map_fun f x * map_fun f y := by map_fun_tac
92
94
93
95
lemma neg : map_fun f (-x) = -map_fun f x := by map_fun_tac
@@ -108,9 +110,11 @@ do fn ← to_expr ```(%%fn : fin _ → ℕ → R),
108
110
to_expr ```(witt_structure_int_prop p (%%φ : mv_polynomial (fin %%k) ℤ) n) >>= note `aux none >>=
109
111
apply_fun_to_hyp ```(aeval (uncurry %%fn)) none,
110
112
`[simp only [aeval_bind₁] at aux,
111
- simp only [pi.zero_apply, pi.one_apply, pi.add_apply, pi.mul_apply, pi.neg_apply, ghost_fun],
113
+ simp only [pi.zero_apply, pi.one_apply, pi.add_apply, pi.sub_apply, pi.mul_apply, pi.neg_apply,
114
+ ghost_fun],
112
115
convert aux using 1 ; clear aux;
113
- simp only [alg_hom.map_zero, alg_hom.map_one, alg_hom.map_add, alg_hom.map_mul, alg_hom.map_neg,
116
+ simp only [alg_hom.map_zero, alg_hom.map_one, alg_hom.map_add,
117
+ alg_hom.map_sub, alg_hom.map_mul, alg_hom.map_neg,
114
118
aeval_X, aeval_rename]; refl]
115
119
end tactic
116
120
@@ -137,6 +141,9 @@ private lemma ghost_fun_one : ghost_fun (1 : 𝕎 R) = 1 := by ghost_fun_tac 1 !
137
141
private lemma ghost_fun_add : ghost_fun (x + y) = ghost_fun x + ghost_fun y :=
138
142
by ghost_fun_tac (X 0 + X 1 ) ![x.coeff, y.coeff]
139
143
144
+ private lemma ghost_fun_sub : ghost_fun (x - y) = ghost_fun x - ghost_fun y :=
145
+ by ghost_fun_tac (X 0 - X 1 ) ![x.coeff, y.coeff]
146
+
140
147
private lemma ghost_fun_mul : ghost_fun (x * y) = ghost_fun x * ghost_fun y :=
141
148
by ghost_fun_tac (X 0 * X 1 ) ![x.coeff, y.coeff]
142
149
@@ -172,18 +179,18 @@ include hp
172
179
173
180
local attribute [instance]
174
181
private def comm_ring_aux₁ : comm_ring (𝕎 (mv_polynomial R ℚ)) :=
175
- (ghost_equiv' p (mv_polynomial R ℚ)).injective.comm_ring (ghost_fun)
176
- ghost_fun_zero ghost_fun_one ghost_fun_add ghost_fun_mul ghost_fun_neg
182
+ (ghost_equiv' p (mv_polynomial R ℚ)).injective.comm_ring_sub (ghost_fun)
183
+ ghost_fun_zero ghost_fun_one ghost_fun_add ghost_fun_mul ghost_fun_neg ghost_fun_sub
177
184
178
185
local attribute [instance]
179
186
private def comm_ring_aux₂ : comm_ring (𝕎 (mv_polynomial R ℤ)) :=
180
- (map_fun.injective _ $ map_injective (int.cast_ring_hom ℚ) int.cast_injective).comm_ring _
181
- (map_fun.zero _) (map_fun.one _) (map_fun.add _) (map_fun.mul _) (map_fun.neg _)
187
+ (map_fun.injective _ $ map_injective (int.cast_ring_hom ℚ) int.cast_injective).comm_ring_sub _
188
+ (map_fun.zero _) (map_fun.one _) (map_fun.add _) (map_fun.mul _) (map_fun.neg _) (map_fun.sub _)
182
189
183
190
/-- The commutative ring structure on `𝕎 R`. -/
184
191
instance : comm_ring (𝕎 R) :=
185
- (map_fun.surjective _ $ counit_surjective _).comm_ring (map_fun $ mv_polynomial.counit _)
186
- (map_fun.zero _) (map_fun.one _) (map_fun.add _) (map_fun.mul _) (map_fun.neg _)
192
+ (map_fun.surjective _ $ counit_surjective _).comm_ring_sub (map_fun $ mv_polynomial.counit _)
193
+ (map_fun.zero _) (map_fun.one _) (map_fun.add _) (map_fun.mul _) (map_fun.neg _) (map_fun.sub _)
187
194
188
195
variables {p R}
189
196
0 commit comments