Skip to content

Commit 2bbb174

Browse files
committed
feat(GroupTheory/GroupAction/Basic): define subgroups fixed by group actions (#10043)
1 parent a2c91ca commit 2bbb174

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

Mathlib/GroupTheory/GroupAction/Basic.lean

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,88 @@ end Stabilizers
212212

213213
end MulAction
214214

215+
section FixedPoints
216+
217+
variable (M : Type u) (α : Type v) [Monoid M]
218+
219+
section Monoid
220+
221+
variable [Monoid α] [MulDistribMulAction M α]
222+
223+
/-- The submonoid of elements fixed under the whole action. -/
224+
def FixedPoints.submonoid : Submonoid α where
225+
carrier := MulAction.fixedPoints M α
226+
one_mem' := smul_one
227+
mul_mem' ha hb _ := by rw [smul_mul', ha, hb]
228+
229+
@[simp]
230+
lemma FixedPoints.mem_submonoid (a : α) : a ∈ submonoid M α ↔ ∀ m : M, m • a = a :=
231+
Iff.rfl
232+
233+
end Monoid
234+
235+
section Group
236+
237+
variable [Group α] [MulDistribMulAction M α]
238+
239+
/-- The subgroup of elements fixed under the whole action. -/
240+
def FixedPoints.subgroup : Subgroup α where
241+
__ := submonoid M α
242+
inv_mem' ha _ := by rw [smul_inv', ha]
243+
244+
/-- The notation for `FixedPoints.subgroup`, chosen to resemble `αᴹ`. -/
245+
notation α "^*" M:51 => FixedPoints.subgroup M α
246+
247+
@[simp]
248+
lemma FixedPoints.mem_subgroup (a : α) : a ∈ α^*M ↔ ∀ m : M, m • a = a :=
249+
Iff.rfl
250+
251+
@[simp]
252+
lemma FixedPoints.subgroup_toSubmonoid : (α^*M).toSubmonoid = submonoid M α :=
253+
rfl
254+
255+
end Group
256+
257+
section AddMonoid
258+
259+
variable [AddMonoid α] [DistribMulAction M α]
260+
261+
/-- The additive submonoid of elements fixed under the whole action. -/
262+
def FixedPoints.addSubmonoid : AddSubmonoid α where
263+
carrier := MulAction.fixedPoints M α
264+
zero_mem' := smul_zero
265+
add_mem' ha hb _ := by rw [smul_add, ha, hb]
266+
267+
@[simp]
268+
lemma FixedPoints.mem_addSubmonoid (a : α) : a ∈ addSubmonoid M α ↔ ∀ m : M, m • a = a :=
269+
Iff.rfl
270+
271+
end AddMonoid
272+
273+
section AddGroup
274+
275+
variable [AddGroup α] [DistribMulAction M α]
276+
277+
/-- The additive subgroup of elements fixed under the whole action. -/
278+
def FixedPoints.addSubgroup : AddSubgroup α where
279+
__ := addSubmonoid M α
280+
neg_mem' ha _ := by rw [smul_neg, ha]
281+
282+
/-- The notation for `FixedPoints.addSubgroup`, chosen to resemble `αᴹ`. -/
283+
notation α "^+" M:51 => FixedPoints.addSubgroup M α
284+
285+
@[simp]
286+
lemma FixedPoints.mem_addSubgroup (a : α) : a ∈ α^+M ↔ ∀ m : M, m • a = a :=
287+
Iff.rfl
288+
289+
@[simp]
290+
lemma FixedPoints.addSubgroup_toAddSubmonoid : (α^+M).toAddSubmonoid = addSubmonoid M α :=
291+
rfl
292+
293+
end AddGroup
294+
295+
end FixedPoints
296+
215297
/-- `smul` by a `k : M` over a ring is injective, if `k` is not a zero divisor.
216298
The general theory of such `k` is elaborated by `IsSMulRegular`.
217299
The typeclass that restricts all terms of `M` to have this property is `NoZeroSMulDivisors`. -/

0 commit comments

Comments
 (0)