Skip to content

Commit 87f042f

Browse files
committed
chore(Finsupp): move mapRange.equiv earlier (#31324)
Move `mapRange.equiv` to `Data.Finsupp.Defs` and `mapRange.addEquiv` to `Algebra.Group.Finsupp`. This lets us not import fields when defining `finsuppAntidiag`. As previously, I am basing myself off the idea that `Finsupp` will at some point in the future be generalised to other base points (rather than just `0` as it is now), and that therefore anything under `Data.Finsupp` should not be algebraic (apart from mentioning `0`).
1 parent 7f4ff1f commit 87f042f

File tree

6 files changed

+103
-151
lines changed

6 files changed

+103
-151
lines changed

Mathlib/Algebra/Group/Finsupp.lean

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,24 @@ variable {ι F M N O G H : Type*}
2323

2424
namespace Finsupp
2525
section Zero
26-
variable [Zero M] [Zero N]
26+
variable [Zero M] [Zero N] [Zero O]
2727

2828
lemma apply_single [FunLike F M N] [ZeroHomClass F M N] (e : F) (i : ι) (m : M) (b : ι) :
2929
e (single i m b) = single i (e m) b := apply_single' e (map_zero e) i m b
3030

31+
/-- Composition with a fixed zero-preserving homomorphism is itself a zero-preserving homomorphism
32+
on functions. -/
33+
@[simps]
34+
def mapRange.zeroHom (f : ZeroHom M N) : ZeroHom (ι →₀ M) (ι →₀ N) where
35+
toFun := Finsupp.mapRange f f.map_zero
36+
map_zero' := mapRange_zero
37+
38+
@[simp] lemma mapRange.zeroHom_id : mapRange.zeroHom (.id M) = .id (ι →₀ M) := by ext; simp
39+
40+
lemma mapRange.zeroHom_comp (f : ZeroHom N O) (f₂ : ZeroHom M N) :
41+
mapRange.zeroHom (ι := ι) (f.comp f₂) = (mapRange.zeroHom f).comp (mapRange.zeroHom f₂) := by
42+
ext; simp
43+
3144
end Zero
3245

3346
section AddZeroClass
@@ -327,7 +340,7 @@ instance instIsAddTorsionFree [IsAddTorsionFree M] : IsAddTorsionFree (ι →₀
327340
end AddMonoid
328341

329342
section AddCommMonoid
330-
variable [AddCommMonoid M]
343+
variable [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid O]
331344

332345
instance instAddCommMonoid : AddCommMonoid (ι →₀ M) :=
333346
fast_instance% DFunLike.coe_injective.addCommMonoid
@@ -340,6 +353,52 @@ lemma single_add_single_eq_single_add_single {k l m n : ι} {u v : M} (hu : u
340353
simp_rw [DFunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
341354
exact Pi.single_add_single_eq_single_add_single hu hv
342355

356+
/-- Composition with a fixed additive homomorphism is itself an additive homomorphism on functions.
357+
-/
358+
@[simps]
359+
def mapRange.addMonoidHom (f : M →+ N) : (ι →₀ M) →+ ι →₀ N where
360+
toFun := mapRange f f.map_zero
361+
map_zero' := mapRange_zero
362+
map_add' := mapRange_add f.map_add
363+
364+
@[simp]
365+
lemma mapRange.addMonoidHom_id :
366+
mapRange.addMonoidHom (AddMonoidHom.id M) = AddMonoidHom.id (ι →₀ M) :=
367+
AddMonoidHom.ext mapRange_id
368+
369+
lemma mapRange.addMonoidHom_comp (f : N →+ O) (g : M →+ N) :
370+
mapRange.addMonoidHom (ι := ι) (f.comp g) =
371+
(mapRange.addMonoidHom f).comp (mapRange.addMonoidHom g) := by ext; simp
372+
373+
@[simp]
374+
lemma mapRange.addMonoidHom_toZeroHom (f : M →+ N) :
375+
(mapRange.addMonoidHom f).toZeroHom = mapRange.zeroHom (ι := ι) f.toZeroHom := rfl
376+
377+
/-- `Finsupp.mapRange.AddMonoidHom` as an equiv. -/
378+
@[simps! apply]
379+
def mapRange.addEquiv (em' : M ≃+ N) : (ι →₀ M) ≃+ (ι →₀ N) where
380+
toEquiv := mapRange.equiv em' em'.map_zero
381+
__ := mapRange.addMonoidHom em'.toAddMonoidHom
382+
383+
@[simp]
384+
lemma mapRange.addEquiv_refl : mapRange.addEquiv (.refl M) = .refl (ι →₀ M) := by ext; simp
385+
386+
lemma mapRange.addEquiv_trans (e₁ : M ≃+ N) (e₂ : N ≃+ O) :
387+
mapRange.addEquiv (ι := ι) (e₁.trans e₂) =
388+
(mapRange.addEquiv e₁).trans (mapRange.addEquiv e₂) := by ext; simp
389+
390+
@[simp]
391+
lemma mapRange.addEquiv_symm (e : M ≃+ N) :
392+
(mapRange.addEquiv (ι := ι) e).symm = mapRange.addEquiv e.symm := rfl
393+
394+
@[simp]
395+
lemma mapRange.addEquiv_toAddMonoidHom (e : M ≃+ N) :
396+
mapRange.addEquiv (ι := ι) e = mapRange.addMonoidHom (ι := ι) e.toAddMonoidHom := rfl
397+
398+
@[simp]
399+
lemma mapRange.addEquiv_toEquiv (e : M ≃+ N) :
400+
mapRange.addEquiv (ι := ι) e = mapRange.equiv (ι := ι) (e : M ≃ N) e.map_zero := rfl
401+
343402
end AddCommMonoid
344403

345404
instance instNeg [NegZeroClass G] : Neg (ι →₀ G) where neg := mapRange Neg.neg neg_zero

Mathlib/Algebra/Order/Antidiag/Finsupp.lean

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Antoine Chambert-Loir, María Inés de Frutos-Fernández, Eric Wieser, Bhavik Mehta,
55
Yaël Dillies
66
-/
7+
import Mathlib.Algebra.BigOperators.Finsupp.Basic
78
import Mathlib.Algebra.Order.Antidiag.Pi
8-
import Mathlib.Data.Finsupp.Basic
99

1010
/-!
1111
# Antidiagonal of finitely supported functions as finsets
@@ -26,6 +26,8 @@ We define it using `Finset.piAntidiag s n`, the corresponding antidiagonal in `
2626
2727
-/
2828

29+
assert_not_exists Field
30+
2931
open Finsupp Function
3032

3133
variable {ι μ μ' : Type*}

Mathlib/Data/Finsupp/Basic.lean

Lines changed: 2 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ noncomputable section
3838

3939
open Finset Function
4040

41-
variable {α β γ ι M M' N P G H R S : Type*}
41+
variable {α β γ ι M N P G H R S : Type*}
4242

4343
namespace Finsupp
4444

@@ -112,94 +112,9 @@ end Finsupp
112112
section MapRange
113113

114114
namespace Finsupp
115-
116-
section Equiv
117-
118-
variable [Zero M] [Zero N] [Zero P]
119-
120-
/-- `Finsupp.mapRange` as an equiv. -/
121-
@[simps apply]
122-
def mapRange.equiv (f : M ≃ N) (hf : f 0 = 0) (hf' : f.symm 0 = 0) : (α →₀ M) ≃ (α →₀ N) where
123-
toFun := (mapRange f hf : (α →₀ M) → α →₀ N)
124-
invFun := (mapRange f.symm hf' : (α →₀ N) → α →₀ M)
125-
left_inv x := by
126-
rw [← mapRange_comp] <;> simp_rw [Equiv.symm_comp_self]
127-
· exact mapRange_id _
128-
· rfl
129-
right_inv x := by
130-
rw [← mapRange_comp] <;> simp_rw [Equiv.self_comp_symm]
131-
· exact mapRange_id _
132-
· rfl
133-
134-
@[simp]
135-
theorem mapRange.equiv_refl : mapRange.equiv (Equiv.refl M) rfl rfl = Equiv.refl (α →₀ M) :=
136-
Equiv.ext mapRange_id
137-
138-
theorem mapRange.equiv_trans (f : M ≃ N) (hf : f 0 = 0) (hf') (f₂ : N ≃ P) (hf₂ : f₂ 0 = 0) (hf₂') :
139-
(mapRange.equiv (f.trans f₂) (by rw [Equiv.trans_apply, hf, hf₂])
140-
(by rw [Equiv.symm_trans_apply, hf₂', hf']) :
141-
(α →₀ _) ≃ _) =
142-
(mapRange.equiv f hf hf').trans (mapRange.equiv f₂ hf₂ hf₂') :=
143-
Equiv.ext <| mapRange_comp f₂ hf₂ f hf ((congrArg f₂ hf).trans hf₂)
144-
145-
@[simp]
146-
theorem mapRange.equiv_symm (f : M ≃ N) (hf hf') :
147-
((mapRange.equiv f hf hf').symm : (α →₀ _) ≃ _) = mapRange.equiv f.symm hf' hf :=
148-
Equiv.ext fun _ => rfl
149-
150-
end Equiv
151-
152-
section ZeroHom
153-
154-
variable [Zero M] [Zero N] [Zero P]
155-
156-
/-- Composition with a fixed zero-preserving homomorphism is itself a zero-preserving homomorphism
157-
on functions. -/
158-
@[simps]
159-
def mapRange.zeroHom (f : ZeroHom M N) : ZeroHom (α →₀ M) (α →₀ N) where
160-
toFun := (mapRange f f.map_zero : (α →₀ M) → α →₀ N)
161-
map_zero' := mapRange_zero
162-
163-
@[simp]
164-
theorem mapRange.zeroHom_id : mapRange.zeroHom (ZeroHom.id M) = ZeroHom.id (α →₀ M) :=
165-
ZeroHom.ext mapRange_id
166-
167-
theorem mapRange.zeroHom_comp (f : ZeroHom N P) (f₂ : ZeroHom M N) :
168-
(mapRange.zeroHom (f.comp f₂) : ZeroHom (α →₀ _) _) =
169-
(mapRange.zeroHom f).comp (mapRange.zeroHom f₂) :=
170-
ZeroHom.ext <| mapRange_comp f (map_zero f) f₂ (map_zero f₂) (by simp only [comp_apply, map_zero])
171-
172-
end ZeroHom
173-
174-
section AddMonoidHom
175-
176-
variable [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P]
115+
variable [AddCommMonoid M] [AddCommMonoid N]
177116
variable {F : Type*} [FunLike F M N] [AddMonoidHomClass F M N]
178117

179-
/-- Composition with a fixed additive homomorphism is itself an additive homomorphism on functions.
180-
-/
181-
@[simps]
182-
def mapRange.addMonoidHom (f : M →+ N) : (α →₀ M) →+ α →₀ N where
183-
toFun := (mapRange f f.map_zero : (α →₀ M) → α →₀ N)
184-
map_zero' := mapRange_zero
185-
map_add' := mapRange_add f.map_add
186-
187-
@[simp]
188-
theorem mapRange.addMonoidHom_id :
189-
mapRange.addMonoidHom (AddMonoidHom.id M) = AddMonoidHom.id (α →₀ M) :=
190-
AddMonoidHom.ext mapRange_id
191-
192-
theorem mapRange.addMonoidHom_comp (f : N →+ P) (f₂ : M →+ N) :
193-
(mapRange.addMonoidHom (f.comp f₂) : (α →₀ _) →+ _) =
194-
(mapRange.addMonoidHom f).comp (mapRange.addMonoidHom f₂) :=
195-
AddMonoidHom.ext <|
196-
mapRange_comp f (map_zero f) f₂ (map_zero f₂) (by simp only [comp_apply, map_zero])
197-
198-
@[simp]
199-
theorem mapRange.addMonoidHom_toZeroHom (f : M →+ N) :
200-
(mapRange.addMonoidHom f).toZeroHom = (mapRange.zeroHom f.toZeroHom : ZeroHom (α →₀ _) _) :=
201-
ZeroHom.ext fun _ => rfl
202-
203118
theorem mapRange_multiset_sum (f : F) (m : Multiset (α →₀ M)) :
204119
mapRange f (map_zero f) m.sum = (m.map fun x => mapRange f (map_zero f) x).sum :=
205120
(mapRange.addMonoidHom (f : M →+ N) : (α →₀ _) →+ _).map_multiset_sum _
@@ -208,49 +123,6 @@ theorem mapRange_finset_sum (f : F) (s : Finset ι) (g : ι → α →₀ M) :
208123
mapRange f (map_zero f) (∑ x ∈ s, g x) = ∑ x ∈ s, mapRange f (map_zero f) (g x) :=
209124
map_sum (mapRange.addMonoidHom (f : M →+ N)) _ _
210125

211-
/-- `Finsupp.mapRange.AddMonoidHom` as an equiv. -/
212-
@[simps apply]
213-
def mapRange.addEquiv (f : M ≃+ N) : (α →₀ M) ≃+ (α →₀ N) :=
214-
{ mapRange.addMonoidHom f.toAddMonoidHom with
215-
toFun := (mapRange f f.map_zero : (α →₀ M) → α →₀ N)
216-
invFun := (mapRange f.symm f.symm.map_zero : (α →₀ N) → α →₀ M)
217-
left_inv := fun x => by
218-
rw [← mapRange_comp] <;> simp_rw [AddEquiv.symm_comp_self]
219-
· exact mapRange_id _
220-
· rfl
221-
right_inv := fun x => by
222-
rw [← mapRange_comp] <;> simp_rw [AddEquiv.self_comp_symm]
223-
· exact mapRange_id _
224-
· rfl }
225-
226-
@[simp]
227-
theorem mapRange.addEquiv_refl : mapRange.addEquiv (AddEquiv.refl M) = AddEquiv.refl (α →₀ M) :=
228-
AddEquiv.ext mapRange_id
229-
230-
theorem mapRange.addEquiv_trans (f : M ≃+ N) (f₂ : N ≃+ P) :
231-
(mapRange.addEquiv (f.trans f₂) : (α →₀ M) ≃+ (α →₀ P)) =
232-
(mapRange.addEquiv f).trans (mapRange.addEquiv f₂) :=
233-
AddEquiv.ext (mapRange_comp _ f₂.map_zero _ f.map_zero (by simp))
234-
235-
@[simp]
236-
theorem mapRange.addEquiv_symm (f : M ≃+ N) :
237-
((mapRange.addEquiv f).symm : (α →₀ _) ≃+ _) = mapRange.addEquiv f.symm :=
238-
AddEquiv.ext fun _ => rfl
239-
240-
@[simp]
241-
theorem mapRange.addEquiv_toAddMonoidHom (f : M ≃+ N) :
242-
((mapRange.addEquiv f : (α →₀ _) ≃+ _) : _ →+ _) =
243-
(mapRange.addMonoidHom f.toAddMonoidHom : (α →₀ _) →+ _) :=
244-
AddMonoidHom.ext fun _ => rfl
245-
246-
@[simp]
247-
theorem mapRange.addEquiv_toEquiv (f : M ≃+ N) :
248-
↑(mapRange.addEquiv f : (α →₀ _) ≃+ _) =
249-
(mapRange.equiv (f : M ≃ N) f.map_zero f.symm.map_zero : (α →₀ _) ≃ _) :=
250-
Equiv.ext fun _ => rfl
251-
252-
end AddMonoidHom
253-
254126
end Finsupp
255127

256128
end MapRange

Mathlib/Data/Finsupp/Defs.lean

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,15 @@ This file adds `α →₀ M` as a global notation for `Finsupp α M`.
5252
5353
We also use the following convention for `Type*` variables in this file
5454
55-
* `α`, `β`, `γ`: types with no additional structure that appear as the first argument to `Finsupp`
55+
* `α`, `β`: types with no additional structure that appear as the first argument to `Finsupp`
5656
somewhere in the statement;
5757
5858
* `ι` : an auxiliary index type;
5959
60-
* `M`, `M'`, `N`, `P`: types with `Zero` or `(Add)(Comm)Monoid` structure; `M` is also used
61-
for a (semi)module over a (semi)ring.
60+
* `M`, `N`, `O`: types with `Zero` or `(Add)(Comm)Monoid` structure;
6261
6362
* `G`, `H`: groups (commutative or not, multiplicative or additive);
6463
65-
* `R`, `S`: (semi)rings.
66-
6764
## Implementation notes
6865
6966
This file is a `noncomputable theory` and uses classical logic throughout.
@@ -80,7 +77,7 @@ noncomputable section
8077

8178
open Finset Function
8279

83-
variable {α β γ ι M M' N P G H R S : Type*}
80+
variable {α β ι M N O G H : Type*}
8481

8582
/-- `Finsupp α M`, denoted `α →₀ M`, is the type of functions `f : α → M` such that
8683
`f x = 0` for all but finitely many `x`. -/
@@ -279,7 +276,7 @@ end OfSupportFinite
279276

280277
section MapRange
281278

282-
variable [Zero M] [Zero N] [Zero P]
279+
variable [Zero M] [Zero N] [Zero O]
283280

284281
/-- The composition of `f : M → N` and `g : α →₀ M` is `mapRange f hf g : α →₀ N`,
285282
which is well-defined when `f 0 = 0`.
@@ -311,12 +308,12 @@ theorem mapRange_zero {f : M → N} {hf : f 0 = 0} : mapRange f hf (0 : α →
311308
theorem mapRange_id (g : α →₀ M) : mapRange id rfl g = g :=
312309
ext fun _ => rfl
313310

314-
theorem mapRange_comp (f : N → P) (hf : f 0 = 0) (f₂ : M → N) (hf₂ : f₂ 0 = 0) (h : (f ∘ f₂) 0 = 0)
311+
theorem mapRange_comp (f : N → O) (hf : f 0 = 0) (f₂ : M → N) (hf₂ : f₂ 0 = 0) (h : (f ∘ f₂) 0 = 0)
315312
(g : α →₀ M) : mapRange (f ∘ f₂) h g = mapRange f hf (mapRange f₂ hf₂ g) :=
316313
ext fun _ => rfl
317314

318315
@[simp]
319-
lemma mapRange_mapRange (e₁ : N → P) (e₂ : M → N) (he₁ he₂) (f : α →₀ M) :
316+
lemma mapRange_mapRange (e₁ : N → O) (e₂ : M → N) (he₁ he₂) (f : α →₀ M) :
320317
mapRange e₁ he₁ (mapRange e₂ he₂ f) = mapRange (e₁ ∘ e₂) (by simp [*]) f := ext fun _ ↦ rfl
321318

322319
theorem support_mapRange {f : M → N} {hf : f 0 = 0} {g : α →₀ M} :
@@ -359,6 +356,28 @@ lemma mapRange_surjective (e : M → N) (he₀ : e 0 = 0) (he : Surjective e) :
359356

360357
end MapRange
361358

359+
section Equiv
360+
variable [Zero M] [Zero N] [Zero O]
361+
362+
/-- `Finsupp.mapRange` as an equiv. -/
363+
@[simps apply]
364+
def mapRange.equiv (e : M ≃ N) (hf : e 0 = 0) : (ι →₀ M) ≃ (ι →₀ N) where
365+
toFun := mapRange e hf
366+
invFun := mapRange e.symm <| by simp [← hf]
367+
left_inv x := by ext; simp
368+
right_inv x := by ext; simp
369+
370+
@[simp] lemma mapRange.equiv_refl : mapRange.equiv (.refl M) rfl = .refl (ι →₀ M) := by ext; simp
371+
372+
lemma mapRange.equiv_trans (e : M ≃ N) (hf) (f₂ : N ≃ O) (hf₂) :
373+
mapRange.equiv (ι := ι) (e.trans f₂) (by rw [Equiv.trans_apply, hf, hf₂]) =
374+
(mapRange.equiv e hf).trans (mapRange.equiv f₂ hf₂) := by ext; simp
375+
376+
@[simp] lemma mapRange.equiv_symm (e : M ≃ N) (hf) :
377+
(mapRange.equiv (ι := ι) e hf).symm = mapRange.equiv e.symm (by simp [← hf]) := rfl
378+
379+
end Equiv
380+
362381
/-! ### Declarations about `embDomain` -/
363382

364383

@@ -438,12 +457,12 @@ end EmbDomain
438457

439458
section ZipWith
440459

441-
variable [Zero M] [Zero N] [Zero P]
460+
variable [Zero M] [Zero N] [Zero O]
442461

443-
/-- Given finitely supported functions `g₁ : α →₀ M` and `g₂ : α →₀ N` and function `f : M → N → P`,
444-
`Finsupp.zipWith f hf g₁ g₂` is the finitely supported function `α →₀ P` satisfying
462+
/-- Given finitely supported functions `g₁ : α →₀ M` and `g₂ : α →₀ N` and function `f : M → N → O`,
463+
`Finsupp.zipWith f hf g₁ g₂` is the finitely supported function `α →₀ O` satisfying
445464
`zipWith f hf g₁ g₂ a = f (g₁ a) (g₂ a)`, which is well-defined when `f 0 0 = 0`. -/
446-
def zipWith (f : M → N → P) (hf : f 0 0 = 0) (g₁ : α →₀ M) (g₂ : α →₀ N) : α →₀ P :=
465+
def zipWith (f : M → N → O) (hf : f 0 0 = 0) (g₁ : α →₀ M) (g₂ : α →₀ N) : α →₀ O :=
447466
onFinset
448467
(haveI := Classical.decEq α; g₁.support ∪ g₂.support)
449468
(fun a => f (g₁ a) (g₂ a))
@@ -453,11 +472,11 @@ def zipWith (f : M → N → P) (hf : f 0 0 = 0) (g₁ : α →₀ M) (g₂ : α
453472
rintro ⟨h₁, h₂⟩; rw [h₁, h₂] at H; exact H hf
454473

455474
@[simp]
456-
theorem zipWith_apply {f : M → N → P} {hf : f 0 0 = 0} {g₁ : α →₀ M} {g₂ : α →₀ N} {a : α} :
475+
theorem zipWith_apply {f : M → N → O} {hf : f 0 0 = 0} {g₁ : α →₀ M} {g₂ : α →₀ N} {a : α} :
457476
zipWith f hf g₁ g₂ a = f (g₁ a) (g₂ a) :=
458477
rfl
459478

460-
theorem support_zipWith [D : DecidableEq α] {f : M → N → P} {hf : f 0 0 = 0} {g₁ : α →₀ M}
479+
theorem support_zipWith [D : DecidableEq α] {f : M → N → O} {hf : f 0 0 = 0} {g₁ : α →₀ M}
461480
{g₂ : α →₀ N} : (zipWith f hf g₁ g₂).support ⊆ g₁.support ∪ g₂.support := by
462481
convert support_onFinset_subset
463482

Mathlib/LinearAlgebra/FreeModule/Basic.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ lemma of_ringEquiv {R R' M M'} [Semiring R] [AddCommMonoid M] [Module R M]
132132
let I := Module.Free.ChooseBasisIndex R M
133133
obtain ⟨e₃ : M ≃ₗ[R] I →₀ R⟩ := Module.Free.chooseBasis R M
134134
let e : M' ≃+ (I →₀ R') :=
135-
(e₂.symm.trans e₃).toAddEquiv.trans (Finsupp.mapRange.addEquiv (α := I) e₁.toAddEquiv)
136-
have he (x) : e x = Finsupp.mapRange.addEquiv (α := I) e₁.toAddEquiv (e₃ (e₂.symm x)) := rfl
135+
(e₂.symm.trans e₃).toAddEquiv.trans (Finsupp.mapRange.addEquiv (ι := I) e₁.toAddEquiv)
136+
have he (x) : e x = Finsupp.mapRange.addEquiv (ι := I) e₁.toAddEquiv (e₃ (e₂.symm x)) := rfl
137137
let e' : M' ≃ₗ[R'] (I →₀ R') :=
138138
{ __ := e, map_smul' := fun m x ↦ Finsupp.ext fun i ↦ by simp [he, map_smulₛₗ] }
139139
exact of_basis (.ofRepr e')

Mathlib/RingTheory/Polynomial/Opposites.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ theorem coeff_opRingEquiv (p : R[X]ᵐᵒᵖ) (n : ℕ) :
8181

8282
@[simp]
8383
theorem support_opRingEquiv (p : R[X]ᵐᵒᵖ) : (opRingEquiv R p).support = (unop p).support :=
84-
Finsupp.support_mapRange_of_injective (map_zero _) _ op_injective
84+
Finsupp.support_mapRange_of_injective (by simp) _ op_injective
8585

8686
@[simp]
8787
theorem natDegree_opRingEquiv (p : R[X]ᵐᵒᵖ) : (opRingEquiv R p).natDegree = (unop p).natDegree := by

0 commit comments

Comments
 (0)