Skip to content

feat(FieldTheory/KrullTopology): define uniform group structure on galois group - #36239

Open
plp127 wants to merge 44 commits into
leanprover-community:masterfrom
plp127:aliu/krullTopology
Open

feat(FieldTheory/KrullTopology): define uniform group structure on galois group#36239
plp127 wants to merge 44 commits into
leanprover-community:masterfrom
plp127:aliu/krullTopology

Conversation

@plp127

@plp127 plp127 commented Mar 6, 2026

Copy link
Copy Markdown
Contributor

Endow the galois group of a field extension Gal(L/K) with the structure of a uniform group. Use this to prove some properties of the galois group earlier, for example, that the galois group is compact is immediate, and in more generality than the version proved in FieldTheory/Galois/Profinite. Deprecate some material which used to be used to define the krull topology, but is now unused since the krull topology comes out of the uniform structure.


Open in Gitpod

@github-actions

github-actions Bot commented Mar 6, 2026

Copy link
Copy Markdown

PR summary 00b209d4e8

Import changes for modified files

Dependency changes

File Base Count Head Count Change
Mathlib.FieldTheory.KrullTopology 1953 1970 +17 (+0.87%)
Mathlib.FieldTheory.Galois.Infinite 1956 1973 +17 (+0.87%)
Mathlib.NumberTheory.Cyclotomic.CyclotomicCharacter 2173 2175 +2 (+0.09%)
Mathlib.FieldTheory.Galois.Profinite 2281 2283 +2 (+0.09%)
Import changes for all files
Files Import difference
59 files Mathlib.Algebra.Module.Torsion.PrimaryComponent Mathlib.AlgebraicGeometry.EllipticCurve.LFunction Mathlib.Analysis.Fourier.ZMod Mathlib.Analysis.SpecialFunctions.Complex.CircleAddChar Mathlib.FieldTheory.Galois.Profinite Mathlib.NumberTheory.Cyclotomic.Basic Mathlib.NumberTheory.Cyclotomic.CyclotomicCharacter Mathlib.NumberTheory.Cyclotomic.Discriminant Mathlib.NumberTheory.Cyclotomic.Gal Mathlib.NumberTheory.Cyclotomic.PrimitiveRoots Mathlib.NumberTheory.DirichletCharacter.GaussSum Mathlib.NumberTheory.FLT.Three Mathlib.NumberTheory.Fermat Mathlib.NumberTheory.GaussSum Mathlib.NumberTheory.Height.NumberField Mathlib.NumberTheory.JacobiSum.Basic Mathlib.NumberTheory.LSeries.DirichletContinuation Mathlib.NumberTheory.LSeries.Nonvanishing Mathlib.NumberTheory.LSeries.PrimesInAP Mathlib.NumberTheory.LSeries.ZMod Mathlib.NumberTheory.LSeries.ZetaZeros Mathlib.NumberTheory.LegendreSymbol.AddCharacter Mathlib.NumberTheory.LegendreSymbol.Complex Mathlib.NumberTheory.LegendreSymbol.JacobiSymbol Mathlib.NumberTheory.LegendreSymbol.QuadraticChar.GaussSum Mathlib.NumberTheory.LegendreSymbol.QuadraticReciprocity Mathlib.NumberTheory.LucasLehmer Mathlib.NumberTheory.NumberField.AdeleRing Mathlib.NumberTheory.NumberField.CMField Mathlib.NumberTheory.NumberField.ClassNumber Mathlib.NumberTheory.NumberField.Completion.FinitePlace Mathlib.NumberTheory.NumberField.Cyclotomic.Basic Mathlib.NumberTheory.NumberField.Cyclotomic.Embeddings Mathlib.NumberTheory.NumberField.Cyclotomic.Galois Mathlib.NumberTheory.NumberField.Cyclotomic.Ideal Mathlib.NumberTheory.NumberField.Cyclotomic.PID Mathlib.NumberTheory.NumberField.Cyclotomic.Three Mathlib.NumberTheory.NumberField.DedekindZeta Mathlib.NumberTheory.NumberField.Discriminant.Different Mathlib.NumberTheory.NumberField.ExistsRamified Mathlib.NumberTheory.NumberField.FinitePlaces Mathlib.NumberTheory.NumberField.Ideal.Asymptotics Mathlib.NumberTheory.NumberField.Ideal.Basic Mathlib.NumberTheory.NumberField.Ideal.KummerDedekind Mathlib.NumberTheory.NumberField.ProductFormula Mathlib.NumberTheory.RamificationInertia.Galois Mathlib.NumberTheory.RamificationInertia.HilbertTheory Mathlib.NumberTheory.RamificationInertia.Unramified Mathlib.RingTheory.DedekindDomain.Different Mathlib.RingTheory.DedekindDomain.Factorization Mathlib.RingTheory.DedekindDomain.FiniteAdeleRing Mathlib.RingTheory.DedekindDomain.LinearDisjoint Mathlib.RingTheory.Ideal.Norm.RelNorm Mathlib.RingTheory.Localization.AtPrime.Extension Mathlib.RingTheory.RamificationInertia.Basic Mathlib.RingTheory.RootsOfUnity.AlgebraicallyClosed Mathlib.Tactic.NormNum.LegendreSymbol Mathlib.Tactic Mathlib.Topology.Algebra.Ring.Compact
2
5 files Mathlib.FieldTheory.AbsoluteGaloisGroup Mathlib.FieldTheory.Galois.Abelian Mathlib.FieldTheory.Galois.Infinite Mathlib.FieldTheory.Galois.IsGaloisGroup Mathlib.FieldTheory.KrullTopology
17
Mathlib.FieldTheory.FinTrdeg (new file) 1756

Declarations diff (regex)

+ AlgEquiv.isComplete_fixingSubgroup
+ AlgEquiv.totallyBounded_fixingSubgroup
+ AlgEquiv.totallyBounded_univ
+ FinTrdeg
+ FinTrdeg.of_isTranscendenceBasis
+ FinTrdeg.of_trdeg
+ FinTrdeg.trans
+ IntermediateField.isClosed_fixingSubgroup
+ IntermediateField.isOpen_fixingSubgroup
+ coe_fixingSubgroupEquiv_apply
+ coe_fixingSubgroupEquiv_symm_apply
+ coe_subgroupEquivAlgEquiv_apply
+ coe_subgroupEquivAlgEquiv_symm_apply
+ completeSpace_of_weaklyLocallyCompactSpace
+ exists_finset_isTranscendenceBasis
+ finTrdeg_iff_trdeg
+ finite_of_algebraicIndependent
+ finite_of_isTranscendenceBasis
+ instance : Algebra.IsAlgebraic (⊤ : IntermediateField K L) L
+ instance : Algebra.IsAlgebraic K (⊥ : IntermediateField K L)
+ instance : IsLeftUniformGroup Gal(L/K)
+ instance : TotallySeparatedSpace Gal(L/K) := by
+ instance : UniformSpace Gal(L/K) := .ofCore
+ instance [Algebra.EssFiniteType K L] : FinTrdeg K L
+ instance [Algebra.IsAlgebraic K L] : FinTrdeg K L
+ instance [Algebra.IsIntegral K L] : CompactSpace Gal(L/K)
+ instance [Algebra.IsIntegral R A] (S : Set A) : Algebra.IsIntegral R (Algebra.adjoin R S)
+ instance [Algebra.IsIntegral R A] (S : Set A) [Finite S] : Module.Finite R (Algebra.adjoin R S)
+ instance [FinTrdeg K L] : CompleteSpace Gal(L/K)
+ instance [FinTrdeg K L] : LocallyCompactSpace Gal(L/K) := sorry
+ instance [Finite S] : Algebra.EssFiniteType F (adjoin F S)
+ instance {A : Type*} [CommSemiring A] [Algebra R A] {t : Set A} [Finite t] :
+ instance {S : Set L} [Finite S] [Algebra.IsIntegral K L] :
+ isComplete_univ
+ krullTopology_discreteUniformity_of_essFiniteType
+ krullTopology_mem_nhds_one_iff'
+ krullTopology_mem_uniformity_iff
+ krullTopology_mem_uniformity_iff_fg
+ krullTopology_uniformity_def
+ trdeg_lt_aleph0_of_finiteType
- instance (K L : Type*) [Field K] [Field L] [Algebra K L] : IsTopologicalGroup Gal(L/K)
- instance [IsGalois k K] : CompactSpace Gal(K/k)
- instance {K L : Type*} [Field K] [Field L] [Algebra K L] [Algebra.IsIntegral K L] :
- krullTopology_discreteTopology_of_finiteDimensional

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

Computed after the build finishes.


No changes to strong technical debt.

Decrease in weak tech debt: (relative, absolute) = (1.00, 0.00)
Current number Change Type (weak)
5021 -1 exposed public sections

Current commit 00b209d4e8
Reference commit d732046e27

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

@github-actions github-actions Bot added the t-algebra Algebra (groups, rings, fields, etc) label Mar 6, 2026
@plp127 plp127 added the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Mar 6, 2026
Comment thread Mathlib/FieldTheory/KrullTopology.lean Outdated
Comment thread Mathlib/FieldTheory/KrullTopology.lean
⟨fun _ _ _ h₁ h₂ => h₁.trans h₂⟩)) }

open SetRel in
theorem krullTopology_mem_uniformity_iff {s : SetRel Gal(L/K) Gal(L/K)} :

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

There's nothing called krullTopology in this statement. Maybe mem_uniformity_gal_iff?

@plp127 plp127 Mar 29, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

There's also nothing called gal in this statement. Maybe mem_uniformity_algEquiv_self_iff?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Maybe we have convention that call this gal otherwise algEquiv_self is too long?

Comment thread Mathlib/FieldTheory/KrullTopology.lean Outdated
Comment thread Mathlib/FieldTheory/KrullTopology.lean Outdated
instance krullTopology (K L : Type*) [Field K] [Field L] [Algebra K L] :
TopologicalSpace Gal(L/K) :=
GroupFilterBasis.topology (galGroupBasis K L)
instance krullTopology : TopologicalSpace Gal(L/K) := inferInstance

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

a) You should probably update the docstring.
b) Do we still need this? Maybe we should remove this and instead add some blurb about the Krull topology on the uniformity instance.

Comment thread Mathlib/FieldTheory/KrullTopology.lean Outdated
open scoped Topology in
lemma krullTopology_mem_nhds_one_iff (K L : Type*) [Field K] [Field L] [Algebra K L]
(s : Set Gal(L/K)) : s ∈ 𝓝 1 ↔ ∃ E : IntermediateField K L,
lemma krullTopology_mem_nhds_one_iff {s : Set Gal(L/K)} : s ∈ 𝓝 1 ↔ ∃ E : IntermediateField K L,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Again, not sure if you want krullTopology in the names of these statements. Maybe the correct fix is to put all of this in a KrullTopology namespace?

Comment thread Mathlib/FieldTheory/KrullTopology.lean
plp127 and others added 4 commits March 5, 2026 21:25
Co-authored-by: Violeta Hernández Palacios <vi.hdz.p@gmail.com>
Co-authored-by: Violeta Hernández Palacios <vi.hdz.p@gmail.com>
module

public import Mathlib.FieldTheory.Galois.Basic
public import Mathlib.Topology.Algebra.FilterBasis

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Note this import is now only used in this file by the deprecated things. If I delete the deprecations I can delete the import.

@mathlib-merge-conflicts mathlib-merge-conflicts Bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Mar 10, 2026
@mathlib-merge-conflicts

Copy link
Copy Markdown

This pull request has conflicts, please merge master and resolve them.

@plp127 plp127 changed the title refactor(FieldTheory/KrullTopology): define uniform group structure on galois group feat(FieldTheory/KrullTopology): define uniform group structure on galois group Mar 29, 2026
@plp127
plp127 marked this pull request as ready for review March 29, 2026 03:22
@github-actions github-actions Bot removed merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. labels Mar 29, 2026
@mathlib-triage mathlib-triage Bot assigned mattrobball and unassigned joelriou Apr 22, 2026
Comment thread Mathlib/FieldTheory/KrullTopology.lean
@dagurtomas dagurtomas added the awaiting-author A reviewer has asked the author a question or requested changes. label May 14, 2026
@plp127
plp127 marked this pull request as draft July 26, 2026 18:14
@mathlib-bors

mathlib-bors Bot commented Jul 26, 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.

@plp127
plp127 marked this pull request as ready for review July 27, 2026 17:38
@mathlib-dependent-issues mathlib-dependent-issues Bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Jul 27, 2026
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 (this label is automatically managed by a bot) t-algebra Algebra (groups, rings, fields, etc) tech debt Tracking cross-cutting technical debt, see e.g. the "Technical debt counters" stream on zulip

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants