Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 23bd09a

Browse files
committed
chore(deprecated/ring): removing uses (#3577)
This strips out a lot of the use of `deprecated.ring`. It's now only imported by `data.polynomial.eval`, and `ring_theory.free_ring`. Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
1 parent 7d4d985 commit 23bd09a

File tree

14 files changed

+92
-96
lines changed

14 files changed

+92
-96
lines changed

src/algebra/direct_limit.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ ideal.quotient.eq.2 $ subset_span $ or.inl ⟨i, j, hij, x, rfl⟩
308308
@[simp] lemma of_neg (i x) : of G f i (-x) = -of G f i x := is_ring_hom.map_neg _
309309
@[simp] lemma of_sub (i x y) : of G f i (x - y) = of G f i x - of G f i y := is_ring_hom.map_sub _
310310
@[simp] lemma of_mul (i x y) : of G f i (x * y) = of G f i x * of G f i y := is_ring_hom.map_mul _
311-
@[simp] lemma of_pow (i x) (n : ℕ) : of G f i (x ^ n) = of G f i x ^ n := is_semiring_hom.map_pow _ _ _
311+
@[simp] lemma of_pow (i x) (n : ℕ) : of G f i (x ^ n) = of G f i x ^ n := is_monoid_hom.map_pow _ _ _
312312

313313
/-- Every element of the direct limit corresponds to some element in
314314
some component of the directed system. -/

src/algebra/group_power.lean

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import algebra.opposites
77
import data.list.basic
88
import data.int.cast
99
import data.equiv.basic
10-
import deprecated.ring
10+
import deprecated.group
1111

1212
/-!
1313
# Power operations on monoids and groups
@@ -459,10 +459,6 @@ f.to_monoid_hom.map_pow a
459459

460460
end ring_hom
461461

462-
lemma is_semiring_hom.map_pow [semiring R] [semiring S] (f : R → S) [is_semiring_hom f] (a) :
463-
∀ n : ℕ, f (a ^ n) = (f a) ^ n :=
464-
is_monoid_hom.map_pow f a
465-
466462
theorem neg_one_pow_eq_or [ring R] : ∀ n : ℕ, (-1 : R)^n = 1 ∨ (-1 : R)^n = -1
467463
| 0 := or.inl rfl
468464
| (n+1) := (neg_one_pow_eq_or n).swap.imp

src/algebra/group_with_zero.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Johan Commelin
55
-/
66
import logic.nontrivial
7-
import algebra.group.commute
87
import algebra.group.units_hom
98
import algebra.group.inj_surj
109

src/data/complex/exponential.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ begin
481481
rw [← lim_conj],
482482
refine congr_arg lim (cau_seq.ext (λ _, _)),
483483
dsimp [exp', function.comp, cau_seq_conj],
484-
rw ← sum_hom _ conj,
484+
rw conj.map_sum,
485485
refine sum_congr rfl (λ n hn, _),
486486
rw [conj.map_div, conj.map_pow, ← of_real_nat_cast, conj_of_real]
487487
end

src/data/equiv/ring.lean

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
66
import data.equiv.mul_add
77
import algebra.field
88
import algebra.opposites
9-
import deprecated.ring
109

1110
/-!
1211
# (Semi)ring equivs
@@ -173,12 +172,6 @@ abbreviation to_monoid_hom (e : R ≃+* S) : R →* S := e.to_ring_hom.to_monoid
173172
/-- Reinterpret a ring equivalence as an `add_monoid` homomorphism. -/
174173
abbreviation to_add_monoid_hom (e : R ≃+* S) : R →+ S := e.to_ring_hom.to_add_monoid_hom
175174

176-
/-- Interpret an equivalence `f : R ≃ S` as a ring equivalence `R ≃+* S`. -/
177-
def of (e : R ≃ S) [is_semiring_hom e] : R ≃+* S :=
178-
{ .. e, .. monoid_hom.of e, .. add_monoid_hom.of e }
179-
180-
instance (e : R ≃+* S) : is_semiring_hom e := e.to_ring_hom.is_semiring_hom
181-
182175
@[simp]
183176
lemma to_ring_hom_refl : (ring_equiv.refl R).to_ring_hom = ring_hom.id R := rfl
184177

@@ -213,18 +206,6 @@ end mul_equiv
213206

214207
namespace ring_equiv
215208

216-
section ring_hom
217-
218-
variables [ring R] [ring S]
219-
220-
/-- Interpret an equivalence `f : R ≃ S` as a ring equivalence `R ≃+* S`. -/
221-
def of' (e : R ≃ S) [is_ring_hom e] : R ≃+* S :=
222-
{ .. e, .. monoid_hom.of e, .. add_monoid_hom.of e }
223-
224-
instance (e : R ≃+* S) : is_ring_hom e := e.to_ring_hom.is_ring_hom
225-
226-
end ring_hom
227-
228209
/-- Two ring isomorphisms agree if they are defined by the
229210
same underlying function. -/
230211
@[ext] lemma ext {R S : Type*} [has_mul R] [has_add R] [has_mul S] [has_add S]

src/data/mv_polynomial.lean

Lines changed: 34 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -239,17 +239,17 @@ finsupp.induction p (suffices P (monomial 0 0), by rwa monomial_zero at this,
239239

240240

241241
lemma hom_eq_hom [semiring γ]
242-
(f g : mv_polynomial σ α → γ) (hf : is_semiring_hom f) (hg : is_semiring_hom g)
242+
(f g : mv_polynomial σ α →+* γ)
243243
(hC : ∀a:α, f (C a) = g (C a)) (hX : ∀n:σ, f (X n) = g (X n)) (p : mv_polynomial σ α) :
244244
f p = g p :=
245245
mv_polynomial.induction_on p hC
246246
begin assume p q hp hq, rw [is_semiring_hom.map_add f, is_semiring_hom.map_add g, hp, hq] end
247247
begin assume p n hp, rw [is_semiring_hom.map_mul f, is_semiring_hom.map_mul g, hp, hX] end
248248

249-
lemma is_id (f : mv_polynomial σ α → mv_polynomial σ α) (hf : is_semiring_hom f)
249+
lemma is_id (f : mv_polynomial σ α →+* mv_polynomial σ α)
250250
(hC : ∀a:α, f (C a) = (C a)) (hX : ∀n:σ, f (X n) = (X n)) (p : mv_polynomial σ α) :
251251
f p = p :=
252-
hom_eq_hom f id hf is_semiring_hom.id hC hX p
252+
hom_eq_hom f (ring_hom.id _) hC hX p
253253

254254
section coeff
255255

@@ -593,13 +593,11 @@ end eval
593593

594594
section map
595595
variables [comm_semiring β]
596-
variables (f : α → β)
596+
variables (f : α →+* β)
597597

598598
/-- `map f p` maps a polynomial `p` across a ring hom `f` -/
599599
def map : mv_polynomial σ α → mv_polynomial σ β := eval₂ (C ∘ f) X
600600

601-
variables [is_semiring_hom f]
602-
603601
instance is_semiring_hom_C_f :
604602
is_semiring_hom ((C : β → mv_polynomial σ β) ∘ f) :=
605603
is_semiring_hom.comp _ _
@@ -626,12 +624,12 @@ instance map.is_semiring_hom :
626624
is_semiring_hom (map f : mv_polynomial σ α → mv_polynomial σ β) :=
627625
eval₂.is_semiring_hom _ _
628626

629-
theorem map_id : ∀ (p : mv_polynomial σ α), map id p = p := eval₂_eta
627+
theorem map_id : ∀ (p : mv_polynomial σ α), map (ring_hom.id α) p = p := eval₂_eta
630628

631629
theorem map_map [comm_semiring γ]
632-
(g : β → γ) [is_semiring_hom g]
630+
(g : β →+* γ)
633631
(p : mv_polynomial σ α) :
634-
map g (map f p) = map (g f) p :=
632+
map g (map f p) = map (g.comp f) p :=
635633
(eval₂_comp_left (map g) (C ∘ f) X p).trans $
636634
by congr; funext a; simp
637635

@@ -644,8 +642,7 @@ begin
644642
end
645643

646644
lemma eval₂_comp_right {γ} [comm_semiring γ]
647-
(k : β → γ) [is_semiring_hom k]
648-
(f : α → β) [is_semiring_hom f] (g : σ → β)
645+
(k : β →+* γ) (f : α →+* β) (g : σ → β)
649646
(p) : k (eval₂ f g p) = eval₂ k (k ∘ g) (map f p) :=
650647
begin
651648
apply mv_polynomial.induction_on p,
@@ -655,7 +652,7 @@ begin
655652
rw [eval₂_mul, is_semiring_hom.map_mul k, map_mul, eval₂_mul, map_X, hp, eval₂_X, eval₂_X] }
656653
end
657654

658-
lemma map_eval₂ (f : α → β) [is_semiring_hom f] (g : γ → mv_polynomial δ α) (p : mv_polynomial γ α) :
655+
lemma map_eval₂ (f : α →+* β) (g : γ → mv_polynomial δ α) (p : mv_polynomial γ α) :
659656
map f (eval₂ C g p) = eval₂ C (map f ∘ g) (map f p) :=
660657
begin
661658
apply mv_polynomial.induction_on p,
@@ -1074,7 +1071,7 @@ end eval
10741071
section map
10751072

10761073
variables [comm_ring β]
1077-
variables (f : α → β) [is_ring_hom f]
1074+
variables (f : α →+* β)
10781075

10791076
instance is_ring_hom_C_f : is_ring_hom ((C : β → mv_polynomial σ β) ∘ f) :=
10801077
is_ring_hom.comp _ _
@@ -1151,7 +1148,7 @@ eval₂_mul _ _
11511148
rename f (p^n) = (rename f p)^n :=
11521149
eval₂_pow _ _
11531150

1154-
lemma map_rename [comm_semiring β] (f : α → β) [is_semiring_hom f]
1151+
lemma map_rename [comm_semiring β] (f : α →+* β)
11551152
(g : γ → δ) (p : mv_polynomial γ α) :
11561153
map f (rename g p) = rename g (map f p) :=
11571154
mv_polynomial.induction_on p
@@ -1289,7 +1286,8 @@ variables (α) [comm_semiring α]
12891286
def pempty_ring_equiv : mv_polynomial pempty α ≃+* α :=
12901287
{ to_fun := mv_polynomial.eval₂ id $ pempty.elim,
12911288
inv_fun := C,
1292-
left_inv := is_id _ (by apply_instance) (assume a, by rw [eval₂_C]; refl) (assume a, a.elim),
1289+
left_inv := is_id (C.comp (ring_hom.of (eval₂ id pempty.elim)))
1290+
(assume a : α, by { dsimp, rw [eval₂_C], refl }) (assume a, a.elim),
12931291
right_inv := λ r, eval₂_C _ _ _,
12941292
map_mul' := λ _ _, eval₂_mul _ _,
12951293
map_add' := λ _ _, eval₂_add _ _ }
@@ -1303,10 +1301,11 @@ def punit_ring_equiv : mv_polynomial punit α ≃+* polynomial α :=
13031301
inv_fun := polynomial.eval₂ mv_polynomial.C (X punit.star),
13041302
left_inv :=
13051303
begin
1306-
refine is_id _ _ _ _,
1307-
apply is_semiring_hom.comp (eval₂ polynomial.C (λu:punit, polynomial.X)) _; apply_instance,
1308-
{ assume a, rw [eval₂_C, polynomial.eval₂_C] },
1309-
{ rintros ⟨⟩, rw [eval₂_X, polynomial.eval₂_X] }
1304+
refine is_id
1305+
((ring_hom.of (polynomial.eval₂ mv_polynomial.C (X punit.star))).comp
1306+
(ring_hom.of (eval₂ polynomial.C (λu:punit, polynomial.X)))) _ _,
1307+
{ assume a, dsimp, rw [eval₂_C, polynomial.eval₂_C] },
1308+
{ rintros ⟨⟩, dsimp, rw [eval₂_X, polynomial.eval₂_X] }
13101309
end,
13111310
right_inv := assume p, polynomial.induction_on p
13121311
(assume a, by rw [polynomial.eval₂_C, mv_polynomial.eval₂_C])
@@ -1331,11 +1330,11 @@ def ring_equiv_congr [comm_semiring γ] (e : α ≃+* γ) : mv_polynomial β α
13311330
{ to_fun := map e,
13321331
inv_fun := map e.symm,
13331332
left_inv := assume p,
1334-
have (e.symm ∘ e) = id,
1333+
have (e.symm : γ →+* α).comp (e : α →+* γ) = ring_hom.id _,
13351334
{ ext a, exact e.symm_apply_apply a },
13361335
by simp only [map_map, this, map_id],
13371336
right_inv := assume p,
1338-
have (e e.symm) = id,
1337+
have (e : α →+* γ).comp (e.symm : γ →+* α) = ring_hom.id _,
13391338
{ ext a, exact e.apply_symm_apply a },
13401339
by simp only [map_map, this, map_id],
13411340
map_mul' := map_mul _,
@@ -1351,12 +1350,8 @@ with coefficents in multivariable polynomials in the other type.
13511350
13521351
See `sum_ring_equiv` for the ring isomorphism.
13531352
-/
1354-
def sum_to_iter : mv_polynomial (β ⊕ γ) α → mv_polynomial β (mv_polynomial γ α) :=
1355-
eval₂ (C ∘ C) (λbc, sum.rec_on bc X (C ∘ X))
1356-
1357-
instance is_semiring_hom_C_C :
1358-
is_semiring_hom (C ∘ C : α → mv_polynomial β (mv_polynomial γ α)) :=
1359-
@is_semiring_hom.comp _ _ _ _ C _ _ _ C _
1353+
def sum_to_iter : mv_polynomial (β ⊕ γ) α →+* mv_polynomial β (mv_polynomial γ α) :=
1354+
eval₂_hom (C.comp C) (λbc, sum.rec_on bc X (C ∘ X))
13601355

13611356
instance is_semiring_hom_sum_to_iter : is_semiring_hom (sum_to_iter α β γ) :=
13621357
eval₂.is_semiring_hom _ _
@@ -1377,11 +1372,8 @@ to multivariable polynomials in the sum of the two types.
13771372
13781373
See `sum_ring_equiv` for the ring isomorphism.
13791374
-/
1380-
def iter_to_sum : mv_polynomial β (mv_polynomial γ α) → mv_polynomial (β ⊕ γ) α :=
1381-
eval₂ (eval₂ C (X ∘ sum.inr)) (X ∘ sum.inl)
1382-
1383-
instance is_semiring_hom_iter_to_sum : is_semiring_hom (iter_to_sum α β γ) :=
1384-
eval₂.is_semiring_hom _ _
1375+
def iter_to_sum : mv_polynomial β (mv_polynomial γ α) →+* mv_polynomial (β ⊕ γ) α :=
1376+
eval₂_hom (ring_hom.of (eval₂ C (X ∘ sum.inr))) (X ∘ sum.inl)
13851377

13861378
lemma iter_to_sum_C_C (a : α) : iter_to_sum α β γ (C (C a)) = C a :=
13871379
eq.trans (eval₂_C _ _ (C a)) (eval₂_C _ _ _)
@@ -1394,18 +1386,18 @@ eq.trans (eval₂_C _ _ (X c)) (eval₂_X _ _ _)
13941386

13951387
/-- A helper function for `sum_ring_equiv`. -/
13961388
def mv_polynomial_equiv_mv_polynomial [comm_semiring δ]
1397-
(f : mv_polynomial β α → mv_polynomial γ δ) (hf : is_semiring_hom f)
1398-
(g : mv_polynomial γ δ → mv_polynomial β α) (hg : is_semiring_hom g)
1389+
(f : mv_polynomial β α →+* mv_polynomial γ δ)
1390+
(g : mv_polynomial γ δ →+* mv_polynomial β α)
13991391
(hfgC : ∀a, f (g (C a)) = C a)
14001392
(hfgX : ∀n, f (g (X n)) = X n)
14011393
(hgfC : ∀a, g (f (C a)) = C a)
14021394
(hgfX : ∀n, g (f (X n)) = X n) :
14031395
mv_polynomial β α ≃+* mv_polynomial γ δ :=
14041396
{ to_fun := f, inv_fun := g,
1405-
left_inv := is_id _ (is_semiring_hom.comp _ _) hgfC hgfX,
1406-
right_inv := is_id _ (is_semiring_hom.comp _ _) hfgC hfgX,
1407-
map_mul' := hf.map_mul,
1408-
map_add' := hf.map_add }
1397+
left_inv := is_id (ring_hom.comp _ _) hgfC hgfX,
1398+
right_inv := is_id (ring_hom.comp _ _) hfgC hfgX,
1399+
map_mul' := f.map_mul,
1400+
map_add' := f.map_add }
14091401

14101402
/--
14111403
The ring isomorphism between multivariable polynomials in a sum of two types,
@@ -1415,27 +1407,16 @@ with coefficents in multivariable polynomials in the other type.
14151407
def sum_ring_equiv : mv_polynomial (β ⊕ γ) α ≃+* mv_polynomial β (mv_polynomial γ α) :=
14161408
begin
14171409
apply @mv_polynomial_equiv_mv_polynomial α (β ⊕ γ) _ _ _ _
1418-
(sum_to_iter α β γ) _ (iter_to_sum α β γ) _,
1410+
(sum_to_iter α β γ) (iter_to_sum α β γ),
14191411
{ assume p,
1420-
apply hom_eq_hom _ _ _ _ _ _ p,
1421-
apply_instance,
1422-
{ apply @is_semiring_hom.comp _ _ _ _ _ _ _ _ _ _,
1423-
apply_instance,
1424-
apply @is_semiring_hom.comp _ _ _ _ _ _ _ _ _ _,
1425-
apply_instance,
1426-
{ apply_instance, },
1427-
{ apply mv_polynomial.is_semiring_hom_iter_to_sum α β γ },
1428-
{ apply mv_polynomial.is_semiring_hom_sum_to_iter α β γ } },
1429-
{ apply_instance, },
1430-
{ assume a, rw [iter_to_sum_C_C α β γ, sum_to_iter_C α β γ] },
1431-
{ assume c, rw [iter_to_sum_C_X α β γ, sum_to_iter_Xr α β γ] } },
1412+
convert hom_eq_hom ((sum_to_iter α β γ).comp ((iter_to_sum α β γ).comp C)) C _ _ p,
1413+
{ assume a, dsimp, rw [iter_to_sum_C_C α β γ, sum_to_iter_C α β γ] },
1414+
{ assume c, dsimp, rw [iter_to_sum_C_X α β γ, sum_to_iter_Xr α β γ] } },
14321415
{ assume b, rw [iter_to_sum_X α β γ, sum_to_iter_Xl α β γ] },
14331416
{ assume a, rw [sum_to_iter_C α β γ, iter_to_sum_C_C α β γ] },
14341417
{ assume n, cases n with b c,
14351418
{ rw [sum_to_iter_Xl, iter_to_sum_X] },
14361419
{ rw [sum_to_iter_Xr, iter_to_sum_C_X] } },
1437-
{ apply mv_polynomial.is_semiring_hom_sum_to_iter α β γ },
1438-
{ apply mv_polynomial.is_semiring_hom_iter_to_sum α β γ }
14391420
end
14401421

14411422
/--

src/data/polynomial/eval.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Chris Hughes, Johannes Hölzl, Scott Morrison, Jens Wagemaker
55
-/
66
import data.polynomial.induction
77
import data.polynomial.degree.basic
8+
import deprecated.ring
89

910
/-!
1011
# Theory of univariate polynomials
@@ -339,7 +340,7 @@ instance map.is_semiring_hom : is_semiring_hom (map f) :=
339340
map_add := λ _ _, eval₂_add _ _,
340341
map_mul := λ _ _, map_mul f, }
341342

342-
@[simp] lemma map_pow (n : ℕ) : (p ^ n).map f = p.map f ^ n := is_semiring_hom.map_pow (map f) _ _
343+
@[simp] lemma map_pow (n : ℕ) : (p ^ n).map f = p.map f ^ n := is_monoid_hom.map_pow (map f) _ _
343344

344345
lemma mem_map_range {p : polynomial S} :
345346
p ∈ set.range (map f) ↔ ∀ n, p.coeff n ∈ (set.range f) :=

src/deprecated/group.lean

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,35 @@ lemma inv {α β} [group α] [comm_group β] (f : α → β) [is_group_hom f] :
245245

246246
end is_group_hom
247247

248+
249+
namespace ring_hom
250+
/-!
251+
These instances look redundant, because `deprecated.ring` provides `is_ring_hom` for a `→+*`.
252+
Nevertheless these are harmless, and helpful for stripping out dependencies on `deprecated.ring`.
253+
-/
254+
variables {R : Type*} {S : Type*}
255+
256+
section
257+
variables [semiring R] [semiring S]
258+
259+
instance (f : R →+* S) : is_monoid_hom f :=
260+
{ map_one := f.map_one,
261+
map_mul := f.map_mul }
262+
263+
instance (f : R →+* S) : is_add_monoid_hom f :=
264+
{ map_zero := f.map_zero,
265+
map_add := f.map_add }
266+
end
267+
268+
section
269+
variables [ring R] [ring S]
270+
271+
instance (f : R →+* S) : is_add_group_hom f :=
272+
{ map_add := f.map_add }
273+
end
274+
275+
end ring_hom
276+
248277
/-- Inversion is a group homomorphism if the group is commutative. -/
249278
@[instance, to_additive]
250279
lemma inv.is_group_hom [comm_group α] : is_group_hom (has_inv.inv : α → α) :=

src/deprecated/ring.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Author: Mario Carneiro
55
-/
66
import deprecated.group
7-
import algebra.ring.basic
87

98
/-!
109
# Unbundled semiring and ring homomorphisms (deprecated)

0 commit comments

Comments
 (0)