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

Commit c982179

Browse files
committed
feat(*/sub*/pointwise): lemmas about pointwise scalar actions (#17814)
1 parent ce61325 commit c982179

File tree

9 files changed

+43
-13
lines changed

9 files changed

+43
-13
lines changed

src/algebra/algebra/tower.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ span_induction hx (λ x hx, let ⟨p, q, hp, hq, hpq⟩ := set.mem_smul.1 hx in
256256
(λ x y ihx ihy, by { rw smul_add, exact add_mem ihx ihy })
257257
(λ c x hx, smul_comm c k x ▸ smul_mem _ _ hx)
258258

259-
theorem span_smul {s : set S} (hs : span R s = ⊤) (t : set A) :
259+
theorem span_smul_of_span_eq_top {s : set S} (hs : span R s = ⊤) (t : set A) :
260260
span R (s • t) = (span S t).restrict_scalars R :=
261261
le_antisymm (span_le.2 $ λ x hx, let ⟨p, q, hps, hqt, hpqx⟩ := set.mem_smul.1 hx in
262262
hpqx ▸ (span S t).smul_mem p (subset_span hqt)) $

src/algebra/module/submodule/pointwise.lean

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,13 @@ open_locale pointwise
179179
lemma smul_mem_pointwise_smul (m : M) (a : α) (S : submodule R M) : m ∈ S → a • m ∈ a • S :=
180180
(set.smul_mem_smul_set : _ → _ ∈ a • (S : set M))
181181

182+
/-- See also `submodule.smul_bot`. -/
183+
@[simp] lemma smul_bot' (a : α) : a • (⊥ : submodule R M) = ⊥ := map_bot _
184+
/-- See also `submodule.smul_sup`. -/
185+
lemma smul_sup' (a : α) (S T : submodule R M) : a • (S ⊔ T) = a • S ⊔ a • T := map_sup _ _ _
186+
lemma smul_span (a : α) (s : set M) : a • span R s = span R (a • s) := map_span _ _
187+
lemma span_smul (a : α) (s : set M) : span R (a • s) = a • span R s := eq.symm (span_image _).symm
188+
182189
instance pointwise_central_scalar [distrib_mul_action αᵐᵒᵖ M] [smul_comm_class αᵐᵒᵖ R M]
183190
[is_central_scalar α M] :
184191
is_central_scalar α (submodule R M) :=

src/group_theory/subgroup/pointwise.lean

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,11 @@ lemma mem_smul_pointwise_iff_exists (m : G) (a : α) (S : subgroup G) :
244244
m ∈ a • S ↔ ∃ (s : G), s ∈ S ∧ a • s = m :=
245245
(set.mem_smul_set : m ∈ a • (S : set G) ↔ _)
246246

247-
@[simp] lemma smul_bot (a : α) : a • (⊥ : subgroup G) = ⊥ :=
248-
by simp [set_like.ext_iff, mem_smul_pointwise_iff_exists, eq_comm]
247+
@[simp] lemma smul_bot (a : α) : a • (⊥ : subgroup G) = ⊥ := map_bot _
248+
lemma smul_sup (a : α) (S T : subgroup G) : a • (S ⊔ T) = a • S ⊔ a • T := map_sup _ _ _
249+
250+
lemma smul_closure (a : α) (s : set G) : a • closure s = closure (a • s) :=
251+
monoid_hom.map_closure _ _
249252

250253
instance pointwise_central_scalar [mul_distrib_mul_action αᵐᵒᵖ G] [is_central_scalar α G] :
251254
is_central_scalar α (subgroup G) :=

src/group_theory/submonoid/pointwise.lean

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,12 @@ lemma mem_smul_pointwise_iff_exists (m : M) (a : α) (S : submonoid M) :
197197
m ∈ a • S ↔ ∃ (s : M), s ∈ S ∧ a • s = m :=
198198
(set.mem_smul_set : m ∈ a • (S : set M) ↔ _)
199199

200+
@[simp] lemma smul_bot (a : α) : a • (⊥ : submonoid M) = ⊥ := map_bot _
201+
lemma smul_sup (a : α) (S T : submonoid M) : a • (S ⊔ T) = a • S ⊔ a • T := map_sup _ _ _
202+
203+
lemma smul_closure (a : α) (s : set M) : a • closure s = closure (a • s) :=
204+
monoid_hom.map_mclosure _ _
205+
200206
instance pointwise_central_scalar [mul_distrib_mul_action αᵐᵒᵖ M] [is_central_scalar α M] :
201207
is_central_scalar α (submonoid M) :=
202208
⟨λ a S, congr_arg (λ f : monoid.End M, S.map f) $ monoid_hom.ext $ by exact op_smul_eq_smul _⟩
@@ -293,6 +299,16 @@ open_locale pointwise
293299
lemma smul_mem_pointwise_smul (m : A) (a : α) (S : add_submonoid A) : m ∈ S → a • m ∈ a • S :=
294300
(set.smul_mem_smul_set : _ → _ ∈ a • (S : set A))
295301

302+
lemma mem_smul_pointwise_iff_exists (m : A) (a : α) (S : add_submonoid A) :
303+
m ∈ a • S ↔ ∃ (s : A), s ∈ S ∧ a • s = m :=
304+
(set.mem_smul_set : m ∈ a • (S : set A) ↔ _)
305+
306+
@[simp] lemma smul_bot (a : α) : a • (⊥ : add_submonoid A) = ⊥ := map_bot _
307+
lemma smul_sup (a : α) (S T : add_submonoid A) : a • (S ⊔ T) = a • S ⊔ a • T := map_sup _ _ _
308+
309+
@[simp] lemma smul_closure (a : α) (s : set A) : a • closure s = closure (a • s) :=
310+
add_monoid_hom.map_mclosure _ _
311+
296312
instance pointwise_central_scalar [distrib_mul_action αᵐᵒᵖ A] [is_central_scalar α A] :
297313
is_central_scalar α (add_submonoid A) :=
298314
⟨λ a S, congr_arg (λ f : add_monoid.End A, S.map f) $
@@ -313,10 +329,6 @@ lemma mem_pointwise_smul_iff_inv_smul_mem {a : α} {S : add_submonoid A} {x : A}
313329
x ∈ a • S ↔ a⁻¹ • x ∈ S :=
314330
mem_smul_set_iff_inv_smul_mem
315331

316-
lemma mem_smul_pointwise_iff_exists (m : A) (a : α) (S : add_submonoid A) :
317-
m ∈ a • S ↔ ∃ (s : A), s ∈ S ∧ a • s = m :=
318-
(set.mem_smul_set : m ∈ a • (S : set A) ↔ _)
319-
320332
lemma mem_inv_pointwise_smul_iff {a : α} {S : add_submonoid A} {x : A} : x ∈ a⁻¹ • S ↔ a • x ∈ S :=
321333
mem_inv_smul_set_iff
322334

src/ring_theory/finiteness.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ lemma trans {R : Type*} (A B : Type*) [comm_semiring R] [comm_semiring A] [algeb
502502
| ⟨⟨s, hs⟩⟩ ⟨⟨t, ht⟩⟩ := ⟨submodule.fg_def.2
503503
⟨set.image2 (•) (↑s : set A) (↑t : set B),
504504
set.finite.image2 _ s.finite_to_set t.finite_to_set,
505-
by rw [set.image2_smul, submodule.span_smul hs (↑t : set B),
505+
by rw [set.image2_smul, submodule.span_smul_of_span_eq_top hs (↑t : set B),
506506
ht, submodule.restrict_scalars_top]⟩⟩
507507

508508
end algebra

src/ring_theory/ideal/operations.lean

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,6 @@ begin
195195
simpa
196196
end
197197

198-
lemma span_smul_eq (r : R) (s : set M) : span R (r • s) = r • span R s :=
199-
by rw [← ideal_span_singleton_smul, span_smul_span, ←set.image2_eq_Union,
200-
set.image2_singleton_left, set.image_smul]
201-
202198
lemma mem_of_span_top_of_smul_mem (M' : submodule R M)
203199
(s : set R) (hs : ideal.span s = ⊤) (x : M) (H : ∀ r : s, (r : R) • x ∈ M') : x ∈ M' :=
204200
begin

src/ring_theory/local_properties.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ begin
417417
by simp_rw [algebra.algebra_map_eq_smul_one, smul_assoc, one_smul],
418418
rw [← e, this] at hx₁,
419419
replace hx₁ := congr_arg (submodule.span R) hx₁,
420-
rw submodule.span_smul_eq at hx₁,
420+
rw submodule.span_smul at hx₁,
421421
replace hx : _ ∈ y' • submodule.span R (s : set S') := set.smul_mem_smul_set hx,
422422
rw hx₁ at hx,
423423
erw [← g.map_smul, ← submodule.map_span (g : S →ₗ[R] S')] at hx,

src/ring_theory/subring/pointwise.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ lemma mem_smul_pointwise_iff_exists (m : M) (r : R) (S : subring R) :
6262
r ∈ m • S ↔ ∃ (s : R), s ∈ S ∧ m • s = r :=
6363
(set.mem_smul_set : r ∈ m • (S : set R) ↔ _)
6464

65+
@[simp] lemma smul_bot (a : M) : a • (⊥ : subring R) = ⊥ := map_bot _
66+
lemma smul_sup (a : M) (S T : subring R) : a • (S ⊔ T) = a • S ⊔ a • T := map_sup _ _ _
67+
68+
lemma smul_closure (a : M) (s : set R) : a • closure s = closure (a • s) :=
69+
ring_hom.map_closure _ _
70+
6571
instance pointwise_central_scalar [mul_semiring_action Mᵐᵒᵖ R] [is_central_scalar M R] :
6672
is_central_scalar M (subring R) :=
6773
⟨λ a S, congr_arg (λ f, S.map f) $ ring_hom.ext $ by exact op_smul_eq_smul _⟩

src/ring_theory/subsemiring/pointwise.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ lemma mem_smul_pointwise_iff_exists (m : M) (r : R) (S : subsemiring R) :
5858
r ∈ m • S ↔ ∃ (s : R), s ∈ S ∧ m • s = r :=
5959
(set.mem_smul_set : r ∈ m • (S : set R) ↔ _)
6060

61+
@[simp] lemma smul_bot (a : M) : a • (⊥ : subsemiring R) = ⊥ := map_bot _
62+
lemma smul_sup (a : M) (S T : subsemiring R) : a • (S ⊔ T) = a • S ⊔ a • T := map_sup _ _ _
63+
64+
lemma smul_closure (a : M) (s : set R) : a • closure s = closure (a • s) :=
65+
ring_hom.map_sclosure _ _
66+
6167
instance pointwise_central_scalar [mul_semiring_action Mᵐᵒᵖ R] [is_central_scalar M R] :
6268
is_central_scalar M (subsemiring R) :=
6369
⟨λ a S, congr_arg (λ f, S.map f) $ ring_hom.ext $ by exact op_smul_eq_smul _⟩

0 commit comments

Comments
 (0)