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

Commit 6f9f363

Browse files
chore(group_theory/subgroup/basic): split out finiteness (#18242)
It feels like it should be possible to define subgroups without relying on all the infrastructure about finite sets and types, and it turns out that it is with fairly limited work. This also has the advantage of removing a few hundred lines of code from what's still one of mathlib's biggest files.
1 parent a63928c commit 6f9f363

11 files changed

Lines changed: 293 additions & 215 deletions

File tree

src/algebra/module/submodule/basic.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Authors: Nathaniel Thomas, Jeremy Avigad, Johannes Hölzl, Mario Carneiro
66
import algebra.module.linear_map
77
import algebra.module.equiv
88
import group_theory.group_action.sub_mul_action
9+
import group_theory.submonoid.membership
10+
911
/-!
1012
1113
# Submodules of a module

src/algebra/periodic.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ Copyright (c) 2021 Benjamin Davidson. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Benjamin Davidson
55
-/
6+
import algebra.big_operators.basic
67
import algebra.field.opposite
78
import algebra.module.basic
89
import algebra.order.archimedean
910
import data.int.parity
1011
import group_theory.coset
1112
import group_theory.subgroup.zpowers
13+
import group_theory.submonoid.membership
1214

1315
/-!
1416
# Periodicity

src/group_theory/commutator.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Authors: Jordan Brown, Thomas Browning, Patrick Lutz
55
-/
66

77
import data.bracket
8-
import group_theory.subgroup.basic
8+
import group_theory.subgroup.finite
99
import tactic.group
1010

1111
/-!

src/group_theory/coset.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Mitchell Rowett, Scott Morrison
55
-/
66

77
import algebra.quotient
8+
import data.fintype.prod
89
import group_theory.group_action.basic
910
import group_theory.subgroup.mul_opposite
1011
import tactic.group

src/group_theory/free_group.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Kenny Lau
55
-/
66
import data.fintype.basic
7+
import data.list.sublists
78
import group_theory.subgroup.basic
89

910
/-!

src/group_theory/group_action/basic.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Copyright (c) 2018 Chris Hughes. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Chris Hughes
55
-/
6+
import data.fintype.card
67
import group_theory.group_action.defs
78
import group_theory.group_action.group
89
import data.setoid.basic
@@ -28,7 +29,7 @@ of `•` belong elsewhere.
2829
universes u v w
2930
variables {α : Type u} {β : Type v} {γ : Type w}
3031

31-
open_locale big_operators pointwise
32+
open_locale pointwise
3233
open function
3334

3435
namespace mul_action

src/group_theory/noncomm_pi_coprod.lean

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import group_theory.order_of_element
77
import data.finset.noncomm_prod
88
import data.fintype.big_operators
99
import data.nat.gcd.big_operators
10+
import order.sup_indep
1011

1112
/-!
1213
# Canonical homomorphism from a finite family of monoids
@@ -42,6 +43,44 @@ images of different morphisms commute, we obtain a canonical morphism
4243

4344
open_locale big_operators
4445

46+
namespace subgroup
47+
48+
variables {G : Type*} [group G]
49+
50+
/-- `finset.noncomm_prod` is “injective” in `f` if `f` maps into independent subgroups. This
51+
generalizes (one direction of) `subgroup.disjoint_iff_mul_eq_one`. -/
52+
@[to_additive "`finset.noncomm_sum` is “injective” in `f` if `f` maps into independent subgroups.
53+
This generalizes (one direction of) `add_subgroup.disjoint_iff_add_eq_zero`. "]
54+
lemma eq_one_of_noncomm_prod_eq_one_of_independent {ι : Type*} (s : finset ι) (f : ι → G) (comm)
55+
(K : ι → subgroup G) (hind : complete_lattice.independent K) (hmem : ∀ (x ∈ s), f x ∈ K x)
56+
(heq1 : s.noncomm_prod f comm = 1) : ∀ (i ∈ s), f i = 1 :=
57+
begin
58+
classical,
59+
revert heq1,
60+
induction s using finset.induction_on with i s hnmem ih,
61+
{ simp, },
62+
{ have hcomm := comm.mono (finset.coe_subset.2 $ finset.subset_insert _ _),
63+
simp only [finset.forall_mem_insert] at hmem,
64+
have hmem_bsupr: s.noncomm_prod f hcomm ∈ ⨆ (i ∈ (s : set ι)), K i,
65+
{ refine subgroup.noncomm_prod_mem _ _ _,
66+
intros x hx,
67+
have : K x ≤ ⨆ (i ∈ (s : set ι)), K i := le_supr₂ x hx,
68+
exact this (hmem.2 x hx), },
69+
intro heq1,
70+
rw finset.noncomm_prod_insert_of_not_mem _ _ _ _ hnmem at heq1,
71+
have hnmem' : i ∉ (s : set ι), by simpa,
72+
obtain ⟨heq1i : f i = 1, heq1S : s.noncomm_prod f _ = 1⟩ :=
73+
subgroup.disjoint_iff_mul_eq_one.mp (hind.disjoint_bsupr hnmem') hmem.1 hmem_bsupr heq1,
74+
intros i h,
75+
simp only [finset.mem_insert] at h,
76+
rcases h with ⟨rfl | _⟩,
77+
{ exact heq1i },
78+
{ exact ih hcomm hmem.2 heq1S _ h } }
79+
end
80+
81+
end subgroup
82+
83+
4584
section family_of_monoids
4685

4786
variables {M : Type*} [monoid M]

src/group_theory/perm/subgroup.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Authors: Eric Wieser
55
-/
66
import group_theory.perm.basic
77
import data.fintype.perm
8-
import group_theory.subgroup.basic
8+
import group_theory.subgroup.finite
99
/-!
1010
# Lemmas about subgroups within the permutations (self-equivalences) of a type `α`
1111

src/group_theory/quotient_group.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ This file is to a certain extent based on `quotient_module.lean` by Johannes Hö
77
-/
88
import group_theory.congruence
99
import group_theory.coset
10+
import group_theory.subgroup.finite
1011
import group_theory.subgroup.pointwise
1112

1213
/-!

0 commit comments

Comments
 (0)