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

Commit 1f19543

Browse files
committed
feat(topology/algebra/group): lemmas (#17383)
Write the `smul` version of several `mul` lemmas, along with the missing instance `has_continuous_mul M M → has_continuous_smul Mᵐᵒᵖ M`
1 parent 77b0b36 commit 1f19543

File tree

4 files changed

+62
-18
lines changed

4 files changed

+62
-18
lines changed

src/data/set/pointwise/basic.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -889,6 +889,10 @@ end has_smul_set
889889

890890
variables {s s₁ s₂ : set α} {t t₁ t₂ : set β} {a : α} {b : β}
891891

892+
@[simp, to_additive] lemma bUnion_op_smul_set [has_mul α] (s t : set α) :
893+
(⋃ a ∈ t, mul_opposite.op a • s) = s * t :=
894+
Union_image_right _
895+
892896
@[to_additive]
893897
lemma smul_set_inter [group α] [mul_action α β] {s t : set β} :
894898
a • (s ∩ t) = a • s ∩ a • t :=

src/topology/algebra/const_mul_action.lean

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,19 @@ local attribute [instance] mul_action.orbit_rel
4545
/-- Class `has_continuous_const_smul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
4646
is continuous in the second argument. We use the same class for all kinds of multiplicative
4747
actions, including (semi)modules and algebras.
48-
-/
48+
49+
Note that both `has_continuous_const_smul α α` and `has_continuous_const_smul αᵐᵒᵖ α` are
50+
weaker versions of `has_continuous_mul α`. -/
4951
class has_continuous_const_smul (Γ : Type*) (T : Type*) [topological_space T] [has_smul Γ T]
5052
: Prop :=
5153
(continuous_const_smul : ∀ γ : Γ, continuous (λ x : T, γ • x))
5254

5355
/-- Class `has_continuous_const_vadd Γ T` says that the additive action `(+ᵥ) : Γ → T → T`
5456
is continuous in the second argument. We use the same class for all kinds of additive actions,
5557
including (semi)modules and algebras.
56-
-/
58+
59+
Note that both `has_continuous_const_vadd α α` and `has_continuous_const_vadd αᵐᵒᵖ α` are
60+
weaker versions of `has_continuous_add α`. -/
5761
class has_continuous_const_vadd (Γ : Type*) (T : Type*) [topological_space T]
5862
[has_vadd Γ T] : Prop :=
5963
(continuous_const_vadd : ∀ γ : Γ, continuous (λ x : T, γ +ᵥ x))

src/topology/algebra/group.lean

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -923,25 +923,49 @@ with continuous addition/multiplication. See also `submonoid.top_closure_mul_sel
923923
`topology.algebra.monoid`.
924924
-/
925925

926-
section has_continuous_mul
927-
variables [topological_space α] [group α] [has_continuous_mul α] {s t : set α}
926+
section has_continuous_const_smul
927+
variables [topological_space β] [group α] [mul_action α β]
928+
[has_continuous_const_smul α β] {s : set α} {t : set β}
928929

929-
@[to_additive] lemma is_open.mul_left (ht : is_open t) : is_open (s * t) :=
930-
by { rw ←Union_mul_left_image, exact is_open_bUnion (λ a ha, is_open_map_mul_left a t ht) }
930+
@[to_additive] lemma is_open.smul_left (ht : is_open t) : is_open (s t) :=
931+
by { rw ←bUnion_smul_set, exact is_open_bUnion (λ a _, ht.smul _) }
931932

932-
@[to_additive] lemma is_open.mul_right (hs : is_open s) : is_open (s * t) :=
933-
by { rw ←Union_mul_right_image, exact is_open_bUnion (λ a ha, is_open_map_mul_right a s hs) }
933+
@[to_additive] lemma subset_interior_smul_right : s • interior t ⊆ interior (s t) :=
934+
interior_maximal (set.smul_subset_smul_left interior_subset) is_open_interior.smul_left
934935

935-
@[to_additive] lemma subset_interior_mul_left : interior s * t ⊆ interior (s * t) :=
936-
interior_maximal (set.mul_subset_mul_right interior_subset) is_open_interior.mul_right
936+
variables [topological_space α]
937+
938+
@[to_additive] lemma subset_interior_smul : interior s • interior t ⊆ interior (s • t) :=
939+
(set.smul_subset_smul_right interior_subset).trans subset_interior_smul_right
940+
941+
end has_continuous_const_smul
942+
943+
section has_continuous_const_smul
944+
variables [topological_space α] [group α] [has_continuous_const_smul α α] {s t : set α}
945+
946+
@[to_additive] lemma is_open.mul_left : is_open t → is_open (s * t) := is_open.smul_left
937947

938948
@[to_additive] lemma subset_interior_mul_right : s * interior t ⊆ interior (s * t) :=
939-
interior_maximal (set.mul_subset_mul_left interior_subset) is_open_interior.mul_left
949+
subset_interior_smul_right
940950

941951
@[to_additive] lemma subset_interior_mul : interior s * interior t ⊆ interior (s * t) :=
952+
subset_interior_smul
953+
954+
end has_continuous_const_smul
955+
956+
section has_continuous_const_smul_op
957+
variables [topological_space α] [group α] [has_continuous_const_smul αᵐᵒᵖ α] {s t : set α}
958+
959+
@[to_additive] lemma is_open.mul_right (hs : is_open s) : is_open (s * t) :=
960+
by { rw ←bUnion_op_smul_set, exact is_open_bUnion (λ a _, hs.smul _) }
961+
962+
@[to_additive] lemma subset_interior_mul_left : interior s * t ⊆ interior (s * t) :=
963+
interior_maximal (set.mul_subset_mul_right interior_subset) is_open_interior.mul_right
964+
965+
@[to_additive] lemma subset_interior_mul' : interior s * interior t ⊆ interior (s * t) :=
942966
(set.mul_subset_mul_left interior_subset).trans subset_interior_mul_left
943967

944-
end has_continuous_mul
968+
end has_continuous_const_smul_op
945969

946970
section topological_group
947971
variables [topological_space α] [group α] [topological_group α] {s t : set α}
@@ -1167,7 +1191,9 @@ end
11671191

11681192
/-- Every separated topological group in which there exists a compact set with nonempty interior
11691193
is locally compact. -/
1170-
@[to_additive] lemma topological_space.positive_compacts.locally_compact_space_of_group
1194+
@[to_additive "Every separated topological group in which there exists a compact set with nonempty
1195+
interior is locally compact."]
1196+
lemma topological_space.positive_compacts.locally_compact_space_of_group
11711197
[t2_space G] (K : positive_compacts G) :
11721198
locally_compact_space G :=
11731199
begin

src/topology/algebra/monoid.lean

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,19 @@ lemma continuous_one [topological_space M] [has_one M] : continuous (1 : X → M
2828

2929
/-- Basic hypothesis to talk about a topological additive monoid or a topological additive
3030
semigroup. A topological additive monoid over `M`, for example, is obtained by requiring both the
31-
instances `add_monoid M` and `has_continuous_add M`. -/
31+
instances `add_monoid M` and `has_continuous_add M`.
32+
33+
Continuity in only the left/right argument can be stated using
34+
`has_continuous_const_vadd α α`/`has_continuous_const_vadd αᵐᵒᵖ α`. -/
3235
class has_continuous_add (M : Type u) [topological_space M] [has_add M] : Prop :=
3336
(continuous_add : continuous (λ p : M × M, p.1 + p.2))
3437

3538
/-- Basic hypothesis to talk about a topological monoid or a topological semigroup.
3639
A topological monoid over `M`, for example, is obtained by requiring both the instances `monoid M`
37-
and `has_continuous_mul M`. -/
40+
and `has_continuous_mul M`.
41+
42+
Continuity in only the left/right argument can be stated using
43+
`has_continuous_const_smul α α`/`has_continuous_const_smul αᵐᵒᵖ α`. -/
3844
@[to_additive]
3945
class has_continuous_mul (M : Type u) [topological_space M] [has_mul M] : Prop :=
4046
(continuous_mul : continuous (λ p : M × M, p.1 * p.2))
@@ -48,9 +54,13 @@ lemma continuous_mul : continuous (λp:M×M, p.1 * p.2) :=
4854
has_continuous_mul.continuous_mul
4955

5056
@[to_additive]
51-
instance has_continuous_mul.has_continuous_smul :
52-
has_continuous_smul M M :=
53-
⟨continuous_mul⟩
57+
instance has_continuous_mul.to_has_continuous_smul : has_continuous_smul M M := ⟨continuous_mul⟩
58+
59+
@[to_additive]
60+
instance has_continuous_mul.to_has_continuous_smul_op : has_continuous_smul Mᵐᵒᵖ M :=
61+
show continuous ((λ p : M × M, p.1 * p.2) ∘ prod.swap ∘ prod.map mul_opposite.unop id), from
62+
continuous_mul.comp $ continuous_swap.comp $ continuous.prod_map mul_opposite.continuous_unop
63+
continuous_id⟩
5464

5565
@[continuity, to_additive]
5666
lemma continuous.mul {f g : X → M} (hf : continuous f) (hg : continuous g) :

0 commit comments

Comments
 (0)