Skip to content

feat(RepresentationTheory): add smooth representations (draft)#41520

Draft
JX-Mo wants to merge 35 commits into
leanprover-community:masterfrom
JX-Mo:Smooth.Draft
Draft

feat(RepresentationTheory): add smooth representations (draft)#41520
JX-Mo wants to merge 35 commits into
leanprover-community:masterfrom
JX-Mo:Smooth.Draft

Conversation

@JX-Mo

@JX-Mo JX-Mo commented Jul 9, 2026

Copy link
Copy Markdown

This draft PR introduces basic set up for smooth representations of a topological group. Hopefully it will serve as preliminary content for those who are interested in formalizing representation theory for p-adic reductive groups in the future. Concretely, we introduce the following in the files:

  1. Define smoothness for representations of a topological group. It is a property for a representation to be smooth: the stabilizer of any vector is open.
  2. Prove basic closure properties: subrepresentations, quotient representations, tensor products, direct sums of smooth representations are smooth.
  3. Construct smoothHom and contragredient: they are obtained by cutting out smooth vectors from the naive hom and dual.
  4. Construct the category SmoothRep of smooth representation and endow it a closed braided monoidal structure. We also show that the categorical construction ihom and dual is compatible with smootHom and contragredient.

LLM use: ChatGPT5.5 pointed out instead of manually proving the counit naturality of tensorHomAdjunction in the author's raw approach, Adjunction.restrictFullSubcategory can be used to construct the adjuntion.

JX-Mo and others added 30 commits June 23, 2026 18:21
Co-authored-by: Thomas Browning <tb65536@users.noreply.github.com>
1. Delete the last lemma and relevant imports. 
2. Fix naming conventions.
3. Delete the long list in docstring.
Make {n : \Nat} implicit in le_stabilizer_sum
Style improvements.
Simplify proofs related to stabilizers using simp +contextual.
Use the latest lemma `inv_apply_eq_iff` to shorten the proof of stabilizer_conj
Add a lemma for Subrepresentation recording the inherited group action.
Add the definition of the quotient representation associated to a subrepresentation in Representation.Subrepresentation
Co-authored-by: Whysoserioushah <109107491+Whysoserioushah@users.noreply.github.com>
Rename using `toRepresentation_apply_mk` and `quotient_apply_mk`

Remove @[simp] above quotient_apply_mk
…l groups

Introduces the concept of smooth representations for topological groups.

Prove closure properties such as subrepresentations, quotient representations, direct sums, and tensor products being smooth.

Construct smoothHom and smoothDual.
@JX-Mo JX-Mo marked this pull request as draft July 9, 2026 02:42
@mathlib-bors

mathlib-bors Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

This pull request is now in draft mode. No active bors state needed cleanup.

While this PR remains draft, bors will ignore commands on this PR. Mark it ready for review before using commands like bors r+ or bors try.

@github-actions github-actions Bot added the new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! label Jul 9, 2026
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

Welcome new contributor!

Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests.

We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the awaiting-author tag, or another reason described in the Lifecycle of a PR. The review dashboard has a dedicated webpage which shows whether your PR is on the review queue, and (if not), why.

If you haven't already done so, please come to https://leanprover.zulipchat.com/, introduce yourself, and mention your new PR.

Thank you again for joining our community.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

PR summary 16e3848858

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.RepresentationTheory.Stabilizer (new file) 1493
Mathlib.RepresentationTheory.Smooth.Basic (new file) 1620
Mathlib.RepresentationTheory.Smooth.SmRep (new file) 1872

Declarations diff (regex)

+ IntertwiningMap.isSmoothVector
+ IntertwiningMap.smoothVectors
+ IntertwiningMap.stabilizer_le
+ IsSmooth
+ IsSmoothVector
+ SmRep
+ contragredient
+ dual
+ dualFunctor
+ ihom
+ ihom_eq_RepOfSmoothHom
+ instance : (smoothProperty.{w} k G).IsClosedUnderIsomorphisms := ⟨by
+ instance : BraidedCategory (SmRep.{u} k G) := by
+ instance : Inhabited (SmRep k G) := ⟨(default : Rep k G), isSmooth_trivial⟩
+ instance : MonoidalClosed (SmRep.{u} k G)
+ instance : ObjectProperty.IsMonoidal (smoothProperty.{u} k G)
+ isIso_smVecAdjunction_unit
+ isSmoothVector_add
+ isSmoothVector_apply
+ isSmoothVector_iff
+ isSmoothVector_smul
+ isSmoothVector_sum
+ isSmoothVector_tmul
+ isSmoothVector_zero
+ isSmooth_contragredient
+ isSmooth_directSum
+ isSmooth_iff
+ isSmooth_of_iso
+ isSmooth_quotient
+ isSmooth_smoothHom
+ isSmooth_smoothVectors
+ isSmooth_subrepresentation
+ isSmooth_tprod
+ isSmooth_trivial
+ le_stabilizer_add
+ le_stabilizer_smul
+ le_stabilizer_sum
+ mem_smoothSubmodule
+ mem_stabilizer
+ of
+ quotient
+ quotient_apply_mk
+ smVec
+ smVecAdjunction
+ smoothHom
+ smoothProperty
+ smoothProperty_iff
+ smoothSubmodule
+ smoothVectors
+ stabilizer
+ stabilizer_conj
+ stabilizer_zero
+ tensorHomAdjunction
+ tensorHomAdjunction'
+ tensorHomAdjunction_homEquiv_eq_tensorHomEquiv
+ tensorHomEquiv
+ toRepresentation_apply_coe
+ toRepresentation_apply_mk
+ unop_dualObj_eq_contragredient
+ ι

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit 16e3848).

  • +66 new declarations
  • −0 removed declarations
+Representation.IntertwiningMap.stabilizer_le
+Representation.Smooth.IntertwiningMap.isSmoothVector
+Representation.Smooth.IntertwiningMap.smoothVectors
+Representation.Smooth.IsSmooth
+Representation.Smooth.IsSmooth.casesOn
+Representation.Smooth.IsSmooth.mk
+Representation.Smooth.IsSmooth.rec
+Representation.Smooth.IsSmooth.recOn
+Representation.Smooth.IsSmooth.smooth
+Representation.Smooth.IsSmoothVector
+Representation.Smooth.SmRep
+Representation.Smooth.SmRep.dual
+Representation.Smooth.SmRep.dualFunctor
+Representation.Smooth.SmRep.ihom
+Representation.Smooth.SmRep.ihom_eq_RepOfSmoothHom
+Representation.Smooth.SmRep.instBraidedCategory
+Representation.Smooth.SmRep.instInhabited
+Representation.Smooth.SmRep.instIsClosedUnderIsomorphismsRepSmoothProperty
+Representation.Smooth.SmRep.instIsMonoidalRepSmoothProperty
+Representation.Smooth.SmRep.instMonoidalClosed
+Representation.Smooth.SmRep.isIso_smVecAdjunction_unit
+Representation.Smooth.SmRep.isSmooth_of_iso
+Representation.Smooth.SmRep.of
+Representation.Smooth.SmRep.smVec
+Representation.Smooth.SmRep.smVecAdjunction
+Representation.Smooth.SmRep.tensorHomAdjunction
+Representation.Smooth.SmRep.tensorHomAdjunction'
+Representation.Smooth.SmRep.tensorHomAdjunction_homEquiv_eq_tensorHomEquiv
+Representation.Smooth.SmRep.tensorHomEquiv
+Representation.Smooth.SmRep.unop_dualObj_eq_contragredient
+Representation.Smooth.SmRep.ι
+Representation.Smooth.contragredient
+Representation.Smooth.isSmoothVector_add
+Representation.Smooth.isSmoothVector_apply
+Representation.Smooth.isSmoothVector_iff
+Representation.Smooth.isSmoothVector_smul
+Representation.Smooth.isSmoothVector_sum
+Representation.Smooth.isSmoothVector_tmul
+Representation.Smooth.isSmoothVector_zero
+Representation.Smooth.isSmooth_contragredient
+Representation.Smooth.isSmooth_directSum
+Representation.Smooth.isSmooth_iff
+Representation.Smooth.isSmooth_quotient
+Representation.Smooth.isSmooth_smoothHom
+Representation.Smooth.isSmooth_smoothVectors
+Representation.Smooth.isSmooth_subrepresentation
+Representation.Smooth.isSmooth_tprod
+Representation.Smooth.isSmooth_trivial
+Representation.Smooth.mem_smoothSubmodule
+Representation.Smooth.smoothHom
+Representation.Smooth.smoothProperty
+Representation.Smooth.smoothProperty_iff
+Representation.Smooth.smoothSubmodule
+Representation.Smooth.smoothVectors
+Representation.Smooth.smoothVectors.congr_simp
+Representation.le_stabilizer_add
+Representation.le_stabilizer_smul
+Representation.le_stabilizer_sum
+Representation.mem_stabilizer
+Representation.stabilizer
+Representation.stabilizer_conj
+Representation.stabilizer_zero
+Subrepresentation.quotient
+Subrepresentation.quotient_apply_mk
+Subrepresentation.toRepresentation_apply_coe
+Subrepresentation.toRepresentation_apply_mk

No changes to strong technical debt.

Increase in weak tech debt: (relative, absolute) = (3.00, 0.00)
Current number Change Type (weak)
5003 3 exposed public sections

Current commit 16e3848858
Reference commit e2361c1beb

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.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).

JX-Mo added 3 commits July 9, 2026 11:25
Define dual functor and dual representation in Smooth category.
add docstring for SmRep.of
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community!

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant