|
1 | 1 | import Mathlib.Analysis.SpecialFunctions.Log.Basic |
2 | 2 | import Mathlib.Combinatorics.Additive.DoublingConst |
| 3 | +import Mathlib.GroupTheory.Nilpotent |
3 | 4 | import Mathlib.LinearAlgebra.Matrix.SpecialLinearGroup |
4 | 5 | import Mathlib.Tactic.Positivity.Finset |
5 | | -import LeanCamCombi.Mathlib.GroupTheory.Nilpotent |
6 | | -import LeanCamCombi.Mathlib.Order.SuccPred.Relation |
7 | 6 |
|
8 | 7 | open Finset Fintype Group Matrix MulOpposite Real |
9 | 8 | open scoped Combinatorics.Additive MatrixGroups Pointwise |
10 | 9 |
|
11 | 10 | namespace GrowthInGroups.Lecture1 |
12 | 11 | variable {G : Type*} [Group G] [DecidableEq G] {A X : Finset G} {n : ℕ} {K : ℝ} |
13 | 12 |
|
| 13 | +lemma card_pow_lt_card_pow_succ_of_pow_ne_closure (hX : X.Nonempty) |
| 14 | + (hXclosure : (X ^ n : Set G) ≠ Subgroup.closure (X : Set G)) : #(X ^ n) < #(X ^ (n + 1)) := by |
| 15 | + refine (hX.card_pow_mono <| Order.le_succ _).lt_of_ne fun h ↦ hXclosure ?_ |
| 16 | + dsimp at h |
| 17 | + sorry |
| 18 | + |
14 | 19 | lemma card_pow_strictMonoOn (hX : X.Nonempty) : |
15 | 20 | StrictMonoOn (fun n ↦ #(X ^ n)) |
16 | 21 | {n | (X ^ (n - 1) : Set G) ≠ Subgroup.closure (X : Set G)} := by |
17 | | - refine Order.strictMonoOn_of_lt_succ ⟨fun _ _ m hm n ⟨_, hmn⟩ hn ↦ sorry⟩ fun n hn hn' ↦ ?_ |
18 | | - refine (hX.card_pow_mono <| Order.le_succ _).lt_of_ne fun h ↦ hn' ?_ |
19 | | - dsimp at h |
20 | | - dsimp |
| 22 | + refine strictMonoOn_of_lt_add_one ⟨fun _ _ m hm n ⟨_, hmn⟩ hn ↦ hm ?_⟩ fun n _ hn hn' ↦ |
| 23 | + card_pow_lt_card_pow_succ_of_pow_ne_closure hX hn' |
21 | 24 | sorry |
22 | 25 |
|
23 | | -lemma card_pow_strictMono (hX : X.Nonempty) |
24 | | - (hXclosure : (Subgroup.closure (X : Set G) : Set G).Infinite) : |
| 26 | +lemma card_pow_strictMono (hXclosure : (Subgroup.closure (X : Set G) : Set G).Infinite) : |
25 | 27 | StrictMono fun n ↦ #(X ^ n) := by |
26 | | - have h n : (X ^ (n - 1) : Set G) ≠ Subgroup.closure (X : Set G) := sorry |
| 28 | + obtain rfl | hX := X.eq_empty_or_nonempty |
| 29 | + · simp at hXclosure |
| 30 | + have h n : (X ^ (n - 1) : Set G) ≠ Subgroup.closure (X : Set G) := |
| 31 | + fun h ↦ by simp [← h, ← coe_pow] at hXclosure |
27 | 32 | simpa [h] using card_pow_strictMonoOn hX |
28 | 33 |
|
29 | | -/-- The growth of a symmetric generating set in an infinite group is at least linear. -/ |
30 | | -lemma fact_3_1_1 [Infinite G] (hXsymm : X⁻¹ = X) (hXgen : Subgroup.closure (X : Set G) = ⊤) : |
31 | | - n ≤ #(X ^ n) := sorry |
| 34 | +/-- The growth of a generating set in an infinite group is at least linear. -/ |
| 35 | +lemma fact_3_1_1 [Infinite G] (hXgen : Subgroup.closure (X : Set G) = ⊤) : n ≤ #(X ^ n) := |
| 36 | + (card_pow_strictMono (by simp [hXgen, Set.infinite_univ])).le_apply |
32 | 37 |
|
33 | 38 | /-- The growth of a set is at most exponential. -/ |
34 | 39 | lemma fact_3_1_2 : #(X ^ n) ≤ #X ^ n := card_pow_le |
|
0 commit comments