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

Commit ba28234

Browse files
committed
feat(algebra/pointwise): more lemmas about pointwise actions (#9226)
This: * Primes the existing lemmas about `group_with_zero` and adds their group counterparts * Adds: * `smul_mem_smul_set_iff` * `set_smul_subset_set_smul_iff` * `set_smul_subset_iff` * `subset_set_smul_iff` * Generalizes `zero_smul_set` to take weaker typeclasses
1 parent e29dfc1 commit ba28234

File tree

3 files changed

+59
-15
lines changed

3 files changed

+59
-15
lines changed

src/algebra/pointwise.lean

Lines changed: 56 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -599,27 +599,71 @@ section
599599

600600
variables {α : Type*} {β : Type*}
601601

602-
/-- A nonempty set in a module is scaled by zero to the singleton
603-
containing 0 in the module. -/
604-
lemma zero_smul_set [semiring α] [add_comm_monoid β] [module α β] {s : set β} (h : s.nonempty) :
602+
/-- A nonempty set is scaled by zero to the singleton set containing 0. -/
603+
lemma zero_smul_set [has_zero α] [has_zero β] [smul_with_zero α β] {s : set β} (h : s.nonempty) :
605604
(0 : α) • s = (0 : set β) :=
606605
by simp only [← image_smul, image_eta, zero_smul, h.image_const, singleton_zero]
607606

608-
lemma mem_inv_smul_set_iff [group_with_zero α] [mul_action α β] {a : α} (ha : a ≠ 0) (A : set β)
609-
(x : β) : x ∈ a⁻¹ • A ↔ a • x ∈ A :=
610-
by simp only [← image_smul, mem_image, inv_smul_eq_iff' ha, exists_eq_right]
607+
section group
608+
variables [group α] [mul_action α β]
611609

612-
lemma mem_smul_set_iff_inv_smul_mem [group_with_zero α] [mul_action α β] {a : α} (ha : a ≠ 0)
613-
(A : set β) (x : β) : x ∈ a • A ↔ a⁻¹ • x ∈ A :=
614-
by rw [← mem_inv_smul_set_iff $ inv_ne_zero ha, inv_inv']
610+
@[simp] lemma smul_mem_smul_set_iff {a : α} {A : set β} {x : β} : a • x ∈ a • A ↔ x ∈ A :=
611+
⟨λ h, begin
612+
rw [←inv_smul_smul a x, ←inv_smul_smul a A],
613+
exact smul_mem_smul_set h,
614+
end, smul_mem_smul_set⟩
615615

616-
lemma preimage_smul [group α] [mul_action α β] (a : α) (t : set β) : (λ x, a • x) ⁻¹' t = a⁻¹ • t :=
616+
lemma mem_smul_set_iff_inv_smul_mem {a : α} {A : set β} {x : β} : x ∈ a • A ↔ a⁻¹ • x ∈ A :=
617+
show x ∈ mul_action.to_perm a '' A ↔ _, from mem_image_equiv
618+
619+
lemma mem_inv_smul_set_iff {a : α} {A : set β} {x : β} : x ∈ a⁻¹ • A ↔ a • x ∈ A :=
620+
by simp only [← image_smul, mem_image, inv_smul_eq_iff, exists_eq_right]
621+
622+
lemma preimage_smul (a : α) (t : set β) : (λ x, a • x) ⁻¹' t = a⁻¹ • t :=
617623
((mul_action.to_perm a).symm.image_eq_preimage _).symm
618624

619-
lemma preimage_smul' [group_with_zero α] [mul_action α β] {a : α} (ha : a ≠ 0) (t : set β) :
620-
(λ x, a • x) ⁻¹' t = a⁻¹ • t :=
625+
@[simp] lemma set_smul_subset_set_smul_iff {a : α} {A B : set β} : a • A ⊆ a • B ↔ A ⊆ B :=
626+
image_subset_image_iff $ mul_action.injective _
627+
628+
lemma set_smul_subset_iff {a : α} {A B : set β} : a • A ⊆ B ↔ A ⊆ a⁻¹ • B :=
629+
(image_subset_iff).trans $ iff_of_eq $ congr_arg _ $
630+
preimage_equiv_eq_image_symm _ $ mul_action.to_perm _
631+
632+
lemma subset_set_smul_iff {a : α} {A B : set β} : A ⊆ a • B ↔ a⁻¹ • A ⊆ B :=
633+
iff.symm $ (image_subset_iff).trans $ iff.symm $ iff_of_eq $ congr_arg _ $
634+
image_equiv_eq_preimage_symm _ $ mul_action.to_perm _
635+
636+
end group
637+
638+
section group_with_zero
639+
variables [group_with_zero α] [mul_action α β]
640+
641+
@[simp] lemma smul_mem_smul_set_iff' {a : α} (ha : a ≠ 0) (A : set β)
642+
(x : β) : a • x ∈ a • A ↔ x ∈ A :=
643+
show units.mk0 a ha • _ ∈ _ ↔ _, from smul_mem_smul_set_iff
644+
645+
lemma mem_smul_set_iff_inv_smul_mem' {a : α} (ha : a ≠ 0) (A : set β) (x : β) :
646+
x ∈ a • A ↔ a⁻¹ • x ∈ A :=
647+
show _ ∈ units.mk0 a ha • _ ↔ _, from mem_smul_set_iff_inv_smul_mem
648+
649+
lemma mem_inv_smul_set_iff' {a : α} (ha : a ≠ 0) (A : set β) (x : β) : x ∈ a⁻¹ • A ↔ a • x ∈ A :=
650+
show _ ∈ (units.mk0 a ha)⁻¹ • _ ↔ _, from mem_inv_smul_set_iff
651+
652+
lemma preimage_smul' {a : α} (ha : a ≠ 0) (t : set β) : (λ x, a • x) ⁻¹' t = a⁻¹ • t :=
621653
preimage_smul (units.mk0 a ha) t
622654

655+
@[simp] lemma set_smul_subset_set_smul_iff' {a : α} (ha : a ≠ 0) {A B : set β} :
656+
a • A ⊆ a • B ↔ A ⊆ B :=
657+
show units.mk0 a ha • _ ⊆ _ ↔ _, from set_smul_subset_set_smul_iff
658+
659+
lemma set_smul_subset_iff' {a : α} (ha : a ≠ 0) {A B : set β} : a • A ⊆ B ↔ A ⊆ a⁻¹ • B :=
660+
show units.mk0 a ha • _ ⊆ _ ↔ _, from set_smul_subset_iff
661+
662+
lemma subset_set_smul_iff' {a : α} (ha : a ≠ 0) {A B : set β} : A ⊆ a • B ↔ a⁻¹ • A ⊆ B :=
663+
show _ ⊆ units.mk0 a ha • _ ↔ _, from subset_set_smul_iff
664+
665+
end group_with_zero
666+
623667
end
624668

625669
namespace finset

src/analysis/convex/basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ lemma convex.mem_smul_of_zero_mem (h : convex 𝕜 s) {x : E} (zero_mem : (0 : E
809809
(hx : x ∈ s) {t : 𝕜} (ht : 1 ≤ t) :
810810
x ∈ t • s :=
811811
begin
812-
rw mem_smul_set_iff_inv_smul_mem (zero_lt_one.trans_le ht).ne',
812+
rw mem_smul_set_iff_inv_smul_mem' (zero_lt_one.trans_le ht).ne',
813813
exact h.smul_mem_of_zero_mem zero_mem hx ⟨inv_nonneg.2 (zero_le_one.trans ht), inv_le_one ht⟩,
814814
end
815815

src/analysis/seminorm.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ lemma balanced.absorbs_self (hA : balanced 𝕜 A) : absorbs 𝕜 A A :=
6565
begin
6666
use [1, zero_lt_one],
6767
intros a ha x hx,
68-
rw mem_smul_set_iff_inv_smul_mem,
68+
rw mem_smul_set_iff_inv_smul_mem',
6969
{ apply hA a⁻¹,
7070
{ rw norm_inv, exact inv_le_one ha },
7171
{ rw mem_smul_set, use [x, hx] }},
@@ -130,7 +130,7 @@ begin
130130
rw [metric.mem_ball, dist_zero_right, norm_inv],
131131
calc ∥a∥⁻¹ ≤ r/2 : (inv_le (half_pos hr₁) ha₂).mp ha₁
132132
... < r : half_lt_self hr₁ },
133-
rw [mem_smul_set_iff_inv_smul_mem (norm_pos_iff.mp ha₂)],
133+
rw [mem_smul_set_iff_inv_smul_mem' (norm_pos_iff.mp ha₂)],
134134
exact hw₁ ha₃,
135135
end
136136

0 commit comments

Comments
 (0)