Skip to content

Commit 2881248

Browse files
authored
GrowthInGroups: card_pow_strictMonoOn (#13)
1 parent 25f59b4 commit 2881248

File tree

2 files changed

+41
-13
lines changed

2 files changed

+41
-13
lines changed

LeanCamCombi/GrowthInGroups/Lecture1.lean

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,61 @@ import Mathlib.GroupTheory.Nilpotent
44
import Mathlib.LinearAlgebra.Matrix.SpecialLinearGroup
55
import Mathlib.Tactic.Positivity.Finset
66
import LeanCamCombi.GrowthInGroups.VerySmallDoubling
7+
import LeanCamCombi.Mathlib.Data.Finset.Basic
78

89
open Finset Fintype Group Matrix MulOpposite Real
910
open scoped Combinatorics.Additive MatrixGroups Pointwise
1011

1112
namespace GrowthInGroups.Lecture1
1213
variable {G : Type*} [Group G] [DecidableEq G] {A X : Finset G} {n : ℕ} {K : ℝ}
1314

14-
lemma card_pow_lt_card_pow_succ_of_pow_ne_closure (hX : X.Nonempty)
15+
lemma card_pow_lt_card_pow_succ_of_pow_ne_closure (hX : X.Nontrivial)
1516
(hXclosure : (X ^ n : Set G) ≠ Subgroup.closure (X : Set G)) : #(X ^ n) < #(X ^ (n + 1)) := by
16-
refine (hX.card_pow_mono <| Order.le_succ _).lt_of_ne fun h ↦ hXclosure ?_
17+
refine (hX.nonempty.card_pow_mono <| Order.le_succ _).lt_of_ne fun h ↦ hXclosure ?_
1718
dsimp at h
1819
sorry
1920

20-
lemma card_pow_strictMonoOn (hX : X.Nonempty) :
21+
@[simp]
22+
lemma Set.biUnion_const {G} (s h : Set G) (hs : s.Nonempty) : ⋃ t ∈ s, h = h := by
23+
have := hs.to_subtype
24+
rw [Set.biUnion_eq_iUnion, Set.iUnion_const]
25+
26+
lemma Set.mul_subgroup_closure {Y : Set G} (hY : Y.Nonempty) : Y * Subgroup.closure Y = Subgroup.closure Y := by
27+
rw [←smul_eq_mul, ← Set.iUnion_smul_set]
28+
suffices ∀ a ∈ Y, a • (Subgroup.closure Y : Set G) = Subgroup.closure Y by simp (config := {contextual := true}) [this, hY]
29+
refine fun a ha ↦ smul_coe_set <| Subgroup.subset_closure ha
30+
31+
lemma Set.mul_subgroup_closure_pow {Y : Set G} (hY : Y.Nonempty) : Y ^ n * Subgroup.closure Y = Subgroup.closure Y := by
32+
induction n
33+
· simp
34+
next k hk => rw [pow_add, pow_one, mul_assoc, Set.mul_subgroup_closure hY, hk]
35+
36+
lemma card_pow_strictMonoOn (hX : X.Nontrivial) :
2137
StrictMonoOn (fun n ↦ #(X ^ n))
2238
{n | (X ^ (n - 1) : Set G) ≠ Subgroup.closure (X : Set G)} := by
23-
refine strictMonoOn_of_lt_add_one ⟨fun _ _ m hm n ⟨_, hmn⟩ hn ↦ hm ?_⟩ fun n _ hn hn' ↦
24-
card_pow_lt_card_pow_succ_of_pow_ne_closure hX hn'
25-
sorry
26-
27-
lemma card_pow_strictMono (hXclosure : (Subgroup.closure (X : Set G) : Set G).Infinite) :
39+
refine strictMonoOn_of_lt_add_one ⟨?_⟩ fun n _ _ hn ↦
40+
card_pow_lt_card_pow_succ_of_pow_ne_closure hX hn
41+
rintro - - n hn m ⟨-, hmn⟩ hm
42+
apply hn
43+
obtain rfl | hm₀ := m.eq_zero_or_pos
44+
· simp at hm
45+
rw [← hm]
46+
rw [eq_comm, coe_set_eq_one, Subgroup.closure_eq_bot_iff] at hm
47+
cases hX.not_subset_singleton hm
48+
calc (X : Set G) ^ (n - 1) = X ^ (n - m) * X ^ (m - 1) := by rw [← pow_add]; congr 1; omega
49+
_ = Subgroup.closure (X : Set G) := by rw [hm, Set.mul_subgroup_closure_pow hX.nonempty.to_set]
50+
51+
lemma card_pow_strictMono (hXclosure : (Subgroup.closure (X : Set G) : Set G).Infinite) (hX : X.Nontrivial) :
2852
StrictMono fun n ↦ #(X ^ n) := by
29-
obtain rfl | hX := X.eq_empty_or_nonempty
30-
· simp at hXclosure
3153
have h n : (X ^ (n - 1) : Set G) ≠ Subgroup.closure (X : Set G) :=
3254
fun h ↦ by simp [← h, ← coe_pow] at hXclosure
3355
simpa [h] using card_pow_strictMonoOn hX
3456

3557
/-- The growth of a generating set in an infinite group is at least linear. -/
36-
lemma fact_3_1_1 [Infinite G] (hXgen : Subgroup.closure (X : Set G) = ⊤) : n ≤ #(X ^ n) :=
37-
(card_pow_strictMono (by simp [hXgen, Set.infinite_univ])).le_apply
58+
lemma fact_3_1_1 [Infinite G] (hXgen : Subgroup.closure (X : Set G) = ⊤) (hX : X.Nontrivial) : n + 1 ≤ #(X ^ n) := by
59+
induction n
60+
· simp
61+
next k ih => exact ih.trans_lt ((card_pow_strictMono (by simp [hXgen, Set.infinite_univ]) hX) k.lt_succ_self)
3862

3963
/-- The growth of a set is at most exponential. -/
4064
lemma fact_3_1_2 : #(X ^ n) ≤ #X ^ n := card_pow_le
@@ -86,7 +110,7 @@ lemma theorem_3_9 :
86110
#A ^ (1 + δ) ≤ #(A ^ 3) ∨ card SL(n, k) ^ (1 - ε) ≤ #A := sorry
87111

88112
open scoped RightActions in
89-
lemma fact_3_10 (hA : σₘ[A] ≤ 1) :
113+
lemma fact_3_10 (hA : σₘ[A] ≤ 1) (hA : A.Nonempty) :
90114
∃ H : Subgroup G, ∀ a ∈ A, a • (H : Set G) = A ∧ (H : Set G) <• a = A := sorry
91115

92116
open scoped Classical RightActions in
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import Mathlib.Data.Finset.Basic
2+
3+
nonrec lemma Finset.Nontrivial.nonempty {α} {X : Finset α} (hX : X.Nontrivial) : X.Nonempty :=
4+
hX.nonempty

0 commit comments

Comments
 (0)