Skip to content

Commit f18d5e7

Browse files
committed
feat(MonoidAlgebra): mapDomain f is injective if f is (#23482)
Also rename variable so that `k` isn't a semiring and `G` isn't a monoid. From Toric
1 parent b0e58cf commit f18d5e7

File tree

2 files changed

+24
-30
lines changed

2 files changed

+24
-30
lines changed

Mathlib/Algebra/MonoidAlgebra/MapDomain.lean

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,31 @@ import Mathlib.LinearAlgebra.Finsupp.LSum
1616

1717
assert_not_exists NonUnitalAlgHom AlgEquiv
1818

19-
noncomputable section
20-
19+
open Function
2120
open Finsupp hiding single mapDomain
2221

23-
universe u₁ u₂ u₃ u₄
22+
noncomputable section
2423

25-
variable (k : Type u₁) (G : Type u₂) (H : Type*) {R : Type*}
24+
variable {k R S G H M N : Type*}
2625

2726
/-! ### Multiplicative monoids -/
2827

2928
namespace MonoidAlgebra
3029

31-
variable {k G}
30+
section Semiring
31+
variable [Semiring R] [Semiring S] {f : M → N} {a : M} {r : R}
3232

33-
section
33+
abbrev mapDomain (f : M → N) (v : MonoidAlgebra R M) : MonoidAlgebra R N := Finsupp.mapDomain f v
3434

35-
variable [Semiring k] [NonUnitalNonAssocSemiring R]
35+
lemma mapDomain_sum (f : M → N) (s : MonoidAlgebra S M) (v : M → S → MonoidAlgebra R M) :
36+
mapDomain f (s.sum v) = s.sum fun a b ↦ mapDomain f (v a b) := Finsupp.mapDomain_sum
3637

37-
abbrev mapDomain {G' : Type*} (f : G → G') (v : MonoidAlgebra k G) : MonoidAlgebra k G' :=
38-
Finsupp.mapDomain f v
38+
lemma mapDomain_single : mapDomain f (single a r) = single (f a) r := Finsupp.mapDomain_single
3939

40-
theorem mapDomain_sum {k' G' : Type*} [Semiring k'] {f : G → G'} {s : MonoidAlgebra k' G}
41-
{v : G → k' → MonoidAlgebra k G} :
42-
mapDomain f (s.sum v) = s.sum fun a b => mapDomain f (v a b) :=
43-
Finsupp.mapDomain_sum
40+
lemma mapDomain_injective (hf : Injective f) : Injective (mapDomain (R := R) f) :=
41+
Finsupp.mapDomain_injective hf
4442

45-
end
43+
end Semiring
4644

4745

4846
section MiscTheorems
@@ -91,25 +89,20 @@ end MonoidAlgebra
9189

9290
namespace AddMonoidAlgebra
9391

94-
variable {k G}
92+
section Semiring
93+
variable [Semiring R] [Semiring S] {f : M → N} {a : M} {r : R}
9594

96-
section
97-
98-
variable [Semiring k] [NonUnitalNonAssocSemiring R]
95+
abbrev mapDomain (f : M → N) (v : R[M]) : R[N] := Finsupp.mapDomain f v
9996

100-
abbrev mapDomain {G' : Type*} (f : GG') (v : k[G]) : k[G'] :=
101-
Finsupp.mapDomain f v
97+
lemma mapDomain_sum (f : MN) (s : S[M]) (v : M → S → R[M]) :
98+
mapDomain f (s.sum v) = s.sum fun a b ↦ mapDomain f (v a b) := Finsupp.mapDomain_sum
10299

103-
theorem mapDomain_sum {k' G' : Type*} [Semiring k'] {f : G → G'} {s : AddMonoidAlgebra k' G}
104-
{v : G → k' → k[G]} :
105-
mapDomain f (s.sum v) = s.sum fun a b => mapDomain f (v a b) :=
106-
Finsupp.mapDomain_sum
100+
lemma mapDomain_single : mapDomain f (single a r) = single (f a) r := Finsupp.mapDomain_single
107101

108-
theorem mapDomain_single {G' : Type*} {f : G → G'} {a : G} {b : k} :
109-
mapDomain f (single a b) = single (f a) b :=
110-
Finsupp.mapDomain_single
102+
lemma mapDomain_injective (hf : Injective f) : Injective (mapDomain (R := R) f) :=
103+
Finsupp.mapDomain_injective hf
111104

112-
end
105+
end Semiring
113106

114107
section MiscTheorems
115108

@@ -159,7 +152,7 @@ since the changes that have made `nsmul` definitional, this would be possible,
159152
but for now we just construct the ring isomorphisms using `RingEquiv.refl _`.
160153
-/
161154

162-
155+
variable (k G) in
163156
/-- The equivalence between `AddMonoidAlgebra` and `MonoidAlgebra` in terms of
164157
`Multiplicative` -/
165158
protected def AddMonoidAlgebra.toMultiplicative [Semiring k] [Add G] :
@@ -174,6 +167,7 @@ protected def AddMonoidAlgebra.toMultiplicative [Semiring k] [Add G] :
174167
exact MonoidAlgebra.mapDomain_mul (α := Multiplicative G) (β := k)
175168
(MulHom.id (Multiplicative G)) x y }
176169

170+
variable (k G) in
177171
/-- The equivalence between `MonoidAlgebra` and `AddMonoidAlgebra` in terms of `Additive` -/
178172
protected def MonoidAlgebra.toAdditive [Semiring k] [Mul G] :
179173
MonoidAlgebra k G ≃+* AddMonoidAlgebra k (Additive G) :=

Mathlib/Algebra/MvPolynomial/Rename.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ theorem support_rename_of_injective {p : MvPolynomial σ R} {f : σ → τ} [Dec
319319
(h : Function.Injective f) :
320320
(rename f p).support = Finset.image (Finsupp.mapDomain f) p.support := by
321321
rw [rename_eq]
322-
exact Finsupp.mapDomain_support_of_injective (mapDomain_injective h) _
322+
exact Finsupp.mapDomain_support_of_injective (Finsupp.mapDomain_injective h) _
323323

324324
end Support
325325

0 commit comments

Comments
 (0)