feat(Geometry/Group): define a via word metric with respect to Group.Generators via wordProd. - #43118
feat(Geometry/Group): define a via word metric with respect to Group.Generators via wordProd. #43118homeowmorphism wants to merge 13 commits into
Group.Generators via wordProd. #43118Conversation
PR summary 8433b14463Import changes for modified filesNo significant changes to the import graph Import changes for all files
|
| Current number | Change | Type (weak) |
|---|---|---|
| exposed public sections | 5001 | 2 |
Current commit 8433b14463
Reference commit 13bd10aec8
This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.py pr_summary
- The
relativevalue is the weighted sum of the differences with weight given by the inverse of the current value of the statistic. - The
absolutevalue is therelativevalue divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).
🚨 PR Title Needs FormattingPlease update the title to match our commit style conventions. Errors from script: Details on the required title formatThe title should fit the following format:
|
Group.Generators via wordProd. Group.Generators via wordProd.
|
Starting to wonder if I should call “wordLength” just “length” or use the Coxeter notation as “wordLength” over a group element sounds misleading. |
Group.Generators via wordProd. Group.Generators via wordProd.
Co-authored-by: Kevin Buzzard <k.buzzard@imperial.ac.uk>
Co-authored-by: Kevin Buzzard <k.buzzard@imperial.ac.uk>
| simp [wordProd] | ||
|
|
||
| @[simp] | ||
| lemma wordProd_singleton : P.wordProd [(i,b)] = cond b (P.val i) (P.val i)⁻¹ := by |
There was a problem hiding this comment.
| lemma wordProd_singleton : P.wordProd [(i,b)] = cond b (P.val i) (P.val i)⁻¹ := by | |
| lemma wordProd_singleton : P.wordProd [(i, b)] = cond b (P.val i) (P.val i)⁻¹ := by |
| lemma wordProd_cons : P.wordProd ((i, b) :: l) = cond b (P.val i) (P.val i)⁻¹ * P.wordProd l := by | ||
| simp [wordProd] |
There was a problem hiding this comment.
I wonder, perhaps this one should be tagged @[simp] instead of wordProd_singleton?
|
|
||
| * `Group.Generators.wordLength`: the word length of an element of `G` with respect to a | ||
| generating family `P`. | ||
| * `Group.Generators.IsGeodesic`: a word is geodesic if of minimal length among the words |
There was a problem hiding this comment.
| * `Group.Generators.IsGeodesic`: a word is geodesic if of minimal length among the words | |
| * `Group.Generators.IsGeodesic`: a word is geodesic if it is of minimal length among the words |
| /-- The word length of `g` with respect to the generating family `P`. -/ | ||
| @[no_expose] | ||
| noncomputable def wordLength : ℕ := sInf {n | ∃ l, P.wordProd l = g ∧ l.length = n} | ||
|
|
There was a problem hiding this comment.
I wonder whether it's worth proving a lemma like this:
/-- The word length of a group element given by a word `l` is smaller or equal to the
length of `l`. -/
lemma wordLength_le_iff {n : ℕ} :
P.wordLength g ≤ n ↔ ∃ l, l.length ≤ n ∧ P.wordProd l = g := by
classical
have h : {n | ∃ l, P.wordProd l = g ∧ l.length = n}.Nonempty := sorry
rw [wordLength, Nat.sInf_def h]
simp
This might help golf wordLength_eq_zero_iff, for instance.
A word over a generating family
P : Group.Generators G ιis a list of letters, each carrying asign:
List (ι × Bool). The evaluation map is then given byGroup.Generators.wordProd.The word length of an element is the length of a shortest representing word, over a generating
family given by
Group.Generators, and the word metric is the distance it induces onG. Theresulting object is
NormGroup Gwithdist g h = ‖g⁻¹ * h‖.Use of AI: Claude Fable was used to advise with API design using mathlib-api. I also used it to pair-program with me which means it would (at times heavily) hint at how to write statements/proofs. I used it for golfing and re-factoring as well.