Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: group markings #19475

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

feat: group markings #19475

wants to merge 4 commits into from

Conversation

YaelDillies
Copy link
Collaborator

@YaelDillies YaelDillies commented Nov 25, 2024

@github-actions github-actions bot added the t-algebra Algebra (groups, rings, fields, etc) label Nov 25, 2024
Copy link

github-actions bot commented Nov 25, 2024

PR summary 75a713a5eb

Import changes exceeding 2%

% File
+2.56% Mathlib.Analysis.Normed.Group.AddCircle

Import changes for modified files

Dependency changes

File Base Count Head Count Change
Mathlib.Analysis.Normed.Group.AddCircle 1445 1482 +37 (+2.56%)
Import changes for all files
Files Import difference
34 files Mathlib.MeasureTheory.Decomposition.Lebesgue Mathlib.MeasureTheory.Function.ContinuousMapDense Mathlib.MeasureTheory.Function.ConvergenceInMeasure Mathlib.MeasureTheory.Function.L1Space.AEEqFun Mathlib.MeasureTheory.Function.L1Space.Integrable Mathlib.MeasureTheory.Function.LocallyIntegrable Mathlib.MeasureTheory.Function.LpOrder Mathlib.MeasureTheory.Function.LpSeminorm.Basic Mathlib.MeasureTheory.Function.LpSeminorm.ChebyshevMarkov Mathlib.MeasureTheory.Function.LpSeminorm.CompareExp Mathlib.MeasureTheory.Function.LpSeminorm.TriangleInequality Mathlib.MeasureTheory.Function.LpSeminorm.Trim Mathlib.MeasureTheory.Function.LpSpace.ContinuousCompMeasurePreserving Mathlib.MeasureTheory.Function.LpSpace.DomAct.Basic Mathlib.MeasureTheory.Function.LpSpace.DomAct.Continuous Mathlib.MeasureTheory.Function.LpSpace Mathlib.MeasureTheory.Function.SimpleFuncDenseLp Mathlib.MeasureTheory.Function.SpecialFunctions.Basic Mathlib.MeasureTheory.Function.StronglyMeasurable.Lp Mathlib.MeasureTheory.Function.UnifTight Mathlib.MeasureTheory.Function.UniformIntegrable Mathlib.MeasureTheory.Group.Integral Mathlib.MeasureTheory.Integral.Bochner Mathlib.MeasureTheory.Integral.BoundedContinuousFunction Mathlib.MeasureTheory.Integral.IntegrableOn Mathlib.MeasureTheory.Integral.MeanInequalities Mathlib.MeasureTheory.Integral.SetToL1 Mathlib.MeasureTheory.Integral.VitaliCaratheodory Mathlib.MeasureTheory.Measure.FiniteMeasure Mathlib.MeasureTheory.Measure.SeparableMeasure Mathlib.Probability.Independence.Integrable Mathlib.Probability.Kernel.Integral Mathlib.Probability.Moments.IntegrableExpMul Mathlib.Probability.ProbabilityMassFunction.Integrals
2
72 files Mathlib.Algebra.Order.AbsoluteValue.Equivalence Mathlib.Analysis.Analytic.RadiusLiminf Mathlib.Analysis.CStarAlgebra.Multiplier Mathlib.Analysis.CStarAlgebra.lpSpace Mathlib.Analysis.Calculus.ContDiff.WithLp Mathlib.Analysis.Calculus.FDeriv.WithLp Mathlib.Analysis.Convex.SpecificFunctions.Basic Mathlib.Analysis.Convex.SpecificFunctions.Pow Mathlib.Analysis.MeanInequalitiesPow Mathlib.Analysis.MeanInequalities Mathlib.Analysis.Normed.Algebra.Norm Mathlib.Analysis.Normed.Algebra.TrivSqZeroExt Mathlib.Analysis.Normed.Algebra.UnitizationL1 Mathlib.Analysis.Normed.Lp.LpEquiv Mathlib.Analysis.Normed.Lp.PiLp Mathlib.Analysis.Normed.Lp.ProdLp Mathlib.Analysis.Normed.Lp.lpSpace Mathlib.Analysis.Normed.Ring.IsPowMulFaithful Mathlib.Analysis.Normed.Ring.SeminormFromBounded Mathlib.Analysis.Normed.Ring.SeminormFromConst Mathlib.Analysis.Normed.Ring.Seminorm Mathlib.Analysis.NormedSpace.DualNumber Mathlib.Analysis.PSeries Mathlib.Analysis.SpecialFunctions.CompareExp Mathlib.Analysis.SpecialFunctions.Complex.Circle Mathlib.Analysis.SpecialFunctions.Complex.Log Mathlib.Analysis.SpecialFunctions.Log.Base Mathlib.Analysis.SpecialFunctions.Log.ENNRealLogExp Mathlib.Analysis.SpecialFunctions.Log.ENNRealLog Mathlib.Analysis.SpecialFunctions.Log.Monotone Mathlib.Analysis.SpecialFunctions.Pow.Asymptotics Mathlib.Analysis.SpecialFunctions.Pow.Complex Mathlib.Analysis.SpecialFunctions.Pow.Continuity Mathlib.Analysis.SpecialFunctions.Pow.NNReal Mathlib.Analysis.SpecialFunctions.Pow.Real Mathlib.Analysis.SpecialFunctions.Trigonometric.Arctan Mathlib.Analysis.SpecialFunctions.Trigonometric.Complex Mathlib.Analysis.SpecificLimits.FloorPow Mathlib.Combinatorics.Additive.Corner.Roth Mathlib.Combinatorics.SimpleGraph.Regularity.Bound Mathlib.Combinatorics.SimpleGraph.Regularity.Chunk Mathlib.Combinatorics.SimpleGraph.Regularity.Increment Mathlib.Combinatorics.SimpleGraph.Regularity.Lemma Mathlib.Combinatorics.SimpleGraph.Triangle.Removal Mathlib.Computability.AkraBazzi.GrowsPolynomially Mathlib.Dynamics.TopologicalEntropy.CoverEntropy Mathlib.Dynamics.TopologicalEntropy.NetEntropy Mathlib.Dynamics.TopologicalEntropy.Semiconj Mathlib.LinearAlgebra.QuadraticForm.Complex Mathlib.MeasureTheory.Function.SpecialFunctions.Arctan Mathlib.MeasureTheory.Measure.Doubling Mathlib.NumberTheory.ClassNumber.AdmissibleCardPowDegree Mathlib.NumberTheory.ClassNumber.Finite Mathlib.NumberTheory.ClassNumber.FunctionField Mathlib.NumberTheory.Cyclotomic.Basic Mathlib.NumberTheory.ModularForms.EisensteinSeries.IsBoundedAtImInfty Mathlib.NumberTheory.ModularForms.EisensteinSeries.UniformConvergence Mathlib.NumberTheory.MulChar.Lemmas Mathlib.NumberTheory.Ostrowski Mathlib.NumberTheory.SumPrimeReciprocals Mathlib.RingTheory.Perfection Mathlib.RingTheory.Polynomial.Cyclotomic.Basic Mathlib.RingTheory.Polynomial.Cyclotomic.Expand Mathlib.RingTheory.Polynomial.Cyclotomic.Roots Mathlib.RingTheory.Polynomial.Eisenstein.IsIntegral Mathlib.RingTheory.RootsOfUnity.AlgebraicallyClosed Mathlib.RingTheory.RootsOfUnity.Complex Mathlib.Topology.Algebra.PontryaginDual Mathlib.Topology.MetricSpace.GromovHausdorff Mathlib.Topology.MetricSpace.HolderNorm Mathlib.Topology.MetricSpace.Holder Mathlib.Topology.MetricSpace.Kuratowski
3
Mathlib.Analysis.SpecialFunctions.Complex.Arg Mathlib.Analysis.SpecialFunctions.Trigonometric.Angle 4
Mathlib.Analysis.Normed.Group.AddCircle 37
Mathlib.Geometry.Group.Marking (new file) 1398

Declarations diff

+ AddGroupMarking
+ GroupMarking
+ GroupMarking.refl
+ MarkedGroup
+ MarkedGroup.instGroup
+ MarkedGroup.instInhabited
+ MarkedGroup.instMulAction
+ MarkedGroup.instSmul
+ Subgroup.continuousConstSMul
+ Submonoid.continuousConstSMul
+ coe_fract
+ coe_surjective
+ exists_norm_mk'_lt
+ exists_norm_mul_lt
+ groupSeminorm
+ instFunLike
+ instMonoidHomClass
+ instNorm
+ instNormedCommGroup
+ instSeminormedCommGroup
+ instance : Inhabited (GroupMarking G G) := ⟨.refl⟩
+ instance : NormedAddCommGroup (AddCircle p) := QuotientAddGroup.instNormedAddCommGroup _
+ instance : NormedGroup (MarkedGroup m)
+ le_infDist
+ le_norm_iff
+ nhds_one_hasBasis
+ norm_eq_groupSeminorm
+ norm_eq_infDist
+ norm_le_iff
+ norm_lt_iff
+ norm_mk
+ norm_mk'
+ norm_mk'_eq_zero
+ norm_mk'_eq_zero_iff_mem_closure
+ norm_mk'_le_norm
+ norm_mk_eq_zero
+ norm_mk_eq_zero_iff_mem_closure
+ norm_mk_le_norm
+ ofMarkedGroup
+ ofMarkedGroup_inj
+ ofMarkedGroup_smul
+ ofMarkedGroup_symm_eq
+ ofMarkedGroup_toMarkedGroup
+ quotientEquivMarkedGroup
+ toMarkedGroup
+ toMarkedGroup_inj
+ toMarkedGroup_ofMarkedGroup
+ toMarkedGroup_smul
+ toMarkedGroup_symm_eq
- QuotientAddGroup.norm_eq_infDist
- QuotientAddGroup.norm_lt_iff
- QuotientAddGroup.norm_mk
- instContinuousConstSMul
- instContinuousSMul
- instance : NormedAddCommGroup (AddCircle p)

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for script/declarations_diff.sh contains some details about this script.


Decrease in tech debt: (relative, absolute) = (2.00, 0.00)
Current number Change Type
1401 -2 erw

Current commit 75a713a5eb
Reference commit cd5fbfb76d

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

/-!
# Marked groups

This file defines group markings and induces a norm on marked groups.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reference you can give here? I'm not familiar with this definition

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't find a reference, but eg this MathOverflow question says "A $k$-marked groups is a pair $(G,S)$ where $G$ is a group and $S$ is an ordered set of $k$ generators of $G$." which you can see is the same definition as I have here, only that the set of generators can be extended to give a hom from the free group.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If there isn't a reference for a definition you wish to add, does it really belong in mathlib?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, here's a reference: https://math.huji.ac.il/~perin/Documents/GGT/GGTCourse.pdf, Remark 5.3

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add this to the module docstring. It would also be nice to also add the explanation of why you choose a definition different from the one which seems more standard.

@b-mehta b-mehta added the awaiting-author A reviewer has asked the author a question or requested changes label Dec 17, 2024
@leanprover-community-bot-assistant leanprover-community-bot-assistant added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Jan 31, 2025
@YaelDillies YaelDillies removed awaiting-author A reviewer has asked the author a question or requested changes merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) labels Jan 31, 2025
Comment on lines 18 to 20
* `MarkedGroup`: If `m : GroupMarking G S`, then `MarkedGroup m` is a type synonym for `G`
endowed with the metric coming from `m`.
* `MarkedGroup.instNormedGroup`: A marked group is normed by its marking.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to give here a clearer description of what the metric and norm actually are. Currently the documentation only says that a norm is induced, with no clue as to how they are defined, or what they mean.

@[to_additive]
lemma norm_def [DecidableEq S] (x : MarkedGroup m)
[DecidablePred fun n ↦ ∃ l, toMarkedGroup (m l) = x ∧ l.toWord.length = n] :
‖x‖ = Nat.find (mul_aux' x) := by
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's generally not a great idea to have a lemma of this form, where the definition depends on a private lemma. You should instead give properties of the norm which can be useful without referencing private lemmas. For instance, the lemma that there exists a word in the free group with length n which corresponds to x is tricky to prove from the public API. This, and related lemmas (the norm is the smallest n with that property) should be included as part of the norm API.

@b-mehta b-mehta added the awaiting-author A reviewer has asked the author a question or requested changes label Jan 31, 2025
@YaelDillies
Copy link
Collaborator Author

I've realised that I'm basically redoing the content of Analysis.Normed.Group.Quotient for the multiplicative non-abelian group FreeGroup S, so I've opened #21341 and #21342.

@YaelDillies YaelDillies added WIP Work in progress and removed awaiting-author A reviewer has asked the author a question or requested changes labels Feb 2, 2025
@mathlib4-dependent-issues-bot mathlib4-dependent-issues-bot added the blocked-by-other-PR This PR depends on another PR to Mathlib (this label is automatically managed by a bot) label Feb 2, 2025
@mathlib4-dependent-issues-bot
Copy link
Collaborator

This PR/issue depends on:

* Multiplicativise using the (not so) new `GroupNorm` API.
* Deprecate the lemmas about the quotient norm
that hold for all norms.
* Move all remaining lemmas to a single `QuotientAddGroup` namespace. They were currently scattered across `_root_`, `AddSubgroup` and `QuotientAddGroup`.
* Follow naming convention in lemma names.
From LeanCamCombi
@github-actions github-actions bot added the large-import Automatically added label for PRs with a significant increase in transitive imports label Feb 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocked-by-other-PR This PR depends on another PR to Mathlib (this label is automatically managed by a bot) large-import Automatically added label for PRs with a significant increase in transitive imports t-algebra Algebra (groups, rings, fields, etc) WIP Work in progress
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants