Welcome to the mathlib review page. Everybody's help with reviewing is appreciated. Reviewing contributions is important, and everybody is welcome to review pull requests! If you're not sure how, the pull request review guide is there to help you.
This page is the main reviewer-facing queue: if a PR is ready for review, it belongs here. The triage page contains additional triage-oriented views, but it is not the primary review queue.
This page contains tables of
| Number |
Author |
Title |
Description |
Labels |
+/- |
Modified files (first 100) |
📝 |
💬 |
All users who commented or reviewed |
Assignee(s) |
Updated |
Last status change |
total time in review |
| 35661 |
chrisflav author:chrisflav |
feat(Geometry/Manifold): a smooth map induces a morphism of locally ringed spaces |
---
I have put things in the `IsManifold` namespace, because `IsManifold.locallyRingedSpace` is in that namespace. It seems to me that this namespace is not very fitting, because `IsManifold` is not mentioned once. Since I am unfamiliar with this part of the library, I refrained from changing it, but I am happy to do so if preferred.
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry
t-differential-geometry
|
156/3 |
Mathlib/Geometry/Manifold/ContMDiff/Basic.lean,Mathlib/Geometry/Manifold/LocalInvariantProperties.lean,Mathlib/Geometry/Manifold/Sheaf/LocallyRingedSpace.lean,Mathlib/Geometry/Manifold/Sheaf/Smooth.lean |
4 |
7 |
['chrisflav', 'github-actions', 'grunweg', 'hrmacbeth'] |
ocfnash assignee:ocfnash |
20-28059 20 days ago |
20-28059 20 days ago |
31-63359 31 days |
| 33864 |
Timeroot author:Timeroot |
feat(Computability/Primrec): Proving several Nat arithmetic functions are primrec |
Prove that gcd, lcm, coprimality, divisiblity, primality, factorial, descending factorial, powers, and various logarithms are all primitive recursive.
Co-authored-by: Aristotle Harmonic <[aristotle-harmonic@harmonic.fun](mailto:aristotle-harmonic@harmonic.fun)>
|
large-import
t-computability
|
195/4 |
Mathlib.lean,Mathlib/Computability/Primrec.lean,Mathlib/Computability/Primrec/List.lean,Mathlib/Computability/Primrec/Nat.lean,Mathlib/Data/Nat/Log.lean |
5 |
6 |
['eric-wieser', 'github-actions', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
JovanGerb assignee:JovanGerb |
17-5266 17 days ago |
17-5029 17 days ago |
42-34501 42 days |
| 36220 |
harahu author:harahu |
doc(misc): update two theorem names |
- https://www.wikidata.org/wiki/Q1543149 carries the name "Sokhotski–Plemelj theorem"
- While https://www.wikidata.org/wiki/Q2226807 does carry the name "Vantieghems theorem", I assume the s is assumed to be possessive, since the mathematician credited with the result is called Emmanuel Vantieghem.
---
[](https://gitpod.io/from-referrer/)
|
IMO |
2/2 |
docs/1000.yaml |
1 |
7 |
['dwrensha', 'github-actions', 'harahu'] |
dwrensha assignee:dwrensha |
16-83554 16 days ago |
20-74569 20 days ago |
20-74563 20 days |
| 25983 |
Multramate author:Multramate |
feat(AlgebraicGeometry/EllipticCurve/Scheme): define the affine scheme associated to an elliptic curve |
This contribution was created as part of the AIM workshop "Formalizing Algebraic Geometry" in June 2024.
Co-authored-by: Michael Stoll [Michael.Stoll@uni-bayreuth.de](mailto:Michael.Stoll@uni-bayreuth.de)
Co-authored-by: Junyan Xu [junyanxu.math@gmail.com](mailto:junyanxu.math@gmail.com) |
t-algebraic-geometry |
165/13 |
Mathlib.lean,Mathlib/Algebra/Category/CommAlgCat/Basic.lean,Mathlib/Algebra/Polynomial/Bivariate.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Affine/Scheme.lean,Mathlib/AlgebraicGeometry/GammaSpecAdjunction.lean,Mathlib/AlgebraicGeometry/Scheme.lean,Mathlib/FieldTheory/Galois/Basic.lean,Mathlib/FieldTheory/Galois/Infinite.lean,Mathlib/GroupTheory/GroupExtension/Basic.lean,Mathlib/GroupTheory/QuotientGroup/Defs.lean,Mathlib/GroupTheory/SpecificGroups/Cyclic.lean,Mathlib/RingTheory/AdjoinRoot.lean,Mathlib/RingTheory/Ideal/Quotient/Operations.lean,Mathlib/RingTheory/Invariant/Basic.lean,Mathlib/RingTheory/Valuation/ValuationSubring.lean |
15 |
4 |
['MichaelStollBayreuth', 'Multramate', 'github-actions'] |
alexjbest assignee:alexjbest |
16-58800 16 days ago |
20-9462 20 days ago |
20-11720 20 days |
| 35533 |
mariainesdff author:mariainesdff |
feat(RingTheory/DedekindDomain/Ideal/Lemmas): add nontrivial_heightOneSpectrum |
Co-authored by: @xgenereux.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
12/0 |
Mathlib/RingTheory/DedekindDomain/Ideal/Lemmas.lean |
1 |
4 |
['erdOne', 'github-actions', 'mariainesdff', 'tb65536'] |
mattrobball assignee:mattrobball |
16-58796 16 days ago |
22-29982 22 days ago |
28-57121 28 days |
| 35804 |
mariainesdff author:mariainesdff |
feat(RingTheory/DividedPowerAlgebra/Init): add universal divided power algebra |
We define the universal divided power algebra of an `R`-module `M`.
Co-authored by @AntoineChambert-Loir
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
284/0 |
Mathlib.lean,Mathlib/RingTheory/DividedPowerAlgebra/Init.lean |
2 |
1 |
['github-actions'] |
mattrobball assignee:mattrobball |
16-20477 16 days ago |
16-20547 16 days ago |
28-11126 28 days |
| 31662 |
edwin1729 author:edwin1729 |
feat(Topology/Order): topological basis of scott topology on Complete… |
…PartialOrder
---
[Zulip discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/.3E.20Algebraic.20complete.20partial.20order.20and.20domain.20theory/with/536359313) for this PR.
(1/2) PRs in domain theory, proving that scott topologies over Algebraic DCPOs (`CompletePartialOrder`) are sober.
The main reference is [Renata, Duality in Domain Theory](https://alyata.github.io/documents/duality_domain_theory.pdf). But the statements can also be found in the canonical text [Abramsky and Jung](https://www.cs.ox.ac.uk/people/samson.abramsky/handbook.pdf)
This first PR proves two prerequisites, namely:
- the specialization order induced by the scott topology corresponds to the existing order of the DCPO. Prop 3.1.5 in [Duality in Domain Theory](https://alyata.github.io/documents/duality_domain_theory.pdf) and Prop 2.3.2(1) in [Abramsky and Jung](https://www.cs.ox.ac.uk/people/samson.abramsky/handbook.pdf)
- the upward closures of compact elements of the DCPO form a topological basis for the Scott Topology. Prop 3.5.2 in [Duality in Domain Theory](https://alyata.github.io/documents/duality_domain_theory.pdf) and Prop 2.3.6(2) in [Abramsky and Jung](https://www.cs.ox.ac.uk/people/samson.abramsky/handbook.pdf)
- [x] depends on: #33061
**The next PR is here:** #31670
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
239/1 |
Mathlib.lean,Mathlib/Topology/Order/ScottTopology.lean,Mathlib/Topology/Order/ScottTopologyDCPO.lean,docs/references.bib |
4 |
66 |
['b-mehta', 'edwin1729', 'github-actions', 'mathlib-merge-conflicts', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'plp127'] |
b-mehta assignee:b-mehta |
15-65890 15 days ago |
19-13530 19 days ago |
25-66241 25 days |
| 31135 |
kckennylau author:kckennylau |
feat(RingTheory): is localization iff is localization on saturation |
In this PR we show that `A` is a localization of `R` on the submonoid `S` iff it is so on the saturation of `S`.
Crucially, the saturation of `S` is precisely the elements that become a unit in `A`.
---
- [x] depends on: #31132
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
53/0 |
Mathlib.lean,Mathlib/RingTheory/Localization/Saturation.lean |
2 |
11 |
['alreadydone', 'chrisflav', 'github-actions', 'kckennylau', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot'] |
mattrobball assignee:mattrobball |
15-58793 15 days ago |
21-5336 21 days ago |
21-7216 21 days |
| 34031 |
lua-vr author:lua-vr |
feat(Dynamics/BirkhoffSum): add the maximal ergodic theorem |
---
This file exports three constants:
```lean
public def birkhoffAverageSupSet (f : α → α) (g : α → ℝ) (a : ℝ) : Set α :=
{x | ∃ n : ℕ, a < birkhoffAverage ℝ f g n x}
public theorem meas_birkhoffAverageSupSet_smul_const_le_integral (a : ℝ) (ha : 0 < a) :
μ.real (birkhoffAverageSupSet f g a) • a ≤ ∫ x in birkhoffAverageSupSet f g a, g x ∂μ
public theorem meas_birkhoffAverageSupSet_smul_const_le_norm (a : ℝ) (ha : 0 < a) :
μ.real (birkhoffAverageSupSet f (fun x ↦ ‖g x‖) a) • a ≤ ∫ x, ‖g x‖ ∂μ
```
In my interpretation, the other constants are auxiliary, so I did not make them public. If it's of independent interest, `birkhoffMax` could be exported or moved to a dedicated file, but I'm not sure of that at the moment.
- [x] depends on: #34030
- [x] depends on: #34029
- [x] depends on: #34025
[](https://gitpod.io/from-referrer/)
|
t-dynamics |
291/0 |
Mathlib.lean,Mathlib/Dynamics/BirkhoffSum/Maximal.lean |
2 |
4 |
['github-actions', 'lua-vr', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
urkud assignee:urkud |
15-58791 15 days ago |
21-13934 21 days ago |
21-14298 21 days |
| 35812 |
khwilson author:khwilson |
feat(MeasureTheory/Group/GeometryOfNumbers): successive minima and existence of a directional basis |
Define the successive minima of a discrete subgroup of a real vector space with respect to a convex set. These invariants show up throughout the geometry of numbers and are the focus of Minkowski's Second Theorem (whose statement is left here with a `proof_wanted`).
Note: The key lemma is that the "gauge set" of the convex set is closed. I took the approach of showing that it is sequentially closed. There's an alternative approach via showing it's the union of a finite number of closed sets. I personally thought this approach was more intuitive, but the union approach may result in a slightly shorter proof.
Co-authored-by: Yaël Dillies
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-measure-probability
|
392/33 |
Mathlib/Analysis/Convex/Basic.lean,Mathlib/Analysis/Convex/Body.lean,Mathlib/Analysis/Convex/Gauge.lean,Mathlib/LinearAlgebra/FiniteDimensional/Lemmas.lean,Mathlib/LinearAlgebra/LinearIndependent/Lemmas.lean,Mathlib/MeasureTheory/Group/GeometryOfNumbers.lean |
6 |
3 |
['github-actions', 'joneugster'] |
urkud assignee:urkud |
15-58787 15 days ago |
27-47736 27 days ago |
27-50696 27 days |
| 36155 |
grunweg author:grunweg |
feat: custom elaborators for TangentSpace and tangentMap(Within) |
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry |
58/28 |
Mathlib/Geometry/Manifold/ContMDiffMFDeriv.lean,Mathlib/Geometry/Manifold/GroupLieAlgebra.lean,Mathlib/Geometry/Manifold/IntegralCurve/Basic.lean,Mathlib/Geometry/Manifold/MFDeriv/SpecificFunctions.lean,Mathlib/Geometry/Manifold/MFDeriv/Tangent.lean,Mathlib/Geometry/Manifold/Notation.lean,Mathlib/Topology/FiberBundle/Constructions.lean |
7 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
sgouezel assignee:sgouezel |
15-58782 15 days ago |
19-16388 19 days ago |
20-26144 20 days |
| 36328 |
Multramate author:Multramate |
feat(AlgebraicGeometry/EllipticCurve): improve API for maps and base changes |
Dot notation for concrete Weierstrass curves (`Affine`/`Jacobian`/`Projective`) does not quite work on `W : WeierstrassCurve F` even though they're all abbreviations of `WeierstrassCurve`, which is annoying for functions that return `WeierstrassCurve`s (currently just `map`, `baseChange`, and `variableChange`). For instance, for an `A : Affine F`, the expression `A.baseChange K` is a `WeierstrassCurve K` rather than an `Affine K`, so `(A.baseChange K).polynomial` will not work since `polynomial` is a function of `Affine K` rather than `WeierstrassCurve K`; instead we have to do `(A.baseChange K).toAffine.polynomial`, which is wordy. This PR introduces abbreviations `Affine/Jacobian/Projective.map/baseChange` to get around this, and introduces scoped notations `W/K`, where the slashes are given by `\textf`. The notation `W⟮K⟯` for `(W.baseChange K)Point` seems to be useless so far and can now be replaced by `(W/K).Point`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry |
284/288 |
Mathlib/AlgebraicGeometry/EllipticCurve/Affine/Basic.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Affine/Formula.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Affine/Point.lean,Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian/Basic.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian/Formula.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian/Point.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Projective/Basic.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Projective/Formula.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Projective/Point.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Reduction.lean,Mathlib/AlgebraicGeometry/EllipticCurve/VariableChange.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean |
13 |
1 |
['github-actions'] |
alexjbest assignee:alexjbest |
15-58773 15 days ago |
18-71266 18 days ago |
18-71892 18 days |
| 34717 |
CoolRmal author:CoolRmal |
feat: add more APIs for the first derivative test |
The derivative test in Mathlib right now only says whether a point is local maximum. This is hard to use in practice (for example in the [PNT](https://github.com/AlexKontorovich/PrimeNumberTheoremAnd) project) as we sometimes want to show that a point is a maximum on some interval. This PR adds more APIs for the first derivative test to resolve this issue.
Co-authored-by: Louis Liu @Deep0Thinking
---
[](https://gitpod.io/from-referrer/)
|
t-analysis
t-order
|
412/32 |
Mathlib/Analysis/Calculus/DerivativeTest.lean,Mathlib/Topology/Order/OrderClosedExtr.lean |
2 |
4 |
['CoolRmal', 'MichaelStollBayreuth', 'github-actions'] |
nobody |
13-33763 13 days ago |
17-10511 17 days ago |
17-10530 17 days |
| 36282 |
smmercuri author:smmercuri |
chore(Topology/Algebra/Valued/WithVal): remove `@` lemma |
Prove `Valuation.IsEquiv.uniformContinuous_congr` directly and remove `Valuation.IsEquiv.uniformContinuous` which is not needed.
---
- [x] depends on: #36310
[](https://gitpod.io/from-referrer/)
|
|
18/32 |
Mathlib/Topology/Algebra/Valued/WithVal.lean |
1 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
13-30005 13 days ago |
13-66396 13 days ago |
14-34977 14 days |
| 36283 |
Vierkantor author:Vierkantor |
chore(Tactic/GRewrite): rewrite `grw` family tactic docstrings |
This PR rewrites the docstrings for tactics in the `grw` family: `grw`, `grewrite`, `apply_rw`, `apply_rewrite`, `nth_rw` and `nth_rewrite`, to consistently match the official style guide, to make sure they are complete while not getting too long.
The `grw` tactic docstring was nice and complete, but the others were very brief and needed expansion (especially since it took me quite some time to understand the motivation behind `apply_rw`).
---
[](https://gitpod.io/from-referrer/)
|
documentation
t-meta
|
141/23 |
Mathlib/Tactic/GRewrite/Elab.lean |
1 |
13 |
['JovanGerb', 'Vierkantor', 'github-actions'] |
adamtopaz assignee:adamtopaz |
12-82898 12 days ago |
20-481 20 days ago |
20-475 20 days |
| 35568 |
goliath-klein author:goliath-klein |
refactor(PiTensorProduct/{InjectiveNorm, ProjectiveNorm}): switch NormedSpace instance to `projectiveSeminorm` |
The PR switches the `NormedSpace` instance on `PiTensorProduct`s from `injectiveSeminorm` to `projectiveSeminorm` and updates all follow-up results.
The signature of `norm_eval_le_projectiveSeminorm` is changed to match the one of `norm_eval_le_injectiveSeminorm`.
This is the second in a series of three PRs with the goal to [deprecate `PiTensorProuduct.injectiveSeminorm`](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/injectiveSeminorm/with/568798633).
---
- [x] depends on: #35567
This series is the result of splitting up #34137. More discussion there.
Co-authored-by: Davood H. H. Tehrani
[](https://gitpod.io/from-referrer/)
|
new-contributor |
27/29 |
Mathlib/Analysis/Normed/Module/PiTensorProduct/InjectiveSeminorm.lean,Mathlib/Analysis/Normed/Module/PiTensorProduct/ProjectiveSeminorm.lean |
2 |
5 |
['github-actions', 'goliath-klein', 'mathlib-dependent-issues', 'robin-carlier'] |
robin-carlier assignee:robin-carlier |
12-79648 12 days ago |
12-79648 12 days ago |
19-85681 19 days |
| 35535 |
mariainesdff author:mariainesdff |
feat(RingTheory/ClassGroup): prove mulEquiv |
We prove that isomorphic rings have isomorphic class groups.
Co-authored by: @xgenereux.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
233/9 |
Mathlib/Algebra/Ring/CompTypeclasses.lean,Mathlib/RingTheory/ClassGroup.lean,Mathlib/RingTheory/FractionalIdeal/Operations.lean,Mathlib/RingTheory/IntegralClosure/IsIntegral/Basic.lean,Mathlib/RingTheory/LocalProperties/Basic.lean,Mathlib/RingTheory/Localization/FractionRing.lean |
6 |
29 |
['erdOne', 'eric-wieser', 'github-actions', 'mariainesdff', 'mathlib-merge-conflicts', 'tb65536'] |
mattrobball assignee:mattrobball |
12-58784 12 days ago |
20-8124 20 days ago |
27-52613 27 days |
| 36329 |
rwst author:rwst |
feat(PowerSeries): add barebones Log.lean |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
67/0 |
Mathlib.lean,Mathlib/RingTheory/PowerSeries/Log.lean |
2 |
1 |
['github-actions'] |
mariainesdff assignee:mariainesdff |
12-58773 12 days ago |
18-81184 18 days ago |
18-81178 18 days |
| 36374 |
EtienneC30 author:EtienneC30 |
refactor: define the Poisson measure via a sum of Dirac masses |
Change the definition of `poissonMeasure r` to be
`Measure.sum (fun n ↦ ENNReal.ofReal (exp (-r) * r ^ n / (n)!) • (.dirac n))`
instead of using `PMF`. This allows to directly use API for measures instead of having to develop an API for `PMF`, which anyway is defined as a sum of Dirac masses.
Also add some results about integrals against the poissonMeasure.
---
- [x] depends on: #36355
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
large-import
|
105/30 |
Mathlib/MeasureTheory/Measure/Dirac.lean,Mathlib/Probability/Distributions/Poisson/Basic.lean,Mathlib/Probability/Distributions/Poisson/PoissonLimitThm.lean |
3 |
11 |
['DavidLedvinka', 'EtienneC30', 'b-mehta', 'github-actions', 'mathlib-dependent-issues'] |
kex-y assignee:kex-y |
12-58771 12 days ago |
16-83389 16 days ago |
17-11016 17 days |
| 36401 |
JovanGerb author:JovanGerb |
feat(positivity): positivity extension for `a - b` |
This PR adds support in `positivity` for proving things about subtraction. For example, if the goal is `0 < a - b`, and there is a local hypothesis of type `b < a`, then we close the goal.
The motivation is that we want `positivity` to be a flexible tactic. So, when trying to prove `0 < a - b` using a local hypothesis, we should look for the simp normal form of this, which is `b < a`.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
61/24 |
Mathlib/Analysis/Calculus/Taylor.lean,Mathlib/Analysis/Complex/AbelLimit.lean,Mathlib/Analysis/Complex/BorelCaratheodory.lean,Mathlib/Analysis/Complex/Hadamard.lean,Mathlib/Analysis/Convex/BetweenList.lean,Mathlib/Analysis/SpecialFunctions/Log/Deriv.lean,Mathlib/Analysis/SpecificLimits/FloorPow.lean,Mathlib/Geometry/Manifold/Riemannian/PathELength.lean,Mathlib/Tactic/Positivity/Basic.lean,MathlibTest/positivity.lean |
10 |
4 |
['github-actions', 'hrmacbeth', 'j-loreaux', 'leanprover-radar'] |
dwrensha assignee:dwrensha |
12-58765 12 days ago |
16-64486 16 days ago |
16-67902 16 days |
| 34728 |
j-loreaux author:j-loreaux |
feat: continuous linear equivalence between continuous `ℝ`- and `𝕜`-linear functionals (in either the strong or weak-⋆ topologies) |
This realizes the map `StrongDual.extendRCLikeₗ`, after pre- and post-composing so that it is an equivalence between the weak duals, as a *continuous* linear equivalence.
In addition, when the space is a topological vector space, we realize `StrongDual.extendRCLikeₗ` as a *continuous* linear equivalence between the strong duals.
---
- [x] depends on: #34543
The placement in `Analysis/Normed/Module/WeakDual` seems suboptimal because this has nothing to do with the norm. This is because `WeakDual.toStrongDual` is already in this file, which should probably be moved to `Topology/Algebra/Module/WeakDual`. However, even if that moves, the declarations added in this PR cannot easily go with it because they involve `RCLike`. Potentially, they could move to `Analysis/RCLike/Extend` if that file gained the `Topology/Algebra/Module/WeakDual` import.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
87/2 |
Mathlib/Analysis/Normed/Module/RCLike/Extend.lean,Mathlib/Analysis/Normed/Module/WeakDual.lean |
2 |
8 |
['ADedecker', 'github-actions', 'j-loreaux', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
urkud assignee:urkud |
11-58608 11 days ago |
16-82561 16 days ago |
16-84971 16 days |
| 35285 |
SnirBroshi author:SnirBroshi |
feat(Algebra/LinearRecurrence): define a standard basis for the solution space of a linear recurrence |
Also `mkSol` is injective.
---
The hard work was already done by the existing equivalence `toInit`; this defines the basis that the equivalence provides and uses it to simplify a couple of proofs.
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
24/12 |
Mathlib/Algebra/LinearRecurrence.lean |
1 |
1 |
['github-actions'] |
kim-em assignee:kim-em |
11-58605 11 days ago |
40-47132 40 days ago |
40-47126 40 days |
| 36399 |
chrisflav author:chrisflav |
feat(RingTheory/Flat): finite flat algebra is trivial if rank is equal to `1` |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
177/3 |
Mathlib.lean,Mathlib/LinearAlgebra/TensorProduct/Associator.lean,Mathlib/RingTheory/Flat/Rank.lean,Mathlib/RingTheory/Localization/BaseChange.lean,Mathlib/RingTheory/Spectrum/Prime/Topology.lean,Mathlib/RingTheory/TensorProduct/Maps.lean |
6 |
1 |
['github-actions'] |
alreadydone assignee:alreadydone |
11-58594 11 days ago |
17-5580 17 days ago |
17-5574 17 days |
| 36442 |
SnirBroshi author:SnirBroshi |
feat(Data/Sym/Sym2/Card): cardinality theorems about `Sym2 α` |
---
[](https://gitpod.io/from-referrer/)
|
t-data |
95/0 |
Mathlib.lean,Mathlib/Data/Sym/Sym2/Card.lean |
2 |
1 |
['github-actions'] |
joneugster assignee:joneugster |
11-58591 11 days ago |
16-8000 16 days ago |
16-7994 16 days |
| 36083 |
gasparattila author:gasparattila |
feat: decomposition of `ContinuousAffineMap` as an `Equiv` |
This PR defines an equivalence `(V →ᴬ[R] Q) ≃ Q × (V →L[R] W)`, plus `LinearEquiv` and `AffineEquiv` variants. To match the names of the new equivalences, `ContinuousAffineMap.toConstProdLinearMap` is also renamed.
---
[](https://gitpod.io/from-referrer/)
|
|
154/13 |
Mathlib/Analysis/Normed/Affine/ContinuousAffineMap.lean,Mathlib/Topology/Algebra/ContinuousAffineMap.lean |
2 |
5 |
['dupuisf', 'gasparattila', 'github-actions'] |
dupuisf assignee:dupuisf |
11-3467 11 days ago |
22-64508 22 days ago |
22-66455 22 days |
| 36584 |
vihdzp author:vihdzp |
feat: lemmas on ordinal `Nat.cast` |
Downstreamed from the CGT repo.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
30/11 |
Mathlib/SetTheory/Cardinal/Ordinal.lean,Mathlib/SetTheory/Ordinal/Arithmetic.lean,Mathlib/SetTheory/Ordinal/Basic.lean |
3 |
5 |
['SnirBroshi', 'b-mehta', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
b-mehta assignee:b-mehta |
10-68449 10 days ago |
10-68512 10 days ago |
13-35228 13 days |
| 36544 |
xroblot author:xroblot |
feat(RingTheory/Ideal): restriction maps on decomposition and inertia groups in a Galois tower |
Adds a new file `Mathlib/RingTheory/Ideal/Galois.lean` with results on the action of `Gal(L/K)` on ideals of a ring `B ⊆ L` for a Galois subextension `F/K` of `L/K`. The main results are the surjectivity and kernel descriptions of the natural maps from the decomposition (resp. inertia) group of `P` in `Gal(L/K)` to the decomposition (resp. inertia) group of `p` in `Gal(F/K)`, induced by restriction.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
223/0 |
Mathlib.lean,Mathlib/FieldTheory/Normal/Defs.lean,Mathlib/RingTheory/Ideal/Galois.lean,Mathlib/RingTheory/Invariant/Basic.lean |
4 |
1 |
['github-actions'] |
erdOne assignee:erdOne |
10-58610 10 days ago |
13-84714 13 days ago |
13-84708 13 days |
| 34599 |
cameronfreer author:cameronfreer |
feat(Logic/Equiv/Fintype): generalize toCompl and exists_extending_pair to finite source |
Generalize the Equiv subtype-extension API so it only needs finiteness of
the source subtype, then use that to drastically simplify
`Equiv.Perm.isMultiplyPretransitive`.
### Changes to `Logic/Equiv/Fintype.lean`
* **`Equiv.toCompl`**: generalize from `[Finite α]` to `[Finite {x | p x}]`.
New proof (due to tb65536) uses finset symmetric differences to avoid
needing finiteness of the ambient type.
* **`Equiv.extendSubtype`** and related lemmas: adapt to `[Finite {x | p x}]`.
* **`Equiv.Perm.exists_extending_pair`**: strengthen from `[Finite β]` to
`[Finite α]`. Given two injective functions `f, g : α → β` where `α` is
finite, there exists `σ : Perm β` with `σ ∘ f = g`. The target `β` can
now be infinite.
### Changes to `MultipleTransitivity.lean`
* **`Equiv.Perm.isMultiplyPretransitive`**: replace ~70-line manual
bijectivity construction with a two-line proof via
`exists_smul_eq_embedding`.
* **`exists_smul_eq_embedding`**: rewire to use `exists_extending_pair`
directly (removing the old cardinal-arithmetic proof
`exists_extending_pair_of_finite_source`).
### Application
Used in formalizing de Finetti's theorem (exchangeability ⇒ contractability):
https://github.com/cameronfreer/exchangeability/blob/03a854a2/Exchangeability/Contractability.lean#L459
Co-authored-by: tb65536 |
t-group-theory
new-contributor
|
51/79 |
Mathlib/GroupTheory/GroupAction/MultipleTransitivity.lean,Mathlib/Logic/Equiv/Fintype.lean |
2 |
26 |
['LLaurance', 'cameronfreer', 'github-actions', 'mathlib-merge-conflicts', 'tb65536'] |
mattrobball assignee:mattrobball |
10-49979 10 days ago |
18-77170 18 days ago |
40-11738 40 days |
| 36439 |
xgenereux author:xgenereux |
feat(Algebra/Adjoin): CoeT instances for Algebra.adjoin on singletons |
Is it a common occurrence that I need to consider an element `x` or some polynomial evaluated in `x`, `p.eval x` as an element of `Algebra.adjoin R {x}`.
This makes it so that we can write
- `(x : adjoin R {x})` instead of `⟨x, self_mem_adjoin_singleton A x⟩`
- `(p.eval x : adjoin R {x})` instead of `⟨p.aeval x, aeval_mem_adjoin_singleton A x⟩`
This is particularly useful when we need to write the type anyways, so that we need not to write `(⟨p.aeval x, aeval_mem_adjoin_singleton A x⟩ : adjoin R {x})` anymore.
Co-authored-by: María Inés de Frutos Fernández <[mariaines.dff@gmail.com](mailto:mariaines.dff@gmail.com)>
---
[](https://gitpod.io/from-referrer/)
|
|
9/3 |
Mathlib/Algebra/Algebra/Subalgebra/Lattice.lean,Mathlib/RingTheory/Adjoin/Polynomial/Basic.lean |
2 |
1 |
['github-actions'] |
nobody |
10-26332 10 days ago |
16-14934 16 days ago |
16-14928 16 days |
| 35398 |
vlad902 author:vlad902 |
feat(SimpleGraph): `bypass` lemmas |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
17/0 |
Mathlib/Combinatorics/SimpleGraph/Paths.lean |
1 |
1 |
['github-actions'] |
kmill assignee:kmill |
10-25117 10 days ago |
38-19092 38 days ago |
38-19086 38 days |
| 36443 |
Fieldnote-Echo author:Fieldnote-Echo |
feat(Combinatorics/SimpleGraph): add SimpleGraph.ball (open metric ball) |
Add `SimpleGraph.ball`, the open ball in the graph extended metric.
## Design decisions
- **Open ball** (strict `<`, not `≤`): `ball c ⊤` coincides with the connected
component of `c`, whereas a closed ball would give `closedBall c ⊤ = univ`.
- **Named `SimpleGraph.ball`** (not `eball`): since `dist`-valued balls are less
natural for disconnected graphs, the `e` prefix is unnecessary.
- **Graph-specific** (not via `PseudoEMetricSpace`): avoids importing `ℝ`.
AI assistance: Claude (Opus 4.6) helped draft and iterate on the implementation. I reviewed the code line by line and vouch for the final contents.
Discussed on [Zulip](https://leanprover.zulipchat.com/#narrow/channel/252551-graph-theory/topic/SimpleGraph.20metric.20balls/with/577846803).
---
[](https://gitpod.io/from-referrer/) |
t-combinatorics
new-contributor
LLM-generated
|
59/3 |
Mathlib/Combinatorics/SimpleGraph/Metric.lean |
1 |
36 |
['Fieldnote-Echo', 'Rida-Hamadani', 'SnirBroshi', 'github-actions', 'lauramonk', 'vlad902'] |
nobody |
10-7896 10 days ago |
16-6408 16 days ago |
16-6402 16 days |
| 36423 |
kim-em author:kim-em |
perf: decompress already-cached files concurrently with downloads |
This PR builds on https://github.com/leanprover-community/mathlib4/pull/32987 (pipeline downloads and decompression) and https://github.com/leanprover-community/mathlib4/pull/36367 (fix: decompress already downloaded files).
Previously, already-cached `.ltar` files were only decompressed after all downloads completed, in the final `unpackCache` sweep. This PR starts decompressing them concurrently with downloads by spawning `leantar` as a background task before the download phase begins.
The two decompression paths operate on disjoint file sets (pre-cached vs newly downloaded), so there is no conflict. In the common case where a user has most files cached but a few hundred to download, this overlaps several seconds of decompression with network I/O.
🤖 Prepared with Claude Code |
LLM-generated |
73/26 |
Cache/IO.lean,Cache/Requests.lean |
2 |
1 |
['github-actions'] |
urkud assignee:urkud |
10-7887 10 days ago |
16-48658 16 days ago |
16-48652 16 days |
| 35826 |
quangvdao author:quangvdao |
feat(Probability/ProbabilityMassFunction): total variation distance and MetricSpace instance |
Define total variation distance on probability mass functions, provide
a `MetricSpace` instance, and prove the data processing inequality.
The extended TV distance `PMF.etvDist` is defined in `ℝ≥0∞` as
`(1/2) ∑ x, absDiff (p x) (q x)`, using a new symmetric absolute
difference `ENNReal.absDiff`. The real-valued `PMF.tvDist` is its
`toReal`.
New definitions:
- `ENNReal.absDiff`: symmetric absolute difference `(a - b) + (b - a)`
- `PMF.etvDist`: extended total variation distance
- `PMF.tvDist`: real-valued total variation distance
- `PMF.instMetricSpace`: `MetricSpace` instance on `PMF α`
Main results:
- `ENNReal.absDiff_triangle`: triangle inequality for `absDiff`
- `ENNReal.absDiff_tsum_le`: subadditivity over infinite sums
- `PMF.etvDist_le_one`: TV distance is at most 1
- `PMF.etvDist_map_le`: data processing inequality (deterministic maps)
- `PMF.etvDist_bind_right_le`: data processing inequality (Markov kernels)
- `PMF.etvDist_option_punit`: closed form for binary distributions
Supersedes #33680 with a complete, sorry-free implementation.
See Zulip discussion:
This PR was authored with the support of Claude (Cursor IDE).
---
This PR provides a complete formalization of total variation distance for PMFs, including:
1. **`ENNReal.absDiff`** (`Mathlib/Data/ENNReal/AbsDiff.lean`): A symmetric absolute difference
for `ℝ≥0∞` with triangle inequality, connection to real absolute value, and algebraic properties.
The tsum-related lemmas (`absDiff_tsum_le`, `tsum_fiber`) are placed in the TV distance file
to avoid pulling topology imports into `Data.ENNReal`.
2. **`PMF.etvDist` / `PMF.tvDist`** (`Mathlib/Probability/ProbabilityMassFunction/TotalVariation.lean`):
Total variation distance with a `MetricSpace` instance, data processing inequality for both
deterministic maps and Markov kernels, and a closed form for binary distributions.
Compared to #33680, this PR:
- Has no `sorry`s
- Defines the distance in `ℝ≥0∞` first (following Mathlib convention for `edist`/`dist`)
- Includes the data processing inequality
- Has full documentation and passes all Mathlib linters
Made with [Cursor](https://cursor.com) |
t-measure-probability
LLM-generated
|
459/0 |
Mathlib.lean,Mathlib/Data/ENNReal/AbsDiff.lean,Mathlib/Probability/ProbabilityMassFunction/TotalVariation.lean |
3 |
6 |
['BoltonBailey', 'EtienneC30', 'github-actions', 'joneugster', 'quangvdao'] |
RemyDegenne assignee:RemyDegenne |
10-7670 10 days ago |
19-71994 19 days ago |
19-72769 19 days |
| 35069 |
A-M-Berns author:A-M-Berns |
feat(Geometry/Polygon): simple polygons and boundary map |
This PR introduces Simple polygons with the predicate `IsSimple`, which captures the idea of a non-self-intersecting boundary, in the file Simple.lean. In the file Boundary.lean, a boundary map from `AddCircle n` is defined. I prove that the range of this map is the boundary and that this map is injective if and only if the polygon is simple. I kept Boundary.lean and Simple.lean separate because future results will include stuff just about the boundary map independent of simplicity (e.g. that it is continuous in the appropriate setting) and stuff just about simple polygons independent of the boundary map (e.g. that for n = 3, IsSimple iff HasNondegenerateVertices.) I used Claude Code to help generate some of the proof material, but I golfed and edited all AI contribution.
- [x] depends on: #34598
---
|
new-contributor
t-euclidean-geometry
LLM-generated
|
360/0 |
Mathlib.lean,Mathlib/Geometry/Polygon/Boundary.lean,Mathlib/Geometry/Polygon/Simple.lean,Mathlib/Logic/Equiv/Fin/Rotate.lean |
4 |
29 |
['A-M-Berns', 'eric-wieser', 'github-actions', 'joneugster', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp', 'wwylele'] |
JovanGerb assignee:JovanGerb |
10-7549 10 days ago |
28-84646 28 days ago |
31-32526 31 days |
| 36314 |
JovanGerb author:JovanGerb |
feat(gcongr): support `rintro` patterns |
This PR adds support for `rintro` patterns in the `with` clause of `gcongr`. This makes it consistent with `congr!`.
I've only found one case in mathlib where this could actually be used to shorten a proof.
I split the gcongr `elab` into a separate `syntax` and `elab_rules`, which makes it easier to deal with the syntax.
I noticed that the implementation of `congr!` was unnecessarily converting back and forth between `rintroPat` and `rcasesPat`, so I changed it to simply only use `rintroPat`, and then did the same in `gcongr`.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
41/28 |
Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean,Mathlib/Tactic/CongrExclamation.lean,Mathlib/Tactic/Convert.lean,Mathlib/Tactic/Core.lean,Mathlib/Tactic/GCongr/Core.lean |
5 |
2 |
['dupuisf', 'github-actions'] |
dwrensha assignee:dwrensha |
9-58746 9 days ago |
19-21793 19 days ago |
19-21915 19 days |
| 35415 |
joneugster author:joneugster |
feat(Cache): enable partial cache in downstream projects |
Migrated to fork from: #21238.
Add features to `cache` and cleanup code:
* enable partial cache retrieval in downstream projects: `lake exe cache get MyProject.Basic` downloads only the relevant cache to build `MyProject/Basic.lean`
---
### Notes:
- replaces: #21195
- should address: #8767
- should address: #20568
### Completed:
- [x] depends on: #21632
- [x] ~~depends on: #21663~~
- [x] depends on: #21666
- [x] depends on: #21701
- [x] depends on: #21703
- [x] depends on: #21704
- [x] depends on: #21705
- [x] depends on: #21707
- [x] depends on: #21711
- [x] depends on: #21750
- [x] depends on: #21815
- [x] depends on: #21816
- [x] depends on: #21817
- [x] depends on: #21818
- [x] depends on: #21822
- [x] depends on: #21830
- [x] depends on: #21848
- [x] depends on: #21834
[](https://gitpod.io/from-referrer/)
|
CI
t-meta
|
34/15 |
Cache/Hashing.lean,Cache/IO.lean,Cache/Main.lean |
3 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
9-31606 9 days ago |
27-9531 27 days ago |
29-48020 29 days |
| 36764 |
euprunin author:euprunin |
chore: golf using `grind` |
The goal of this PR is to decrease the number of times lemmas are called explicitly. Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `DirectSum.lequivCongrLeft_lof`: unchanged 🎉
* `AnalyticOnNhd.preimage_mem_codiscreteWithin`: unchanged 🎉
* `mem_permsOfList_of_mem`: unchanged 🎉
* `PNat.mod_le`: unchanged 🎉
* `Computation.map_parallel`: unchanged 🎉
* `Sigma.curry_update`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
---
[](https://gitpod.io/from-referrer/)
|
|
10/42 |
Mathlib/Algebra/DirectSum/Module.lean,Mathlib/Analysis/Analytic/IsolatedZeros.lean,Mathlib/Data/Fintype/Perm.lean,Mathlib/Data/PNat/Basic.lean,Mathlib/Data/Seq/Parallel.lean,Mathlib/Data/Sigma/Basic.lean |
6 |
1 |
['github-actions'] |
nobody |
9-24097 9 days ago |
9-24168 9 days ago |
9-24162 9 days |
| 34854 |
GrigorenkoPV author:GrigorenkoPV |
chore(Combinatorics/Enumerative/Catalan): split into `Basic` & `Tree` |
---
Split off from #34853
[](https://gitpod.io/from-referrer/)
|
new-contributor |
227/194 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Catalan.lean,Mathlib/Combinatorics/Enumerative/Catalan/Basic.lean,Mathlib/Combinatorics/Enumerative/Catalan/Tree.lean,Mathlib/Combinatorics/Enumerative/DyckWord.lean,Mathlib/RingTheory/PowerSeries/Catalan.lean |
6 |
5 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
thorimur assignee:thorimur |
9-5465 9 days ago |
9-5491 9 days ago |
28-81784 28 days |
| 36592 |
Vierkantor author:Vierkantor |
chore(Tactic): rewrite `introv` tactic docstring |
This PR rewrites the docstrings for the `introv` tactic, to consistently match the official style guide, to make sure they are complete while not getting too long.
In particular, I wanted to clarify exactly what `introv` does and does not introduce, depending on the list of names given to it.
---
[](https://gitpod.io/from-referrer/)
|
documentation
t-meta
|
21/19 |
Mathlib/Tactic/Basic.lean |
1 |
10 |
['Vierkantor', 'dwrensha', 'github-actions'] |
dwrensha assignee:dwrensha |
9-4729 9 days ago |
13-21734 13 days ago |
13-21728 13 days |
| 36606 |
harahu author:harahu |
chore(AlgebraicGeometry): fix markdown list indentation |
We replace lazy continuation lines in lists with either:
- indented lines, to signify that the line is indeed a continuation line; or
- a newline, where the continuation line(s) were in fact intended to be disconnected from the list.
We do this because lazy continuation is a markdown footgun that one does well to avoid.
We also standardize indentation such that continuation lines now line up with the first line of the item they're continuing. This seems to be the solution enforced by markdown formatters, e.g. `mdformat`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry |
19/17 |
Mathlib/AlgebraicGeometry/Gluing.lean,Mathlib/AlgebraicGeometry/Morphisms/Basic.lean,Mathlib/AlgebraicGeometry/Morphisms/Flat.lean,Mathlib/AlgebraicGeometry/Morphisms/RingHomProperties.lean,Mathlib/AlgebraicGeometry/Properties.lean |
5 |
3 |
['chrisflav', 'github-actions', 'harahu'] |
alexjbest assignee:alexjbest |
8-84212 8 days ago |
8-84212 8 days ago |
12-80743 12 days |
| 35593 |
chrisflav author:chrisflav |
feat(RingTheory/Extension): naive cotangent complex commutes with flat base change |
From Pi1.
---
- [x] depends on: #35544
- [x] depends on: #35557
- [x] depends on: #35594
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
210/11 |
Mathlib/RingTheory/Extension/Basic.lean,Mathlib/RingTheory/Extension/Cotangent/BaseChange.lean,Mathlib/RingTheory/Extension/Generators.lean,Mathlib/RingTheory/Ideal/Cotangent.lean |
4 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
mariainesdff assignee:mariainesdff |
8-58766 8 days ago |
8-74566 8 days ago |
8-76887 8 days |
| 36545 |
yuanyi-350 author:yuanyi-350 |
feat(ProbabilityTheory): Add Kolmogorov's inequality |
ref: https://en.wikipedia.org/wiki/Kolmogorov%27s_inequality
---
- [x] depends on: #36542
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
large-import
|
147/0 |
Mathlib.lean,Mathlib/Probability/CondVar.lean,Mathlib/Probability/Martingale/Kolmogorov.lean,Mathlib/Probability/Martingale/OptionalStopping.lean |
4 |
3 |
['CoolRmal', 'github-actions', 'mathlib-dependent-issues'] |
RemyDegenne assignee:RemyDegenne |
8-58756 8 days ago |
13-23728 13 days ago |
13-25511 13 days |
| 36654 |
JovanGerb author:JovanGerb |
chore(Translate): address outdated comment |
This PR addresses an outdated comment I wrote in `checkExistingType`. It was written when `==` was used for the comparison. But since we now use reducible `isDefEq`, the precise universe instantiation doesn't matter.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
2/6 |
Mathlib/Tactic/Translate/Core.lean |
1 |
1 |
['github-actions'] |
alexjbest assignee:alexjbest |
8-58749 8 days ago |
11-62425 11 days ago |
11-62419 11 days |
| 36786 |
SproutSeeds author:SproutSeeds |
feat(DoubleCounting): parity of odd-degree vertices in bipartite incidence |
Adds `odd_card_filter_odd_bipartiteAbove_iff_odd_card_filter_odd_bipartiteBelow` to
`Mathlib.Combinatorics.Enumerative.DoubleCounting`.
This is the small parity-helper first step for #25231.
Validation:
- `lake build Mathlib.Combinatorics.Enumerative.DoubleCounting`
Supersedes closed #36077 after replaying the helper cleanly on current `master`.
AI usage: used Codex for branch recovery, replay onto current `master`, and draft wording;
final code choices and verification by me.
|
new-contributor
t-combinatorics
large-import
|
17/0 |
Mathlib/Combinatorics/Enumerative/DoubleCounting.lean |
1 |
2 |
['github-actions'] |
nobody |
8-53255 8 days ago |
8-53338 8 days ago |
8-53332 8 days |
| 36637 |
Smithl-Lin author:Smithl-Lin |
feat(InformationTheory): Pinsker's inequality for finite distributions |
This PR formalizes Pinsker's inequality for discrete probability
distributions on finite types.
For distributions P and Q on a finite set, the total variation
distance is bounded by the KL divergence:
TV(P, Q) ≤ √(D_KL(P ‖ Q) / 2)
## Main results
- `pinsker_inequality`: The core inequality relating total variation
distance and KL divergence for `Fintype` distributions.
- Supporting definitions and lemmas for discrete KL divergence and
total variation.
## Context and motivation
Pinsker's inequality is a fundamental result in information theory
that connects two widely used divergence measures. It is used in
statistical learning theory (PAC-Bayes bounds), hypothesis testing
(minimax lower bounds via Le Cam and Fano), and sequential analysis.
This result is not currently in Mathlib and complements the existing
measure-theoretic probability infrastructure.
## LLM disclosure
LLM tools (Anthropic Claude) were used to assist with proof
exploration and tactic drafting. All proofs were subsequently
reviewed, tested, and verified by the author in the Lean 4
development environment. The author understands every proof step
and takes full responsibility for correctness.
## References
- Pinsker, M. S. *Information and Information Stability of Random
Variables and Processes*. Holden-Day (1964).
- Tsybakov, A. B. *Introduction to Nonparametric Estimation*.
Springer (2009), Lemma 2.5.
---
|
t-measure-probability
new-contributor
LLM-generated
|
507/0 |
Mathlib.lean,Mathlib/InformationTheory/Pinsker.lean |
2 |
2 |
['github-actions'] |
RemyDegenne assignee:RemyDegenne |
8-35056 8 days ago |
12-15354 12 days ago |
12-15908 12 days |
| 31891 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Sphere/OrthRadius): lemmas for setting up and using polars |
Add further lemmas about `orthRadius` that are of use in setting up and using poles and polars. In particular,
`ncard_inter_orthRadius_eq_two_of_dist_lt_radius` is the key part of showing that, in two dimensions, there are exactly two tangents to a circle from a point outside that circle (where the points of tangency lie on the polar of the point from which the two tangents are drawn).
---
Feel free to golf the proof of `ncard_inter_orthRadius_eq_two_of_dist_lt_radius`, it could probably be rather shorter.
---
- [ ] depends on: #32296
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
265/7 |
Mathlib/Geometry/Euclidean/Sphere/OrthRadius.lean,Mathlib/Geometry/Euclidean/Sphere/Tangent.lean |
2 |
29 |
['Parcly-Taxel', 'eric-wieser', 'github-actions', 'jsm28', 'mathlib-merge-conflicts', 'mathlib4-dependent-issues-bot'] |
JovanGerb assignee:JovanGerb |
8-22240 8 days ago |
8-22271 8 days ago |
124-22401 124 days |
| 36806 |
grunweg author:grunweg |
fix(Tactic/Continuity): mark Continuous.comp' as unsafe |
This issue was pre-existing: `Continuous.comp'` was never full safe, as a constant function could be written as the composition of any function and a constant function (and then applying the lemma could lead to something unprovable). The change in #31607 triggered such a case: make is an unsafe rule with very high probability instead.
This change broke three proofs: one was easy to switch to fun_prop; the others seemed to depend on this being a safe rule. I have added a workaround for now.
There was another test failure, exposing a pre-existing internal bug in aesop. With smaller imports, continuity succeeds [zulip discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/aesop.20error.20during.20proof.20reconstruction.2C.20goal.20not.20normalised/with/580202602), so I have accepted this result as fine.
---
[](https://gitpod.io/from-referrer/)
|
|
54/2 |
Mathlib/Analysis/RCLike/Basic.lean,Mathlib/Condensed/Light/TopCatAdjunction.lean,Mathlib/Condensed/TopCatAdjunction.lean,Mathlib/Topology/Continuous.lean,MathlibTest/Continuity.lean |
5 |
1 |
['github-actions'] |
nobody |
8-10123 8 days ago |
8-10124 8 days ago |
8-10126 8 days |
| 36804 |
YaelDillies author:YaelDillies |
refactor(Combinatorics/SimpleGraph): use `edge` and `deleteEdges` more |
Alternatively, we should make them `abbrev`s.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
78/38 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/DeleteEdges.lean,Mathlib/Combinatorics/SimpleGraph/Operations.lean |
5 |
2 |
['b-mehta', 'github-actions'] |
nobody |
8-7014 8 days ago |
8-25692 8 days ago |
8-25686 8 days |
| 33944 |
artie2000 author:artie2000 |
feat(Algebra/Ring): formally real rings |
* Define formally real rings
* Prove basic inductive facts about them
Co-authored-by: Violeta Hernández Palacios
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
155/0 |
Mathlib.lean,Mathlib/Algebra/Ring/IsFormallyReal.lean |
2 |
31 |
['artie2000', 'github-actions', 'mariainesdff', 'vihdzp'] |
mariainesdff assignee:mariainesdff |
8-3093 8 days ago |
8-3465 8 days ago |
45-49003 45 days |
| 28685 |
mitchell-horner author:mitchell-horner |
feat(Combinatorics/SimpleGraph): prove the minimal-degree version of the Erdős-Stone theorem |
Proves the minimal degree-version of the Erdős-Stone theorem:
If `G` has a minimal degree of at least `(1 - 1 / r + o(1)) * card V`, then `G` contains a copy of a `completeEquipartiteGraph` in `r + 1` parts each of size `t`.
The double-counting construction from the proof is available in `namespace ErdosStone`.
---
- [x] depends on: #25843
- [x] depends on: #27597
- [x] depends on: #27599
- [x] depends on: #28443
- [x] depends on: #28445
- [x] depends on: #28446
- [x] depends on: #28447
This is the first of several pull requests towards the full Erdős-Stone(-Simonovits) theorem, hence the name of the file.
[](https://gitpod.io/from-referrer/) |
t-combinatorics |
323/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Extremal/ErdosStoneSimonovits.lean |
2 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot'] |
YaelDillies assignee:YaelDillies |
7-58774 7 days ago |
24-38267 24 days ago |
24-38307 24 days |
| 35295 |
Rida-Hamadani author:Rida-Hamadani |
feat(SimpleGraph): `dropLast` of a cycle is a path |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
14/0 |
Mathlib/Combinatorics/SimpleGraph/Paths.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Operations.lean |
2 |
7 |
['Rida-Hamadani', 'SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vlad902'] |
YaelDillies assignee:YaelDillies |
7-58771 7 days ago |
8-51909 8 days ago |
28-33033 28 days |
| 35963 |
Parcly-Taxel author:Parcly-Taxel |
refactor: review Kleene algebra axioms |
Derive
```lean
one_add_mul_kstar (a : α) : 1 + a * a∗ = a∗
one_add_kstar_mul (a : α) : 1 + a∗ * a = a∗
```
which is Proposition 2 in Kozen's 1994 paper.
We also remove the `bot` and `bot_le` fields in `IdemSemiring`, since the remaining axioms already show `0 ≤ a` for all `a`. |
t-algebra label:t-algebra$ |
82/81 |
Mathlib/Algebra/Algebra/Operations.lean,Mathlib/Algebra/Order/Kleene.lean,Mathlib/AlgebraicGeometry/IdealSheaf/Basic.lean |
3 |
13 |
['Parcly-Taxel', 'dagurtomas', 'github-actions', 'plp127', 'vihdzp'] |
mattrobball assignee:mattrobball |
7-58766 7 days ago |
13-43151 13 days ago |
23-67017 23 days |
| 36260 |
Vierkantor author:Vierkantor |
chore(Tactic/GCongr): rewrite `gcongr`, `rel` tactic docstrings |
This PR (re)writes the docstrings for the `gcongr` and `rel` tactics to consistently match the official style guide, to make sure it is complete while not getting too long.
The docstrings had a lot of examples and were information dense, which is very good! With the rewrite, the information should be easier to find given the consistent structure.
---
[](https://gitpod.io/from-referrer/)
|
documentation
t-meta
|
51/43 |
Mathlib/Tactic/GCongr/Core.lean |
1 |
16 |
['JovanGerb', 'Vierkantor', 'github-actions'] |
dwrensha assignee:dwrensha |
7-58765 7 days ago |
9-17753 9 days ago |
10-28183 10 days |
| 36629 |
SnirBroshi author:SnirBroshi |
chore(Algebra/Order/Monoid/Unbundled/Basic): replace `mul_left_cancel''` with an `IsLeftCancelMul` instance |
---
[`mul_left_cancel`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Group/Defs.html#mul_left_cancel)
[`mul_left_cancel''`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Order/Monoid/Unbundled/Basic.html#mul_left_cancel'')
[`mul_right_cancel`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Group/Defs.html#mul_right_cancel)
[`mul_right_cancel''`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Order/Monoid/Unbundled/Basic.html#mul_right_cancel'')
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
16/13 |
Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean |
1 |
1 |
['github-actions'] |
joelriou assignee:joelriou |
7-58761 7 days ago |
12-35844 12 days ago |
12-35838 12 days |
| 36832 |
KryptosAI author:KryptosAI |
chore(Data/Finset/Card): rename `pred_card_le_card_erase` to `sub_one_card_le_card_erase` |
## Summary
The name `pred_card_le_card_erase` suggests `Nat.pred` but the statement uses `- 1` (i.e., `Nat.sub 1`). Rename to `sub_one_card_le_card_erase` to match the actual statement.
A deprecated alias is added for backwards compatibility.
### Files changed
- `Mathlib/Data/Finset/Card.lean` — definition renamed + deprecated alias
- `Mathlib/Data/Finset/Powerset.lean` — reference updated
- `Mathlib/Combinatorics/Additive/SubsetSum.lean` — reference updated
- `Mathlib/Algebra/Polynomial/EraseLead.lean` — reference updated
Addresses the `Finset.pred_card_le_card_erase` item in #21584.
## AI disclosure
I used Claude Code to explore the codebase (finding all references to rename) and to draft the PR description. I reviewed and understand all changes — these are straightforward renames with a deprecated alias. |
new-contributor |
7/4 |
Mathlib/Algebra/Polynomial/EraseLead.lean,Mathlib/Combinatorics/Additive/SubsetSum.lean,Mathlib/Data/Finset/Card.lean,Mathlib/Data/Finset/Powerset.lean |
4 |
2 |
['github-actions'] |
nobody |
7-51062 7 days ago |
7-63634 7 days ago |
7-66526 7 days |
| 36705 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Walks/Operations): permutations of support and cleaning up append/concat |
---
The cleaning-up follows the feedback from https://github.com/leanprover-community/mathlib4/pull/35630#issuecomment-4035207900 and https://github.com/leanprover-community/mathlib4/pull/35631#discussion_r2936736735
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
38/21 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean,Mathlib/Combinatorics/SimpleGraph/Paths.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Decomp.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Operations.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Subwalks.lean |
7 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
7-37017 7 days ago |
7-37048 7 days ago |
10-53611 10 days |
| 36472 |
EtienneC30 author:EtienneC30 |
feat: finite dimensional distribution of Brownian motion |
Define `gaussianProjectiveFamily : (I : Finset ℝ≥0) → Measure (I → ℝ)`. Each `gaussianProjectiveFamily I` is the centered Gaussian measure over `I → ℝ` with covariance matrix given by `brownianCovMatrix I s t := min s t`.
Prove that these measures satisfy `IsProjectiveMeasureFamily`, which means that they can be extended into a measure over `ℝ≥0 → ℝ` thanks to the Kolmogorov's extension theorem (not in Mathlib yet). The obtained measure is a measure over the set of real processes indexed by `ℝ≥0` and is the law of the Brownian motion.
---
- [x] depends on: #36143
[](https://gitpod.io/from-referrer/)
|
brownian
t-measure-probability
|
226/1 |
Mathlib.lean,Mathlib/MeasureTheory/Function/L2Space.lean,Mathlib/Probability/BrownianMotion/GaussianProjectiveFamily.lean,Mathlib/Probability/Distributions/Gaussian/HasGaussianLaw/Basic.lean,Mathlib/Probability/Moments/Basic.lean |
5 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
kex-y assignee:kex-y |
7-35003 7 days ago |
10-23186 10 days ago |
10-23181 10 days |
| 36802 |
YaelDillies author:YaelDillies |
feat(Combinatorics/SimpleGraph): hamiltonians graphs don't contain bridges |
Replace the longer proof which further assumed that the vertex set has at least three elements.
---
- [x] depends on: #36800
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
large-import
|
88/79 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/EdgeConnectivity.lean,Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean,Mathlib/Combinatorics/SimpleGraph/Paths.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Decomp.lean |
5 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
7-24213 7 days ago |
7-24235 7 days ago |
7-85416 7 days |
| 36814 |
YaelDillies author:YaelDillies |
refactor(Combinatorics/SimpleGraph): no proof obligation in `rotate` |
If the walk doesn't go through the new vertex, return `nil` instead.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
51/37 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean,Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean,Mathlib/Combinatorics/SimpleGraph/Matching.lean,Mathlib/Combinatorics/SimpleGraph/Paths.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Decomp.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Operations.lean |
7 |
5 |
['SnirBroshi', 'YaelDillies', 'eric-wieser', 'github-actions', 'mathlib-merge-conflicts'] |
nobody |
7-23920 7 days ago |
7-23949 7 days ago |
7-78060 7 days |
| 36736 |
loefflerd author:loefflerd |
feat(NumberTheory/Modular): strengthen 2nd Fundamental-Domain Lemma |
Strengthen the results on the fundamental domain for the modular group, by proving that the interior of the fundamental domain is disjoint from any translate of the fundamental domain.
Proof closely follows Serre _A Course in Arithmetic_ (although Serre also proves that S, T generate the modular group at the same time, which we do not do, since this is proved by a different method in `FixedDetMatrices`).
---
[](https://gitpod.io/from-referrer/)
|
t-number-theory |
385/56 |
Mathlib/Analysis/Complex/UpperHalfPlane/Basic.lean,Mathlib/Analysis/Complex/UpperHalfPlane/MoebiusAction.lean,Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean,Mathlib/NumberTheory/Modular.lean,docs/references.bib |
5 |
14 |
['CBirkbeck', 'github-actions', 'loefflerd', 'tb65536'] |
tb65536 assignee:tb65536 |
7-7686 7 days ago |
9-75535 9 days ago |
10-6879 10 days |
| 36388 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/AdjMatrix): submatrices and homomorphisms |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
72/3 |
Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean |
1 |
9 |
['SnirBroshi', 'eric-wieser', 'github-actions'] |
nobody |
6-83576 6 days ago |
15-56867 15 days ago |
16-81952 16 days |
| 36869 |
harahu author:harahu |
doc(Computability/RegularExpressions): tidy docstrings |
Issues found and fixed by Codex.
---
[](https://gitpod.io/from-referrer/)
|
t-computability |
7/6 |
Mathlib/Computability/RegularExpressions.lean |
1 |
1 |
['github-actions'] |
nobody |
6-74626 6 days ago |
6-74626 6 days ago |
6-74620 6 days |
| 36711 |
mcdoll author:mcdoll |
feat(Algebra): Bound `Finset.sum` in terms of `Finset.sup` |
We add a version for `Finset` and for seminorms (with the additional `sum_apply` lemma).
---
I am not sure where to put the `Finset` lemma, `#find_home` was useless and there seems to be no natural candidate.
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
34/0 |
Mathlib/Algebra/Module/BigOperators.lean,Mathlib/Analysis/Seminorm.lean |
2 |
1 |
['github-actions'] |
dagurtomas assignee:dagurtomas |
6-58769 6 days ago |
10-24313 10 days ago |
10-25515 10 days |
| 36856 |
harahu author:harahu |
doc(Geometry): tidy bibliography entry |
Use canonical author names and rename the bib key to match the corrected ASCII transcription of Domínguez. Sources: https://fama.iff.csic.es/personas/margalef/margalef.html ; https://produccioncientifica.ucm.es/investigadores/166066/tesis
Normalize the title and move the translation information into a note phrased as 'Translated from the Spanish original'. Sources: https://books.google.com/books/about/Differential_Topology.html?id=gexAr04vRT4C ; https://books.google.com/books/about/Topolog%C3%ADa_diferencial.html?id=0PRMy3ffm4QC
Use the conventional publisher form 'North-Holland Publishing Co., Amsterdam' instead of the imported catalog-style field. Sources: https://search.worldcat.org/title/Differential-topology/oclc/25713102 ; https://www.ams.org/tran/2010-362-08/S0002-9947-10-05073-7/
Prepared with assistance from Codex.
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
LLM-generated
|
8/7 |
Mathlib/Geometry/Manifold/Immersion.lean,docs/references.bib |
2 |
4 |
['github-actions', 'grunweg', 'harahu'] |
PatrickMassot assignee:PatrickMassot |
6-58761 6 days ago |
6-74742 6 days ago |
6-85957 6 days |
| 36638 |
CoolRmal author:CoolRmal |
feat: if `f` lies in a closed convex set `s` almost everywhere, then its conditional expectation also lies in `s` almost everywhere |
---
- [x] depends on: #27953
[](https://gitpod.io/from-referrer/)
|
|
54/3 |
Mathlib/MeasureTheory/Function/ConditionalExpectation/CondJensen.lean |
1 |
4 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
6-47719 6 days ago |
7-59553 7 days ago |
7-60047 7 days |
| 36728 |
chenson2018 author:chenson2018 |
feat: linter for terminal squeezes |
See discussion at [#**mathlib4>linter requests@576559620** ](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/linter.20requests/near/576559620). This PR adds a linter that indicates when a flexible terminal tactic is squeezed and can be replaced by the unsqueezed equivalent. Like the other tactic analysis linters, this is off by default and intended for periodic reports.
At the moment, this includes only `simp` and `simp_all`, just like the flexible linter, and does not take the further step of removing unused `simp` arguments. The style guide specifies that
> a simp call is terminal if it closes the current goal or is only followed by flexible tactics
and this linter complies with this by checking not only for "literal terminal" tactics that are syntactically the last to close a goal but also for "block terminal" tactics that are only followed by tactics permitted to follow a flexible tactic. (This terminology is not standard, but is a nice suggestion by @adomani)
---
[](https://gitpod.io/from-referrer/)
|
large-import |
109/1 |
Mathlib/Tactic/Linter/FlexibleLinter.lean,Mathlib/Tactic/TacticAnalysis/Declarations.lean,MathlibTest/TacticAnalysis.lean |
3 |
8 |
['SnirBroshi', 'chenson2018', 'github-actions'] |
nobody |
6-40202 6 days ago |
6-40849 6 days ago |
6-40843 6 days |
| 36833 |
harahu author:harahu |
doc: demote repeated H1 headers |
Having more than one H1 header per file confuses search engines and thus makes documentation more difficult to find. Hence, we make sure that lean files only have a single H1 header in them.
In the case of `Mathlib/Tactic/Common.lean`, we achieve this by adding a new module header.
---
[](https://gitpod.io/from-referrer/)
|
|
12/10 |
Archive/Imo/Imo2002Q3.lean,Archive/Imo/Imo2010Q5.lean,Mathlib/Geometry/Manifold/VectorBundle/LocalFrame.lean,Mathlib/Probability/Distributions/Gaussian/HasGaussianLaw/Basic.lean,Mathlib/RingTheory/LocalProperties/Injective.lean,Mathlib/RingTheory/LocalProperties/ProjectiveDimension.lean,Mathlib/RingTheory/QuasiFinite/Weakly.lean,Mathlib/Tactic/Common.lean,Mathlib/Tactic/Linter/EmptyLine.lean |
9 |
2 |
['github-actions', 'harahu', 'vihdzp'] |
nobody |
6-29941 6 days ago |
7-70438 7 days ago |
7-70836 7 days |
| 36892 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(RingTheory/MvPowerSeries/NoZeroDivisors): simplify the proof by adding two instances |
Add two instances proposed by @eric-wieser :
- `WellFoundedLT.wellOrderingRel` : `WellOrderingRel.isWellOrder` satisfies `WellFoundedLT`
- `WellFoundedGT.swap` : If a linear order `l` satisfies `WellFoundedLT`, then `l.swap` satisfies `WellFoundedGT`.
They clarify the proof of `MvPowerSeries.NoZeroDivisors` that the power series rings over a ring without zero divisors has no zero divisors.
Ref. [#mathlib4 > help in RingTheory.MvPowerSeries.NeZeroDivisors](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/help.20in.20RingTheory.2EMvPowerSeries.2ENeZeroDivisors/with/580586392)
---
[](https://gitpod.io/from-referrer/)
|
|
10/3 |
Mathlib/Order/RelClasses.lean,Mathlib/RingTheory/MvPowerSeries/NoZeroDivisors.lean,Mathlib/SetTheory/Cardinal/Order.lean |
3 |
3 |
['JovanGerb', 'github-actions', 'vihdzp'] |
nobody |
6-28046 6 days ago |
6-32993 6 days ago |
6-32987 6 days |
| 36797 |
vihdzp author:vihdzp |
feat: more results on additive principal ordinals |
We prove some new results on additive principal ordinals, and use them to golf existing results.
Moved from #15989.
---
- [x] depends on: #36793
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
42/33 |
Mathlib/SetTheory/Ordinal/Notation.lean,Mathlib/SetTheory/Ordinal/Principal.lean |
2 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
nobody |
6-25703 6 days ago |
6-25705 6 days ago |
6-26049 6 days |
| 36886 |
Deep0Thinking author:Deep0Thinking |
feat(Combinatorics/Enumerative/Bonferroni): add Bonferroni inequalities |
This PR adds Bonferroni inequalities.
Main theorems:
- `Finset.indicator_biUnion_le_bonferroniIndicator_of_odd`
- `Finset.bonferroniIndicator_le_indicator_biUnion_of_even`
- `Finset.card_biUnion_le_bonferroniCard_of_odd`
- `Finset.bonferroniCard_le_card_biUnion_of_even`
Co-authored-by: Claude (Opus 4.6)
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
334/4 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Bonferroni.lean,Mathlib/Combinatorics/Enumerative/InclusionExclusion.lean |
3 |
2 |
['github-actions'] |
nobody |
6-7791 6 days ago |
6-7878 6 days ago |
6-8701 6 days |
| 34227 |
stepan2698-cpu author:stepan2698-cpu |
feat: If sum of densities is at least one, the sumset covers the naturals |
Proves an outstanding TODO item from Mathlib.Combinatorics.Schnirelmann : shows that if the sum of two densities is at least one, the sumset covers the positive naturals.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
51/1 |
Mathlib/Combinatorics/Schnirelmann.lean |
1 |
3 |
['github-actions', 'grunweg', 'kbuzzard'] |
b-mehta assignee:b-mehta |
6-4955 6 days ago |
63-65053 63 days ago |
63-79150 63 days |
| 36210 |
vbeffara author:vbeffara |
feat(Combinatorics/SimpleGraph): definitions of graph contraction and graph minor |
A contraction is the image of a graph through a surjective function with connected fibers, and a minor is a contraction of a subgraph.
This PR shows that being a contraction is transitive, but does not show the same for minors because the proof is more involved, it will be in a subsequent PR. The definitions are in `Prop` and do not contain data, but I'm not sure if that was the right choice.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
151/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Contraction.lean,Mathlib/Combinatorics/SimpleGraph/Minor.lean |
3 |
7 |
['YaelDillies', 'github-actions', 'mathlib-merge-conflicts', 'vbeffara'] |
YaelDillies assignee:YaelDillies |
6-3991 6 days ago |
7-11918 7 days ago |
20-38502 20 days |
| 34909 |
SnirBroshi author:SnirBroshi |
feat(Data/Sym/Sym2): `fromRel` equivalence with `Sigma` over a `Quotient` |
Add a non-dependent recursor on members of a `fromRel` set, and the following `Equiv`s:
- The `fromRel` set of a symmetric relation `r` is equivalent to summing that set restricted to fibers of `f`.
- For a relation homomorphism `r →r r'` where `r` is symmetric, the `fromRel` set of `r` is equivalent to summing that set restricted to equivalence classes of `r'` using a `Subtype`.
---
I find this recursor pretty useful when dealing with `fromRel`, the idea came from a suggestion by @kmill [on Zulip](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Eq.2Erec.20with.20a.20constant.20does.20nothing.3A.20h.20.E2.96.B8.20c.20.3D.20c/near/565176948) for another `Sym2` conundrum.
[](https://gitpod.io/from-referrer/)
|
t-data |
43/0 |
Mathlib/Data/Sym/Sym2.lean |
1 |
8 |
['SnirBroshi', 'eric-wieser', 'github-actions', 'mathlib-merge-conflicts'] |
pechersky assignee:pechersky |
5-63352 5 days ago |
5-63374 5 days ago |
48-23060 48 days |
| 34808 |
YaelDillies author:YaelDillies |
feat(Combinatorics/SimpleGraph): isolated vertices |
From ProofBench
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
31/1 |
Mathlib/Combinatorics/SimpleGraph/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Finite.lean |
3 |
1 |
['github-actions'] |
b-mehta assignee:b-mehta |
5-58800 5 days ago |
50-73640 50 days ago |
50-73634 50 days |
| 35622 |
SnirBroshi author:SnirBroshi |
feat(Logic/Function/Basic): `onFun` and `swap` preserve relation properties |
---
[](https://gitpod.io/from-referrer/)
|
t-logic |
141/19 |
Mathlib/Data/DFinsupp/WellFounded.lean,Mathlib/Logic/Function/Basic.lean,Mathlib/Logic/Function/Defs.lean,Mathlib/Order/Defs/Unbundled.lean,Mathlib/Order/OrderIsoNat.lean,Mathlib/Order/RelClasses.lean,Mathlib/Order/WellFounded.lean,Mathlib/Order/WithBot.lean |
8 |
7 |
['SnirBroshi', 'github-actions', 'leanprover-radar', 'vihdzp'] |
awainverse assignee:awainverse |
5-58799 5 days ago |
20-49216 20 days ago |
32-33061 32 days |
| 36334 |
Multramate author:Multramate |
feat(AlgebraicGeometry/EllipticCurve): add notation and pretty printer for points |
Co-authored-by: Kenny Lau
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry
t-meta
|
41/0 |
Mathlib/AlgebraicGeometry/EllipticCurve/Affine/Point.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian/Point.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Projective/Point.lean |
3 |
11 |
['CBirkbeck', 'Multramate', 'erdOne', 'github-actions', 'riccardobrasca'] |
kim-em assignee:kim-em |
5-58794 5 days ago |
18-75344 18 days ago |
18-75338 18 days |
| 36364 |
Bergschaf author:Bergschaf |
feat(Order/Sublocale): Better API for NucleusIsoSublocale |
I propose defining the conversion from Nuclei to Sublocales (and vice versa) directly in the `NucleusIsoSublocale` OrderIso. `Nucleus.toSublocale` and `Sublocale.toNucleus` will then just be abbrev's for the underlying OrderIso. This makes it a lot nicer to transition between the two Structures, especially when (infinite) infima and suprema are involved.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
46/33 |
Mathlib/Order/Sublocale.lean |
1 |
4 |
['Bergschaf', 'YaelDillies', 'github-actions'] |
pechersky assignee:pechersky |
5-58794 5 days ago |
18-3389 18 days ago |
18-3827 18 days |
| 36483 |
justus-springer author:justus-springer |
feat(CategoryTheory/Abelian): Criterion for full subcategory of abelian category to be abelian |
If `P` is an object property in an abelian category and
- `P` contains zero,
- `P` is closed under kernels and cokernels,
- `P` is closed under finite products,
then the full subcategory defined by `P` is abelian.
---
- [x] depends on: #36411
- [x] depends on: #36481
- [x] depends on: #36482
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
86/0 |
Mathlib.lean,Mathlib/CategoryTheory/Abelian/Subcategory.lean,Mathlib/CategoryTheory/Limits/Preserves/Shapes/Kernels.lean,Mathlib/CategoryTheory/ObjectProperty/Kernels.lean |
4 |
7 |
['github-actions', 'joelriou', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
robin-carlier assignee:robin-carlier |
5-58792 5 days ago |
6-15055 6 days ago |
7-29280 7 days |
| 36505 |
eric-wieser author:eric-wieser |
fix: use `MonadExceptOf` instead of `MonadExcept` for `ContT` and `WriterT` |
This matches how `ReaderT` and `StateT` do this in core.
Also adds some missing `rfl` lemmas, and fixes a stray `id` that should be `Id`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
25/4 |
Mathlib/Control/Monad/Cont.lean,Mathlib/Control/Monad/Writer.lean |
2 |
1 |
['github-actions'] |
pechersky assignee:pechersky |
5-58791 5 days ago |
14-62754 14 days ago |
14-62748 14 days |
| 36677 |
AlexeyMilovanov author:AlexeyMilovanov |
feat(Computability.Partrec): add computability of Nat.find |
This PR bridges `Partrec.rfind` with total unbounded search (`Nat.find`).
It adds:
* `Computable.find`: Proves that `x ↦ Nat.find (h_ex x)` is computable for a computable decidable predicate `P`.
* `Computable.rightInverse_of_surjective`: Proves that the right inverse of a computable surjective function is computable. |
t-computability
new-contributor
|
31/0 |
Mathlib/Computability/Partrec.lean |
1 |
5 |
['AlexeyMilovanov', 'github-actions', 'vlad902'] |
Komyyy assignee:Komyyy |
5-58788 5 days ago |
11-20563 11 days ago |
11-20557 11 days |
| 36815 |
EtienneC30 author:EtienneC30 |
feat: a measurable space structure on the type of continuous maps |
Endow the type `C(X, Y)` of continuous maps from `X` to `Y` with the Borel sigma-algebra coming from the compact-open topology and show that, under some assumptions on `X` and `Y`, this is equal to the restriction of the product sigma-algebra over `X → Y`.
Provide a measurable equivalence between `{f : X → Y // Continuous f}` and `C(X, Y)`.
Co-authored-by: @RemyDegenne
---
[](https://gitpod.io/from-referrer/)
|
t-topology
brownian
t-measure-probability
|
254/0 |
Mathlib.lean,Mathlib/MeasureTheory/Constructions/BorelSpace/ContinuousMap.lean,Mathlib/Topology/Bases.lean,Mathlib/Topology/Basic.lean,Mathlib/Topology/Compactness/Compact.lean,Mathlib/Topology/Separation/Regular.lean |
6 |
7 |
['ADedecker', 'EtienneC30', 'github-actions'] |
urkud assignee:urkud |
5-58782 5 days ago |
6-32429 6 days ago |
7-3720 7 days |
| 36839 |
wwylele author:wwylele |
feat(Analysis/Normed): linear independence of PiLp.single |
This is just transferring the corresponding lemma from `Pi.single`, so one doesn't need to unfold `PiLp.single` to apply them.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
31/0 |
Mathlib/Analysis/Normed/Lp/PiLp.lean |
1 |
4 |
['github-actions', 'themathqueen', 'wwylele'] |
sgouezel assignee:sgouezel |
5-58782 5 days ago |
7-57663 7 days ago |
7-57657 7 days |
| 36887 |
chenson2018 author:chenson2018 |
fix: `multiGoal` linter within interactive `grind` |
Currently the `multiGoal` linter will incorrectly trigger for `grind` interactive mode, as this uses its own syntax for `cases`, `·`, `next`, etc. that are registered as exceptions for the equivalent ordinary tactics. This PR fixes this behavior and adds a series of corresponding tests.
---
[](https://gitpod.io/from-referrer/)
|
t-linter |
120/0 |
Mathlib/Tactic/Linter/Multigoal.lean,MathlibTest/Multigoal.lean |
2 |
1 |
['github-actions'] |
joneugster assignee:joneugster |
5-58776 5 days ago |
6-42865 6 days ago |
6-42859 6 days |
| 36900 |
chrisflav author:chrisflav |
chore(CategoryTheory/MorphismProperty): dualise `IsStableUnderBaseChangeAlong` and related declarations |
We also fix some naming inconsistencies.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
108/24 |
Mathlib/CategoryTheory/MorphismProperty/Limits.lean,Mathlib/CategoryTheory/MorphismProperty/OverAdjunction.lean |
2 |
1 |
['github-actions'] |
robin-carlier assignee:robin-carlier |
5-58775 5 days ago |
6-16970 6 days ago |
6-18560 6 days |
| 36909 |
chrisflav author:chrisflav |
chore(CategoryTheory/Limits): reflecting (co)limits and opposites |
This is mostly copied from the variants for preservation of (co)limits. The only exceptions, modulo search and replace, are the proofs up until `reflectsLimitsOfShape_op`.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
499/0 |
Mathlib/CategoryTheory/Limits/Preserves/Opposites.lean |
1 |
1 |
['github-actions'] |
robin-carlier assignee:robin-carlier |
5-58773 5 days ago |
6-748 6 days ago |
6-742 6 days |
| 36934 |
Parcly-Taxel author:Parcly-Taxel |
refactor: `Language` as a one-field structure |
I came across definitional equality problems when trying to prove the following as part of a challenge from my PhD advisor:
```lean
import Mathlib.Computability.Language
variable {α : Type*}
/-- `IsSingleton y` states that `y` consists of only one word, and that word is not empty. -/
def IsSingleton (y : Language α) : Prop :=
(∀ z ≤ y, z = y ∨ z = 0) ∧ y ≠ 1 ∧ y ≠ 0
lemma isSingleton_iff {y : Language α} : IsSingleton y ↔ ∃ w ≠ [], y = {w} := by
sorry
```
This refactor resolves said defeq problems by making `Language` into a one-field structure with `toSet` and `ofSet`. |
t-computability |
211/108 |
Mathlib/Computability/ContextFreeGrammar.lean,Mathlib/Computability/DFA.lean,Mathlib/Computability/EpsilonNFA.lean,Mathlib/Computability/Language.lean,Mathlib/Computability/MyhillNerode.lean,Mathlib/Computability/NFA.lean,Mathlib/Computability/RegularExpressions.lean |
7 |
2 |
['eric-wieser', 'github-actions'] |
nobody |
5-38443 5 days ago |
5-40455 5 days ago |
5-40560 5 days |
| 30551 |
smmercuri author:smmercuri |
feat: `NumberField.InfinitePlace.sum_inertiaDeg_eq_finrank` |
If `L/K` are number fields number fields and `v : InfinitePlace K`, then the sum of inertia degrees of `w : InfinitePlace L` lying over `v` is the degree of `L` over `K`.
---
- [x] depends on: #27978
- [x] depends on: #27974
- [x] depends on: #29942
- [x] depends on: #29946
- [x] depends on: #36132
- [x] depends on: #36257
- [x] depends on: #36268
- [x] depends on: #36353
- [x] depends on: #36393
[](https://gitpod.io/from-referrer/)
|
|
196/7 |
Mathlib.lean,Mathlib/NumberTheory/NumberField/Completion/InfinitePlace.lean,Mathlib/NumberTheory/NumberField/Completion/LiesOverInstances.lean,Mathlib/NumberTheory/NumberField/Completion/Ramification.lean |
4 |
8 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
nobody |
5-35434 5 days ago |
5-35436 5 days ago |
5-35440 5 days |
| 35555 |
JovanGerb author:JovanGerb |
perf: add `AddMonoid` shortcut instance for linear maps |
The hierarchy of classes is such that `AddCommMonoid` is not a direct parent of `AddCommGroup`. This means that when unifying an instance that comes from `AddCommMonoid` with one that comes from `AddCommGroup`, we end up having to go through the shared parent `AddMonoid`. Hence, it can be beneficial to have a separately defined `AddMonoid` instance.
It might be worth it to try to switch up the order of the parents of `AddCommGroup`/`CommGroup` in the `extends` clause, and see if that has beneficial effects. Though this will affect many things, and in particular won't interact well with the `backward.respectTransparency` mess that is going on at the moment.
---
[](https://gitpod.io/from-referrer/)
|
|
23/7 |
Mathlib/Algebra/Module/LinearMap/Defs.lean,Mathlib/LinearAlgebra/Multilinear/Basic.lean,Mathlib/Topology/Algebra/Module/LinearMap.lean,Mathlib/Topology/Algebra/Module/Multilinear/Basic.lean |
4 |
5 |
['JovanGerb', 'github-actions', 'leanprover-radar', 'mathlib-merge-conflicts'] |
robin-carlier assignee:robin-carlier |
5-30170 5 days ago |
5-30218 5 days ago |
9-62581 9 days |
| 31219 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra): lemma about `IsBaseChange` under exact sequence |
In this lemma, we proved cokernel preserve `IsBaseChange S` and kernel preserve `IsBaseChange S` when `S` is flat.
Co-authored-by: Wang Jingting
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
145/0 |
Mathlib.lean,Mathlib/RingTheory/Flat/IsBaseChange.lean,Mathlib/RingTheory/TensorProduct/IsBaseChangeRightExact.lean |
3 |
10 |
['Thmoas-Guan', 'erdOne', 'github-actions', 'mathlib4-merge-conflict-bot', 'urkud'] |
mariainesdff assignee:mariainesdff |
5-29704 5 days ago |
6-50678 6 days ago |
23-7560 23 days |
| 36817 |
Thmoas-Guan author:Thmoas-Guan |
feat(Data/ENat): more lemma about WithBot ENat |
In this PR, we add some lemma about WithBot ENat found useful in dimension shifting.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
20/0 |
Mathlib/Algebra/Order/Monoid/WithTop.lean,Mathlib/Data/ENat/Basic.lean |
2 |
8 |
['Thmoas-Guan', 'github-actions', 'vihdzp'] |
dagurtomas assignee:dagurtomas |
5-29174 5 days ago |
8-3170 8 days ago |
8-3164 8 days |
| 35830 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(Data/Nat/Choose/Multinomial): multinomial coefficients |
Define the multinomial coefficients, a variant of `Nat.multinomial`.
- redefine `Multiset.multinomial`.
Given a multiset `m` of natural numbers, `m.multinomial` is the
multinomial coefficient defined by (m.sum) ! / ∏ i ∈ m, m i !.
As an example, `Multiset.multinomial {1, 2, 2} = 30`.
This is the exponent of $x y^2 z^2$ in $(x+y+z)^5$.
This should not be confused with the existing `Multiset.multinomial` which gives a different answer,
for example, `Multiset.multinomial {1, 2, 2} = 3`. This function is renamed as `Multiset.countPerms`.
- `Multiset.multinomial_cons` proves that
`(x ::ₘ m).multinomial = Nat.choose (x + m.sum) x * m.multinomial`
- `Multiset.multinomial_add` proves that
`(m + m').multinomial = Nat.choose (m + m').sum m.sum * m.multinomial * m'.multinomial`
co-authored with @mariainesdff
---
- [ ] depends on: #36611
[](https://gitpod.io/from-referrer/)
|
t-data |
128/5 |
Mathlib/Data/List/ToFinsupp.lean,Mathlib/Data/Nat/Choose/Multinomial.lean |
2 |
15 |
['AntoineChambert-Loir', 'github-actions', 'joneugster', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp'] |
joneugster assignee:joneugster |
5-28593 5 days ago |
5-28615 5 days ago |
19-61633 19 days |
| 36937 |
Yaohua-Leo author:Yaohua-Leo |
feat(Algebra/Jordan): add first linearization lemmas for IsCommJordan |
AI assistance disclosure: I used AI assistance for CI/debugging and module-structure fixes in this PR. The mathematical content and main lemmas were written by me, with help from @pelicanhere.
This PR adds a new file `Mathlib/Algebra/Jordan/Linearization.lean`
containing first linearization lemmas for the commutative Jordan identity.
Main declarations:
* `IsCommJordan.four_nsmul_associator_mul_add`
* `IsCommJordan.associator_mul_add`
These lemmas formalize the standard first linearization of the commutative
Jordan identity using `associator`, following McCrimmon, Proposition 1.8.5.
I put them in a separate file since they seem to be the beginning of a small
linearization API for Jordan rings, and I expect follow-up lemmas
(e.g. further linearizations) to belong naturally in the same place.
I also asked on Zulip about file placement and naming; I am happy to rename
declarations or move them if reviewers prefer. |
t-algebra
new-contributor
label:t-algebra$ |
59/0 |
Mathlib.lean,Mathlib/Algebra/Jordan/Linearization.lean |
2 |
4 |
['Yaohua-Leo', 'github-actions', 'grunweg'] |
nobody |
5-27735 5 days ago |
5-32224 5 days ago |
5-32846 5 days |
| 36451 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Matching): `edgeSet` is injective and strictly monotonic on matchings, and more API |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
41/10 |
Mathlib/Combinatorics/SimpleGraph/Matching.lean,Mathlib/Combinatorics/SimpleGraph/Subgraph.lean |
2 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
5-19675 5 days ago |
5-19698 5 days ago |
15-70045 15 days |
| 36917 |
iarnoldy author:iarnoldy |
feat(LinearAlgebra/CliffordAlgebra): bivector Lie subalgebra |
Define the submodule of grade-n elements (n-vectors) in a Clifford algebra
and show that bivectors (n = 2) form a `LieSubalgebra` under the commutator
bracket. This gives the standard construction of so(Q) from Cl(Q).
Main definitions:
* `CliffordAlgebra.nvector` — grade-n submodule, spanned by n-fold products of ι
* `CliffordAlgebra.bivector` — nvector 2 Q, the bivector submodule
* `CliffordAlgebra.bivectorLieSubalgebra` — LieSubalgebra of bivectors
Main results:
* `CliffordAlgebra.lie_ι_mul_ι` — explicit commutator formula for bivector generators
* `CliffordAlgebra.lie_mem_bivector` — bracket closure of the bivector submodule
* `CliffordAlgebra.bivector_le_evenOdd_zero` — bivectors lie in the even part
The `LieModule` instance for `CliffordAlgebra Q` acting on itself is provided
explicitly (`instLieModuleSelf`) because automatic synthesis exceeds the default
heartbeat limit.
AI disclosure: This code was generated with AI assistance (Claude, Anthropic).
The submitter directed the construction and QA but is not a Lean programmer.
The mathematical content is classical (Doran & Lasenby, Ch. 3). Extra review
scrutiny is welcomed.
Co-authored-by: Claude
---
Open design questions for reviewers:
1. **Naming**: Is `nvector` the right name? Eric Wieser suggested generalizing
to n-vectors. Alternatives: `ιProd`, `grade`, or following the `exteriorPower`
pattern via `equivExterior` pullback.
2. **Scalar contamination**: The spanning set `{ι m₁ * ι m₂}` includes
`ι m * ι m = Q(m)` (scalars). Eric suggested pulling back `exteriorPower`
through `equivExterior` for pure grades (requires `Invertible (2 : R)`).
Happy to rework if that's preferred.
3. **instLieModuleSelf**: Should this be an upstream issue rather than a
local workaround? @ocfnash
4. **ι_mul_ι_comm'**: This may duplicate existing API (`ι_mul_ι_comm b a`
plus `polar_comm`). Happy to inline if reviewers prefer.
Discussed on Zulip: https://leanprover.zulipchat.com (Is there code for X? thread) |
new-contributor
t-algebra
LLM-generated
label:t-algebra$ |
338/0 |
Mathlib.lean,Mathlib/LinearAlgebra/CliffordAlgebra/Bivector.lean |
2 |
2 |
['github-actions'] |
nobody |
5-19634 5 days ago |
5-65099 5 days ago |
5-66318 5 days |
| 36060 |
edegeltje author:edegeltje |
chore(CategoryTheory/Classifier): namespace Classifier, rename HasClassifier, move file |
The declaration `CategoryTheory.Classifier` (and various lemmas about it) is/are moved to the `Subobject` namespace.
The declaration `CategoryTheory.HasClassifier` is renamed `CategoryTheory.HasSubobjectClassifier`.
The file `CategoryTheory/Topos/Classifier.lean` is moved to `CategoryTheory/Subobject/Classifier/Defs.lean`.
Moves:
- Classifier.SubobjectRepresentableBy.* -> SubobjectRepresentableBy.*
- Classifier.* -> Subobject.Classifier.*
- HasClassifier.* -> HasSubobjectClassifier.*
[zulip discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Subobject.20Classifier.20organizing/with/576778481)
---
[](https://gitpod.io/from-referrer/)
|
file-removed
t-category-theory
|
196/46 |
Mathlib.lean,Mathlib/CategoryTheory/Subobject/Classifier/Defs.lean,Mathlib/CategoryTheory/Topos/Sheaf.lean |
3 |
5 |
['dagurtomas', 'edegeltje', 'github-actions', 'mathlib-merge-conflicts'] |
joelriou assignee:joelriou |
5-16588 5 days ago |
5-16657 5 days ago |
22-2355 22 days |
| 35675 |
Thmoas-Guan author:Thmoas-Guan |
feat(RingTheory/Smooth): some lemma about formally smooth |
This PR mainly formalized the result [[Stacks 031L](https://stacks.math.columbia.edu/tag/031L)]
This is a preliminary of Cohen Structure Theorem.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
257/0 |
Mathlib.lean,Mathlib/RingTheory/Smooth/Quotient.lean,Mathlib/RingTheory/TensorProduct/Quotient.lean |
3 |
14 |
['Thmoas-Guan', 'github-actions', 'jcommelin'] |
erdOne assignee:erdOne |
5-14484 5 days ago |
23-9525 23 days ago |
31-4331 31 days |
| 36849 |
mike1729 author:mike1729 |
feat(Analysis/Normed/Module/SchauderBasis): basic sequences and Grünblum/Nikolskii criteria |
This PR introduces the theory of basic sequences in Banach spaces, following Albiac–Kalton. Defines basic sequences and unconditional basic sequences in normed spaces, and prove the classical criteria for recognizing them.
New definitions (in BasicSequence.lean)
- `BasicSequence`: a bundled ℕ-indexed sequence forming a Schauder basis for its algebraic span, with finite projection bound.
- `UnconditionalBasicSequence`: the unconditional analogue, indexed by a general type β.
- `SatisfiesGrunblumCondition`: partial sums over initial segments are bounded by a constant times the full sum.
- `SatisfiesNikolskiiCondition`: partial sums over subsets are bounded by a constant times any larger sum.
Main results
- `SatisfiesGrunblumCondition.basicSequence`: a nonzero sequence satisfying the Grünblum condition is a basic sequence.
- `SatisfiesNikolskiiCondition.unconditionalBasicSequence`: the analogous result for unconditional basic sequences under the Nikolskii condition.
- `SatisfiesGrunblumCondition.linearIndependent`, `SatisfiesNikolskiiCondition.linearIndependent`: nonzero sequences satisfying these conditions are linearly independent.
---
- [x] follow up to : #34209
- [ ] blocks : #35473
[](https://gitpod.io/from-referrer/) |
file-removed
t-analysis
new-contributor
|
410/1 |
Mathlib.lean,Mathlib/Analysis/Normed/Module/SchauderBasis/Basic.lean,Mathlib/Analysis/Normed/Module/SchauderBasis/BasicSequence.lean |
3 |
2 |
['github-actions'] |
sgouezel assignee:sgouezel |
5-8357 5 days ago |
7-21892 7 days ago |
7-21987 7 days |
| 28682 |
Thmoas-Guan author:Thmoas-Guan |
feat(RingTheory): definition of regular local ring |
In this PR, we give the definition of regular local ring.
The class `IsRegularLocalRing` is defined as `(maximalIdeal R).spanFinrank = ringKrullDim R`
We also established the lemma `IsRegularLocalRing.iff_finrank_cotangentSpace` proving this definition is equivalent to the cotangent space version.
---
- [x] depends on: #35337
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
87/0 |
Mathlib.lean,Mathlib/RingTheory/Ideal/KrullsHeightTheorem.lean,Mathlib/RingTheory/RegularLocalRing/Defs.lean |
3 |
59 |
['Thmoas-Guan', 'chrisflav', 'github-actions', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot', 'mbkybky'] |
chrisflav assignee:chrisflav |
5-8235 5 days ago |
5-8295 5 days ago |
26-26391 26 days |
| 36324 |
psinary-sketch author:psinary-sketch |
feat(NumberTheory/LSeries): Schwarz reflection for completedRiemannZeta₀ |
---
Three new theorems about `completedRiemannZeta₀`:
- `completedRiemannZeta₀_conj`: Schwarz reflection
`Λ₀(conj s) = conj(Λ₀(s))`
- `completedRiemannZeta₀_im_eq_zero_on_half`: the completed zeta
function is real-valued on the critical line
- `completedRiemannZeta₀_conj_eq_self_on_half`: equivalent fixed-point
formulation
The Schwarz reflection follows from the Mellin representation: the
kernel is real-valued, so the integral commutes with conjugation via
`integral_conj`. The critical-line results compose this with the
functional equation. |
t-number-theory
new-contributor
|
147/0 |
Mathlib.lean,Mathlib/NumberTheory/LSeries/SchwarzReflection.lean |
2 |
13 |
['SnirBroshi', 'github-actions', 'psinary-sketch'] |
alexjbest assignee:alexjbest |
5-6862 5 days ago |
5-6931 5 days ago |
14-57135 14 days |
| 35763 |
kim-em author:kim-em |
chore(scripts): make rm_set_option cache opt-in via --resume |
This PR changes `scripts/rm_set_option.py` so the progress cache is only used when explicitly requested via `--resume`, rather than being on by default (with `--no-resume` to disable).
The previous default was unsafe: the cache only checks that the target module's own SHA256 is unchanged, so edits to upstream modules between runs would be silently ignored, causing the script to skip modules that should be reprocessed.
🤖 Prepared with Claude Code |
LLM-generated |
4/4 |
scripts/README.md,scripts/rm_set_option.py |
2 |
2 |
['dupuisf', 'github-actions'] |
nobody |
5-4097 5 days ago |
29-18578 29 days ago |
29-18572 29 days |
| 36889 |
KryptosAI author:KryptosAI |
feat(LinearAlgebra/Matrix/MoorePenrose): define the Moore-Penrose pseudo-inverse |
Defines `IsMoorePenroseInverse` and constructs the Moore-Penrose pseudo-inverse for matrices over `RCLike` fields. Closes #24787.
`Defs.lean` defines the predicate using the heterogeneous four-condition characterization from the issue, plus uniqueness for semigroups with `StarMul`.
`Basic.lean` constructs the inverse via orthogonal projection and `ker(f)ᗮ ≃ₗ range(f)`, then proves:
```lean
theorem exists_isMoorePenroseInverse (A : Matrix m n 𝕜) :
∃ (As : Matrix n m 𝕜), IsMoorePenroseInverse A As
def moorePenroseInverse (A : Matrix m n 𝕜) : Matrix n m 𝕜
lemma moorePenroseInverse_conjTranspose :
moorePenroseInverse (Aᴴ) = (moorePenroseInverse A)ᴴ
lemma moorePenroseInverse_eq_nonsing_inv (hA : IsUnit A) :
moorePenroseInverse A = A⁻¹
```
### AI disclosure
- **Gemini 2.5 Pro**: proof planning, initial code, edits
- **Claude Code (Opus 4.6)**: debugging, compilation, type-checking against mathlib4
I reviewed and directed all changes.
---
[](https://gitpod.io/from-referrer/) |
t-algebra
new-contributor
LLM-generated
label:t-algebra$ |
399/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/MoorePenrose/Basic.lean,Mathlib/LinearAlgebra/Matrix/MoorePenrose/Defs.lean |
3 |
25 |
['KryptosAI', 'github-actions', 'vihdzp'] |
nobody |
5-1921 5 days ago |
5-1984 5 days ago |
5-3120 5 days |
| 34797 |
vlad902 author:vlad902 |
feat(SimpleGraph): `cycleGraph.cycle` is a cycle |
(A follow-up PR will show that `cycleGraph.cycle` is also hamiltonian.)
---
- [x] depends on: #35360
- [x] depends on: #34766
- [x] depends on: #34796
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
32/1 |
Mathlib/Combinatorics/SimpleGraph/Circulant.lean |
1 |
7 |
['Ruben-VandeVelde', 'github-actions', 'mathlib-dependent-issues', 'vlad902'] |
nobody |
5-1842 5 days ago |
6-84645 6 days ago |
8-27158 8 days |
| 31560 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(Topology/Sion): the minimax theorem of von Neumann - Sion |
Prove `Sion.exists_isSaddlePointOn` :
Let X and Y be convex subsets of topological vector spaces E and F,
X being moreover compact,
and let f : X × Y → ℝ be a function such that
- for all x, f(x, ⬝) is upper semicontinuous and quasiconcave
- for all y, f(⬝, y) is lower semicontinuous and quasiconvex
Then inf_x sup_y f(x,y) = sup_y inf_x f(x,y).
The classical case of the theorem assumes that f is continuous,
f(x, ⬝) is concave, f(⬝, y) is convex.
As a particular case, one get the von Neumann theorem where
f is bilinear and E, F are finite dimensional.
We follow the proof of Komiya (1988).
## Remark on implementation
* The essential part of the proof holds for a function
`f : X → Y → β`, where `β` is a complete dense linear order.
* We have written part of it for just a dense linear order,
* On the other hand, if the theorem holds for such `β`,
it must hold for any linear order, for the reason that
any linear order embeds into a complete dense linear order.
However, this result does not seem to be known to Mathlib.
* When `β` is `ℝ`, one can use `Real.toEReal` and one gets a proof for `ℝ`.
## TODO
Give particular important cases (eg, bilinear maps in finite dimension).
Co-authored with @ADedecker
---
- [x] depends on: #31548
- [x] depends on: #31547
- [x] depends on: #31558
[](https://gitpod.io/from-referrer/)
|
t-topology |
756/0 |
Mathlib.lean,Mathlib/Data/EReal/Basic.lean,Mathlib/Topology/NhdsWithin.lean,Mathlib/Topology/Semicontinuity/Basic.lean,Mathlib/Topology/Sion.lean,docs/references.bib |
6 |
21 |
['AntoineChambert-Loir', 'github-actions', 'j-loreaux', 'mathlib-merge-conflicts', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'riccardobrasca', 'thorimur'] |
dwrensha, j-loreaux, kmill assignee:kmill assignee:dwrensha assignee:j-loreaux |
4-84895 4 days ago |
7-23145 7 days ago |
100-67250 100 days |
| 36421 |
ROTARTSI82 author:ROTARTSI82 |
feat(RingTheory/IsAdjoinRoot): add mkOfAdjoinEqTop' |
Alternative hypothesis to existing theorem: prove the result from a `Module.Free `hypothesis instead of `IsIntegrallyClosed`. If `α` generates `S` as an algebra, then `S` is given by adjoining a root of `minpoly R α`.
---
Hello, we are the Algebraic Geometry group from the UW Math AI lab, and this is our first PR! This definition of `mkOfAdjoinEqTop'` generalizes the existing `mkOfAdjoinEqTop` and shows the result from `Module.Free` instead of `IsIntegrallyClosed`. It is used in future results that we would like to upstream at https://github.com/uw-math-ai/monogenic-extensions, which is a project to formalize lemmas 3.1 and 3.2 from https://arxiv.org/abs/2503.07846.
Co-authored-by: George Peykanu
Co-authored-by: Bryan Boehnke
Co-authored-by: Bianca Viray <67076332+b-viray@users.noreply.github.com>
-->
[](https://gitpod.io/from-referrer/)
|
new-contributor
large-import
t-ring-theory
|
47/0 |
Mathlib/FieldTheory/Minpoly/Basic.lean,Mathlib/RingTheory/IsAdjoinRoot.lean |
2 |
4 |
['ROTARTSI82', 'b-viray', 'github-actions'] |
dupuisf assignee:dupuisf |
4-81923 4 days ago |
16-60096 16 days ago |
16-60090 16 days |
| 34742 |
Brian-Nugent author:Brian-Nugent |
feat(SheafCohomology): add API for Sheaf Cohomology |
Defines the long exact sequence on cohomology associated to a short exact sequence of sheaves `H.longSequence`. Also defines `H.equiv₀`, the additive equivalence between `H F 0` and `((sheafSections J AddCommGrpCat).obj (op T)).obj F` when the category has a terminal object `T`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
large-import
t-category-theory
|
87/3 |
Mathlib/Algebra/Category/Grp/ForgetCorepresentable.lean,Mathlib/CategoryTheory/Sites/Abelian.lean,Mathlib/CategoryTheory/Sites/SheafCohomology/Basic.lean |
3 |
33 |
['Brian-Nugent', 'adamtopaz', 'dagurtomas', 'github-actions', 'joelriou', 'joneugster', 'mathlib-merge-conflicts'] |
adamtopaz assignee:adamtopaz |
4-81745 4 days ago |
4-81745 4 days ago |
43-42794 43 days |
| 36689 |
martinwintermath author:martinwintermath |
feat(Algebra/Module/Submodule): Submodules over a ring are modular elements in the lattice of submodules over a semiring |
Add lemmas that state that submodules over a sub-ring `S` of a semiring `R` are modular elements in the lattice of submodules over the semiring `R`, that is, they satisfy the modular law.
There are two new lemmas. Let `s` and `t` be `R`-submodules, and `p` an `S`-submodule:
* `sup_inf_assoc_of_le_restrictScalars`: if `s ≤ p` then `s ⊔ (t ⊓ p) = (s ⊔ t) ⊓ p` (i.e., `p` is right-modular)
* `inf_sup_assoc_of_restrictScalars_le`: if `p ≤ s` then `s ⊓ (t ⊔ p) = (s ⊓ t) ⊔ p` (i.e., `p` is left-modular)
I am not aware of an implementation of right/left-modular elements, so I stated the lemmas without using the language of modular lattices.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
51/0 |
Mathlib/Algebra/Module/Submodule/RestrictScalars.lean |
1 |
1 |
['github-actions'] |
dagurtomas assignee:dagurtomas |
4-78859 4 days ago |
10-83045 10 days ago |
10-83039 10 days |
| 36943 |
JovanGerb author:JovanGerb |
chore: import `lemma` in `Mathlib.Init` |
This is a follow up to #36316 (which added `Type*` to Mathlib.Init), adding the `lemma` command to Mathlib.Init. This lets us remove a bunch of imports.
---
[](https://gitpod.io/from-referrer/)
|
|
15/37 |
Mathlib/Algebra/Notation/Defs.lean,Mathlib/Algebra/Notation/Lemmas.lean,Mathlib/Control/Lawful.lean,Mathlib/Data/Int/Init.lean,Mathlib/Data/List/Triplewise.lean,Mathlib/Data/Nat/Bits.lean,Mathlib/Data/Nat/Init.lean,Mathlib/Data/Option/Defs.lean,Mathlib/Data/Option/NAry.lean,Mathlib/Data/Ordering/Basic.lean,Mathlib/Data/Rat/Init.lean,Mathlib/Data/String/Lemmas.lean,Mathlib/Init.lean,Mathlib/Logic/Basic.lean,Mathlib/Logic/Function/Coequalizer.lean,Mathlib/Logic/Function/CompTypeclasses.lean,Mathlib/Logic/Function/Defs.lean,Mathlib/Logic/Nontrivial/Defs.lean,Mathlib/Order/Defs/LinearOrder.lean,Mathlib/Order/Defs/PartialOrder.lean,Mathlib/Order/Defs/Unbundled.lean,Mathlib/Tactic/Basic.lean,Mathlib/Tactic/Bound.lean,Mathlib/Tactic/DeprecateTo.lean,Mathlib/Tactic/GCongr/Core.lean,Mathlib/Tactic/Lemma.lean,MathlibTest/BasicFiles/Init.lean,MathlibTest/BasicFiles/TacticBasic.lean,MathlibTest/DocPrime.lean,MathlibTest/MinImports.lean,MathlibTest/WhitespaceLinter.lean |
31 |
2 |
['SnirBroshi', 'github-actions'] |
nobody |
4-78765 4 days ago |
4-78765 4 days ago |
4-78862 4 days |
| 34805 |
DavidLedvinka author:DavidLedvinka |
feat(Tactic): generalize ofScientific NormNum extension to `DivisionSemiring` |
Co-authored-by: @hrmacbeth |
t-meta |
68/20 |
Mathlib/Tactic/NormNum/Inv.lean,Mathlib/Tactic/NormNum/OfScientific.lean,MathlibTest/norm_num.lean |
3 |
26 |
['DavidLedvinka', 'JovanGerb', 'b-mehta', 'eric-wieser', 'github-actions', 'mathlib-merge-conflicts', 'thorimur'] |
JovanGerb assignee:JovanGerb |
4-75738 4 days ago |
4-75739 4 days ago |
25-30745 25 days |
| 34315 |
LessnessRandomness author:LessnessRandomness |
feat(Combinatorics/SimpleGraph/Bipartite): Prove upper bound of edge set cardinality of bipartite graph |
Two ways to express upper bound of the edge set of bipartite graph:
1) If the cardinalities of both parts/sets, that make bipartite graph, are known, then the upper bound is equal to product of the cardinalities of both parts;
2) Four times of the cardinality of the edge set is less or equal to squared cardinality of vertex set.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
54/0 |
Mathlib/Combinatorics/SimpleGraph/Bipartite.lean |
1 |
56 |
['LessnessRandomness', 'SnirBroshi', 'b-mehta', 'github-actions', 'mathlib-merge-conflicts', 'vlad902'] |
awainverse assignee:awainverse |
4-74775 4 days ago |
4-74845 4 days ago |
56-66789 56 days |
| 35879 |
Jun2M author:Jun2M |
feat(Combinatorics/Graph): Add graph deletion operations |
This PR adds definitions and basic lemmas for deleting edges and vertices from a graph in Mathlib/Combinatorics/Graph/Delete.lean.
It introduces the following operations:
- `G ↾ F` (edgeRestrict): The subgraph of G restricted to the edges in F (vertices are preserved).
- `G \ F` (edgeDelete): The subgraph of G with the edges in F deleted.
- `G[X]` (induce): The subgraph of G induced by the set of vertices X.
- `G - X` (vertexDelete): The graph obtained from G by deleting the set of vertices X.
These definitions are accompanied by simp lemmas describing their edge sets, incidence relations, and basic properties such as monotonicity.
Co-authored-by: Peter Nelson [apn.uni@gmail.com](mailto:apn.uni@gmail.com)
---
- [x] depends on: #26770
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
208/0 |
Mathlib.lean,Mathlib/Combinatorics/Graph/Delete.lean |
2 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
4-66996 4 days ago |
4-67565 4 days ago |
4-73744 4 days |
| 35413 |
joneugster author:joneugster |
fix(Util/CountHeartbeats): move elaboration in #count_heartbeats inside a namespace |
This PR continues the work from #21182.
Original PR: https://github.com/leanprover-community/mathlib4/pull/21182 |
t-meta |
73/6 |
Mathlib/Util/CountHeartbeats.lean,MathlibTest/CountHeartbeats.lean |
2 |
3 |
['github-actions', 'joneugster', 'mathlib-bors'] |
alexjbest and dwrensha assignee:dwrensha assignee:alexjbest |
4-58790 4 days ago |
38-2025 38 days ago |
38-2019 38 days |
| 33714 |
idontgetoutmuch author:idontgetoutmuch |
feat(Mathlib/Geometry/Manifold): Riemannian metrics exist II |
Supersedes https://github.com/leanprover-community/mathlib4/pull/33519
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
new-contributor
|
680/0 |
Mathlib.lean,Mathlib/Geometry/Manifold/ExistsRiemannianMetric.lean,Mathlib/Geometry/Manifold/PartitionOfUnity.lean |
3 |
200 |
['github-actions', 'grunweg', 'idontgetoutmuch'] |
grunweg, ocfnash, sgouezel assignee:ocfnash assignee:grunweg assignee:sgouezel |
4-58779 4 days ago |
25-4853 25 days ago |
39-35022 39 days |
| 35653 |
pepamontero author:pepamontero |
feat: add ChartedSpace structure on orbit space |
feat: add ChartedSpace structure on orbit space
Add topological preliminaries for properly discontinuous group actions, and use them to equip the orbit space `orbitRel.Quotient G M` with a `ChartedSpace` structure.
In particular:
- Show that the quotient map `Quotient.mk _ : M → orbitRel.Quotient G M` is a covering map and hence a local homeomorphism.
- Construct chosen local inverses of the quotient map and establish properties over them.
- Define a `ChartedSpace` instance on the quotient by composing these local inverses with charts of M.
This started as an ItaLean2025 project; here is the [Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/541885-ItaLean-2025/topic/Projects.3A.20Quotient.20Manifolds/with/575121158) dedicated to it.
---
|
new-contributor
t-differential-geometry
|
186/0 |
Mathlib.lean,Mathlib/Geometry/Manifold/Instances/OrbitSpace.lean,Mathlib/Topology/Algebra/OrbitSpace.lean |
3 |
2 |
['github-actions'] |
PatrickMassot, ocfnash, sgouezel assignee:ocfnash assignee:sgouezel assignee:PatrickMassot |
4-58778 4 days ago |
31-77821 31 days ago |
31-78490 31 days |
| 35414 |
joneugster author:joneugster |
feat(Cache): Allow arguments of the form `Mathlib.Data.+` which correspond to a folder but not a file |
This PR continues the work from #21838.
Original PR: https://github.com/leanprover-community/mathlib4/pull/21838 |
CI
t-meta
|
74/31 |
Cache/IO.lean,Cache/Main.lean |
2 |
2 |
['github-actions', 'joneugster'] |
nobody |
4-58776 4 days ago |
38-1953 38 days ago |
38-1947 38 days |
| 30982 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Angle/Incenter): angle bisection and the incenter |
Add lemmas relating the incenter and excenters of a simplex to angle bisection, both generally for a simplex and more specifically with oriented angles for a triangle.
More specific lemmas for a simplex (identifying exactly which excenter corresponds to which bisectors) will require various additional API for bisectors of angles betweeen oriented affine subspaces (but for the most common applications to typical plane geometry problems, I expect the triangle lemmas with oriented angles to be more useful).
---
- [ ] depends on: #30474
- [ ] depends on: #30477
- [ ] depends on: #30600
- [ ] depends on: #30703
- [ ] depends on: #30938
- [ ] depends on: #30981
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
269/0 |
Mathlib.lean,Mathlib/Geometry/Euclidean/Angle/Incenter.lean |
2 |
6 |
['Parcly-Taxel', 'github-actions', 'jsm28', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot', 'wwylele'] |
nobody |
4-58772 4 days ago |
44-12384 44 days ago |
44-14856 44 days |
| 36674 |
EtienneC30 author:EtienneC30 |
feat: telescopic product/sum over Fin |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-data
large-import
label:t-algebra$ |
42/4 |
Archive/Imo/Imo1987Q1.lean,Mathlib/Algebra/BigOperators/Fin.lean,Mathlib/Algebra/BigOperators/Intervals.lean,Mathlib/AlgebraicTopology/DoldKan/Decomposition.lean,Mathlib/Data/Fintype/BigOperators.lean,Mathlib/SetTheory/Ordinal/Arithmetic.lean |
6 |
3 |
['EtienneC30', 'eric-wieser', 'github-actions'] |
joneugster assignee:joneugster |
4-58772 4 days ago |
11-6194 11 days ago |
11-32376 11 days |
| 36682 |
harahu author:harahu |
chore(Data): avoid lazy continuation in md lists |
We replace lazy continuation lines in lists with either:
- indented lines, to signify that the line is indeed a continuation line; or
- a newline, where the continuation line(s) were in fact intended to be disconnected from the list.
We do this because lazy continuation is a markdown footgun that one does well to avoid.
We also standardize indentation such that continuation lines now line up with the first line of the item they're continuing. This seems to be the solution enforced by markdown formatters, e.g. `mdformat`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
24/14 |
Mathlib/Data/Bracket.lean,Mathlib/Data/Fin/Basic.lean,Mathlib/Data/Fin/FlagRange.lean,Mathlib/Data/Finset/Density.lean,Mathlib/Data/Finsupp/MonomialOrder.lean,Mathlib/Data/Finsupp/MonomialOrder/DegLex.lean,Mathlib/Data/Multiset/DershowitzManna.lean,Mathlib/Data/NNRat/Defs.lean,Mathlib/Data/PNat/Xgcd.lean,Mathlib/Data/Part.lean,Mathlib/Data/Stream/Defs.lean |
11 |
1 |
['github-actions'] |
joneugster assignee:joneugster |
4-58771 4 days ago |
11-9832 11 days ago |
11-9826 11 days |
| 36783 |
wwylele author:wwylele |
feat(RingTheory/Localization): R ⧸ pⁿ ≃+* Rₚ ⧸ (maximalIdeal Rₚ)ⁿ |
This extends the existing `def equivQuotMaximalIdeal : R ⧸ p ≃+* Rₚ ⧸ maximalIdeal Rₚ` to powers of maximal ideals.
---
Disclosure of AI usage: I chat with AI for a sketch of the proof. The code is entirely written by me.
I didn't state the simp lemma for the symm direction because I am not sure how to state it. Following the analog of equivQuotMaximalIdeal_symm_apply_mk, this should be
```
theorem equivQuotMaximalIdealPow_symm_apply_mk (x : R) (s : p.primeCompl) :
(equivQuotMaximalIdealPow p Rₚ n).symm (Ideal.Quotient.mk _ (IsLocalization.mk' Rₚ x s)) =
(Ideal.Quotient.mk (p ^ n) x) * (Ideal.Quotient.mk (p ^ n) s)⁻¹ := by
```
But `(Ideal.Quotient.mk (p ^ n) s)⁻¹` is taking inverse in a non-field ring. Here the inverse always exists because s is not in p. What is the mathlib way to say this?
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
large-import
|
53/0 |
Mathlib/Algebra/Ring/Subring/Basic.lean,Mathlib/RingTheory/Ideal/Quotient/Nilpotent.lean,Mathlib/RingTheory/Localization/AtPrime/Basic.lean |
3 |
1 |
['github-actions'] |
chrisflav assignee:chrisflav |
4-58768 4 days ago |
8-58733 8 days ago |
8-58727 8 days |
| 36860 |
Vierkantor author:Vierkantor |
chore(Tactic): rewrite `match_scalars` and `module` tactic docstrings |
This PR rewrites the docstrings for the `match_scalars` and `module` tactics, to make sure they are complete while not getting too long.
Apart from a few stylistic changes, the main changes are to make the description a bit denser in relevant information, while restructuring the ideas so they are grouped together a bit better.
---
[](https://gitpod.io/from-referrer/)
|
documentation
t-meta
|
34/28 |
Mathlib/Tactic/Module.lean |
1 |
1 |
['github-actions'] |
adamtopaz assignee:adamtopaz |
4-58765 4 days ago |
7-602 7 days ago |
7-596 7 days |
| 36910 |
Brian-Nugent author:Brian-Nugent |
feat(CategoryTheory): 4 and 5 lemmas for ComposableArrows 5 |
Adds versions of the 4 and 5 lemmas for morphisms in `ComposableArrows 5`.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
new-contributor
|
71/2 |
Mathlib/CategoryTheory/Abelian/DiagramLemmas/Four.lean |
1 |
2 |
['github-actions'] |
adamtopaz assignee:adamtopaz |
4-58763 4 days ago |
5-83809 5 days ago |
5-83803 5 days |
| 36935 |
bryangingechen author:bryangingechen |
ci: update splice-bot, enable splice-bot merge |
This bumps the version of the SpliceBot ([changes](https://github.com/leanprover-community/SpliceBot/compare/146ee716fab40e9cae384b9932fded8b9999b16d...a463ae17022e8eb5929a208c1b136aeebcaf77e1)) to include support for "label commands" and gives `mathlib-splicebot` the ability to use the `auto-merge-after-CI` label.
After this is merged, maintainers will be able to type `splice-bot merge` in a pull request review comment and the splicebot will do its thing, and also apply the `auto-merge-after-CI` label, which will cause the PR to be merged if CI passes. Note that this also makes normal usage stricter -- `splice-bot trailing text` will be interpreted as a label command, and will fail.
The `label_command` input is set to a repo variable so that we can adjust it if needed without opening a PR. For now I have added the following in the `SPLICEBOT_LABEL_COMMANDS` variable:
```json
[
{
"command": "merge",
"label": "auto-merge-after-CI",
"min_repo_permission": "disabled",
"allowed_teams": ["leanprover-community/mathlib-maintainers"]
}
]
```
---
[](https://gitpod.io/from-referrer/)
|
CI |
7/4 |
.github/workflows/build_template.yml,.github/workflows/splice_bot.yaml,.github/workflows/splice_bot_wf_run.yaml |
3 |
2 |
['bryangingechen', 'github-actions'] |
joneugster assignee:joneugster |
4-58759 4 days ago |
5-40780 5 days ago |
5-40774 5 days |
| 36947 |
JovanGerb author:JovanGerb |
fix(RingNF): use `assoc` as a pre lemma |
This PR was originally meant as a performance improvement, but now serves as a bug fix. The `cleanup` function used by `ring_nf` used to be non-confluent due to using both `add_assoc_rev` and `add_neg`, and it would apply them in the wrong order. This PR fixes that problem by putting `add_assoc_rev` in the pre-simp-set, and keeping `add_neg` in the post-simp-set. This affects a few proofs that needed to be fixed.
When applied to big expressions, associativity lemmas are more efficient as pre lemmas than as post lemmas: as post lemmas, the number of needed rewrites is quadratic instead of linear. This PR applies this idea to the `ring_nf` cleanup function.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
8/11 |
Mathlib/Analysis/SpecialFunctions/BinaryEntropy.lean,Mathlib/GroupTheory/SpecificGroups/Quaternion.lean,Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean,Mathlib/Tactic/Ring/RingNF.lean |
4 |
3 |
['JovanGerb', 'github-actions', 'leanprover-radar'] |
thorimur assignee:thorimur |
4-58758 4 days ago |
5-5426 5 days ago |
5-5461 5 days |
| 36965 |
vihdzp author:vihdzp |
chore(SetTheory/Cardinal): tweak `succ` lemmas |
We leave the `SuccOrder` instance unexposed. It doesn't have any particularly good def-eqs, it's simply defined as the infimum of all larger cardinals. We also golf some surrounding theorems.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
49/42 |
Mathlib/LinearAlgebra/Dimension/Basic.lean,Mathlib/SetTheory/Cardinal/Basic.lean,Mathlib/SetTheory/Cardinal/Order.lean,Mathlib/SetTheory/Ordinal/Basic.lean |
4 |
1 |
['github-actions'] |
nobody |
4-52308 4 days ago |
4-52380 4 days ago |
4-57668 4 days |
| 36980 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra): exactness lemma for linear map |
Add some variant of existing lemma for linear map
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
14/0 |
Mathlib/Algebra/Exact.lean |
1 |
1 |
['github-actions'] |
nobody |
4-35261 4 days ago |
4-35336 4 days ago |
4-35330 4 days |
| 36626 |
SnirBroshi author:SnirBroshi |
feat(Order/UpperLower/Basic): an injective function constrained by the identity function using a well-order is the identity |
---
(yes I know `IsLowerSet` is bundled but I need the theorems for unbundled relations 🙈)
[](https://gitpod.io/from-referrer/)
|
t-order |
30/0 |
Mathlib/Order/UpperLower/Basic.lean |
1 |
6 |
['SnirBroshi', 'YaelDillies', 'github-actions', 'vihdzp'] |
YaelDillies assignee:YaelDillies |
4-31765 4 days ago |
12-58762 12 days ago |
12-58756 12 days |
| 26212 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra): the Rees theorem for depth |
In this PR we proved the Rees theorem for depth.
Co-authored-by: Hu Yongle
---
- [x] depends on: #36390
[](https://gitpod.io/from-referrer/)
|
large-import
t-ring-theory
|
209/16 |
Mathlib/RingTheory/Regular/Category.lean,Mathlib/RingTheory/Regular/Depth.lean |
2 |
55 |
['Thmoas-Guan', 'alreadydone', 'chrisflav', 'dagurtomas', 'erdOne', 'github-actions', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot'] |
chrisflav assignee:chrisflav |
4-13998 4 days ago |
5-32815 5 days ago |
94-21049 94 days |
| 35762 |
xroblot author:xroblot |
feat(CyclotomicFields/Galois): compute the image of the stabilizer of an unramified prime ideal in `(ℤ/nℤ)ˣ` |
For a cyclotomic field `K = ℚ(ζₙ)` and a prime `p` not dividing `n`, we show that for any prime ideal `P` of `𝓞 K` above `p`, the image of the decomposition group of `P` under the isomorphism `Gal(K/ℚ) ≃* (ℤ/nℤ)ˣ` equals the cyclic subgroup generated by the Frobenius element `[p] ∈ (ℤ/nℤ)ˣ`.
---
- [x] depends on: #35530
- [x] depends on: #36899
[](https://gitpod.io/from-referrer/)
|
large-import
t-algebra
label:t-algebra$ |
109/0 |
Mathlib/FieldTheory/Finite/Extension.lean,Mathlib/NumberTheory/NumberField/Basic.lean,Mathlib/NumberTheory/NumberField/Cyclotomic/Galois.lean,Mathlib/NumberTheory/NumberField/Ideal/Basic.lean,Mathlib/RingTheory/Ideal/Int.lean,Mathlib/RingTheory/Invariant/Basic.lean |
6 |
15 |
['dagurtomas', 'github-actions', 'joneugster', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'tb65536', 'xroblot'] |
dagurtomas assignee:dagurtomas |
4-12103 4 days ago |
4-12103 4 days ago |
13-38888 13 days |
| 36954 |
FMLJohn author:FMLJohn |
feat(Topology/ClosedBases): `TopologicalSpace.IsClosedBasis` and `TopologicalSpace.IsClosedSubbasis s` |
---
[](https://gitpod.io/from-referrer/)
In this pull request, I have defined closed bases and closed subbases of topologies, and proved some basic properties of them.
## Main definitions
* `TopologicalSpace.IsClosedBasis s`: A closed basis of a topological space `α` is a collection of closed sets `s : Set (Set α)` such that every closed subset of `α` can be written as an intersection of elements of `s`.
* `TopologicalSpace.IsClosedSubbasis s`: Given a topological space `α`, `s : Set (Set α)` is a closed subbasis if the topology on `α` equals `generateFrom { uᶜ | u ∈ s }`. |
t-topology |
122/0 |
Mathlib.lean,Mathlib/Topology/Bases.lean,Mathlib/Topology/ClosedBases.lean |
3 |
1 |
['github-actions'] |
PatrickMassot assignee:PatrickMassot |
3-80829 3 days ago |
5-2488 5 days ago |
5-4548 5 days |
| 36462 |
wwylele author:wwylele |
feat(Geometry/Euclidean): integration formula for μHE |
A step towards #34826.
---
The location of `MeasureTheory.volume_eq_of_finrank_eq_one` feels a bit random. I'd like to put it in some early files, but it uses measure preserving of isometry in Mathlib/MeasureTheory/Measure/Haar/InnerProductSpace.lean, which is why it ended up there
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
t-euclidean-geometry
|
138/5 |
Mathlib/Geometry/Euclidean/Volume/Measure.lean,Mathlib/MeasureTheory/MeasurableSpace/Embedding.lean,Mathlib/MeasureTheory/Measure/Haar/InnerProductSpace.lean |
3 |
15 |
['copilot-pull-request-reviewer', 'eric-wieser', 'github-actions', 'wwylele'] |
RemyDegenne assignee:RemyDegenne |
3-78545 3 days ago |
15-64041 15 days ago |
15-64035 15 days |
| 36781 |
hommmmm author:hommmmm |
feat(RingTheory/UniqueFactorizationDomain): UFD iff height one primes are principal |
We prove that a Noetherian integral domain is a UFD if and only if every prime ideal of height one is principal (`UniqueFactorizationMonoid.iff_height_one_prime_principal`).
## New declarations
* `UniqueFactorizationMonoid.exists_height_one_le_of_finite_height`: given a prime of finite height ≥ 1, there exists a height one prime contained in it.
* `UniqueFactorizationMonoid.ne_bot_of_height_one`: an ideal of height one is nonzero.
* `UniqueFactorizationMonoid.height_ge_one_of_prime_ne_bot`: the height of a nonzero prime ideal in a domain is at least one.
* `UniqueFactorizationMonoid.height_one_prime_principal`: in a UFD, every height one prime is principal.
* `UniqueFactorizationMonoid.of_height_one_prime_principal`: every height one prime being principal implies UFD (Noetherian case).
* `UniqueFactorizationMonoid.iff_height_one_prime_principal`: the full iff statement.
## References
See https://stacks.math.columbia.edu/tag/0AFT
## AI Disclosure
This code is written without AI, then uses Claude Code with cameronfreer's [Lean4-skills](https://github.com/cameronfreer/lean4-skills) (specifically, the `review`, `refactor`, and `golf` workflow) for style changes, refactoring and golfing.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
large-import
|
102/1 |
Mathlib/RingTheory/UniqueFactorizationDomain/Kaplansky.lean |
1 |
8 |
['Thmoas-Guan', 'chrisflav', 'github-actions', 'hommmmm', 'tb65536'] |
mariainesdff assignee:mariainesdff |
3-76558 3 days ago |
3-76559 3 days ago |
8-25760 8 days |
| 36785 |
hommmmm author:hommmmm |
feat(RingTheory/Localization): Nagata's criterion for primality in localization away |
## Summary
- Add `dvd_of_mem_span_singleton_localization`: if `p` is prime and `p ∤ x`, then
membership in the span of the image of `x` in `R[1/p]` implies divisibility by `x`.
- Add `prime_of_prime_in_localization` (Nagata's criterion): if `p` is prime, `x` is
irreducible, and the image of `x` in `R[1/p]` is prime, then `x` is prime.
## References
- [Stacks Project, Tag 0AFU](https://stacks.math.columbia.edu/tag/0afu)
## AI Disclosure
This code is written without AI, then uses Claude Code with cameronfreer's [Lean4-skills](https://github.com/cameronfreer/lean4-skills) (specifically, the `review`, `refactor`, and `golf` workflow) for style changes, refactoring and golfing.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
72/0 |
Mathlib.lean,Mathlib/RingTheory/Localization/Away/Prime.lean |
2 |
4 |
['chrisflav', 'github-actions', 'hommmmm'] |
chrisflav assignee:chrisflav |
3-76558 3 days ago |
3-76558 3 days ago |
8-16773 8 days |
| 33662 |
Pjotr5 author:Pjotr5 |
feat(Algebra/Order/BigOperators/Expect): add lemmas and strict variants |
### Summary
- Combine `le_expect_nonempty_of_subadditive` and `le_expect_of_subadditive` into a single lemma `le_expect_of_subadditive`.
The extra assumptions `(hs : s.Nonempty)` and `(h_zero : m 0 = 0)` are unnecessary (since `m 0 = 0` follows from `h_div`).
This requires a small downstream update to `Mathlib/Analysis/RCLike/Basic.lean` (`norm_expect_le`).
- Add strict-inequality variants:
`expect_lt_expect`, `expect_lt`, `lt_expect`.
- Add existence lemmas:
`exists_le_of_expect_le_expect`, `exists_le_of_le_expect`, `exists_le_of_expect_le`,
and `exists_lt_of_expect_lt_expect`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-algebra
label:t-algebra$ |
46/16 |
Mathlib/Algebra/Order/BigOperators/Expect.lean,Mathlib/Analysis/RCLike/Basic.lean |
2 |
6 |
['Pjotr5', 'b-mehta', 'github-actions'] |
b-mehta assignee:b-mehta |
3-73660 3 days ago |
3-73833 3 days ago |
79-28967 79 days |
| 35655 |
Rida-Hamadani author:Rida-Hamadani |
feat(SimpleGraph): strongly regular graphs have diameter 2 |
A strongly regular graph with positive `μ` must have diameter 2, as long as the vertex set is nontrivial and it is not complete.
---
- [x] depends on: #35657
This statement is useful in the literature, I wanted to add it after seeing it being used in the proof of the Hoffman-Singleton theorem.
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
18/0 |
Mathlib/Combinatorics/SimpleGraph/StronglyRegular.lean |
1 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
3-73616 3 days ago |
3-75215 3 days ago |
4-4327 4 days |
| 37004 |
harahu author:harahu |
doc(Control/Basic): add header |
The documentation style guide demands that each lean file has an H1 header.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
2/0 |
Mathlib/Control/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
3-73554 3 days ago |
3-73627 3 days ago |
3-73621 3 days |
| 36245 |
BryceT233 author:BryceT233 |
feat(RingTheory/LocalRing): introduce algebra map version of `ResidueField.map` |
This PR added `IsLocalHom` instances to `AlgHom` and introduced the algebra map version of `IsLocalRing.ResidueField.map`
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-ring-theory
|
57/0 |
Mathlib/RingTheory/LocalRing/ResidueField/Basic.lean,Mathlib/RingTheory/LocalRing/RingHom/Basic.lean |
2 |
2 |
['github-actions'] |
mattrobball assignee:mattrobball |
3-61027 3 days ago |
20-40323 20 days ago |
20-40414 20 days |
| 35707 |
BryceT233 author:BryceT233 |
feat(RingTheory/MvPowerSeries): introduce `truncTotal` |
This PR introduces the total degree truncation of multivariate formal power series when the index is finite, and uses it to establish the algebraic equivalence between `MvPowerSeries` and the adic completion of `MvPolynomial` with respect to the ideal spanned by all variables `idealOfVars`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-ring-theory
|
213/2 |
Mathlib.lean,Mathlib/Data/Finsupp/Weight.lean,Mathlib/RingTheory/MvPowerSeries/Equiv.lean,Mathlib/RingTheory/MvPowerSeries/Trunc.lean |
4 |
7 |
['BryceT233', 'github-actions', 'joneugster', 'mathlib-bors', 'wwylele'] |
erdOne assignee:erdOne |
3-61007 3 days ago |
21-52571 21 days ago |
30-35456 30 days |
| 36657 |
BryceT233 author:BryceT233 |
feat(RingTheory): adds two lemmas on `Module.length` |
This PR adds two lemmas regarding the length of modules:
* `Submodule.length_le_restrictScalar` shows that the length of an $R$-submodule is less than or equal to its length as an $A$-submodule under scalar restriction.
* `Submodule.length_quotient_lt` shows that for a module of finite length, the length of a quotient module $M \big/ p$ is strictly less than the length of $M$ when the submodule $p$ is non-trivial.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
23/0 |
Mathlib/RingTheory/Length.lean |
1 |
1 |
['github-actions'] |
chrisflav assignee:chrisflav |
3-60955 3 days ago |
11-56820 11 days ago |
11-59664 11 days |
| 36649 |
JovanGerb author:JovanGerb |
chore(CategoryTheory/Adjunction/Basic): use `dsimp%` in definition |
The theorems `left_triangle_components` and `right_triangle_components` are only well typed up to unfolding the `Functor.id` and `Functor.comp` in `unit` and `counit`. This PR uses `dsimp%` to make sure the implicit arguments have `Functor.id` and `Functor.comp` unfolded where possible.
This came up because `to_dual` complained that `left_triangle_components` and `right_triangle_components` aren't actually dual in `reducible` transparency.
---
[](https://gitpod.io/from-referrer/)
|
|
16/16 |
Mathlib/Algebra/Category/ModuleCat/Sheaf/PushforwardContinuous.lean,Mathlib/AlgebraicTopology/ModelCategory/BifibrantObjectHomotopy.lean,Mathlib/CategoryTheory/Adjunction/Basic.lean,Mathlib/CategoryTheory/Adjunction/Triple.lean,Mathlib/CategoryTheory/Limits/Preserves/Shapes/Zero.lean,Mathlib/CategoryTheory/Monad/Monadicity.lean,Mathlib/CategoryTheory/Shift/Adjunction.lean,Mathlib/Topology/Sheaves/Skyscraper.lean |
8 |
3 |
['JovanGerb', 'github-actions'] |
nobody |
3-60035 3 days ago |
11-68719 11 days ago |
11-69502 11 days |
| 28546 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): basic setup of Zd, full shift, cylinders, pat… |
This PR adds a **group-generic** foundation for symbolic dynamics over an arbitrary group `G`, together with convenient specializations for `ℤ` and `ℤ^d`.
Summary of additions:
- **Full shift and shift action**
- `abbrev FullShift (A G) := G → A` (inherits product topology from the Π-type).
- Right shift `shift g x` with convention `(shift g x) h = x (h * g)`.
- **Cylinders and topology**
- `cylinder U x : Set (G → A)` for finite `U : Finset G`.
- Cylinders are open under `[DiscreteTopology A]`; with a finite alphabet they are also closed.
- Equality with dependent products:
`cylinder U x = Set.pi (↑U) (fun i => ({x i} : Set A))`, enabling use of the `Set.pi` API.
- **Patterns, occurrences, and subshifts**
- `Pattern A G` with finite `support : Finset G` and `data : support → A`.
- `Pattern.occursIn p x g` (occurrence at translate `g`) and the expected shift law.
- `forbids F` and `Subshift A G` (closed, shift-invariant subsets).
- `FixedSupport A G U` with an equivalence to `(U → A)` to obtain finiteness.
- **Language on finite shapes and counting**
- `languageOn X U`, `languageCardOn X U`, and `patternCountOn Y U`.
- **Entropy along a shape sequence**
- `limsupAtTop` (as an `sInf` of eventual upper bounds).
- `entropyAlong X F hF := limsup (log (patternCountOn X (F n) + 1) / |F n|)`
for any nonempty finite shapes `F : ℕ → Finset G` (the `+ 1` avoids `log 0`).
- **Specializations**
- `IntShapes`: segments `[-n,n]` on `Multiplicative ℤ`, with `entropy_Z`.
- `ZdShapes`: boxes `[-n,n]^d` on `ℤ^d` (as functions `Fin d → ℤ`), with `entropy_Zd`.
Mathematical remarks:
- The API is **shape-parametric**: entropy is defined along user-provided finite shapes.
- On **amenable** groups, using a **Følner** sequence yields a canonical value (Ornstein–Weiss).
This PR does not assume amenability; the family of shapes is an explicit input.
Motivation:
Provide a clean, reusable base for symbolic dynamics on groups in mathlib.
Future work:
- Add a Følner predicate and prove shape-independence / limit existence on amenable groups.
- Expand the `ℤ`/`ℤ^d` toolkit (alternative shapes, mixing, factors).
- Develop 1D theory and, longer-term, multidimensional SFT results (e.g. along the lines of Hochman–Meyerovitch).
|
t-dynamics
new-contributor
|
746/0 |
Mathlib.lean,Mathlib/Dynamics/SymbolicDynamics/Basic.lean,Mathlib/Tactic/Translate/ToAdditive.lean |
3 |
181 |
['Sfgangloff', 'botbaki-review', 'eric-wieser', 'github-actions', 'kckennylau', 'mathlib4-merge-conflict-bot', 'sgouezel'] |
urkud assignee:urkud |
3-58743 3 days ago |
37-59549 37 days ago |
141-19013 141 days |
| 31595 |
astrainfinita author:astrainfinita |
chore: redefine `Ideal.IsPrime` |
Redefine `Ideal.IsPrime` to make it correct for non-commutative cases
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
333/100 |
Mathlib/Algebra/Order/Ring/Ordering/Defs.lean,Mathlib/RingTheory/DedekindDomain/Ideal/Lemmas.lean,Mathlib/RingTheory/GradedAlgebra/Radical.lean,Mathlib/RingTheory/Ideal/AssociatedPrime/Basic.lean,Mathlib/RingTheory/Ideal/Maps.lean,Mathlib/RingTheory/Ideal/Maximal.lean,Mathlib/RingTheory/Ideal/MinimalPrime/Noetherian.lean,Mathlib/RingTheory/Ideal/Oka.lean,Mathlib/RingTheory/Ideal/Operations.lean,Mathlib/RingTheory/Ideal/Over.lean,Mathlib/RingTheory/Ideal/Pointwise.lean,Mathlib/RingTheory/Ideal/Prime.lean,Mathlib/RingTheory/Ideal/Prod.lean,Mathlib/RingTheory/Ideal/Quotient/Basic.lean,Mathlib/RingTheory/Ideal/Quotient/Operations.lean,Mathlib/RingTheory/IsPrimary.lean,Mathlib/RingTheory/Localization/AtPrime/Basic.lean,Mathlib/RingTheory/Localization/Ideal.lean,Mathlib/RingTheory/Polynomial/Basic.lean,Mathlib/RingTheory/PrincipalIdealDomain.lean,Mathlib/RingTheory/Spectrum/Prime/Topology.lean,Mathlib/RingTheory/Valuation/Basic.lean |
22 |
32 |
['alreadydone', 'artie2000', 'astrainfinita', 'erdOne', 'github-actions', 'leanprover-bot', 'leanprover-radar', 'mathlib4-merge-conflict-bot'] |
kim-em assignee:kim-em |
3-58741 3 days ago |
28-52063 28 days ago |
57-25615 57 days |
| 32807 |
WilliamCoram author:WilliamCoram |
feat: Define the Gauss norm for MvPowerSeries |
We adjust the current definition for Gauss norm on power series to work for multivariate power series.
If this seems acceptable I can refactor the single variable case.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
124/0 |
Mathlib.lean,Mathlib/RingTheory/MvPowerSeries/GaussNorm.lean |
2 |
25 |
['WilliamCoram', 'erdOne', 'fbarroero', 'github-actions', 'mathlib4-merge-conflict-bot', 'vihdzp'] |
erdOne assignee:erdOne |
3-58741 3 days ago |
41-12704 41 days ago |
54-20560 54 days |
| 33143 |
wwylele author:wwylele |
feat(PowerSeries): pentagonal number theorem |
The proof is split in two files: `Mathlib/Topology/Algebra/InfiniteSum/Pentagonal.lean` for the algebraic part, and `Mathlib/RingTheory/PowerSeries/Pentagonal.lean` for the summability part. In the near future, I also plan to prove the real/complex version that branches off from the algebraic part.
---
- [ ] depends on: #30436
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
427/1 |
Mathlib.lean,Mathlib/RingTheory/PowerSeries/Pentagonal.lean,Mathlib/Topology/Algebra/InfiniteSum/Pentagonal.lean,docs/1000.yaml |
4 |
43 |
['copilot-pull-request-reviewer', 'github-actions', 'jcommelin', 'mathlib4-dependent-issues-bot', 'tb65536', 'urkud', 'vihdzp', 'wwylele'] |
eric-wieser assignee:eric-wieser |
3-58740 3 days ago |
31-29570 31 days ago |
89-29954 89 days |
| 33928 |
jsm28 author:jsm28 |
feat(Combinatorics/Tiling/TileSet): indexed families of tiles |
Define the type `TileSet` for indexed families of tiles (in a discrete context), and some associated definitions (including `symmetryGroup`) and API lemmas.
`TileSet` can be used for tilings of the whole space; for tilings of part of the space; for patches of tiles (extracted from a tiling by considering tiles meeting some set of points, or considered on their own without extracting from a tiling); for multiple tilings (covering the space more than once). In particular, the fact that people study multiple tilings provides a clear justification for using indexed families rather than sets of tiles, and basic definitions and API lemmas generally work for all these different uses of `TileSet` (sometimes with weak constraints such as tiles being finite, nonempty and only having finitely many tiles meeting any point of the space).
Definitions for saying e.g. "this `TileSet` is a tiling of the whole space" are to be included in subsequent files in subsequent PRs.
From AperiodicMonotilesLean.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
460/0 |
Mathlib.lean,Mathlib/Combinatorics/Tiling/TileSet.lean |
2 |
22 |
['Parcly-Taxel', 'b-mehta', 'eric-wieser', 'github-actions', 'jsm28', 'vihdzp'] |
b-mehta assignee:b-mehta |
3-58737 3 days ago |
71-75898 71 days ago |
71-75892 71 days |
| 33985 |
YellPika author:YellPika |
feat(Order/OmegaCompletePartialOrder): `OmegaCompletePartialOrder` instance for `Sum` with basic `ωScottContinuous` lemmas |
This PR adds an `OmegaCompletePartialOrder` instance for `Sum`, along with `ωScottContinuous` lemmas for basic operations (`inl`, `inr`, `elim`). Appropriate lemmas are marked with `@[fun_prop]` so that the `fun_prop` tactic can automatically deduce `ωScottContinuous` proofs for functions involving `Sum`s (e.g. see the proof of `Sum.ωScottContinuous_map`).
---
- [x] depends on: #33941
[](https://gitpod.io/from-referrer/)
|
new-contributor
large-import
t-order
|
191/1 |
Mathlib/Data/Sum/Basic.lean,Mathlib/Data/Sum/Order.lean,Mathlib/Order/OmegaCompletePartialOrder.lean,Mathlib/Order/ScottContinuity.lean |
4 |
20 |
['Vierkantor', 'YellPika', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp'] |
pechersky assignee:pechersky |
3-58735 3 days ago |
41-519 41 days ago |
50-49165 50 days |
| 34092 |
staroperator author:staroperator |
feat(SetTheory/ZFC): properties of `ZFSet.omega` |
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
77/10 |
Mathlib/SetTheory/ZFC/Basic.lean,Mathlib/SetTheory/ZFC/Ordinal.lean,Mathlib/SetTheory/ZFC/PSet.lean |
3 |
25 |
['Komyyy', 'github-actions', 'mathlib4-merge-conflict-bot', 'staroperator', 'vihdzp'] |
b-mehta assignee:b-mehta |
3-58734 3 days ago |
55-80701 55 days ago |
67-39710 67 days |
| 34093 |
YellPika author:YellPika |
feat(Order/OmegaCompletePartialOrder): add `OmegaCompletePartialOrder` instance for `Option` with basic `ωScottContinuous` lemmas |
---
- [x] depends on: #33941
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
297/0 |
Mathlib.lean,Mathlib/Data/Option/Order.lean,Mathlib/Order/Monotone/Basic.lean,Mathlib/Order/OmegaCompletePartialOrder.lean |
4 |
5 |
['YellPika', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
Komyyy assignee:Komyyy |
3-58733 3 days ago |
50-41094 50 days ago |
50-44052 50 days |
| 34144 |
IvanRenison author:IvanRenison |
feat(Data/ENat): add lemma `ENat.iInf_eq_coe_iff` |
Co-authored-by: SnirBroshi <26556598+SnirBroshi@users.noreply.github.com>
---
[Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/ENat.2EiInf_eq_nat_iff/with/568699219)
[](https://gitpod.io/from-referrer/)
|
t-data |
21/0 |
Mathlib/Data/ENat/Lattice.lean,Mathlib/Order/ConditionallyCompleteLattice/Basic.lean,Mathlib/Order/ConditionallyCompleteLattice/Indexed.lean |
3 |
16 |
['IvanRenison', 'Ruben-VandeVelde', 'SnirBroshi', 'eric-wieser', 'github-actions', 'tb65536'] |
pechersky assignee:pechersky |
3-58733 3 days ago |
32-75854 32 days ago |
61-12231 61 days |
| 34182 |
IlPreteRosso author:IlPreteRosso |
feat(Data/Finsupp/Single, Data/Finsupp/Indicator): Add set_indicator_singleton, indicator_singleton; golfed single_eq_set_indicator, single_eq_indicator |
[Mathlib.Data.Finsupp.Single](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Finsupp/Single.html#Finsupp.single)
- Add `set_indicator_singleton`, golfed `single_eq_set_indicator`
[Mathlib.Data.Finsupp.Indicator](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Finsupp/Indicator.html#Finsupp.indicator_apply)
- Add `indicator_singleton`, golfed `single_eq_indicator`
Continues the work from #34095 |
large-import
t-data
new-contributor
|
17/17 |
Mathlib/Data/Finsupp/Indicator.lean,Mathlib/Data/Finsupp/Single.lean |
2 |
29 |
['IlPreteRosso', 'eric-wieser', 'github-actions', 'mathlib-bors', 'urkud'] |
TwoFX assignee:TwoFX |
3-58731 3 days ago |
64-47082 64 days ago |
64-55069 64 days |
| 34481 |
DAE123456 author:DAE123456 |
feat: Ore's Theorem |
Ore Theorem : Let G be a graph of order n ≥ 3 that satisfies the Ore property. Then G has a Hamilton cycle. |
t-combinatorics
new-contributor
|
3372/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Ore.lean |
2 |
25 |
['DAE123456', 'LLaurance', 'Ruben-VandeVelde', 'YaelDillies', 'github-actions', 'kim-em', 'tb65536', 'vlad902'] |
kmill assignee:kmill |
3-58730 3 days ago |
52-27219 52 days ago |
55-78727 55 days |
| 34722 |
GrigorenkoPV author:GrigorenkoPV |
feat(Data/Finset/RangeDistance): add |
---
Rebase of https://github.com/leanprover-community/mathlib4/pull/26347
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-data
|
34/0 |
Mathlib.lean,Mathlib/Algebra/Order/Group/Unbundled/Abs.lean,Mathlib/Data/Finset/RangeDistance.lean |
3 |
4 |
['GrigorenkoPV', 'github-actions', 'joneugster', 'plp127'] |
pechersky assignee:pechersky |
3-58727 3 days ago |
52-13011 52 days ago |
52-14910 52 days |
| 34756 |
Hagb author:Hagb |
feat(Algebra/Order/Monoid/Unbundled/WithTop): `AddEquiv` between `WithBot` |
It is like `Equiv.withBotCongr` but preserving also addition (`AddEquiv`), for a variant of degree of `MvPolynomial` that maps `0` to `⊥` submitted in #34759.
---
It is like [`Equiv.withBotCongr`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=Equiv.withBotCongr#doc) but preserving also addition ([`AddEquiv`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=AddEquiv#doc)).
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
39/0 |
Mathlib/Algebra/Order/Monoid/Unbundled/WithTop.lean |
1 |
3 |
['Hagb', 'github-actions', 'plp127'] |
eric-wieser assignee:eric-wieser |
3-58726 3 days ago |
48-58881 48 days ago |
51-10925 51 days |
| 34809 |
YaelDillies author:YaelDillies |
feat: induced subgraphs of complete multipartite graphs are complete multipartite |
From ProofBench
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
4/2 |
Mathlib/Combinatorics/SimpleGraph/CompleteMultipartite.lean |
1 |
1 |
['github-actions'] |
kmill assignee:kmill |
3-58726 3 days ago |
50-73409 50 days ago |
50-73403 50 days |
| 34820 |
staroperator author:staroperator |
feat(Order/Ideal): more results on order ideals |
Some iffs, closure of finite supremum, and that every proper ideal is contained in a maximal ideal.
---
[](https://gitpod.io/from-referrer/)
|
t-order
large-import
|
79/5 |
Mathlib/Order/Ideal.lean |
1 |
5 |
['bryangingechen', 'github-actions', 'leanprover-radar', 'staroperator'] |
Komyyy assignee:Komyyy |
3-58725 3 days ago |
43-63354 43 days ago |
50-22878 50 days |
| 34851 |
dennj author:dennj |
feat(Data/Matrix/Mul): add diagonal and transpose lemmas for vector operations |
This adds three lemmas for matrix-vector operations that serve as foundational support for future ML formalization:
- `vecMul_diagonal_dotProduct`: weighted inner product `x ᵥ* diagonal d ⬝ᵥ y = ∑ i, d i * x i * y i`
- `dotProduct_transpose_mulVec`: bilinear form symmetry `x ⬝ᵥ Aᵀ *ᵥ y = y ⬝ᵥ A *ᵥ x`
- `mul_diagonal_mulVec`: column-weighted sum `(A * diagonal d) *ᵥ x = ∑ i, (d i * x i) • A.col i`
These are basic linear algebra identities involving diagonal matrices and vector operations that appear frequently in machine learning contexts (weighted inner products, attention mechanisms, feature scaling, diagonal preconditioning). |
t-data
new-contributor
|
22/0 |
Mathlib/Data/Matrix/Mul.lean |
1 |
5 |
['dennj', 'eric-wieser', 'github-actions', 'themathqueen'] |
TwoFX assignee:TwoFX |
3-58724 3 days ago |
49-74258 49 days ago |
49-74252 49 days |
| 34875 |
banrovegrie author:banrovegrie |
feat(LinearAlgebra/Matrix): add Sherman-Morrison formula |
Mathlib has the matrix determinant lemma (`det_add_replicateCol_mul_replicateRow` in SchurComplement.lean) but lacked the corresponding inverse formula. This PR fills that gap.
- Add `Matrix.inv_add_vecMulVec`: Sherman-Morrison formula for `(A + uv^T)^{-1}`
- Add `Matrix.inv_sub_vecMulVec`: subtraction variant
- Add `Matrix.isUnit_det_add_vecMulVec`: invertibility under the formula's hypotheses
## Test plan
- [x] `lake build` passes
- [x] Lines within 100 char limit
- [x] All declarations have docstrings |
t-algebra
new-contributor
label:t-algebra$ |
135/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/ShermanMorrison.lean |
2 |
11 |
['Xxxjdjdid', 'banrovegrie', 'copilot-pull-request-reviewer', 'eric-wieser', 'github-actions', 'wwylele'] |
eric-wieser assignee:eric-wieser |
3-58723 3 days ago |
49-7090 49 days ago |
49-7084 49 days |
| 34963 |
Parcly-Taxel author:Parcly-Taxel |
feat(Archive): proof of the Robbins conjecture |
Cf. [#mathlib4 > Alternative axiomatization of boolean algebras @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Alternative.20axiomatization.20of.20boolean.20algebras/near/558900960) and #31924. |
t-algebra label:t-algebra$ |
610/0 |
Archive.lean,Archive/Robbins.lean |
2 |
1 |
['github-actions'] |
kim-em assignee:kim-em |
3-58722 3 days ago |
46-51348 46 days ago |
46-52994 46 days |
| 34994 |
bwangpj author:bwangpj |
feat: Countable.of_module_finite |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
large-import
FLT
label:t-algebra$ |
7/0 |
Mathlib/LinearAlgebra/Countable.lean |
1 |
3 |
['bwangpj', 'eric-wieser', 'github-actions'] |
kim-em assignee:kim-em |
3-58721 3 days ago |
45-76862 45 days ago |
45-76856 45 days |
| 35365 |
wwylele author:wwylele |
feat(LinearAlgebra/Simplex): closedInterior = interior + face.closedInterior |
Intermediate lemma towards #34826. This will be used to show the measure on `interior` and `closedInterior` are equal, as the difference is a zero-measure set.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
53/0 |
Mathlib/LinearAlgebra/AffineSpace/Simplex/Basic.lean |
1 |
4 |
['copilot-pull-request-reviewer', 'github-actions'] |
eric-wieser assignee:eric-wieser |
3-58719 3 days ago |
28-8348 28 days ago |
39-3487 39 days |
| 35565 |
felixpernegger author:felixpernegger |
feat(Topology): sequentially T2 spaces |
Adds typeclass for topoligcal spaces where convergent sequences have a unique limit. This lies between T2 and T1 and is occassionally useful when T2 is not strictly required.
An example of a non T2 space with unique limit is the one point compactification of Q.
There are some more implications not in this PR, see https://topology.pi-base.org/properties/P000099
In particular, (countably) compact sets are closed in sequentially T2 spaces.
|
t-topology |
135/0 |
Mathlib.lean,Mathlib/Topology/SequentiallyHausdorff.lean |
2 |
1 |
['github-actions'] |
PatrickMassot assignee:PatrickMassot |
3-58718 3 days ago |
34-19044 34 days ago |
34-19582 34 days |
| 35592 |
SnirBroshi author:SnirBroshi |
chore(Order/Defs/Unbundled): deprecate `def Transitive` in favor of `class IsTrans` |
---
[`def Transitive`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Order/Defs/Unbundled.html#Transitive)
[`class IsTrans`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Order/Defs/Unbundled.html#IsTrans)
[Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Relation.20properties.20duplication/near/544638270)
[](https://gitpod.io/from-referrer/)
|
t-order |
141/110 |
Mathlib/Algebra/Group/Semiconj/Defs.lean,Mathlib/CategoryTheory/Abelian/Pseudoelements.lean,Mathlib/CategoryTheory/IsConnected.lean,Mathlib/Combinatorics/SimpleGraph/CompleteMultipartite.lean,Mathlib/Combinatorics/SimpleGraph/FiveWheelLike.lean,Mathlib/Computability/Reduce.lean,Mathlib/Data/List/MinMax.lean,Mathlib/Data/Seq/Computation.lean,Mathlib/Data/WSeq/Relation.lean,Mathlib/GroupTheory/FreeGroup/Basic.lean,Mathlib/LinearAlgebra/LinearIndependent/Lemmas.lean,Mathlib/Logic/Relation.lean,Mathlib/ModelTheory/Order.lean,Mathlib/ModelTheory/Semantics.lean,Mathlib/Order/Defs/Unbundled.lean,Mathlib/Order/Interval/Finset/Basic.lean,Mathlib/Order/Quotient.lean,Mathlib/Order/RelClasses.lean,Mathlib/Topology/Connected/Clopen.lean,Mathlib/Topology/Metrizable/Uniformity.lean |
20 |
1 |
['github-actions', 'vihdzp'] |
Komyyy assignee:Komyyy |
3-58718 3 days ago |
33-53744 33 days ago |
33-55350 33 days |
| 35597 |
BryceT233 author:BryceT233 |
feat(AdicTopology): add lemmas about adic topology |
This PR adds APIs to transport topological and uniform properties of adic topologies across ring equivalences, By upgrading an ideal-preserving ring equivalence to a `UniformEquiv`, we provide natural congruence lemmas for adic completeness, precompleteness, and Hausdorffness, which serve as necessary topological preliminaries for the ongoing formalization of the Cohen Structure Theorem.
Co-authored-by: @Thmoas-Guan
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
55/2 |
Mathlib/RingTheory/AdicCompletion/Topology.lean,Mathlib/Topology/Algebra/Nonarchimedean/AdicTopology.lean |
2 |
7 |
['erdOne', 'github-actions'] |
PatrickMassot assignee:PatrickMassot |
3-58717 3 days ago |
30-50141 30 days ago |
33-37495 33 days |
| 35683 |
gasparattila author:gasparattila |
fix(Tactic/FunProp): detect `Continuous.subtype_mk` as compositional |
This PR changes `fun_prop` to detect some theorems involving dependent types, such as `Continous.subtype_mk` to be in compositional form. This lets `fun_prop` solve goals such as `Continuous fun x => (⟨x, trivial⟩ : {x : ℝ // True})`.
---
These theorems become compositional: `Continuous.subtype_mk`, `Topology.IsEmbedding.inclusion`, `Topology.IsOpenEmbedding.inclusion`, `Topology.IsClosedEmbedding.inclusion`, `Measurable.subtype_mk`, `Measurable.imp`, `Path.symm_continuous_family`, `Continuous.upperHalfPlaneMk`
These theorems become simple: `hasFDerivAt_prodMk_left`, `hasFDerivAt_prodMk_right`, `contDiff_prodMk_left`, `contDiff_prodMk_right`
[](https://gitpod.io/from-referrer/)
|
t-meta |
53/31 |
Mathlib/Tactic/FunProp/Core.lean,Mathlib/Tactic/FunProp/FunctionData.lean,Mathlib/Tactic/FunProp/Theorems.lean,MathlibTest/fun_prop_dev.lean |
4 |
1 |
['github-actions'] |
dwrensha assignee:dwrensha |
3-58715 3 days ago |
30-72872 30 days ago |
30-72866 30 days |
| 35857 |
AlexeyMilovanov author:AlexeyMilovanov |
feat(Logic.Equiv.BijectiveBase2): add bijective base-2 numeration |
This PR introduces a formalization of the bijective base-2 numeration system.
Unlike standard binary representation, bijective base-2 avoids the "leading zeros" problem, providing a strict mathematical bijection between natural numbers (`ℕ`) and lists of booleans (`List Bool`).
**Main additions:**
* `Equiv.BijectiveBase2.toBits`: Encodes `ℕ` to `List Bool`.
* `Equiv.BijectiveBase2.ofBits`: Decodes `List Bool` to `ℕ`.
* `equivBijectiveBase2`: The formal `ℕ ≃ List Bool` equivalence.
---
Zulip: [#PR reviews > PR #35857: Bijective Base-2 Numeration](https://leanprover.zulipchat.com/#narrow/channel/144837-PR-reviews/topic/PR.20.2335857.3A.20Bijective.20Base-2.20Numeration/with/576336540)
*(Note: This replaces my previously closed PR to avoid the terminology clash between "Dyadic" and dyadic rationals. The namespace and definitions have been updated accordingly).*
*(Note: Used AI to assist with standardizing proof structures).* |
t-logic
new-contributor
LLM-generated
|
95/0 |
Mathlib.lean,Mathlib/Logic/Equiv/ListNatBijective.lean |
2 |
5 |
['AlexeyMilovanov', 'SnirBroshi', 'github-actions', 'joneugster'] |
awainverse assignee:awainverse |
3-58714 3 days ago |
26-79982 26 days ago |
26-80433 26 days |
| 36308 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Subgraph): a couple of `subgraphOfAdj` lemmas |
---
Also golfed a lemma (it's one line longer but it looks simpler to me).
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
14/5 |
Mathlib/Combinatorics/SimpleGraph/Subgraph.lean |
1 |
1 |
['github-actions'] |
kmill assignee:kmill |
3-58713 3 days ago |
19-37990 19 days ago |
19-37984 19 days |
| 36734 |
JovanGerb author:JovanGerb |
fix(SetTheory/ZFC/Basic): fix diamond for `Membership ZFSet ZFSet` |
This PR removes the manual instance of `Membership ZFSet ZFSet` in favour of the instance that comes from the `SetLike` instance. The two instances are not defeq in `implicit_reducible` transparency, hence causing a diamond (it relies on the defeq of `{x | x ∈ s}` with `s`).
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
15/17 |
Mathlib/SetTheory/ZFC/Basic.lean |
1 |
1 |
['github-actions', 'vihdzp'] |
alreadydone assignee:alreadydone |
3-58709 3 days ago |
10-3605 10 days ago |
10-4096 10 days |
| 36773 |
adomasbaliuka author:adomasbaliuka |
feat(Tactic/Linter): lint unwanted unicode |
Add a text-based style linter that checks all unicode characters. Provides automatic replacements for some disallowed characters.
Unicode is very versatile and useful for Lean and Mathlib.
However, it is also very complex and few people have a thorough understanding of all its pitfalls (I don't claim to be one of them).
In order to avoid unpleasant surprises going forward, both accidental and malicious, we should keep track of which Unicode characters are allowed in Mathlib.
In programming and cybersecurity, there are many known [issues and attacks concerning unicode](https://en.wikipedia.org/wiki/Unicode#Security_issues).
Many open source repositories have been hit by such attacks, which are becoming ever more frequent due to the use of automation using e.g. large language models.
Some notable ones:
- [homograph attacks](https://en.wikipedia.org/wiki/IDN_homograph_attack): confusion caused by use of distinct characters which look the same (we probably don't want to fully address this and this PR does not attempt to)
- [Trojan Source](https://en.wikipedia.org/wiki/Trojan_Source): abuse of bidirectional characters. Characters used by languages with right-to-left reading direction can cause code to be displayed differently than it is parsed. (This PR tries to address this)
- Exploits involving Private Use Area characters, e.g. [GlassWorm](https://abit.ee/en/cybersecurity/viruses-trojans-and-other-malware/glassworm-github-supply-chain-attack-unicode-solana-malware-npm-vs-code-2026-en). (This PR tries to address this)
Co-authored-by: Michael Rothgang @grunweg
Co-authored-by: Jon Eugster @joneugster
---
Continues work from #16215 (due to PRs now being made from forks).
Discussed at [Zulip](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Whitelist.20for.20Unicode.3F/near/448721083)
Note: the script was added due to reviewer comment in #16215. Perhaps that is overkill here.
- [x] depends on: #36811
[](https://gitpod.io/from-referrer/)
|
t-linter |
203/72 |
Mathlib/RingTheory/Spectrum/Prime/Polynomial.lean,Mathlib/Tactic/Linter/TextBased/UnicodeLinter.lean,MathlibTest/LintStyle.lean,scripts/README.md,scripts/extract-unique-nonascii.lean |
5 |
8 |
['adomasbaliuka', 'github-actions', 'joneugster', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp'] |
joneugster assignee:joneugster |
3-58708 3 days ago |
3-69765 3 days ago |
3-70718 3 days |
| 36787 |
hommmmm author:hommmmm |
feat(RingTheory/LocalRing): Krull dimension results for maximal ideal of local ring |
## Summary
This PR adds two results connecting the Krull dimension of a local ring to its maximal ideal:
* `IsLocalRing.ringKrullDim_eq_zero_of_maximalIdeal_eq_bot`: A local ring whose maximal ideal is `⊥` has Krull dimension zero.
* `IsLocalRing.exists_mem_maximalIdeal_not_mem_sq`: In a Noetherian local ring of positive Krull dimension, there exists an element in the maximal ideal that is not in its square.
The second result follows from Nakayama's lemma: if every element of the maximal ideal `𝔪` were in `𝔪²`, then `𝔪 = 𝔪²`, and Nakayama gives `𝔪 = ⊥`, contradicting positive dimension.
## New file
* `Mathlib/RingTheory/LocalRing/MaximalIdeal/KrullDimension.lean`
## Acknowledgements
Thanks to Dora Kassabova and Leopold Mayer for edit suggestions.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-ring-theory
|
57/0 |
Mathlib.lean,Mathlib/RingTheory/LocalRing/MaximalIdeal/KrullDimension.lean |
2 |
10 |
['NoahW314', 'github-actions', 'hommmmm', 'tb65536', 'wwylele'] |
chrisflav assignee:chrisflav |
3-58707 3 days ago |
7-76031 7 days ago |
8-51800 8 days |
| 36788 |
hommmmm author:hommmmm |
feat(RingTheory): height of span of a prime element is one |
## Summary
- Add `Ideal.height_span_singleton_eq_one_of_prime`: in a Noetherian integral domain, the ideal generated by a prime element has height one.
## Notes
The new theorem follows directly from `height_le_one_of_isPrincipal_of_mem_minimalPrimes` (upper bound) and the fact that `span {p} ≠ ⊥` for `p` prime (lower bound).
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
12/1 |
Mathlib/RingTheory/Ideal/KrullsHeightTheorem.lean |
1 |
2 |
['github-actions'] |
mattrobball assignee:mattrobball |
3-58706 3 days ago |
8-51035 8 days ago |
8-51029 8 days |
| 36789 |
hommmmm author:hommmmm |
feat(RingTheory/Ideal/Height): prime ideal determined by height among overideals |
## Summary
- Add `Ideal.eq_of_le_of_height_eq`: a prime ideal of finite height is equal to any ideal of the same height that contains it.
## Notes
This is a direct consequence of `Ideal.height_strict_mono_of_is_prime`: if `I` were strictly contained in `J`, their heights would differ.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
10/0 |
Mathlib/RingTheory/Ideal/Height.lean |
1 |
7 |
['github-actions', 'hommmmm', 'tb65536'] |
erdOne assignee:erdOne |
3-58706 3 days ago |
8-50743 8 days ago |
8-50737 8 days |
| 36813 |
AlexeyMilovanov author:AlexeyMilovanov |
feat(Computability.Encoding): add self-delimiting unary and pair encodings |
Adds `unaryPrefix` (a self-delimiting $1^n 0$ code) and `prefixPair` to `Mathlib.Computability.Encoding`.
**Key changes:**
* **`unaryPrefix`**: A prefix-free unary encoding for $\mathbb{N}$, distinct from the existing `unaryEncodeNat`.
* **`unaryPrefix_append_inj`**: A basic cancellation lemma that allows unique extraction of a unary prefix from a concatenated list.
* **`prefixPair`**: A self-delimiting pairing function for boolean lists, defined as $\text{unaryPrefix } |x| \frown x \frown y$.
* **`prefixPair_inj`**: A concise proof of pair injectivity leveraging the new prefix lemmas.
|
t-computability
new-contributor
|
56/1 |
Mathlib/Computability/Encoding.lean |
1 |
2 |
['github-actions'] |
Komyyy assignee:Komyyy |
3-58705 3 days ago |
8-5440 8 days ago |
8-5434 8 days |
| 36896 |
PieterCuijpers author:PieterCuijpers |
feat (Algebra/Order/Quantale): isMulIdempotent, isMulLeftsided, isMulRightsided, isMulTwosided and strict versions |
* Adding definitions of quantale elements being idempotent, leftsided, rightsided, and twosided, and strict versions
I'd value some discussion on whether especially the definition of isMulIdempotent would belong here, since
it applies to semigroups in general. I only see definitions of IdempotentOp in the library so far, focussing on
operators that are fully idempotent, while in the study of Quantales it seems that subquantales of elements
that are idempotent in the original are also interesting. This argues the need for having definitions on
separate elements.
Also, should we include these definitions in the main Algebra/Order/Quantale.lean file, or start a separate file for them?
And I have a few basic theorems I would like to include, but invite suggestions.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
105/1 |
Mathlib/Algebra/Order/Quantale.lean |
1 |
4 |
['NoahW314', 'github-actions'] |
kim-em assignee:kim-em |
3-58704 3 days ago |
6-24459 6 days ago |
6-24453 6 days |
| 36968 |
NoahW314 author:NoahW314 |
feat: add missing IndiscreteTopology instances |
Add several instances for the IndiscreteTopology. These instances are chosen as they have short proofs and imply many of the more common instances like `NormalSpace` and `LocPathConnectedSpace`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-topology
|
21/0 |
Mathlib/Topology/AlexandrovDiscrete.lean,Mathlib/Topology/Constructions.lean,Mathlib/Topology/Irreducible.lean,Mathlib/Topology/Metrizable/Basic.lean |
4 |
2 |
['github-actions'] |
PatrickMassot assignee:PatrickMassot |
3-58700 3 days ago |
4-57096 4 days ago |
4-57090 4 days |
| 36970 |
astrainfinita author:astrainfinita |
chore: redefine `Nat.div2` `Nat.bodd` |
---
This PR continues the work from #13649.
Original PR: https://github.com/leanprover-community/mathlib4/pull/13649 |
t-data |
54/72 |
Mathlib/Computability/Primrec/Basic.lean,Mathlib/Data/Int/Bitwise.lean,Mathlib/Data/Nat/Bits.lean,Mathlib/Data/Nat/Bitwise.lean,Mathlib/Logic/Denumerable.lean,Mathlib/Logic/Encodable/Basic.lean,Mathlib/Logic/Equiv/Nat.lean |
7 |
2 |
['astrainfinita', 'github-actions'] |
TwoFX assignee:TwoFX |
3-58699 3 days ago |
4-47833 4 days ago |
4-53216 4 days |
| 36997 |
themathqueen author:themathqueen |
feat(Analysis/InnerProductSpace/Adjoint): `U ∈ invtSubmodule T.adjoint ↔ Uᗮ ∈ invtSubmodule T` |
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
18/0 |
Mathlib/Analysis/InnerProductSpace/Adjoint.lean |
1 |
1 |
['github-actions'] |
urkud assignee:urkud |
3-58691 3 days ago |
3-81665 3 days ago |
3-81659 3 days |
| 33313 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Coloring/Edges): create a basic edge-coloring API |
---
About the filepath: This creates a `Coloring` folder, but I'm not sure whether the file should be named `Edges` or `Edge` or `EdgeColoring`.
Future work (which I'm working on):
- Relating degrees to edge-colorability (`G.maxDegree ≤ G.chromaticIndex`)
- [Vizing's theorem](https://en.wikipedia.org/wiki/Vizing%27s_theorem) (`G.chromaticIndex ≤ G.maxDegree + 1`)
- `chromaticIndex ⊤ = (if Even #V then #V - 1 else #V)`
- `[Infinite α] → chromaticIndex ⊤ = ⊤`
- [x] depends on: #33292
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
275/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/Edges.lean |
2 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
nobody |
3-46386 3 days ago |
4-8648 4 days ago |
4-9643 4 days |
| 37017 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Maps): every homomorphism `f : H →g G` factors through `id : H →g G.comap f` |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
19/0 |
Mathlib/Combinatorics/SimpleGraph/Copy.lean,Mathlib/Combinatorics/SimpleGraph/Maps.lean |
2 |
1 |
['github-actions'] |
nobody |
3-40833 3 days ago |
3-40574 3 days ago |
3-41097 3 days |
| 35627 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Finite): min/max degrees of top/bot |
And a couple of lemmas about `IsRegularOfDegree`, e.g. the empty graph is regular of any degree.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
maintainer-merge
|
30/1 |
Mathlib/Combinatorics/SimpleGraph/Finite.lean,Mathlib/Combinatorics/SimpleGraph/StronglyRegular.lean |
2 |
15 |
['SnirBroshi', 'YaelDillies', 'github-actions', 'vlad902'] |
kmill assignee:kmill |
3-34543 3 days ago |
4-54965 4 days ago |
30-3262 30 days |
| 37021 |
vihdzp author:vihdzp |
feat(SetTheory/Cardinal/Cofinality): cofinality of `Iio` interval |
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory
easy
|
5/1 |
Mathlib/SetTheory/Cardinal/Cofinality.lean |
1 |
1 |
['github-actions'] |
nobody |
3-34191 3 days ago |
3-34271 3 days ago |
3-34265 3 days |
| 36928 |
vihdzp author:vihdzp |
feat: bundled version of `Cardinal.ord_eq` |
For any type, there exists a (bundled) well-ordering whose order type is `ord #α`.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
29/15 |
Counterexamples/Phillips.lean,Mathlib/FieldTheory/CardinalEmb.lean,Mathlib/SetTheory/Cardinal/Cofinality.lean,Mathlib/SetTheory/Cardinal/Regular.lean,Mathlib/SetTheory/Ordinal/Basic.lean |
5 |
1 |
['github-actions'] |
nobody |
3-31766 3 days ago |
3-31835 3 days ago |
5-43940 5 days |
| 35865 |
vihdzp author:vihdzp |
chore: review `Cardinal.ord` API |
This PR does the following:
- Mark `Cardinal.ord` as no expose.
- Prove the defining property `gciOrdCard` earlier.
- Deprecate the unused `ord.orderEmbedding` (it simply restates that the function is strictly monotonic).
- Rename `ord_nat` → `ord_natCast`.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
43/37 |
Mathlib/SetTheory/Cardinal/Aleph.lean,Mathlib/SetTheory/Ordinal/Arithmetic.lean,Mathlib/SetTheory/Ordinal/Basic.lean |
3 |
4 |
['github-actions', 'mathlib-merge-conflicts'] |
alreadydone assignee:alreadydone |
3-28919 3 days ago |
3-28982 3 days ago |
23-13264 23 days |
| 34633 |
mitchell-horner author:mitchell-horner |
feat(Combinatorics/SimpleGraph): define the Zarankiewicz function |
Defines the Zarankiewicz function $z(m, n; s, t)$ in terms of bipartite graphs.
---
- [x] depends on: #34632
This comes from splitting up #25841 into smaller PRs.
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
156/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Extremal/Zarankiewicz.lean,Mathlib/Combinatorics/SimpleGraph/Maps.lean |
3 |
5 |
['b-mehta', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mitchell-horner'] |
nobody |
3-28639 3 days ago |
3-28704 3 days ago |
3-34279 3 days |
| 36966 |
oliver-butterley author:oliver-butterley |
chore: Superfluous line using clearExcept removed from get_map₂. |
Superfluous line using `clearExcept` removed from `get_map₂`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
0/1 |
Mathlib/Data/Vector/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
3-26562 3 days ago |
4-34599 4 days ago |
4-34593 4 days |
| 36201 |
themathqueen author:themathqueen |
feat(Analysis/CStarAlgebra): set of star projections equals the extreme points of the nonnegative closed unit ball |
An element in a non-unital C⋆-algebra is a projection iff it is an extreme point of the nonnegative closed unit ball. This is from 1.6.2 in Sakai's C⋆-algebras and W⋆-algebras (the proof is different though).
Co-authored-by: Jon Bannon <59937998+JonBannon@users.noreply.github.com>
---
- [x] depends on: #35997
[](https://gitpod.io/from-referrer/)
|
t-analysis |
96/0 |
Mathlib.lean,Mathlib/Analysis/CStarAlgebra/Extreme.lean,docs/references.bib |
3 |
7 |
['github-actions', 'j-loreaux', 'mathlib-dependent-issues', 'themathqueen'] |
ADedecker assignee:ADedecker |
3-24983 3 days ago |
13-22571 13 days ago |
15-12325 15 days |
| 37029 |
vihdzp author:vihdzp |
feat: countable limit ordinal has cofinality ℵ₀ |
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory
t-order
|
16/6 |
Mathlib/SetTheory/Cardinal/Cofinality.lean |
1 |
1 |
['github-actions'] |
nobody |
3-22858 3 days ago |
3-25916 3 days ago |
3-26609 3 days |
| 37024 |
vihdzp author:vihdzp |
feat: improve simp set for ω₁ and ℵ₁ |
We simplify `c < ℵ₁` to `c ≤ ℵ₀` and `ℵ₁ ≤ c` to `ℵ₀ < c`, under the logic that there is more to be said about ℵ₀ (the least infinite cardinal, etc.) than there is about ℵ₁, characterized only by being the successor to ℵ₀.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
76/31 |
Counterexamples/Phillips.lean,Mathlib/Order/Filter/CardinalInter.lean,Mathlib/Order/Filter/Cocardinal.lean,Mathlib/SetTheory/Cardinal/Aleph.lean,Mathlib/SetTheory/Cardinal/Pigeonhole.lean |
5 |
1 |
['github-actions'] |
nobody |
3-21927 3 days ago |
3-21995 3 days ago |
3-25232 3 days |
| 36444 |
mariainesdff author:mariainesdff |
feat(Algebra/MvPolynomial/Coeff): add lemmas |
Co-authored by: @AntoineChambert-Loir.
---
- [ ] depends on: #36441
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
140/0 |
Mathlib.lean,Mathlib/Algebra/MvPolynomial/Basic.lean,Mathlib/Algebra/MvPolynomial/Coeff.lean,Mathlib/Data/Nat/Choose/Multinomial.lean |
4 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
erdOne assignee:erdOne |
3-19900 3 days ago |
3-19929 3 days ago |
4-68800 4 days |
| 37000 |
Qulinecier author:Qulinecier |
feat: generalize rank_submatrix_le to arbitrary column maps |
This PR generalizes `rank_submatrix_le` to allow an arbitrary function on columns
instead of requiring an `Equiv`. The previous version required `e : m₀ ≃ m` and
`[Fintype m]`, while this version only requires `c : n₀ → n` and `[Fintype n₀]`.
The previous version can be recovered as a special case of the new one.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
16/6 |
Mathlib/LinearAlgebra/Matrix/Rank.lean |
1 |
4 |
['Qulinecier', 'github-actions', 'themathqueen'] |
nobody |
3-19414 3 days ago |
3-77015 3 days ago |
3-77009 3 days |
| 35880 |
astrainfinita author:astrainfinita |
feat(Order/Defs/LinearOrder): `min_ind` |
It will be used to simplify the proofs of other lemmas in a subsequent PR.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
11/0 |
Mathlib/Order/Defs/LinearOrder.lean |
1 |
3 |
['astrainfinita', 'bryangingechen', 'github-actions'] |
bryangingechen assignee:bryangingechen |
3-18092 3 days ago |
3-18092 3 days ago |
26-3450 26 days |
| 36931 |
joelriou author:joelriou |
feat(Algebra/Homology): second step of a factorization lemma |
This is the second in a series of three PRs towards #35813 which shall show that if `f : K ⟶ L` is a morphism between bounded below cochain complexes in an abelian category with enough injectives, then there exists a factorization `ι ≫ π = f` with `ι : K ⟶ K'` a monomorphism that is also a quasi-isomorphism and `π : K' ⟶ L` a morphism which degreewise is an epimorphism with an injective kernel, while `K'` is also bounded below (with precise bounds depending on the available bounds for `K` and `L`). The construction of the intermediate object `K'` is obtained by taking a degreewise eventually constant projective limit of cochain complexes, where the complexes in the projective system are constructed step by step. Each step decomposes further into two lemmas `step₁` and `step₂`. In this PR, we prove `step₂`.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
t-algebra
label:t-algebra$ |
207/6 |
Mathlib/Algebra/Homology/Factorizations/CM5a.lean |
1 |
1 |
['github-actions'] |
riccardobrasca assignee:riccardobrasca |
3-9418 3 days ago |
5-41665 5 days ago |
5-41763 5 days |
| 37040 |
artie2000 author:artie2000 |
chore(Algebra/Order): generalise ordered algebra lemmas |
* Generalise lemmas from ordered algebras to ordered modules + mixins
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
39/25 |
Mathlib/Algebra/Order/Algebra.lean,Mathlib/Algebra/Order/Module/Defs.lean |
2 |
1 |
['github-actions'] |
pechersky assignee:pechersky |
3-7443 3 days ago |
3-7508 3 days ago |
3-9562 3 days |
| 36863 |
artie2000 author:artie2000 |
feat(Algebra/Ring/Subsemiring): subsemiring support |
* Define structure for support of a subsemiring when it's an ideal
* Prove sufficient condition for it to be an ideal
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
93/0 |
Mathlib.lean,Mathlib/Algebra/Ring/Subsemiring/Support.lean |
2 |
2 |
['artie2000', 'github-actions'] |
dagurtomas assignee:dagurtomas |
3-7426 3 days ago |
6-82606 6 days ago |
6-83001 6 days |
| 36262 |
CBirkbeck author:CBirkbeck |
feat(NumberTheory/ModularForms): modular discriminant as a cusp form |
## Summary
This PR constructs the modular discriminant `Δ(z) = η(z)^24` and proves it is a cusp form of weight 12 and level 1. The dominated convergence for infinite products is proved by reducing to the additive Tannery theorem via the formal expansion `∏ (1 + f i) = ∑ₛ ∏ᵢ∈ₛ f i`.
### New files
- `Mathlib/Analysis/Normed/Ring/InfiniteProd.lean`: Dominated convergence theorem for infinite products of the form `∏' k, (1 + f n k)` in a complete normed commutative ring, proved via Tannery's theorem.
- `Mathlib/NumberTheory/ModularForms/Discriminant.lean`: The modular discriminant `Δ`, its q-expansion, non-vanishing, and slash-invariance under the generators of SL(2,ℤ).
### New declarations in existing files
- `Real.prod_one_add_le_exp_sum` in `Mathlib/Analysis/Complex/Exponential.lean`: `∏ᵢ∈ₛ (1 + f i) ≤ exp(∑ᵢ∈ₛ f i)` for nonneg `f`.
- `summable_finset_prod_of_summable_nonneg` in `Mathlib/Analysis/SpecialFunctions/Log/Summable.lean`: if `f` is nonneg and summable, then `∑ₛ ∏ᵢ∈ₛ f i` is summable.
- `summable_finset_prod_of_summable_norm` in `Mathlib/Analysis/SpecialFunctions/Log/Summable.lean`: normed ring version of the above.
### Key results
- `ModularForm.discriminantCuspForm`: `Δ` bundled as a `CuspForm (Γ(1)) 12`.
- `tendsto_tprod_one_add_of_dominated_convergence`: Dominated convergence for infinite products.
### Note
- `ModularForms/Delta.lean` has been renamed to `ModularForms/Discriminant.lean` to be more in line with the literature.
--- |
|
312/152 |
Mathlib.lean,Mathlib/Analysis/Complex/Exponential.lean,Mathlib/Analysis/Normed/Ring/InfiniteProd.lean,Mathlib/Analysis/SpecialFunctions/Log/Summable.lean,Mathlib/NumberTheory/ModularForms/Cusps.lean,Mathlib/NumberTheory/ModularForms/Delta.lean,Mathlib/NumberTheory/ModularForms/Discriminant.lean,Mathlib/NumberTheory/ModularForms/Identities.lean,Mathlib/NumberTheory/ModularForms/LevelOne.lean |
9 |
22 |
['CBirkbeck', 'github-actions', 'loefflerd', 'mathlib-merge-conflicts', 'wwylele'] |
loefflerd assignee:loefflerd |
3-5807 3 days ago |
3-5585 3 days ago |
6-48288 6 days |
| 36988 |
MichaelStollBayreuth author:MichaelStollBayreuth |
feat(AlgebraicGeometry/EllipticCurve/Affine/Point): x-coordinate map and API |
This defines the `x`-coordinate map on points on an affine Weierstrass model by giving a representative coordinate vector of the image and adds some API for it.
This is needed on the way to the Mordell-Weil Theorem.
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry |
59/0 |
Mathlib/AlgebraicGeometry/EllipticCurve/Affine/Point.lean |
1 |
15 |
['MichaelStollBayreuth', 'Multramate', 'github-actions', 'riccardobrasca'] |
adamtopaz assignee:adamtopaz |
3-5644 3 days ago |
4-6549 4 days ago |
4-6543 4 days |
| 36642 |
tb65536 author:tb65536 |
feat(NumberTheory/ArithmeticFunction/LFunction): arithmetic functions from power series |
This PR constructs arithmetic functions from power series. See #36189 for how this will ultimately be used to construct L-functions.
---
[](https://gitpod.io/from-referrer/)
|
t-number-theory
t-algebra
label:t-algebra$ |
139/0 |
Mathlib/NumberTheory/ArithmeticFunction/Defs.lean,Mathlib/NumberTheory/ArithmeticFunction/LFunction.lean,Mathlib/NumberTheory/Divisors.lean |
3 |
8 |
['github-actions', 'riccardobrasca', 'tb65536'] |
riccardobrasca assignee:riccardobrasca |
3-3374 3 days ago |
3-3374 3 days ago |
12-10423 12 days |
| 37049 |
joelriou author:joelriou |
feat(Algebra/DualNumber): ext lemma for ring morphisms |
A ring morphism `R[ε] →+* R'` is determined by its restriction on `R` and its value on `ε`.
(We also add a lemma saying that `ε ^ 2 = 0`.)
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
21/0 |
Mathlib/Algebra/DualNumber.lean |
1 |
1 |
['github-actions'] |
nobody |
2-85779 2 days ago |
2-85924 2 days ago |
2-85918 2 days |
| 36939 |
erdOne author:erdOne |
chore(AlgebraicTopology): missing API for singular homology |
---
[](https://gitpod.io/from-referrer/)
|
|
159/11 |
Mathlib/Algebra/Homology/HomologicalComplex.lean,Mathlib/AlgebraicTopology/AlternatingFaceMapComplex.lean,Mathlib/AlgebraicTopology/Quasicategory/StrictSegal.lean,Mathlib/AlgebraicTopology/SimplicialObject/Basic.lean,Mathlib/AlgebraicTopology/SimplicialSet/StdSimplex.lean,Mathlib/AlgebraicTopology/SingularHomology/Basic.lean,Mathlib/AlgebraicTopology/SingularSet.lean,Mathlib/CategoryTheory/Limits/FunctorCategory/EpiMono.lean,Mathlib/CategoryTheory/Preadditive/AdditiveFunctor.lean |
9 |
2 |
['github-actions', 'joelriou'] |
nobody |
2-80367 2 days ago |
2-80433 2 days ago |
2-82523 2 days |
| 37055 |
euprunin author:euprunin |
chore: golf using `grind` |
The goal of this PR is to decrease the number of times lemmas are called explicitly. Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `OreLocalization.smul'_char`: unchanged 🎉
* `Equiv.Perm.cycleOf_mem_cycleFactorsFinset_iff`: unchanged 🎉
* `StrictMono.ite'`: unchanged 🎉
* `Mathlib.Meta.NormNum.isInt_ediv`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
---
[](https://gitpod.io/from-referrer/)
|
|
4/21 |
Mathlib/GroupTheory/OreLocalization/Basic.lean,Mathlib/GroupTheory/Perm/Cycle/Factors.lean,Mathlib/Order/Monotone/Basic.lean,Mathlib/Tactic/NormNum/DivMod.lean |
4 |
1 |
['github-actions'] |
nobody |
2-79719 2 days ago |
2-79789 2 days ago |
2-79783 2 days |
| 36709 |
kim-em author:kim-em |
feat(DefEqAbuse): suggest minimal @[implicit_reducible] workaround |
This PR extends `#defeq_abuse` to suggest a minimal set of `@[implicit_reducible]` annotations that would make the failing tactic or command succeed with `backward.isDefEq.respectTransparency true`.
When `#defeq_abuse` detects a failure, it now runs a greedy minimisation over semireducible definitions reachable from the goal/command, finding a (possibly non-unique) minimal subset that, when temporarily marked `@[implicit_reducible]`, fixes the issue. The result is reported as an `info` message:
```
info: Workaround: the following @[implicit_reducible] annotations (a possibly non-unique minimal set) would paper over this problem,
but the real issue is likely a leaky instance somewhere.
set_option allowUnsafeReducibility true
attribute [implicit_reducible]
MyPred
```
This is a workaround, not a fix — the real cause is usually a leaky instance (which `#check_instance` from https://github.com/leanprover-community/mathlib4/pull/36706 can diagnose). But it can be useful for quick debugging.
New helpers: `collectCandidates`, `markImplicitReducible`, `withTempImplicitReducible`, `withTempImplicitReducibleCmd`, `suggestAnnotationsTac`, `suggestAnnotationsCmd`, `formatAnnotations`, `logAnnotationSuggestions`.
🤖 Prepared with Claude Code |
t-meta
LLM-generated
|
163/0 |
Mathlib/Tactic/DefEqAbuse.lean,MathlibTest/DefEqAbuse.lean |
2 |
3 |
['github-actions', 'mathlib-merge-conflicts', 'thorimur'] |
dwrensha assignee:dwrensha |
2-73090 2 days ago |
8-52881 8 days ago |
9-55829 9 days |
| 36978 |
vihdzp author:vihdzp |
chore(SetTheory/Ordinal/Basic): avoid some uses of @ |
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory
easy
|
7/8 |
Mathlib/SetTheory/Ordinal/Basic.lean |
1 |
1 |
['artie2000', 'github-actions'] |
nobody |
2-70896 2 days ago |
4-38510 4 days ago |
4-38562 4 days |
| 35656 |
euprunin author:euprunin |
chore(ModelTheory): golf proofs |
This PR removes unused `have`/`haveI`/`let`/`letI` calls.
The goal of this golfing PR is to decrease the number of times lemmas are called explicitly (replacing calls to lemmas with calls to tactics). Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `FirstOrder.Field.realize_genericMonicPolyHasRoot`: unchanged 🎉
* `FirstOrder.Language.exists_cg_is_age_of`: unchanged 🎉
* `FirstOrder.Language.Theory.models_formula_iff_onTheory_models_equivSentence`: unchanged 🎉
* `FirstOrder.Language.Sentence.realize_cardGe`: unchanged 🎉
* `FirstOrder.Language.Ultraproduct.boundedFormula_realize_cast`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
This golfing PR is batched under the following guidelines:
* Up to ~5 changed files per PR
* Up to ~25 changed declarations per PR
* Up to ~100 changed lines per PR
---
[](https://gitpod.io/from-referrer/)
|
t-logic |
3/16 |
Mathlib/ModelTheory/Algebra/Field/IsAlgClosed.lean,Mathlib/ModelTheory/Fraisse.lean,Mathlib/ModelTheory/Satisfiability.lean,Mathlib/ModelTheory/Semantics.lean,Mathlib/ModelTheory/Ultraproducts.lean |
5 |
6 |
['artie2000', 'euprunin', 'github-actions', 'leanprover-radar', 'vihdzp'] |
awainverse assignee:awainverse |
2-70205 2 days ago |
31-70957 31 days ago |
31-70951 31 days |
| 35771 |
euprunin author:euprunin |
chore: golf using `exact` |
The goal of this PR is to decrease the number of times lemmas are called explicitly (replacing calls to lemmas with calls to tactics). Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `IsBaseChange.comp`: 132 ms before, 98 ms after 🎉
* `Cardinal.powerlt_aleph0`: unchanged 🎉
* `ONote.fastGrowing_one`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
This PR is batched under the following guidelines:
* Up to ~5 changed files per PR
* Up to ~25 changed declarations per PR
* Up to ~100 changed lines per PR
---
[](https://gitpod.io/from-referrer/)
|
|
3/11 |
Mathlib/RingTheory/IsTensorProduct.lean,Mathlib/SetTheory/Cardinal/Arithmetic.lean,Mathlib/SetTheory/Ordinal/Notation.lean |
3 |
1 |
['artie2000', 'github-actions', 'vihdzp'] |
robin-carlier assignee:robin-carlier |
2-69967 2 days ago |
29-1939 29 days ago |
29-1933 29 days |
| 34138 |
pfaffelh author:pfaffelh |
feat(MeasureTheory): Introduce `MassFunction α` giving rise to a `Measure α ⊤` |
Define `MassFunction α := α → ℝ≥0∞`
Define `toMeasure (w : MassFunction α) : @Measure α ⊤` as a sum of diracs
Show properties of the resulting objects
This PR intends to start a more userfriendly interaction with probability mass functions (`PMF`). There are two main differences between `MassFunction` and `PMF`:
* `PMF` hast the additional property `HasSum 1`, making the resulting measure a probability measure. (For `MassFunction`, I intend to use the typeclass `IsProbabilityMeasure`in a later PR instead.)
* The `toMeasure` function of `MassFunction` directly defines the measure as a sum of diracs, which immediately makes computations possible.
Discussion thread on [zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/PMF.20Refactor.3A.20FunLike.20vs.20Definition.20Change)
- depends on: #37060
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
new-contributor
|
252/1 |
Mathlib.lean,Mathlib/Algebra/Group/Indicator.lean,Mathlib/Algebra/GroupWithZero/Indicator.lean,Mathlib/Data/Set/Pairwise/Basic.lean,Mathlib/MeasureTheory/Measure/MassFunction.lean,Mathlib/Topology/Algebra/InfiniteSum/Basic.lean |
6 |
13 |
['DavidLedvinka', 'github-actions', 'metakunt', 'pfaffelh'] |
kex-y and ocfnash assignee:ocfnash assignee:kex-y |
2-69824 2 days ago |
2-69778 2 days ago |
65-72888 65 days |
| 36560 |
harahu author:harahu |
doc(FieldTheory): fix typos |
Found by `PyCharm`'s code inspection tool. Fixes were made by Codex.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
15/14 |
Mathlib/FieldTheory/IntermediateField/Adjoin/Algebra.lean,Mathlib/FieldTheory/Minpoly/MinpolyDiv.lean,Mathlib/FieldTheory/RatFunc/Luroth.lean,Mathlib/FieldTheory/SeparablyGenerated.lean |
4 |
3 |
['artie2000', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
joelriou assignee:joelriou |
2-69234 2 days ago |
8-23120 8 days ago |
13-63813 13 days |
| 37001 |
harahu author:harahu |
doc(Algebra): fix typos |
We fix some typos flagged by `PyCharm`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
13/11 |
Mathlib/Algebra/Category/ModuleCat/Colimits.lean,Mathlib/Algebra/Lie/SemiDirect.lean,Mathlib/Algebra/Module/LinearMap/Polynomial.lean,Mathlib/Algebra/Module/NatInt.lean,Mathlib/Algebra/Regular/SMul.lean,Mathlib/Algebra/Ring/CentroidHom.lean |
6 |
3 |
['artie2000', 'github-actions', 'harahu', 'themathqueen'] |
nobody |
2-68678 2 days ago |
3-21349 3 days ago |
3-23993 3 days |
| 37018 |
chenson2018 author:chenson2018 |
chore: weekly lints for 2026-03-23 |
As reported at [#mathlib4 > Weekly linting log @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Weekly.20linting.20log/near/581021850). Some replacements were applied automatically with Skimmer and subsequently checked by hand.
---
[](https://gitpod.io/from-referrer/)
|
|
9/18 |
Mathlib/Algebra/Homology/SpectralObject/HasSpectralSequence.lean,Mathlib/Algebra/Order/Ring/IsNonarchimedean.lean,Mathlib/AlgebraicTopology/SimplicialObject/ChainHomotopy.lean,Mathlib/Analysis/Complex/Harmonic/Poisson.lean,Mathlib/Data/Finsupp/Indicator.lean,Mathlib/Data/Fintype/Pi.lean,Mathlib/MeasureTheory/Measure/LevyConvergence.lean,Mathlib/NumberTheory/Height/MvPolynomial.lean,Mathlib/Probability/Process/Stopping.lean,Mathlib/RingTheory/PowerSeries/Substitution.lean,Mathlib/Topology/Compactness/CompactSystem.lean |
11 |
3 |
['artie2000', 'chenson2018', 'github-actions', 'leanprover-radar'] |
nobody |
2-68616 2 days ago |
3-36581 3 days ago |
3-36575 3 days |
| 34702 |
pfaffelh author:pfaffelh |
feat(Data/FinsetPowerset): The set `{v : List.Vector Bool n | v.val.count = k}` has cardinality `n.choose k` |
Show that `{v : List.Vector Bool n | v.val.count = k}` has cardinality `n.choose k`.
The proof builds on `powersetCard k s` (the subsets of `s : Finset _` with cardinality `k`), and an equivalence to the above set.
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-data
|
52/1 |
Mathlib/Data/Finset/Powerset.lean,Mathlib/Data/Fintype/Pi.lean,Mathlib/Logic/Equiv/Fintype.lean |
3 |
25 |
['DavidLedvinka', 'b-mehta', 'eric-wieser', 'github-actions', 'joneugster', 'pfaffelh'] |
TwoFX assignee:TwoFX |
2-68566 2 days ago |
48-62298 48 days ago |
51-75718 51 days |
| 36585 |
vihdzp author:vihdzp |
feat: order type of `Iio o` is `lift o` |
Downstreamed from the CGT repo.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
19/17 |
Mathlib/SetTheory/Ordinal/Arithmetic.lean,Mathlib/SetTheory/Ordinal/Basic.lean,Mathlib/SetTheory/Ordinal/Family.lean,Mathlib/SetTheory/ZFC/Ordinal.lean,Mathlib/SetTheory/ZFC/VonNeumann.lean |
5 |
5 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
alreadydone assignee:alreadydone |
2-68306 2 days ago |
2-68366 2 days ago |
12-14066 12 days |
| 37035 |
JovanGerb author:JovanGerb |
chore(Order/Hom/CompleteLattice): use `to_dual` |
This PR uses `to_dual` to translate `sSupHom`/`sInfHom`.
---
[](https://gitpod.io/from-referrer/)
|
|
60/217 |
Mathlib/Order/Hom/CompleteLattice.lean,Mathlib/Tactic/Translate/ToDual.lean |
2 |
1 |
['github-actions'] |
nobody |
2-64771 2 days ago |
2-64846 2 days ago |
2-68263 2 days |
| 34423 |
euprunin author:euprunin |
chore: golf using `grind` |
The goal of this golfing PR is to decrease the number of times lemmas are called explicitly (replacing calls to lemmas with calls to tactics). Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (shown if ≥10 ms before or after):
* `LucasLehmer.norm_num_ext.sModNat_eq_sMod`: 950 ms before, 758 ms after 🎉
This golfing PR is batched under the following guidelines:
* Up to ~5 changed files per PR
* Up to ~25 changed declarations per PR
* Up to ~100 changed lines per PR
---
[](https://gitpod.io/from-referrer/)
|
|
1/18 |
Mathlib/NumberTheory/LucasLehmer.lean |
1 |
14 |
['artie2000', 'eric-wieser', 'euprunin', 'github-actions', 'leanprover-radar', 'robin-carlier'] |
nobody |
2-62005 2 days ago |
26-26686 26 days ago |
59-6976 59 days |
| 36693 |
euprunin author:euprunin |
chore: golf using `grind` |
The goal of this PR is to decrease the number of times lemmas are called explicitly. Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `Equiv.Perm.ofSubtype_swap_eq`: unchanged 🎉
* `Filter.hasBasis_biInf_of_directed'`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
---
[](https://gitpod.io/from-referrer/)
|
|
2/15 |
Mathlib/GroupTheory/Perm/Support.lean,Mathlib/Order/Filter/Bases/Basic.lean |
2 |
1 |
['artie2000', 'github-actions'] |
nobody |
2-61956 2 days ago |
10-76071 10 days ago |
10-76065 10 days |
| 36686 |
euprunin author:euprunin |
chore: golf using `grind` |
The goal of this PR is to decrease the number of times lemmas are called explicitly. Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `List.prod_map_ite`: unchanged 🎉
* `Path.Homotopy.trans_assoc_reparam`: 2938 ms before, 717 ms after 🎉
* `SimplexCategory.δ_comp_δ`: 522 ms before, 316 ms after 🎉
* `Finsupp.ext_iff'`: unchanged 🎉
* `Computation.bind_assoc`: unchanged 🎉
* `Set.piecewise_insert`: unchanged 🎉
* `ZMod.valMinAbs_mem_Ioc`: unchanged 🎉
* `Matrix.det_eq_of_forall_row_eq_smul_add_pred_aux`: 2141 ms before, 2004 ms after 🎉
Profiled using `set_option trace.profiler true in`.
---
[](https://gitpod.io/from-referrer/)
|
|
10/51 |
Mathlib/Algebra/BigOperators/Group/List/Basic.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean,Mathlib/AlgebraicTopology/SimplexCategory/Basic.lean,Mathlib/Data/Finsupp/Defs.lean,Mathlib/Data/Seq/Computation.lean,Mathlib/Data/Set/Piecewise.lean,Mathlib/Data/ZMod/ValMinAbs.lean,Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean |
8 |
1 |
['artie2000', 'github-actions'] |
nobody |
2-61844 2 days ago |
11-6595 11 days ago |
11-6589 11 days |
| 36740 |
euprunin author:euprunin |
chore: golf using `grind` |
The goal of this PR is to decrease the number of times lemmas are called explicitly. Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `AlgebraicGeometry.Scheme.isBasis_affineOpens`: unchanged 🎉
* `SimpleGraph.Walk.takeUntil_eq_take`: 263 ms before, 180 ms after 🎉
* `SimpleGraph.Walk.dropUntil_eq_drop`: 382 ms before, 261 ms after 🎉
* `Int.image_Ico_emod`: unchanged 🎉
* `Equiv.Perm.ofSubtype_swap_eq`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
---
[](https://gitpod.io/from-referrer/)
|
|
7/33 |
Mathlib/AlgebraicGeometry/AffineScheme.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Decomp.lean,Mathlib/Data/Int/Interval.lean,Mathlib/GroupTheory/Perm/Support.lean |
4 |
2 |
['artie2000', 'github-actions', 'mathlib-merge-conflicts'] |
nobody |
2-61459 2 days ago |
7-8460 7 days ago |
9-57323 9 days |
| 36774 |
euprunin author:euprunin |
chore: replace long terminal `rw […]`:s (≥4 lemmas) with bare `simp`:s |
The goal of this PR is to decrease the number of times lemmas are called explicitly. Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `Finset.lcm_union`: unchanged 🎉
* `Finset.gcd_union`: unchanged 🎉
* `Polynomial.derivative_eval₂_C`: unchanged 🎉
* `Polynomial.expand_pow`: unchanged 🎉
* `Cardinal.mk_real`: unchanged 🎉
* `Real.log_zpow`: unchanged 🎉
* `Matroid.eRank_le_encard_add_eRk_compl`: unchanged 🎉
* `DFinsupp.single_tsub`: unchanged 🎉
* `EReal.inv_neg`: unchanged 🎉
* `Finsupp.toMultiset_map`: unchanged 🎉
* `Finsupp.single_tsub`: unchanged 🎉
* `Multiset.countP_map`: unchanged 🎉
* `Nat.ascFactorial_eq_factorial_mul_choose'`: unchanged 🎉
* `Real.sign_intCast`: unchanged 🎉
* `Real.volume_eball`: unchanged 🎉
* `Real.volume_closedEBall`: unchanged 🎉
* `LFunction_ne_zero_of_not_quadratic_or_ne_one`: 295 ms before, 152 ms after 🎉
* `hasSum_one_div_nat_pow_mul_cos`: unchanged 🎉
* `inv_eq_of_aeval_divX_ne_zero`: unchanged 🎉
* `AlgebraicIndependent.aeval_comp_mvPolynomialOptionEquivPolynomialAdjoin`: unchanged 🎉
* `Ordinal.deriv_mul_eq_opow_omega0_mul`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
---
[](https://gitpod.io/from-referrer/)
|
|
22/24 |
Mathlib/Algebra/GCDMonoid/Finset.lean,Mathlib/Algebra/Polynomial/Derivative.lean,Mathlib/Algebra/Polynomial/Expand.lean,Mathlib/Analysis/Real/Cardinality.lean,Mathlib/Analysis/SpecialFunctions/Log/Basic.lean,Mathlib/Combinatorics/Matroid/Rank/ENat.lean,Mathlib/Data/DFinsupp/Order.lean,Mathlib/Data/EReal/Inv.lean,Mathlib/Data/Finsupp/Multiset.lean,Mathlib/Data/Finsupp/Order.lean,Mathlib/Data/Multiset/Filter.lean,Mathlib/Data/Nat/Choose/Basic.lean,Mathlib/Data/Real/Sign.lean,Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean,Mathlib/NumberTheory/LSeries/Nonvanishing.lean,Mathlib/NumberTheory/ZetaValues.lean,Mathlib/RingTheory/Algebraic/Basic.lean,Mathlib/RingTheory/AlgebraicIndependent/Basic.lean,Mathlib/SetTheory/Ordinal/FixedPoint.lean |
19 |
1 |
['artie2000', 'github-actions'] |
nobody |
2-61224 2 days ago |
9-634 9 days ago |
9-628 9 days |
| 34154 |
euprunin author:euprunin |
chore: golf using `grind` (and add four supporting `grind` annotations) |
The goal of this golfing PR is to decrease the number of times lemmas are called explicitly (replacing calls to lemmas with calls to tactics). Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (shown if ≥10 ms before or after):
* `Orientation.nonneg_inner_and_areaForm_eq_zero_iff_sameRay`: 311 ms before, 284 ms after 🎉
* `UV.compression_self`: 29 ms before, 19 ms after 🎉
* `IsSepClosed.exists_root_C_mul_X_pow_add_C_mul_X_add_C`: 405 ms before, 291 ms after 🎉
* `InnerProductGeometry.norm_add_eq_add_norm_iff_angle_eq_zero`: 425 ms before, 309 ms after 🎉
This golfing PR is batched under the following guidelines:
* Up to ~5 changed files per PR
* Up to ~25 changed declarations per PR
* Up to ~100 changed lines per PR
---
[](https://gitpod.io/from-referrer/)
|
|
9/30 |
Mathlib/Algebra/Polynomial/Degree/Defs.lean,Mathlib/Algebra/Polynomial/Degree/Operations.lean,Mathlib/Analysis/InnerProductSpace/TwoDim.lean,Mathlib/Combinatorics/SetFamily/Compression/UV.lean,Mathlib/FieldTheory/IsSepClosed.lean,Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean |
6 |
13 |
['Parcly-Taxel', 'artie2000', 'euprunin', 'github-actions', 'leanprover-radar', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot', 'tb65536'] |
nobody |
2-59635 2 days ago |
29-19506 29 days ago |
57-32257 57 days |
| 36346 |
kckennylau author:kckennylau |
chore: add simp lemma to unfold Algebra.algHom |
```lean
@[simp] lemma Algebra.coe_algHom : ⇑(Algebra.algHom R A B) = algebraMap A B := rfl
```
---
[](https://gitpod.io/from-referrer/)
|
|
6/2 |
Mathlib/Algebra/Algebra/Hom.lean,Mathlib/RingTheory/Etale/StandardEtale.lean |
2 |
3 |
['acmepjz', 'artie2000', 'github-actions'] |
dupuisf assignee:dupuisf |
2-59134 2 days ago |
18-49262 18 days ago |
18-49256 18 days |
| 29982 |
hrmacbeth author:hrmacbeth |
feat: new `isolate` tactic |
This PR adds a new tactic, `isolate`, which "solves for x" in an equation or relation. For example:
```lean
example (a b : ℝ) (f : ℝ → ℝ) : 5 * f a - 3 < b := by
isolate f a
-- new goal: `⊢ f a < (b + 3) / 5`
```
The `isolate` tactic may generate side goals, if these are necessary to justify the transformation. The tactic will attempt to justify such side goals using `positivity` (as in the above example), unification, or type class inference, but if unsuccessful will present them to the user. For example:
```lean
example (a b c : ℝ) (f : ℝ → ℝ) : c * f a - 3 < b := by
isolate f a
-- new goal: `⊢ f a < (b + 3) / c`
-- second (side) new goal: `⊢ 0 < c`
```
The `isolate` tactic is extensible. Coverage may be extended to new relations and new operations-to-be-undone by tagging appropriate lemmas with the new `@[isolate]` attribute.
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-meta
|
943/1 |
Mathlib.lean,Mathlib/Analysis/SpecialFunctions/Log/Basic.lean,Mathlib/Analysis/SpecialFunctions/Pow/Real.lean,Mathlib/Data/Real/Sqrt.lean,Mathlib/Tactic.lean,Mathlib/Tactic/Isolate.lean,Mathlib/Tactic/Isolate/Core.lean,Mathlib/Tactic/Isolate/Tagging.lean,Mathlib/Tactic/Relation/Symm.lean,MathlibTest/Isolate/Heavyweight.lean,MathlibTest/Isolate/Lightweight.lean,scripts/noshake.json |
12 |
81 |
['JovanGerb', 'PatrickMassot', 'Vierkantor', 'github-actions', 'hrmacbeth', 'kim-em', 'mathlib4-merge-conflict-bot'] |
adamtopaz assignee:adamtopaz |
2-58798 2 days ago |
24-78951 24 days ago |
73-73649 73 days |
| 34191 |
IlPreteRosso author:IlPreteRosso |
feat(Topology/Algebra/InfiniteSum): Discrete Convolution API 1st PR |
Defines the very basics of the discrete convolution API. In analogy with [MeasureTheory.Convolution](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Analysis/Convolution.html#MeasureTheory.convolution).
Main definitions include
- `mulFiber`, `convolution`, `ConvolutionExists`, `ConvolutionExists.add_distrib`, `ConvolutionExistsAt.smul_convolution`, `mulFiber_swapEquiv`, `convolution_comm`
RM:
- The main docstring is *as is*
- Next step is triple sum intrastrcutre + `assoc` theorems for convolution (long)
Continues the work from #33411 and #33410 (splitting into shorter PRs, carries over the modifications from previous reviews) |
t-topology
new-contributor
|
277/0 |
Mathlib.lean,Mathlib/Topology/Algebra/InfiniteSum/DiscreteConvolution.lean |
2 |
18 |
['IlPreteRosso', 'github-actions', 'j-loreaux'] |
ocfnash assignee:ocfnash |
2-58795 2 days ago |
50-1349 50 days ago |
59-3026 59 days |
| 34477 |
spanning-tree author:spanning-tree |
refactor(Order): make CompletePartialOrder extend OrderBot |
Make `CompletePartialOrder` extend `OrderBot`, and add a constructor `completePartialOrderOfLubOfDirected`. Previously, `CompletePartialOrder` had an implicit bottom element but did not extend OrderBot explicitly.
Breaking change: `CompletePartialOrder` instances must provide `⊥` and `bot_le`, or use the constructor.
See discussion in [Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/.3E.20complete.20partial.20order.20and.20domain.20theory.20formalization).
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
15/1 |
Mathlib/Order/CompletePartialOrder.lean |
1 |
3 |
['Citronhat', 'github-actions', 'mathlib-merge-conflicts'] |
bryangingechen assignee:bryangingechen |
2-58793 2 days ago |
25-11692 25 days ago |
45-73243 45 days |
| 35329 |
BryceT233 author:BryceT233 |
feat(Data/Finsupp): add computational lemmas for cons and single |
This PR introduces `cons_eq_single_zero_iff` and `cons_eq_single_succ_iff`, which are helper lemmas designed to facilitate calculations (or simplification) of equalities involving `Finsupp.cons` and `Finsupp.single`.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
25/0 |
Mathlib/Data/Finsupp/Fin.lean |
1 |
2 |
['github-actions'] |
nobody |
2-58790 2 days ago |
23-65313 23 days ago |
39-34575 39 days |
| 35610 |
IvanRenison author:IvanRenison |
feat(Data/Fin): add several lemmas about subtraction of `Fin.{castLT, castAdd, castSucc, castPred}` |
---
[](https://gitpod.io/from-referrer/)
|
t-data |
79/0 |
Mathlib/Data/Fin/Basic.lean,Mathlib/Data/Fin/SuccPred.lean |
2 |
3 |
['github-actions', 'wwylele'] |
joneugster assignee:joneugster |
2-58789 2 days ago |
32-22301 32 days ago |
32-36801 32 days |
| 35613 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Clique): use `IsContained` instead of an explicit embedding from top |
This makes theorems require only a proof that a `Copy` exists rather than provide an explicit `Embedding`.
Also tag monotonicity lemmas with `@[gcongr]`, and add `Copy.isContained` / `Embedding.isIndContained` / `Embedding.isContained` / `Iso.isContained'`.
---
This isn't a generalization per-se since one could use choice plus `Copy.topEmbedding` to upgrade the `IsContained` to an embedding, but `IsContained` makes more sense in theorems.
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
maintainer-merge
|
65/55 |
Mathlib/Combinatorics/SimpleGraph/Clique.lean,Mathlib/Combinatorics/SimpleGraph/CompleteMultipartite.lean,Mathlib/Combinatorics/SimpleGraph/Copy.lean,Mathlib/Combinatorics/SimpleGraph/Extremal/Turan.lean |
4 |
20 |
['SnirBroshi', 'YaelDillies', 'github-actions'] |
awainverse assignee:awainverse |
2-58788 2 days ago |
3-13576 3 days ago |
26-82263 26 days |
| 36574 |
Jun2M author:Jun2M |
feat(Order/Partition): add refinement order |
This PR expands the API for `Partition s`
Introduces a `PartialOrder (Partition s)` instance where partitions are ordered by refinement (`P ≤ Q` if every part of `P` is contained in a part of `Q`). Also adds an `OrderTop` instance where the top partition consists of the single part `s`.
Co-authored-by: Peter Nelson
---
[](https://gitpod.io/from-referrer/)
|
t-order
maintainer-merge
|
95/13 |
Mathlib/Order/Partition/Basic.lean |
1 |
13 |
['YaelDillies', 'github-actions'] |
bryangingechen assignee:bryangingechen |
2-58786 2 days ago |
3-84606 3 days ago |
13-22306 13 days |
| 36720 |
YanYablonovskiy author:YanYablonovskiy |
feat(Order): `OrderType.lift` and more order type API |
Adding the universe lifting operation to `OrderType` , addresses a 'TODO' .
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
41/2 |
Mathlib/Order/Types/Defs.lean |
1 |
23 |
['YaelDillies', 'YanYablonovskiy', 'github-actions', 'vihdzp'] |
bryangingechen assignee:bryangingechen |
2-58783 2 days ago |
3-28272 3 days ago |
4-78222 4 days |
| 36840 |
SnirBroshi author:SnirBroshi |
feat(SetTheory/Ordinal/Arithmetic): a few ordinal division lemmas |
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
27/8 |
Mathlib/SetTheory/Ordinal/Arithmetic.lean |
1 |
6 |
['SnirBroshi', 'github-actions', 'vihdzp'] |
alreadydone assignee:alreadydone |
2-58779 2 days ago |
7-56325 7 days ago |
7-56319 7 days |
| 36990 |
JovanGerb author:JovanGerb |
fix(RefinedDiscrTree/Lookup): improve the matching score heuristic |
This PR improves the order in which results come out of the `RefinedDiscrTree`. I've explained the motivation in the doc-string. This is probably not the most principled fix, but it is the least disruptive solution I could think of.
For an example, try clicking on `|0|` in
```
import Mathlib
example : |(0 : ℝ)| = 1 := by
rw??
```
And notice that the obvious result `abs_zero` is not the first result.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
44/8 |
Mathlib/Lean/Meta/RefinedDiscrTree/Lookup.lean |
1 |
1 |
['github-actions'] |
eric-wieser assignee:eric-wieser |
2-58777 2 days ago |
4-2873 4 days ago |
4-2867 4 days |
| 36992 |
JovanGerb author:JovanGerb |
feat(RefinedDiscrTree/Lookup): use parallellism in lookup |
This PR adds parallellism to the `RefinedDiscrTree` lookup. Previously, only constructing the root node of the discrimination tree used parallellism. But it turns out some of the child nodes can be pretty big too.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
40/7 |
Mathlib/Lean/FoldEnvironment.lean,Mathlib/Lean/Meta/RefinedDiscrTree/Lookup.lean |
2 |
1 |
['github-actions'] |
adamtopaz assignee:adamtopaz |
2-58776 2 days ago |
3-86229 3 days ago |
3-86223 3 days |
| 36999 |
themathqueen author:themathqueen |
feat(Analysis/RCLike): lifting `C(X, ℝ)` to `C(X, 𝕜)` |
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
69/0 |
Mathlib.lean,Mathlib/Analysis/RCLike/ContinuousMap.lean |
2 |
1 |
['github-actions'] |
urkud assignee:urkud |
2-58776 2 days ago |
3-78457 3 days ago |
3-78451 3 days |
| 31879 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra/Homology): Projective dimension in linear equiv |
In this PR, we proved that projective dimension is stable under (semi-) linear equiv of general universe.
---
- [x] depends on: #32316
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
101/0 |
Mathlib.lean,Mathlib/Algebra/Category/ModuleCat/ProjectiveDimension.lean |
2 |
11 |
['Thmoas-Guan', 'dagurtomas', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
dagurtomas assignee:dagurtomas |
2-50966 2 days ago |
4-49882 4 days ago |
12-42735 12 days |
| 35250 |
vlad902 author:vlad902 |
feat(SimpleGraph): redefine `cycleGraph` independent of `circulantGraph` |
Right now the `cycleGraph` definition relies on `circulantGraph` which requires importing Group definitions from the algebra hierarchy. This causes large-imports for me in later PRs where I try to make more widespread use of cycleGraphs, so here I redefine it to be its own independent object, and leave moving it from `Circulant.lean` to another PR (this is parallel to #35084.)
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
maintainer-merge
|
10/10 |
Mathlib/Combinatorics/SimpleGraph/Circulant.lean |
1 |
5 |
['SnirBroshi', 'YaelDillies', 'github-actions', 'vihdzp', 'vlad902'] |
nobody |
2-33733 2 days ago |
41-14695 41 days ago |
41-14689 41 days |
| 36752 |
Ljon4ik4 author:Ljon4ik4 |
feat: Alternative definition of a tensor product for an algebra |
Let $A$ be an $R$-algebra and $M$ and $N$ $A$-modules.
Then the tensor product $M\otimes_A N$ can be constructed as a quotient of $M\otimes_R N$ by the submodule generated by elements of the shape $am\otimes n - m\otimes an$. This PR realizes this construction and shows that it is isomorphic to the general definition of $M\otimes_A N$.
As one consequence we obtain a description of the kernel of `mapOfCompatibleSMul'` as a span of elements of the shape $am\otimes n - m\otimes an$.
* I wasn't sure where exactly to put it: Currently it is in `Algebra.TensorProduct`, which I think could be a place for more results of tensor products over algebras in the long term, but maybe some file inside `Mathlib.LinearAlgebra.TensorProduct` could also make sense.
* I am not sure if it is very nice to mention 'variable (R A M N)' everywhere, they could also be defined as explicit in the top of the document, and explicitly omitted where unneeded.
* The `omit [IsScalarTower R A N] in` was suggested by the linter, I am not sure I understand why
* Since the relations contain negation, this procedure only works if some of the ingredients admit negation, one could imagine alternative versions (e.g. when $N$ admits negations and not $M$) but this seemed the most intuitive one.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
120/0 |
Mathlib.lean,Mathlib/Algebra/Algebra/TensorProduct.lean,Mathlib/LinearAlgebra/TensorProduct/Basic.lean |
3 |
6 |
['Ljon4ik4', 'github-actions', 'mathlib-bors'] |
ocfnash assignee:ocfnash |
2-33331 2 days ago |
2-33411 2 days ago |
7-42377 7 days |
| 37078 |
vihdzp author:vihdzp |
chore(LinearAlgebra/ExteriorPower/Basis): avoid use of IsWellFounded.wellOrderExtension |
This file formerly used `IsWellFounded.wellOrderExtension` on an empty relation to create a linear order extending it, i.e. an arbitrary linear order. But we can accomplish this directly via the well-ordering principle.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
easy
label:t-algebra$ |
4/4 |
Mathlib/LinearAlgebra/ExteriorPower/Basis.lean |
1 |
1 |
['github-actions'] |
nobody |
2-32474 2 days ago |
2-32549 2 days ago |
2-32543 2 days |
| 35602 |
JovanGerb author:JovanGerb |
feat: replace `IsWellFounded` with `WellFounded` |
This PR is an attempt to deprecate `IsWellFounded`. The reason it that it is entirely equivalent to `WellFounded`, with the only difference being that `IsWellFounded` is a class. This PR instead marks `WellFounded` as a class.
What is annoying is that you sometimes want the API to use it as a class and sometimes as an explicit argument, and it's not entirely clear to me what the best compromise is: duplicating API, or just picking one form and using it.
For example, `WellFounded.min`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
452/493 |
Archive/Imo/Imo1988Q6.lean,Mathlib/Algebra/EuclideanDomain/Defs.lean,Mathlib/Algebra/Group/UniqueProds/Basic.lean,Mathlib/Algebra/Lie/Engel.lean,Mathlib/Algebra/Lie/Subalgebra.lean,Mathlib/Algebra/Lie/Submodule.lean,Mathlib/AlgebraicTopology/SimplicialSet/AnodyneExtensions/Pairing.lean,Mathlib/CategoryTheory/CofilteredSystem.lean,Mathlib/CategoryTheory/Subobject/ArtinianObject.lean,Mathlib/CategoryTheory/Subobject/NoetherianObject.lean,Mathlib/Computability/Partrec.lean,Mathlib/Data/DFinsupp/WellFounded.lean,Mathlib/Data/ENat/Basic.lean,Mathlib/Data/Fin/Tuple/BubbleSortInduction.lean,Mathlib/Data/Finset/Dedup.lean,Mathlib/Data/Finset/Defs.lean,Mathlib/Data/Finsupp/MonomialOrder/DegLex.lean,Mathlib/Data/Finsupp/WellFounded.lean,Mathlib/Data/Fintype/Card.lean,Mathlib/Data/List/Chain.lean,Mathlib/Data/List/Cycle.lean,Mathlib/Data/Multiset/Defs.lean,Mathlib/Data/Nat/Cast/WithTop.lean,Mathlib/Data/Nat/WithBot.lean,Mathlib/Data/Prod/Lex.lean,Mathlib/Data/Rel.lean,Mathlib/Data/Set/Finite/Lemmas.lean,Mathlib/Data/Sum/Order.lean,Mathlib/GroupTheory/ArchimedeanDensely.lean,Mathlib/LinearAlgebra/ExteriorPower/Basis.lean,Mathlib/Logic/Hydra.lean,Mathlib/Order/Antisymmetrization.lean,Mathlib/Order/Cofinal.lean,Mathlib/Order/CompactlyGenerated/Basic.lean,Mathlib/Order/ConditionallyCompleteLattice/Defs.lean,Mathlib/Order/Cover.lean,Mathlib/Order/Extension/Well.lean,Mathlib/Order/Hom/Basic.lean,Mathlib/Order/InitialSeg.lean,Mathlib/Order/Minimal.lean,Mathlib/Order/OrderIsoNat.lean,Mathlib/Order/PiLex.lean,Mathlib/Order/RelClasses.lean,Mathlib/Order/RelIso/Basic.lean,Mathlib/Order/RelIso/Set.lean,Mathlib/Order/RelSeries.lean,Mathlib/Order/Shrink.lean,Mathlib/Order/SuccPred/Archimedean.lean,Mathlib/Order/WellFounded.lean,Mathlib/Order/WellFoundedSet.lean,Mathlib/Order/WellQuasiOrder.lean,Mathlib/Order/WithBot.lean,Mathlib/RingTheory/Artinian/Module.lean,Mathlib/RingTheory/Bezout.lean,Mathlib/RingTheory/DedekindDomain/Ideal/Basic.lean,Mathlib/RingTheory/FiniteLength.lean,Mathlib/RingTheory/Length.lean,Mathlib/RingTheory/MvPolynomial/Groebner.lean,Mathlib/RingTheory/MvPowerSeries/NoZeroDivisors.lean,Mathlib/RingTheory/Noetherian/Basic.lean,Mathlib/RingTheory/Noetherian/Defs.lean,Mathlib/RingTheory/Polynomial/UniqueFactorization.lean,Mathlib/RingTheory/PrincipalIdealDomain.lean,Mathlib/RingTheory/SimpleModule/Basic.lean,Mathlib/RingTheory/UniqueFactorizationDomain/Basic.lean,Mathlib/RingTheory/UniqueFactorizationDomain/Defs.lean,Mathlib/RingTheory/UniqueFactorizationDomain/Ideal.lean,Mathlib/RingTheory/UniqueFactorizationDomain/Nat.lean,Mathlib/RingTheory/Valuation/Archimedean.lean,Mathlib/SetTheory/Cardinal/Cofinality.lean,Mathlib/SetTheory/Cardinal/Order.lean,Mathlib/SetTheory/Ordinal/Basic.lean,Mathlib/SetTheory/Ordinal/Notation.lean,Mathlib/SetTheory/Ordinal/Rank.lean,Mathlib/SetTheory/ZFC/Basic.lean,Mathlib/SetTheory/ZFC/Class.lean,Mathlib/SetTheory/ZFC/PSet.lean,Mathlib/SetTheory/ZFC/Rank.lean,Mathlib/Topology/Category/Profinite/Nobeling/Basic.lean,Mathlib/Topology/NoetherianSpace.lean |
80 |
41 |
['JovanGerb', 'SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
pechersky and vihdzp assignee:pechersky assignee:vihdzp |
2-31786 2 days ago |
3-1405 3 days ago |
12-67084 12 days |
| 36958 |
JovanGerb author:JovanGerb |
chore(Topology/Order/Basic): use `Preorder.topology` in `OrderTopology` |
This PR addresses the comment:
```
TODO: define `Preorder.topology` before `OrderTopology` and reuse the def
```
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
22/19 |
Mathlib/Topology/Instances/Discrete.lean,Mathlib/Topology/Order/Basic.lean |
2 |
1 |
['github-actions', 'vihdzp'] |
PatrickMassot assignee:PatrickMassot |
2-31144 2 days ago |
4-50923 4 days ago |
4-51252 4 days |
| 37084 |
SnirBroshi author:SnirBroshi |
feat(Order/PropInstances): relations and `Subsingleton` |
`r = ⊤ ↔ Refl r` and `r = ⊥ ↔ Irrefl r` given `Subsingleton`
---
[](https://gitpod.io/from-referrer/)
|
t-order |
7/1 |
Mathlib/Order/PropInstances.lean |
1 |
1 |
['github-actions'] |
nobody |
2-28741 2 days ago |
2-28820 2 days ago |
2-28814 2 days |
| 37100 |
vihdzp author:vihdzp |
chore(SetTheory/Cardinal/Cofinality): add `0 < x` versions of simp lemmas for `x ≠ 0` |
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory
t-order
easy
|
8/0 |
Mathlib/SetTheory/Cardinal/Cofinality.lean,Mathlib/SetTheory/Ordinal/Basic.lean |
2 |
1 |
['github-actions'] |
nobody |
2-14231 2 days ago |
2-14321 2 days ago |
2-14315 2 days |
| 35084 |
edegeltje author:edegeltje |
feat(Combinatorics/SimpleGraph): Cayley graph for structures with `Mul`/`Add` |
This pr:
- adds the definition `SimpleGraph.mulCayley`, where `x` is adjacent to a distinct `y` when there is `g` such that `x * g = y` or `x = y * g`,
- proves various lemmas about the above,
- adds/proves the additive versions of all of the above
some related zulip conversation: https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Cayley.20and.20circulant.20graph/with/572839048
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
maintainer-merge
|
141/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Cayley.lean |
2 |
44 |
['SnirBroshi', 'YaelDillies', 'edegeltje', 'github-actions', 'vihdzp', 'vlad902'] |
kmill assignee:kmill |
2-11320 2 days ago |
5-3340 5 days ago |
41-75602 41 days |
| 37086 |
tb65536 author:tb65536 |
chore(GroupTheory/Sylow): remove explicit type ascriptions `(P : Subgroup G)` |
PR #36852 generalized `normalizer` to subsets of `G` (like we do for centralizer), but introduced a few explicit type ascriptions `(P : Subgroup)` into `Sylow.lean` (to force the coercion to `Set` to go through `Subgroup`). This PR removes those.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-group-theory
label:t-algebra$ |
61/44 |
Mathlib/Algebra/Group/Subgroup/Defs.lean,Mathlib/GroupTheory/SpecificGroups/ZGroup.lean,Mathlib/GroupTheory/Sylow.lean,Mathlib/GroupTheory/Transfer.lean |
4 |
1 |
['github-actions'] |
nobody |
2-11209 2 days ago |
2-18571 2 days ago |
2-18566 2 days |
| 33634 |
xgenereux author:xgenereux |
feat(ValuationSubring): eq_self_or_eq_top_of_le |
Using `primeSpectrumEquiv` we get the the corresponding results of `IsLocalRing.primeSpectrum_eq_of_KrullDimLEOne`(see #33607) for valuation subrings.
Co-authored-by: María Inés de Frutos Fernández <[mariaines.dff@gmail.com](mailto:mariaines.dff@gmail.com)>
---
- [ ] depends on: #33631
- [ ] depends on: #33612
- [ ] depends on: #33609
- [ ] depends on: #33607
[](https://gitpod.io/from-referrer/)
|
large-import
t-algebra
label:t-algebra$ |
23/0 |
Mathlib/RingTheory/Valuation/ValuationSubring.lean |
1 |
9 |
['alreadydone', 'github-actions', 'leanprover-radar', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot', 'plp127', 'xgenereux'] |
dagurtomas assignee:dagurtomas |
2-9262 2 days ago |
9-74427 9 days ago |
9-74520 9 days |
| 36621 |
quantumsnow author:quantumsnow |
feat: add the category of topological pairs |
This is needed for the Eilenberg-Steenrod axioms for a homology theory.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
247/0 |
Mathlib.lean,Mathlib/Topology/Category/TopCat/Limits/Basic.lean,Mathlib/Topology/Category/TopPair.lean |
3 |
54 |
['chrisflav', 'erdOne', 'github-actions', 'joelriou', 'quantumsnow', 'vlad902'] |
dagurtomas assignee:dagurtomas |
2-4226 2 days ago |
2-4226 2 days ago |
6-18156 6 days |
| 36841 |
eric-wieser author:eric-wieser |
fix(Tactic/NormNum): do not re-enter `simp` from the very outside |
This fixes a recursion error in
```lean4
import Mathlib.SetTheory.Cardinal.Basic
import Mathlib.Tactic.NormNum.Core
theorem foos.{u} (α β : Type u) : Cardinal.mk α = Cardinal.mk β → α = β := by
norm_num [Cardinal.mk_eq_aleph0]
```
which is quite willing to be promoted to a stack overflow with a moderate recursion depth limit.
It's not entirely clear to me if `dischargeGround` is the right discharger to use here, but no tests fail because of that choice.
Note this change breaks the following proof:
```lean4
import Mathlib.Tactic.NormNum
theorem foo (x y : ℚ)
(h₀ : x > 0 ∧ y > 0)
(h₁ : x < 1 ∧ y < 1) :
0 ≤ x / (1 - x) + y / (1 - y) := by
norm_num [*, div_pos, add_pos, le_of_lt]
```
The reason is that previously `norm_num` was `simp` plus _two_ things:
* Numeral normalization.
* Hackily overriding `maxDischargeDepth` to exceed maxRecDepth
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
20/22 |
Mathlib/Tactic/NormNum/Core.lean,Mathlib/Tactic/ReduceModChar.lean |
2 |
26 |
['JovanGerb', 'eric-wieser', 'github-actions', 'leanprover-radar'] |
adamtopaz assignee:adamtopaz |
2-2048 2 days ago |
2-2901 2 days ago |
7-30626 7 days |
| 36951 |
mbkybky author:mbkybky |
feat(Algebra/Module): define stably free modules |
We define stably free modules: a module `M` over a commutative ring `R` is called stably free if there exists a finite free module `N` over `R` such that `M ⊕ N` is free.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
52/0 |
Mathlib.lean,Mathlib/Algebra/Module/StablyFree/Basic.lean |
2 |
1 |
['github-actions'] |
nobody |
2-1971 2 days ago |
5-14499 5 days ago |
5-14493 5 days |
| 37104 |
tb65536 author:tb65536 |
feat(RingTheory/Flat/FaithfullyFlat/Basic): prove `IsNoetherian` and `IsArtinian` from faithfully flat base change |
This PR proves that if the base change of a module `M` along a faithfully flat ring homomorphism is Noetherian or Artinian, then so is `M`.
The file `Artinian/Module` has become rather heavy, so I split off a `Artinian/Defs` file to avoid the large import.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
label:t-algebra$ |
119/39 |
Mathlib.lean,Mathlib/LinearAlgebra/TensorProduct/Tower.lean,Mathlib/RingTheory/Artinian/Defs.lean,Mathlib/RingTheory/Artinian/Module.lean,Mathlib/RingTheory/Flat/FaithfullyFlat/Basic.lean |
5 |
1 |
['github-actions'] |
nobody |
2-1732 2 days ago |
2-1732 2 days ago |
2-1728 2 days |
| 37060 |
pfaffelh author:pfaffelh |
feat: `Set.indicator` on a disjoint union equals the sum of individual `Set.indicator` |
Prove a helper lemma on mulIndicators, needed in measure/probability theory:
If `s : γ → Set β` is `Pairwise (Disjoint on s)` and `f : β → α`, then `(⋃ d, s d).mulIndicator f i = ∏' d, (s d).mulIndicator f i` for `i : β`.
The `to_additive` tag is added for `Set.indicator`.
---
[](https://gitpod.io/from-referrer/)
|
|
37/1 |
Mathlib/Algebra/Group/Indicator.lean,Mathlib/Topology/Algebra/InfiniteSum/Basic.lean |
2 |
6 |
['DavidLedvinka', 'github-actions'] |
nobody |
2-139 2 days ago |
2-70759 2 days ago |
2-70753 2 days |
| 37109 |
zeekmartin author:zeekmartin |
feat(SimpleGraph): card of common neighbors equals card of triangles containing edge |
Adds `SimpleGraph.card_commonNeighbors_eq_card_triangles_containing_edge`
to `Mathlib/Combinatorics/SimpleGraph/Clique.lean`.
For adjacent vertices `u v` in a finite simple graph, establishes the bijection
between common neighbors and 3-cliques containing the edge `{u, v}`:
```lean
theorem card_commonNeighbors_eq_card_triangles_containing_edge
{u v : α} (huv : G.Adj u v) :
(G.commonNeighbors u v).toFinset.card =
((G.cliqueFinset 3).filter fun s => {u, v} ⊆ s).card
```
This connects `commonNeighbors` (defined in `Basic.lean`) with `cliqueFinset` —
a gap not previously covered in `Clique.lean`.
**AI disclosure**: Claude (Anthropic) was used as an assistant during the development of this proof. It helped with the initial proof structure and tactic suggestions. The proof was reviewed and validated step by step by the author, who can vouch for all the content. The mathematical idea originates from the author's prior Lean 4 work on spectral graph theory (github.com/zeekmartin/topostability-lean4).
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
LLM-generated
new-contributor
|
61/0 |
Mathlib/Combinatorics/SimpleGraph/Clique.lean |
1 |
7 |
['SnirBroshi', 'github-actions', 'zeekmartin'] |
nobody |
1-84214 1 day ago |
2-4973 2 days ago |
2-4967 2 days |
| 37061 |
tannerduve author:tannerduve |
feat(Computability): rename RecursiveIn to Nat.RecursiveIn and generalize to Primcodable types |
Rename `RecursiveIn` to `Nat.RecursiveIn` (protected) for the `ℕ →. ℕ` version, and introduce a new `RecursiveIn` that lifts `Nat.RecursiveIn` to partial functions between `Primcodable` types via `liftPrim`.
Also adds:
- `Nat.PrimrecIn`: primitive recursion relative to oracles
- `liftPrim` / `liftPrimrec`: encode typed functions as `ℕ →. ℕ` / `ℕ → ℕ`
- `RecursiveIn₂`, `ComputableIn`, `ComputableIn₂`, `PrimrecIn'`
- Basic API: `of_eq`, `of_eq_tot`, `subst`, `mono`, `partrec_of_zero`, `partrec_of_none`, `partrec_iff_forall_recursiveIn`, etc.
To be merged before #37062 |
t-computability
new-contributor
|
239/39 |
Mathlib/Computability/RecursiveIn.lean,Mathlib/Computability/TuringDegree.lean |
2 |
14 |
['Komyyy', 'eric-wieser', 'github-actions', 'tannerduve'] |
Komyyy assignee:Komyyy |
1-83442 1 day ago |
2-2902 2 days ago |
2-68759 2 days |
| 36604 |
JovanGerb author:JovanGerb |
feat(Translate): reorder universes |
This PR improves the heuristic for reordering of universes in `to_dual`/`to_additive`. The previous heuristic worked well when the first two universes had to be swapped. For example for translating `a ^ n` to `n • a`, and for dualizing `GaloisConnection`. However, in Category theory we sometimes need to swap more universes because a category instance comes with 2 universes which both need to be swapped. In particular, the comma category, and adjunctions both need this feature.
This PR doesn't add any syntax for specifying the reordering of universes. It is assumed that the universe reordering can always be inferred from the normal reordering and from the type.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
204/91 |
Mathlib/CategoryTheory/Comma/Basic.lean,Mathlib/Tactic/Translate/Core.lean,Mathlib/Tactic/Translate/Reorder.lean,MathlibTest/ToDual.lean |
4 |
6 |
['JovanGerb', 'bryangingechen', 'github-actions', 'mathlib-bors', 'mathlib-merge-conflicts'] |
dwrensha assignee:dwrensha |
1-81340 1 day ago |
2-24918 2 days ago |
4-68779 4 days |
| 37115 |
tb65536 author:tb65536 |
feat(RingTheory/Flat/Basic): `Submodule.toBaseChange` as a `LinearEquiv` |
If the extensions of rings is flat, then `Submodule.toBaseChange` becomes a `LinearEquiv`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
label:t-algebra$ |
15/0 |
Mathlib/RingTheory/Flat/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
1-78110 1 day ago |
1-78110 1 day ago |
1-78104 1 day |
| 37006 |
hakii6 author:hakii6 |
feat(LinearAlgebra/Matrix/Block, Analysis/Normed/Algebra/MatrixExponential): add BlockTriangular.pow and BlockTriangular.exp |
# Summary
Add BlockTriangular.pow and BlockTriangular.exp for proving "det (exp A) = exp (trace A)"
# Which part using LLM
The part I used LLM is for
1. Searching duplicated theorems and lemmas I may missed (I already search them myself first).
2. Help me handle the "variables and signatures", the "letI" part, some of lemmas and theorems trivial but hard to find the true one.
3. After I finished, let them helped me check the structure match the disciplines of mathlib.
4. Check the steps PR match the disciplines of mathlib
Most things above are done by me first, then let them to make sure I'm not missing something.
# More context
More context can be found in a topic in "# new member" in Zulip
[#new members > (Matrix and NormedSpace.exp) | det (exp A) = exp (trace A)](https://leanprover.zulipchat.com/#narrow/channel/113489-new-members/topic/.28Matrix.20and.20NormedSpace.2Eexp.29.20.7C.20det.20.28exp.20A.29.20.3D.20exp.20.28trace.20A.29/with/580964688)
|
new-contributor
LLM-generated
|
29/0 |
Mathlib/Analysis/Normed/Algebra/MatrixExponential.lean,Mathlib/LinearAlgebra/Matrix/Block.lean |
2 |
19 |
['SnirBroshi', 'eric-wieser', 'github-actions', 'hakii6', 'wwylele'] |
nobody |
1-78091 1 day ago |
2-54727 2 days ago |
3-63921 3 days |
| 37119 |
tb65536 author:tb65536 |
feat(RingTheory/LocalRing/RingHom/Basic): the image of the maximal ideal is a proper ideal |
This PR shows that for a local ring homomorphism, the image of the maximal ideal is a proper ideal.
I also took the liberty of adding the missing API lemma `Ideal.IsMaximal.lt_top`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
label:t-algebra$ |
13/3 |
Mathlib/RingTheory/DedekindDomain/PID.lean,Mathlib/RingTheory/Ideal/Maximal.lean,Mathlib/RingTheory/LocalRing/ResidueField/Fiber.lean,Mathlib/RingTheory/LocalRing/RingHom/Basic.lean |
4 |
1 |
['github-actions'] |
nobody |
1-76964 1 day ago |
1-76964 1 day ago |
1-76959 1 day |
| 36688 |
joelriou author:joelriou |
feat(CategoryTheory/Monoidal): tensor product of cokernels |
---
- [x] depends on: #36680
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
92/37 |
Mathlib.lean,Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean,Mathlib/CategoryTheory/Abelian/Basic.lean,Mathlib/CategoryTheory/Limits/Preserves/BifunctorCokernel.lean,Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean,Mathlib/CategoryTheory/Limits/Shapes/NormalMono/Equalizers.lean,Mathlib/CategoryTheory/Monoidal/Limits/Cokernels.lean,Mathlib/CategoryTheory/Monoidal/Preadditive.lean |
8 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
robin-carlier assignee:robin-carlier |
1-72244 1 day ago |
1-72308 1 day ago |
5-82835 5 days |
| 36834 |
dagurtomas author:dagurtomas |
feat(Tactic/Simps): add option to dsimplify LHS |
Adds an option `dsimpLhs` to `simps` which runs `dsimp` on the left hand side of the generated lemmas. This is a way to auto-generate lemmas with the `dsimp%` operator on the left hand side, as is common in category theory, see e.g. https://github.com/leanprover-community/mathlib4/blob/09af23f880d656d9a7950647a1e9c01047d502f0/Mathlib/CategoryTheory/Limits/Cones.lean#L137-L140.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
77/0 |
Mathlib/Tactic/Simps/Basic.lean,MathlibTest/Simps.lean |
2 |
18 |
['JovanGerb', 'dagurtomas', 'eric-wieser', 'github-actions'] |
dwrensha assignee:dwrensha |
1-71583 1 day ago |
2-77814 2 days ago |
6-20939 6 days |
| 37098 |
vihdzp author:vihdzp |
feat: singular cardinals |
We define a singular cardinal as an infinite cardinal which is larger than its cofinality. That's to say, every cardinal is exactly one of the following three: finite, regular, or singular.
Re-opened from #17005, with permission.
---
Co-authored-by: Nir Paz
- [x] depends on: #36933
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
108/27 |
Mathlib/SetTheory/Cardinal/Aleph.lean,Mathlib/SetTheory/Cardinal/Arithmetic.lean,Mathlib/SetTheory/Cardinal/Regular.lean,Mathlib/SetTheory/Ordinal/Arithmetic.lean |
4 |
3 |
['github-actions', 'mathlib-dependent-issues', 'plp127'] |
nobody |
1-66261 1 day ago |
1-66557 1 day ago |
1-67619 1 day |
| 37131 |
IvanRenison author:IvanRenison |
doc(Combinatorics/SimpleGraph/Partition): improbe docstrings in `SimpleGraph.Partition` |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
11/16 |
Mathlib/Combinatorics/SimpleGraph/Partition.lean |
1 |
1 |
['github-actions'] |
nobody |
1-64005 1 day ago |
1-64092 1 day ago |
1-64086 1 day |
| 37020 |
vihdzp author:vihdzp |
feat: cof (ω_ (o + 1)) = ℵ_ (o + 1) |
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
38/9 |
Mathlib/SetTheory/Cardinal/Aleph.lean,Mathlib/SetTheory/Cardinal/Regular.lean |
2 |
1 |
['github-actions'] |
nobody |
1-59684 1 day ago |
1-59597 1 day ago |
3-34743 3 days |
| 34758 |
Hagb author:Hagb |
feat(RingTheory/MvPolynomial/MonomialOrder): misc lemmas |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
52/2 |
Mathlib/RingTheory/MvPolynomial/MonomialOrder.lean |
1 |
7 |
['Hagb', 'erdOne', 'github-actions'] |
riccardobrasca assignee:riccardobrasca |
1-58781 1 day ago |
24-29916 24 days ago |
43-3765 43 days |
| 35243 |
ScottCarnahan author:ScottCarnahan |
chore(Algebra/MonoidAlgebra/PointwiseSMul): switch action from Finsupp to (Add)MonoidAlgebra and multiplicativize |
This PR moves the API for convolution action on functions from `Finsupp` to `MonoidAlgebra`, adding a `Semiring` hypothesis. We do this move, because the convolution action of finsupps on formal functions is more naturally expressed as an action by the monoid algebra with its convolutional multiplication.
This PR also multiplicativizes, preserving the original material with `to_additive`.
---
The large import is on a module that will be deprecated - I had to add the imports to make the deprecated flags work, but ultimately they will be irrelevant.
[](https://gitpod.io/from-referrer/)
|
large-import
t-algebra
label:t-algebra$ |
109/52 |
Mathlib.lean,Mathlib/Algebra/MonoidAlgebra/PointwiseSMul.lean,Mathlib/Data/Finsupp/PointwiseSMul.lean |
3 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
dagurtomas assignee:dagurtomas |
1-58780 1 day ago |
24-40125 24 days ago |
29-21058 29 days |
| 35402 |
samueloettl author:samueloettl |
feat(Dynamics/BirkhoffSum): birkhoffAverage const |
---
I think this is useful and one of these should be a simp lemma.
I'm not really sure if I got the naming of the theorems correct.
When generalizing to the assumption (n : R) ≠ 0 instead of the special case CharZero R with n ≠ 0 I had to use "open Classical in". I'm a bit unfamiliar with that part so please check if this makes sense. See also https://github.com/leanprover-community/mathlib4/pull/35307#discussion_r2823586252
[](https://gitpod.io/from-referrer/)
|
t-dynamics
new-contributor
|
22/0 |
Mathlib/Dynamics/BirkhoffSum/Average.lean |
1 |
2 |
['github-actions'] |
ADedecker assignee:ADedecker |
1-58779 1 day ago |
31-68452 31 days ago |
38-15334 38 days |
| 36775 |
ADedecker author:ADedecker |
feat: if `E` is finite dimensional, `E →L[𝕜] F` has the product topology |
---
- [x] depends on: #36776
- [ ] depends on: #36870
[](https://gitpod.io/from-referrer/)
|
t-topology |
78/0 |
Mathlib.lean,Mathlib/Topology/Algebra/IsUniformGroup/Defs.lean,Mathlib/Topology/Algebra/Module/FiniteDimensionStrongTopology.lean |
3 |
6 |
['ADedecker', 'eric-wieser', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
j-loreaux assignee:j-loreaux |
1-58776 1 day ago |
5-47139 5 days ago |
5-50561 5 days |
| 36777 |
jjdishere author:jjdishere |
feat(Valuation/ValuativeRel): generalize `ValuativeRel` to non-commutative rings |
This is the second in a series of PRs, with the final goal of removing the class `Valued` from Mathlib.
A `Valued` instance will be replaced by `[ValuativeRel R] [UniformSpace R] [IsValuativeTopology R] [IsUniformAddGroup R] (v : Valuation R A) [v.Compatible]`.
This PR generalize `ValuativeRel` from `CommRing` to `Ring` by adding a field `vle_mul_comm {x y} : vle (x * y) (y * x)`. Without this field, the value group associated to the valuative relation may be non-abelian. The APIs of `ValuativeRel.ofValuation` and `ValuativeRel.valuation` are also generalized, showing this new definition is indeed equivalent to the valuations on non commutative rings.
This is a prerequisite of #36769 .
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
210/128 |
Mathlib/RingTheory/DedekindDomain/AdicValuation.lean,Mathlib/RingTheory/Valuation/DiscreteValuativeRel.lean,Mathlib/RingTheory/Valuation/RankOne.lean,Mathlib/RingTheory/Valuation/ValuativeRel/Basic.lean,Mathlib/RingTheory/Valuation/ValuativeRel/Trivial.lean,Mathlib/Topology/Algebra/ValuativeRel/ValuativeTopology.lean,Mathlib/Topology/Algebra/Valued/ValuativeRel.lean,Mathlib/Topology/Algebra/Valued/WithVal.lean |
8 |
26 |
['faenuccio', 'github-actions', 'jjdishere', 'leanprover-radar', 'mathlib-bors', 'riccardobrasca'] |
faenuccio and riccardobrasca assignee:riccardobrasca assignee:faenuccio |
1-58775 1 day ago |
3-2520 3 days ago |
7-85903 7 days |
| 36895 |
loefflerd author:loefflerd |
feat(Analysis/Complex/UpperHalfPlane): SL(2, R) action is proper |
Show that the actions of `SL(2, ℝ)` and `GL(2, ℝ)` on the upper half-plane are continuous in both variables, and the action of `SL(2, ℝ)` is proper.
---
- [ ] depends on: #36904
- [ ] depends on: #36942
[](https://gitpod.io/from-referrer/)
|
t-analysis |
187/0 |
Mathlib.lean,Mathlib/Algebra/Group/Action/Pretransitive.lean,Mathlib/Analysis/Complex/UpperHalfPlane/ProperAction.lean,Mathlib/Topology/Algebra/Group/Matrix.lean |
4 |
10 |
['ADedecker', 'github-actions', 'loefflerd', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
j-loreaux assignee:j-loreaux |
1-58774 1 day ago |
1-65905 1 day ago |
1-73182 1 day |
| 36948 |
Parcly-Taxel author:Parcly-Taxel |
feat: subtraction and ±1 lemmas for `IsCoprime, IsRelPrime` |
From my Redhill PhD project. |
t-ring-theory |
84/0 |
Mathlib/RingTheory/Coprime/Basic.lean |
1 |
1 |
['github-actions'] |
mattrobball assignee:mattrobball |
1-58773 1 day ago |
5-22464 5 days ago |
5-22458 5 days |
| 36957 |
chrisflav author:chrisflav |
refactor(Topology): redefine `Topology.IsQuotientMap` with `Topology.IsCoinducing` |
Currently, varying formulations for `f : X -> Y` is coinducing are used: Examples are an equality of `TopologicalSpace.coinduced` or an explicit characterization of open sets.
We add a predicate `Topology.IsCoinducing` and redefine `Topology.IsQuotientMap` in terms of it.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
153/76 |
Mathlib/AlgebraicGeometry/Morphisms/Flat.lean,Mathlib/AlgebraicGeometry/Morphisms/FlatDescent.lean,Mathlib/Topology/Algebra/Group/Basic.lean,Mathlib/Topology/Algebra/Group/Pointwise.lean,Mathlib/Topology/Algebra/Group/Quotient.lean,Mathlib/Topology/Algebra/Module/ModuleTopology.lean,Mathlib/Topology/Algebra/ProperAction/Basic.lean,Mathlib/Topology/Category/TopCat/Limits/Pullbacks.lean,Mathlib/Topology/Clopen.lean,Mathlib/Topology/Compactness/DeltaGeneratedSpace.lean,Mathlib/Topology/Connected/Clopen.lean,Mathlib/Topology/Connected/LocPathConnected.lean,Mathlib/Topology/Connected/LocallyConnected.lean,Mathlib/Topology/Connected/TotallyDisconnected.lean,Mathlib/Topology/Constructions.lean,Mathlib/Topology/Convenient/GeneratedBy.lean,Mathlib/Topology/Covering/Quotient.lean,Mathlib/Topology/Defs/Induced.lean,Mathlib/Topology/DiscreteQuotient.lean,Mathlib/Topology/Homeomorph/Defs.lean,Mathlib/Topology/Inseparable.lean,Mathlib/Topology/Maps/Basic.lean,Mathlib/Topology/Maps/OpenQuotient.lean,Mathlib/Topology/Order/ProjIcc.lean,Mathlib/Topology/Sequences.lean |
25 |
3 |
['chrisflav', 'github-actions', 'plp127'] |
j-loreaux assignee:j-loreaux |
1-58773 1 day ago |
4-75409 4 days ago |
4-75418 4 days |
| 36974 |
astrainfinita author:astrainfinita |
chore(Data/Nat/Size): simplify proofs, reduce dependencies |
---
[](https://gitpod.io/from-referrer/)
|
t-data |
34/60 |
Mathlib/Data/Int/Bitwise.lean,Mathlib/Data/Nat/Size.lean |
2 |
1 |
['github-actions'] |
TwoFX assignee:TwoFX |
1-58772 1 day ago |
4-45461 4 days ago |
4-46338 4 days |
| 36994 |
JovanGerb author:JovanGerb |
chore(RefinedDiscrTree/Lookup): remove reference counting workaround |
This PR removes the awkward handling of exceptions in `getMatch`. The reasoning originally was that I wanted to allow in-place mutations in the trie array. But this is not possible anyways, because it lives in a multi-threaded ref, so it cannot be used linearly. See also https://leanprover.zulipchat.com/#narrow/channel/270676-lean4/topic/.5Bcache.5D.20attribute/near/576556138
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
9/14 |
Mathlib/Lean/Meta/RefinedDiscrTree.lean,Mathlib/Lean/Meta/RefinedDiscrTree/Lookup.lean,Mathlib/Tactic/FunProp/Theorems.lean,Mathlib/Tactic/Widget/LibraryRewrite.lean |
4 |
1 |
['github-actions'] |
alexjbest assignee:alexjbest |
1-58771 1 day ago |
3-85852 3 days ago |
3-85846 3 days |
| 37048 |
gasparattila author:gasparattila |
feat(Topology/UniformSpace/Closeds): uniform continuity of product |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
51/2 |
Mathlib/Topology/UniformSpace/Closeds.lean |
1 |
1 |
['github-actions'] |
j-loreaux assignee:j-loreaux |
1-58768 1 day ago |
3-198 3 days ago |
3-192 3 days |
| 37067 |
kbuzzard author:kbuzzard |
feat: add_group tactic |
Written by Claude Code, additivising the `group` tactic, although there were some problems which needed human input.
---
[](https://gitpod.io/from-referrer/)
This is me burning Claude credits as a result of this comment [#mathlib4 > MulAut and to_additive @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/MulAut.20and.20to_additive/near/581059625) .
To my amusement, naively additivising the `group` tactic to make an `add_group` tactic does not work. The problem is that the algorithm run by `group` involves adding `← zpow_neg_one` to the simp set, which rewrites `x⁻¹` to `x ^ (-1)` for `x` in any group. Amusingly, when additivised, this becomes `-x -> -1 • x` which then immediately becomes `(-1 • 1) • x` which then becomes `((-1 • 1) • 1) • x` etc etc, as the integers are themselves an additive group. Instead, Claude found the following trick: drop `← neg_one_zsmul` and `neg_one_zsmul_add`, and use `neg_add_rev` and `neg_zero` to reduce `-(a+b)` and `-0`, use `zsmul_neg` to reduce `n • (-a)` to `(-n) • a` and then use things like `add_neg_cancel_right` and `neg_add_cancel_right` to do `-b + b` and `b + -b` together with some new `zsmul_neg_trick` lemmas to deal with `(n • b) + -b` etc. The idea is to ensure that any consecutive chains of `b`'s and `-b`'s and `z • b`'s will all get amalgamated, but we cannot change `-b` to `-1 • b` so have to try harder than in the multiplicative case.
Here is a detailed explanation of the difference between `Tactic/AddGroup.lean` and the additivisation of `Tactic/Group.Lean`.
1) Note that the `zpow_trick` lemmas in `Tactic/Group.lean` are additivised, so we import `Group.lean` in `AddGroup.lean` to access these additivised lemmas.
2) `Mathlib.Algebra.Group.Commutator` has no additive version (and it's not clear that it should have one), so we don't use an additive version of `commutatorElement_def` (which expands `⁅g₁, g₂⁆` to `g₁ * g₂ * g₁⁻¹ * g₂⁻¹`). Note: that means that we cannot additivise a test.
3) Line 67 of the additive file uses `neg_add_rev, neg_zero, zsmul_neg, ← neg_zsmul,` as a workaround for the looping ` ← zpow_neg_one`.
4) `Int.mul_neg, Int.neg_mul` are dropped (they don't seem to be needed, all tests are passing, ring_nf is probably doing this.)
5) `sub_eq_add_neg` is added: people use subtraction in additive groups; division doesn't seem to be covered for multiplicative groups?
***
There is also one fewer test in the `add_group` tests, as I had to remove the commutator test.
I don't know much at all about tactic-writing, this is all Claude code, but a lot of it is to_additive copypasta. |
t-meta
LLM-generated
|
183/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/AddGroup.lean,MathlibTest/AddGroup.lean |
4 |
3 |
['github-actions', 'kbuzzard'] |
JovanGerb assignee:JovanGerb |
1-58767 1 day ago |
2-59894 2 days ago |
2-61131 2 days |
| 37079 |
astrainfinita author:astrainfinita |
feat: `SemilatticeSup.ofIsLUB`, `Lattice.ofIsLUBofIsGLB` |
---
[](https://gitpod.io/from-referrer/)
|
t-order |
39/76 |
Mathlib/Order/Bounds/Basic.lean,Mathlib/Order/ConditionallyCompleteLattice/Defs.lean |
2 |
2 |
['github-actions', 'vihdzp'] |
bryangingechen assignee:bryangingechen |
1-58766 1 day ago |
2-27969 2 days ago |
2-31453 2 days |
| 37082 |
astrainfinita author:astrainfinita |
chore(Order/CompleteLatticeIntervals): use different default values for `sSup` and `sInf` |
In a subsequent PR, some assumptions will be added to `ordConnectedSubsetConditionallyCompleteLinearOrderOfBotTop`.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
34/25 |
Mathlib/Order/CompleteLatticeIntervals.lean |
1 |
1 |
['github-actions'] |
bryangingechen assignee:bryangingechen |
1-58765 1 day ago |
2-29959 2 days ago |
2-29953 2 days |
| 37106 |
Vierkantor author:Vierkantor |
chore(Tactic): rewrite `nontriviality` tactic docstring |
This PR rewrites the docstrings for the `nontriviality` tactic, to consistently match the official style guide, to make sure they are complete while not getting too long.
This is mostly just restructuring and adding a few more details.
---
[](https://gitpod.io/from-referrer/)
|
documentation
t-meta
|
20/22 |
Mathlib/Tactic/Nontriviality/Core.lean |
1 |
1 |
['github-actions'] |
eric-wieser assignee:eric-wieser |
1-58764 1 day ago |
2-8169 2 days ago |
2-8163 2 days |
| 37108 |
xroblot author:xroblot |
feat(NumberTheory/DirichletCharacter): characterise conductor set as multiples of conductor |
Add two lemmas about Dirichlet character conductor sets :
- `factorsThrough_of_dvd_dvd`: if `χ` factors through `d` and `d ∣ m ∣ n`, then `χ` factors through `m`.
- `mem_conductorSet_iff_conductor_dvd`: for` d ∣ n`, `d ∈ χ.conductorSet` iff `χ.conductor ∣ d`.
---
[](https://gitpod.io/from-referrer/)
|
t-number-theory |
16/0 |
Mathlib/NumberTheory/DirichletCharacter/Basic.lean |
1 |
1 |
['github-actions'] |
MichaelStollBayreuth assignee:MichaelStollBayreuth |
1-58763 1 day ago |
2-5982 2 days ago |
2-5976 2 days |
| 36891 |
vihdzp author:vihdzp |
feat(SetTheory/Ordinal/Exponential): characterization of `a ^ b = 1` |
Used in the CGT repo.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
12/0 |
Mathlib/SetTheory/Ordinal/Exponential.lean |
1 |
6 |
['SnirBroshi', 'github-actions', 'vihdzp'] |
nobody |
1-58728 1 day ago |
1-64578 1 day ago |
6-33380 6 days |
| 36018 |
wwylele author:wwylele |
feat(LinearAlgebra/AffineSpace): shifting a subspace towards a point |
This is preparing to calculate the volume of a simplex by integrating the cross-section created by shifting the base plane. Part of #34826.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
293/0 |
Mathlib.lean,Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Shift.lean,Mathlib/LinearAlgebra/AffineSpace/Simplex/Basic.lean |
3 |
7 |
['copilot-pull-request-reviewer', 'github-actions', 'mathlib-bors'] |
kim-em assignee:kim-em |
1-54620 1 day ago |
14-63186 14 days ago |
14-63196 14 days |
| 37071 |
ericluap author:ericluap |
feat: Dedekind completion of rationals is isomorphic to EReal |
|
t-order
new-contributor
|
96/0 |
Mathlib.lean,Mathlib/Data/EReal/Basic.lean,Mathlib/Data/EReal/DedekindCut.lean |
3 |
36 |
['ericluap', 'github-actions', 'vihdzp', 'wwylele'] |
vihdzp assignee:vihdzp |
1-50805 1 day ago |
1-52591 1 day ago |
1-70761 1 day |
| 36754 |
mcdoll author:mcdoll |
feat(Analysis/Distribution): Sobolev distributions |
This is the first part of the definition of the Sobolev space. Here we only define the predicate `MemSobolev`, the subsequent PR will define the space of all Sobolev functions with the correct topology.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
340/0 |
Mathlib.lean,Mathlib/Analysis/Distribution/Sobolev.lean |
2 |
6 |
['github-actions', 'j-loreaux', 'mcdoll'] |
j-loreaux assignee:j-loreaux |
1-48731 1 day ago |
1-49373 1 day ago |
8-38119 8 days |
| 37138 |
dtumad author:dtumad |
feat(Data/FinEnum): instances for standard signed and unsigned integer types |
Adds `FinEnum` instances for `UIntN`/`IntN` for various `N`, and for platform sized integers.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
56/0 |
Mathlib/Data/FinEnum.lean |
1 |
3 |
['github-actions'] |
nobody |
1-43210 1 day ago |
1-43414 1 day ago |
1-43408 1 day |
| 37073 |
kim-em author:kim-em |
feat: add normalize_instance% using core's normalizeInstance |
This PR adds a new `normalize_instance%` term elaborator that delegates to Lean core's
`normalizeInstance` (from https://github.com/leanprover/lean4/pull/12897), and replaces ~53
`fast_instance%` call sites where the replacement is safe.
`normalize_instance%` is a thin wrapper (~15 lines) around `Lean.Meta.normalizeInstance`. Like
`fast_instance%`, it reduces instances to constructor applications and reuses canonical
sub-instances. Unlike `fast_instance%`, it works at `instances` transparency and delegates all
normalization logic to core.
The replaced sites cover:
- Equiv/type-alias transfers (WithAbs, WithConv, WithVal, WithLp, TransferInstance)
- Surjective constructors (Con, RingCon quotients, module congruences)
- DFunLike leaf instances (MultilinearMap, ContinuousMultilinearMap, AlternatingMap, Intertwining)
- Quotient instances (LinearAlgebra/Quotient/Defs)
- inferInstanceAs% sites (StandardPart, Presentation/Core)
- Miscellaneous (InfiniteAdeleRing, ZMod)
This PR *doesn't* attempt to replace all `fast_instance%`; it gets more complicated!
🤖 Prepared with Claude Code |
|
88/59 |
Mathlib/Algebra/Algebra/TransferInstance.lean,Mathlib/Algebra/Module/Congruence/Defs.lean,Mathlib/Algebra/Order/Ring/StandardPart.lean,Mathlib/Algebra/WithConv.lean,Mathlib/Analysis/Normed/Lp/WithLp.lean,Mathlib/Analysis/Normed/Ring/WithAbs.lean,Mathlib/Data/ZMod/Basic.lean,Mathlib/GroupTheory/Congruence/Defs.lean,Mathlib/LinearAlgebra/Alternating/Basic.lean,Mathlib/LinearAlgebra/Multilinear/Basic.lean,Mathlib/LinearAlgebra/Quotient/Defs.lean,Mathlib/NumberTheory/NumberField/InfiniteAdeleRing.lean,Mathlib/RepresentationTheory/Intertwining.lean,Mathlib/RingTheory/Extension/Presentation/Core.lean,Mathlib/Tactic/FastInstance.lean,Mathlib/Topology/Algebra/Module/Alternating/Basic.lean,Mathlib/Topology/Algebra/Module/Multilinear/Basic.lean,Mathlib/Topology/Algebra/Valued/WithVal.lean |
18 |
6 |
['JovanGerb', 'github-actions', 'kim-em', 'leanprover-radar'] |
nobody |
1-42073 1 day ago |
2-35828 2 days ago |
2-35866 2 days |
| 36597 |
kebekus author:kebekus |
feat: add lemmas on (fin)sums and (fin)products of meromorphic functions |
Add a host of missing lemmas on (fin)sums and (fin)products of meromorphic functions, and weaken assumptions in existing lemmas.
This material is used in [Project VD](https://github.com/kebekus/ProjectVD), formalizing Value Distribution Theory for meromorphic functions on the complex plane.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
279/61 |
Mathlib/Analysis/Complex/ValueDistribution/CharacteristicFunction.lean,Mathlib/Analysis/Complex/ValueDistribution/LogCounting/Basic.lean,Mathlib/Analysis/Complex/ValueDistribution/Proximity/Basic.lean,Mathlib/Analysis/Meromorphic/Basic.lean,Mathlib/Analysis/Meromorphic/Divisor.lean,Mathlib/Analysis/Meromorphic/NormalForm.lean,Mathlib/Analysis/Meromorphic/Order.lean,Mathlib/Analysis/Meromorphic/TrailingCoefficient.lean |
8 |
12 |
['github-actions', 'j-loreaux', 'kebekus'] |
j-loreaux assignee:j-loreaux |
1-40754 1 day ago |
1-40754 1 day ago |
12-42500 12 days |
| 36307 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Walks): `Walk.ofSupport` / `Walk.ofDarts` |
---
This would hopefully make constructions such as [the cycle in `cycleGraph`](https://github.com/leanprover-community/mathlib4/blob/1b2df6c93fdd0ece89a32521464d5193e0f381ed/Mathlib/Combinatorics/SimpleGraph/Circulant.lean#L140-L155) or [the path in `pathGraph`](https://github.com/leanprover-community/mathlib4/pull/34171) or [the Hamiltonian walk in the complete graph](https://leanprover.zulipchat.com/#narrow/channel/144837-PR-reviews/topic/Ore's.20Theorem/near/571353615) easier.
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
88/0 |
Mathlib/Combinatorics/SimpleGraph/Walks/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Operations.lean |
2 |
14 |
['SnirBroshi', 'github-actions', 'jessealama'] |
kmill assignee:kmill |
1-39762 1 day ago |
19-39195 19 days ago |
19-39189 19 days |
| 36673 |
kebekus author:kebekus |
feat: lemmas on coercions of functions with locally finite support |
Add lemmas on coercions of functions with locally finite support. Add a lemma allowing to write a function with finite support as a linear combination of singleton indicator functions.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
large-import
|
42/0 |
Mathlib/Topology/LocallyFinsupp.lean |
1 |
4 |
['github-actions', 'j-loreaux'] |
j-loreaux assignee:j-loreaux |
1-38046 1 day ago |
1-38046 1 day ago |
11-4755 11 days |
| 36865 |
psinary-sketch author:psinary-sketch |
feat(Analysis/Analytic): analytic order at zero with vanishing value |
Add AnalyticAt.analyticOrderAt_eq_one_of_zero_deriv_ne_zero: if f is analytic at x, f(x) = 0, and f'(x) ≠ 0, then analyticOrderAt f x = 1.
Placed next to analyticOrderAt_sub_eq_one_of_deriv_ne_zero in Order.lean per review feedback on #36778. |
t-analysis
new-contributor
LLM-generated
|
9/1 |
Mathlib/Analysis/Analytic/Order.lean |
1 |
3 |
['github-actions', 'mathlib-merge-conflicts'] |
sgouezel assignee:sgouezel |
1-37861 1 day ago |
1-59629 1 day ago |
6-28134 6 days |
| 36871 |
psinary-sketch author:psinary-sketch |
feat(Analysis/Analytic): nonvanishing in punctured neighborhood from derivative |
Add AnalyticAt.eventually_ne_nhdsWithin_of_deriv_ne_zero: if f is analytic at x and f'(x) ≠ 0, then f(w) ≠ f(x) in a punctured neighborhood of x.
No hypothesis on f(x) needed — stronger than the version in #36778. Placed in Order.lean per review feedback from @wwylele.
Split from #36778 (2 of 3). |
t-analysis
new-contributor
LLM-generated
|
21/1 |
Mathlib/Analysis/Analytic/Order.lean |
1 |
3 |
['github-actions', 'mathlib-merge-conflicts'] |
j-loreaux assignee:j-loreaux |
1-37857 1 day ago |
1-55166 1 day ago |
6-18298 6 days |
| 36667 |
NoneMore author:NoneMore |
feat(ModelTheory): add `exClosure` definition for first-order formulas |
Prepare for moving realizations between elementarily equivalent structures.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-logic
|
37/0 |
Mathlib/ModelTheory/Semantics.lean,Mathlib/ModelTheory/Syntax.lean |
2 |
2 |
['github-actions'] |
awainverse assignee:awainverse |
1-33309 1 day ago |
11-43009 11 days ago |
11-43003 11 days |
| 36571 |
harahu author:harahu |
doc(Combinatorics): fix typos |
Found by `PyCharm`'s code inspection tool. Fixes were made by Codex.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
24/24 |
Mathlib/Combinatorics/Colex.lean,Mathlib/Combinatorics/Enumerative/DoubleCounting.lean,Mathlib/Combinatorics/Enumerative/IncidenceAlgebra.lean,Mathlib/Combinatorics/Matroid/Basic.lean,Mathlib/Combinatorics/Matroid/Circuit.lean,Mathlib/Combinatorics/Matroid/Map.lean,Mathlib/Combinatorics/Matroid/Minor/Contract.lean,Mathlib/Combinatorics/Matroid/Rank/ENat.lean,Mathlib/Combinatorics/Nullstellensatz.lean,Mathlib/Combinatorics/SetFamily/FourFunctions.lean,Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Bipartite.lean,Mathlib/Combinatorics/SimpleGraph/Extremal/TuranDensity.lean,Mathlib/Combinatorics/SimpleGraph/FiveWheelLike.lean,docs/references.bib |
15 |
4 |
['IvanRenison', 'github-actions', 'harahu'] |
nobody |
1-32271 1 day ago |
13-64218 13 days ago |
13-64212 13 days |
| 37046 |
justus-springer author:justus-springer |
feat(CategoryTheory/Triangulated): Generators in triangulated categories |
Define strong and classical generators in triangulated categories. See also the [zulip thread](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Generators.20in.20triangulated.20categories/with/573268390).
---
- [x] depends on: #37080
- [x] depends on: #37081
- [x] depends on: #37083
- [x] depends on: #37085
- [x] depends on: #37090
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
276/0 |
Mathlib.lean,Mathlib/CategoryTheory/ObjectProperty/Basic.lean,Mathlib/CategoryTheory/ObjectProperty/ClosureShift.lean,Mathlib/CategoryTheory/ObjectProperty/CompleteLattice.lean,Mathlib/CategoryTheory/Triangulated/Generators.lean,docs/references.bib |
6 |
4 |
['github-actions', 'joelriou', 'justus-springer', 'mathlib-dependent-issues'] |
nobody |
1-32208 1 day ago |
1-32269 1 day ago |
1-83904 1 day |
| 32744 |
NoneMore author:NoneMore |
feat(ModelTheory/Definablity): add `DefinableFun` definition and lemmas |
This PR adds two basic shapes of definable sets and `DefinableFun` definition with relevant lemmas.
The main result is `Set.Definable.preimage_of_map` asserting that the preimage of a definable set under a definable map is definable.
There are also some tool lemmas derived by the preimage lemma.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-logic
|
147/0 |
Mathlib/ModelTheory/Definability.lean |
1 |
60 |
['NoneMore', 'github-actions', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot', 'staroperator'] |
nobody |
1-31184 1 day ago |
1-31165 1 day ago |
96-75793 96 days |
| 36378 |
EtienneC30 author:EtienneC30 |
refactor: define the geometric distribution via a sum of Dirac masses |
Change the definition of `geometricMeasure p` to be
`Measure.sum (fun n ↦ ENNReal.ofReal ((1 - p) ^ n * p)) • (.dirac n))`
instead of using `PMF`. This allows to directly use API for measures instead of having to develop an API for `PMF`, which anyway is defined as a sum of Dirac masses.
Also add some results about integrals against the geometricMeasure.
---
- [x] depends on: #36355
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
large-import
|
135/25 |
Mathlib/MeasureTheory/Measure/Dirac.lean,Mathlib/Probability/Distributions/Geometric.lean |
2 |
18 |
['DavidLedvinka', 'EtienneC30', 'b-mehta', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
RemyDegenne assignee:RemyDegenne |
1-30403 1 day ago |
1-30429 1 day ago |
17-10117 17 days |
| 34268 |
gasparattila author:gasparattila |
feat(Topology/Sets): continuity of operations on `(Nonempty)Compacts` |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
144/17 |
Mathlib/Topology/Sets/Compacts.lean,Mathlib/Topology/Sets/VietorisTopology.lean,Mathlib/Topology/UniformSpace/Closeds.lean |
3 |
4 |
['github-actions', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
j-loreaux assignee:j-loreaux |
1-29338 1 day ago |
1-29362 1 day ago |
62-27394 62 days |
| 36202 |
vihdzp author:vihdzp |
feat: more theorems on the Cantor normal form |
We also remove some redundant assumptions.
Used in the CGT repo.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
68/17 |
Mathlib/SetTheory/Ordinal/CantorNormalForm.lean |
1 |
16 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
b-mehta assignee:b-mehta |
1-28536 1 day ago |
1-28560 1 day ago |
20-22374 20 days |
| 37027 |
mike1729 author:mike1729 |
refactor(LocallyConvex,Topology): split WeakDual/WeakSpace and rename WeakBilin |
Reorganize the weak topology files for cleaner dependencies:
1. **Rename** `Analysis.LocallyConvex.WeakDual` → `Analysis.LocallyConvex.WeakBilin`:
This file contains only general `WeakBilin` infrastructure (`LinearMap.toSeminormFamily`,
`weakBilin_withSeminorms`, `WeakBilin.locallyConvexSpace`, etc.) with no reference to
`WeakDual`. The name now reflects the content.
2. **Split** `Topology.Algebra.Module.WeakDual` into `WeakDual` and `WeakSpace`:
The `WeakSpace` type, its instances, and `toWeakSpace`/`toWeakSpaceCLM` move to a new
`Topology.Algebra.Module.WeakSpace`. This allows downstream files about weak spaces
to avoid depending on `WeakDual`.
3. **Add** `WeakSpace.seminormFamily` and `WeakSpace.withSeminorms` to
`Analysis.LocallyConvex.WeakSpace`: The weak topology on `WeakSpace 𝕜 E` is generated
by the seminorm family `fun f x ↦ ‖f x‖` indexed by `StrongDual 𝕜 E`, via the general
`LinearMap.weakBilin_withSeminorms` applied to the flipped `topDualPairing`.
Moves:
- Mathlib.Analysis.LocallyConvex.WeakDual -> Mathlib.Analysis.LocallyConvex.WeakBilin
- WeakSpace -> Mathlib.Topology.Algebra.Module.WeakSpace
- toWeakSpace -> Mathlib.Topology.Algebra.Module.WeakSpace
- toWeakSpaceCLM -> Mathlib.Topology.Algebra.Module.WeakSpace
CC @j-loreaux |
new-contributor
file-removed
|
192/114 |
Mathlib.lean,Mathlib/Analysis/LocallyConvex/WeakBilin.lean,Mathlib/Analysis/LocallyConvex/WeakSpace.lean,Mathlib/Analysis/Normed/Module/WeakDual.lean,Mathlib/Topology/Algebra/Module/WeakDual.lean,Mathlib/Topology/Algebra/Module/WeakSpace.lean |
6 |
3 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
1-26468 1 day ago |
1-27267 1 day ago |
3-25935 3 days |
| 37129 |
JovanGerb author:JovanGerb |
chore: avoid `unfold _; infer_instance` |
Avoid the pattern `unfold _; infer_instance` whenever possible by using either `inferInstanceAs`, or `deriving`.
---
[](https://gitpod.io/from-referrer/)
|
|
105/193 |
Archive/Examples/PropEncodable.lean,Archive/Imo/Imo1987Q1.lean,Archive/MiuLanguage/Basic.lean,Archive/MiuLanguage/DecisionNec.lean,Mathlib/Algebra/Category/FGModuleCat/EssentiallySmall.lean,Mathlib/Algebra/ContinuedFractions/Basic.lean,Mathlib/Algebra/Order/Archimedean/Class.lean,Mathlib/Algebra/Order/Ring/StandardPart.lean,Mathlib/Algebra/Polynomial/Degree/Defs.lean,Mathlib/Algebra/Polynomial/Eval/Defs.lean,Mathlib/AlgebraicGeometry/Morphisms/Etale.lean,Mathlib/Analysis/Normed/Lp/lpSpace.lean,Mathlib/CategoryTheory/Category/RelCat.lean,Mathlib/CategoryTheory/GlueData.lean,Mathlib/CategoryTheory/Sites/GlobalSections.lean,Mathlib/CategoryTheory/Skeletal.lean,Mathlib/Combinatorics/KatonaCircle.lean,Mathlib/Combinatorics/SimpleGraph/Operations.lean,Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean,Mathlib/Computability/TuringMachine/PostTuringMachine.lean,Mathlib/Data/FP/Basic.lean,Mathlib/Data/Fintype/Defs.lean,Mathlib/Data/Ordmap/Invariants.lean,Mathlib/Geometry/Manifold/Bordism.lean,Mathlib/Geometry/Manifold/Immersion.lean,Mathlib/GroupTheory/FreeGroup/Basic.lean,Mathlib/Logic/Encodable/Basic.lean,Mathlib/Logic/Equiv/Multiset.lean,Mathlib/MeasureTheory/MeasurableSpace/Constructions.lean,Mathlib/MeasureTheory/OuterMeasure/AE.lean,Mathlib/ModelTheory/LanguageMap.lean,Mathlib/NumberTheory/Cyclotomic/Basic.lean,Mathlib/NumberTheory/Zsqrtd/Basic.lean,Mathlib/Order/Antisymmetrization.lean,Mathlib/Probability/UniformOn.lean,Mathlib/RepresentationTheory/Homological/GroupCohomology/LowDegree.lean,Mathlib/RepresentationTheory/Homological/GroupHomology/LowDegree.lean,Mathlib/RingTheory/MvPolynomial/MonomialOrder.lean,Mathlib/SetTheory/Cardinal/Free.lean,Mathlib/SetTheory/Lists.lean,Mathlib/SetTheory/Ordinal/Notation.lean,Mathlib/SetTheory/ZFC/Basic.lean,Mathlib/Topology/List.lean,Mathlib/Topology/MetricSpace/GromovHausdorffRealized.lean |
44 |
3 |
['JovanGerb', 'eric-wieser', 'github-actions'] |
nobody |
1-21707 1 day ago |
1-59065 1 day ago |
1-63833 1 day |
| 37076 |
ertwro author:ertwro |
feat(Combinatorics/SimpleGraph/Hasse): Hasse diagram is triangle-free |
Add `SimpleGraph.hasse_cliqueFree_three`: the Hasse diagram of a preorder is triangle-free (`CliqueFree 3`).
This is the graph-theoretic formulation of `not_covBy_of_lt_of_lt`: if `a ⋖ b` and `b ⋖ c`, then `¬ a ⋖ c`, so no three elements can be pairwise adjacent in the Hasse diagram.
The proof extracts three vertices from a hypothetical 3-clique, case-splits on the covering directions (8 cases), and closes each by `not_covBy_of_lt_of_lt` (6 transitive cases) or `lt_asymm` (2 cyclic cases).
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
13/1 |
Mathlib/Combinatorics/SimpleGraph/Hasse.lean |
1 |
11 |
['SnirBroshi', 'ertwro', 'github-actions'] |
nobody |
1-21528 1 day ago |
2-37277 2 days ago |
2-37271 2 days |
| 36854 |
YaelDillies author:YaelDillies |
chore(Combinatorics/SimpleGraph): rename `Walks` folder to `Walk` |
It is unusual to pluralise folder names, and furthermore this folder is about the `Walk` type.
---
[](https://gitpod.io/from-referrer/)
|
file-removed
t-combinatorics
|
19/19 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Finite.lean,Mathlib/Combinatorics/SimpleGraph/Paths.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Counting.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Decomp.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Maps.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Operations.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Subwalks.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Traversal.lean |
11 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
1-21093 1 day ago |
1-21123 1 day ago |
7-6274 7 days |
| 36174 |
mike1729 author:mike1729 |
feat(Topology/Compactness): add countably compact sets |
This PR introduces the theory of countably compact sets and spaces. The motivation was the Eberlein–Šmulian theorem but of course this theory is of its own interest and there are many more applications.
New definitions:
- `IsCountablyCompact A`: a set `A` is countably compact if every sequence in `A`
has a cluster point in `A`.
- `CountablyCompactSpace E`: the whole space `E` is countably compact.
Main results:
- `IsCountablyCompact.elim_finite_subcover`: finite subcover from any countable open cover.
- `isCountablyCompact_iff_countable_open_cover`: equivalence with the finite-subcover property.
- `IsCompact.IsCountablyCompact`: compact implies countably compact.
- `IsSeqCompact.IsCountablyCompact`: sequentially compact implies countably compact.
- `IsCountablyCompact.isSeqCompact`: countably compact implies sequentially compact
in a first-countable space.
- `isCountablyCompact_iff_infinite_subset_has_accPt`: Bolzano–Weierstrass characterisation
in a T₁ space.
- `IsLindelof.isCompact`: a countably compact Lindelöf set is compact.
- `IsCountablyCompact.image`: continuous images of countably compact sets are countably compact.
- Union stability: binary, `Finset`, `Set.Finite`, and `iUnion` variants.
Co-authored-by: Yongxi Lin @CoolRmal
---
This PR adds `Mathlib.Topology.Compactness.CountablyCompact`, a new file alongside the existing `Compact`, `SeqCompact`, and `Lindelof` files.
The primary definition follows Engelking's *General Topology* (the cluster-point characterisation for sequences), and the equivalence with the finite-subcover characterisation is established immediately.
The immediate motivation for this PR is #35473 (Eberlein–Šmulian theorem), which depends on it. Further PRs will extend the theory of countably compact spaces.
-->
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-topology
|
311/0 |
Mathlib.lean,Mathlib/Topology/ClusterPt.lean,Mathlib/Topology/Compactness/CountablyCompact.lean |
3 |
27 |
['github-actions', 'j-loreaux', 'mike1729', 'plp127'] |
j-loreaux assignee:j-loreaux |
1-20809 1 day ago |
1-25125 1 day ago |
19-71757 19 days |
| 37159 |
vihdzp author:vihdzp |
chore: rename `CoxeterMatrix.Aₙ` → `CoxeterMatrix.A` |
To match the Cartan matrix API. See [Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Progress.20on.20Coxeter.20groups/near/581584969).
---
[](https://gitpod.io/from-referrer/)
|
|
12/4 |
Mathlib/GroupTheory/Coxeter/Matrix.lean |
1 |
1 |
['github-actions'] |
nobody |
1-20207 1 day ago |
1-20275 1 day ago |
1-20269 1 day |
| 37075 |
SproutSeeds author:SproutSeeds |
feat: extend `@[reassoc]` to `LinearMap` |
Closes #34342.
This follows the collaborator notes from the issue thread by keeping the `LinearMap`
`@[reassoc]` extension out of `CategoryTheory` and by splitting the relevant
universes instead of forcing the codomain universes to coincide.
Summary:
- add `Mathlib.Tactic.LinearMapReassoc`
- extend the existing `@[reassoc]` machinery to generate `_assoc` lemmas for equalities of linear maps
- fold the coverage into `MathlibTest/CategoryTheory/Reassoc.lean`
Verification:
- `COPYFILE_DISABLE=1 ~/.elan/bin/lake build Mathlib.Tactic.LinearMapReassoc MathlibTest.CategoryTheory.Reassoc`
- `COPYFILE_DISABLE=1 ~/.elan/bin/lake build Mathlib.Tactic`
|
t-meta
new-contributor
|
95/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/LinearMapReassoc.lean,MathlibTest/CategoryTheory/Reassoc.lean |
4 |
4 |
['github-actions', 'themathqueen'] |
nobody |
1-15432 1 day ago |
2-40392 2 days ago |
2-40796 2 days |
| 37164 |
Vierkantor author:Vierkantor |
chore(Logic): deprecate `forall_swap` and `exists_swap` |
This PR deprecates the lemmas `forall_swap` and `exists_swap`, which are duplicates of the lemmas `forall_comm` and `exists_comm` in `Init.PropLemmas`. I prefer the `_comm` names, and the number of usages of `_comm` is noticeably higher than `_swap` in the library.
Also rename `forall₂_swap` to `forall₂_comm` for consistency.
---
[](https://gitpod.io/from-referrer/)
|
|
139/139 |
Mathlib/Algebra/Group/Opposite.lean,Mathlib/Algebra/MvPolynomial/Basic.lean,Mathlib/Algebra/Order/Monovary.lean,Mathlib/Analysis/BoxIntegral/Basic.lean,Mathlib/Analysis/Convex/Cone/Dual.lean,Mathlib/Analysis/Convex/Cone/InnerDual.lean,Mathlib/Analysis/LocallyConvex/Bounded.lean,Mathlib/Analysis/Normed/Group/AddCircle.lean,Mathlib/Analysis/Normed/Module/Multilinear/Basic.lean,Mathlib/CategoryTheory/Monoidal/Braided/Reflection.lean,Mathlib/Combinatorics/Additive/FreimanHom.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/EdgeConnectivity.lean,Mathlib/Combinatorics/SimpleGraph/Copy.lean,Mathlib/Computability/TuringMachine/ToPartrec.lean,Mathlib/Data/Finset/Lattice/Fold.lean,Mathlib/Data/Finset/Lattice/Prod.lean,Mathlib/Data/Finset/Lattice/Union.lean,Mathlib/Data/Finset/NAry.lean,Mathlib/Data/Finset/PImage.lean,Mathlib/Data/Finset/Slice.lean,Mathlib/Data/Finset/Union.lean,Mathlib/Data/List/Basic.lean,Mathlib/Data/List/Nodup.lean,Mathlib/Data/Multiset/Fintype.lean,Mathlib/Data/PEquiv.lean,Mathlib/Data/Set/Lattice/Image.lean,Mathlib/Data/Set/NAry.lean,Mathlib/Data/Set/Prod.lean,Mathlib/Dynamics/Ergodic/Conservative.lean,Mathlib/Geometry/Convex/Cone/Dual.lean,Mathlib/Geometry/Manifold/PartitionOfUnity.lean,Mathlib/GroupTheory/GroupAction/Basic.lean,Mathlib/GroupTheory/MonoidLocalization/Basic.lean,Mathlib/GroupTheory/Perm/Cycle/Factors.lean,Mathlib/LinearAlgebra/BilinearForm/DualLattice.lean,Mathlib/LinearAlgebra/Matrix/Block.lean,Mathlib/LinearAlgebra/Matrix/InvariantBasisNumber.lean,Mathlib/LinearAlgebra/Matrix/Stochastic.lean,Mathlib/LinearAlgebra/Span/Basic.lean,Mathlib/Logic/Basic.lean,Mathlib/MeasureTheory/Measure/FiniteMeasure.lean,Mathlib/MeasureTheory/Measure/MeasureSpace.lean,Mathlib/MeasureTheory/Measure/ProbabilityMeasure.lean,Mathlib/NumberTheory/Divisors.lean,Mathlib/Order/Bounds/Lattice.lean,Mathlib/Order/Cover.lean,Mathlib/Order/Disjoint.lean,Mathlib/Order/Filter/AtTopBot/Basic.lean,Mathlib/Order/Filter/AtTopBot/Finite.lean,Mathlib/Order/Filter/Bases/Basic.lean,Mathlib/Order/Filter/ENNReal.lean,Mathlib/Order/Filter/Ker.lean,Mathlib/Order/Filter/Map.lean,Mathlib/Order/Filter/Prod.lean,Mathlib/Order/Hom/Basic.lean,Mathlib/Order/InitialSeg.lean,Mathlib/Order/KrullDimension.lean,Mathlib/Order/Monotone/Basic.lean,Mathlib/Order/Monotone/Defs.lean,Mathlib/Order/Monotone/Monovary.lean,Mathlib/Order/OmegaCompletePartialOrder.lean,Mathlib/Order/UpperLower/Basic.lean,Mathlib/Probability/Process/Stopping.lean,Mathlib/RingTheory/Nilpotent/Basic.lean,Mathlib/RingTheory/Nilpotent/Lemmas.lean,Mathlib/RingTheory/Nullstellensatz.lean,Mathlib/RingTheory/Spectrum/Prime/Topology.lean,Mathlib/Topology/AlexandrovDiscrete.lean,Mathlib/Topology/Algebra/Module/LinearMapPiProd.lean,Mathlib/Topology/Algebra/UniformFilterBasis.lean,Mathlib/Topology/ContinuousOn.lean,Mathlib/Topology/GDelta/Basic.lean,Mathlib/Topology/MetricSpace/PartitionOfUnity.lean,Mathlib/Topology/Order.lean,Mathlib/Topology/Semicontinuity/Hemicontinuity.lean,Mathlib/Topology/Separation/Basic.lean,Mathlib/Topology/Separation/Regular.lean,Mathlib/Topology/Specialization.lean,Mathlib/Topology/UniformSpace/Cauchy.lean,Mathlib/Topology/UniformSpace/Equicontinuity.lean,Mathlib/Topology/UniformSpace/LocallyUniformConvergence.lean,Mathlib/Topology/UniformSpace/UniformConvergenceTopology.lean |
82 |
1 |
['github-actions'] |
nobody |
1-12580 1 day ago |
1-12646 1 day ago |
1-12640 1 day |
| 36922 |
SnirBroshi author:SnirBroshi |
feat(Data/List/Chain): generalize `WellFounded.asymmetric₃` to chains |
The existing `WellFounded.asymmetric` shows `r a b → ¬r b a`,
and `WellFounded.asymmetric₃` shows `r a b → r b c → ¬r c a`.
This adds `WellFounded.asymmetricₙ` which shows `l.IsChain r → ¬r l.getLast l.head`.
---
Also adds a couple of `IsChain` lemmas which might be useful.
[](https://gitpod.io/from-referrer/)
|
t-data |
29/8 |
Mathlib/Data/List/Chain.lean |
1 |
4 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
joneugster assignee:joneugster |
1-12397 1 day ago |
1-12420 1 day ago |
5-48490 5 days |
| 34705 |
mpenciak author:mpenciak |
feat(RingTheory): Grassmannian functor |
This PR shows that the association `A → A ⊗[R] M` for an `R`-module `M`, and `R`-algebra `A` forms a functor.
(Disclosure: This PR was partially prepared by Claude)
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
LLM-generated
|
120/2 |
Mathlib/LinearAlgebra/TensorProduct/Tower.lean,Mathlib/RingTheory/Grassmannian.lean |
2 |
9 |
['chrisflav', 'github-actions', 'mathlib-merge-conflicts', 'mpenciak', 'robin-carlier'] |
chrisflav assignee:chrisflav |
1-11228 1 day ago |
1-11301 1 day ago |
36-81600 36 days |
| 36850 |
whocares-abt author:whocares-abt |
feat(Combinatorics/SimpleGraph/Acyclic): add delete leaf from tree gives tree |
Added theorem stating Deleting a leaf from a tree produces a tree. |
t-combinatorics
new-contributor
|
5/0 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean |
1 |
7 |
['github-actions', 'vlad902'] |
nobody |
1-10955 1 day ago |
5-35943 5 days ago |
7-18793 7 days |
| 37026 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(Data/Nat/Perm): add two lemmas |
If a finite type has at most two elements, then its permutation group is cyclic and commutative.
---
- [x] depends on: #36983
[](https://gitpod.io/from-referrer/)
|
large-import |
34/1 |
Mathlib/Data/Finite/Perm.lean |
1 |
3 |
['github-actions', 'mathlib-dependent-issues', 'tb65536'] |
nobody |
1-10237 1 day ago |
1-10247 1 day ago |
2-72521 2 days |
| 37167 |
joelriou author:joelriou |
feat(CategoryTheory/Monoidal): use `to_additive` for monoid objects |
We apply the `to_additive` attribute to the declarations in the file `Mathlib/CategoryTheory/Monoidal/Mon_.lean`: this defines additive monoid objects in a monoidal category.
This shall be used in #36913 in order to define ring objects.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
294/86 |
Mathlib/CategoryTheory/Monoidal/Mon_.lean,Mathlib/Tactic/Translate/ToAdditive.lean |
2 |
1 |
['github-actions'] |
nobody |
1-8316 1 day ago |
1-8440 1 day ago |
1-8434 1 day |
| 36216 |
michaellee94 author:michaellee94 |
feat(CategoryTheory): characterize pullback squares via the `Over` category |
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
new-contributor
|
48/0 |
Mathlib/CategoryTheory/Limits/Shapes/Pullback/IsPullback/Basic.lean |
1 |
11 |
['dagurtomas', 'github-actions', 'joelriou', 'michaellee94'] |
robin-carlier assignee:robin-carlier |
1-7061 1 day ago |
1-7061 1 day ago |
2-40327 2 days |
| 26735 |
Raph-DG author:Raph-DG |
feat(AlgebraicGeometry): The codimension of a point of a scheme is equal to the krull dimension of the stalk |
In this PR we show that the codimension of a point in a scheme is equal to the krull dimension of the local ring at that point, as in stacks 02IZ.
---
The proof of the main result `stalk_dim_eq_coheight` is currently a bit long for my (and I suspect the broader community's) tastes. That said, I'm not quite sure the best way to break it into pieces, any comments would be very much appreciated!
- [x] depends on: #26204 [For the notion of codimension, here we are using the coheight in the specialization order. ]
- [x] depends on: #26225
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry |
148/0 |
Mathlib/AlgebraicGeometry/Properties.lean,Mathlib/AlgebraicGeometry/Scheme.lean,Mathlib/Order/KrullDimension.lean,Mathlib/Topology/Continuous.lean,Mathlib/Topology/KrullDimension.lean,Mathlib/Topology/Sets/Closeds.lean |
6 |
62 |
['Raph-DG', 'chrisflav', 'erdOne', 'github-actions', 'leanprover-community-bot-assistant', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'tb65536'] |
erdOne assignee:erdOne |
1-3743 1 day ago |
1-3743 1 day ago |
46-64039 46 days |
| 36549 |
j-loreaux author:j-loreaux |
refactor: use `IsMulCommutative` ubiquitously for subobjects |
[#mathlib4 > commutativity of subobjects](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/commutativity.20of.20subobjects/with/578039488)
The algebraic hierarchy is designed so that commutativity (e.g., of multiplication) is bundled
into the type class, so that we have, for example `Group` and `CommGroup`, `Ring` and `CommRing`,
etc.
It is often the case that one may desire to work with a commutative subobject inside an
ambient noncommutative type. In cases like `Subgroup.center` or `Subring.center`, the subobject is
*always* commutative, and in these cases one should simply imbue those subobjects (coerced to
`Type`) with the appropriate `Comm*` instance. However, in other cases, the commutativity of the
subobject may be conditional on commutativity of some other object. For example,
`Subgroup.closure s` is not always commutative, but it is when `s` is a commutative subset.
Likewise, if `S : Subgroup G` is a commutative subgroup, then `S.topologicalClosure` is also
commutative.
For such scenarios, users should prefer to use the unbundled `IsMulCommutative` typeclass, and to
provide theorems such as:
```lean
theorem isMulCommutative_closure {G : Type*} [Group G] {k : Set G}
(hcomm : ∀ x ∈ k, ∀ y ∈ k, x * y = y * x) :
IsMulCommutative (closure k)
```
or even *instances* such as
```lean
instance Subgroup.instIsMulCommutative_closure {S G : Type*} [Group G] [SetLike S G]
[MulMemClass S G] (s : S) [IsMulCommutative s] :
IsMulCommutative (closure (s : Set G))
```
and
```lean
instance Subgroup.isMulCommutative_topologicalClosure [T2Space G] (s : Subgroup G)
[IsMulCommutative s] : IsMulCommutative s.topologicalClosure
```
Note that we prefer to name these instances manually because they are occasionally useful as
theorems. For example, the proof of the topological closure instance for subgroups above is proved
immediately from the one for monoids via: `s.toSubmonoid.isMulCommutative_topologicalClosure`.
In practice, we wish to be able to use the library of theorems about (bundled) commutativity for
subobjects as well, and so we also provide instances which take as input the unbundled
`Group G` and `IsMulCommutative G` and produce the bundled `CommGroup G`. However, to avoid
deleterious effects to type class synthesis for bundled commutativity (by forcing Lean to search
the entirery of both the bundled and unbundled hierarchies), these instances are only
available inside the `IsMulCommutative` scope and are simultaneously given the very low priority
`50`.
---
- [ ] depends on: #36546
- [ ] depends on: #36547
- [ ] depends on: #36548
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
576/133 |
Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean,Mathlib/Algebra/Algebra/Subalgebra/Lattice.lean,Mathlib/Algebra/Group/Defs.lean,Mathlib/Algebra/Group/Subgroup/Defs.lean,Mathlib/Algebra/Group/Subgroup/Map.lean,Mathlib/Algebra/Group/Subsemigroup/Defs.lean,Mathlib/Algebra/HierarchyDesign.lean,Mathlib/Algebra/Ring/Defs.lean,Mathlib/Algebra/Ring/Subring/Basic.lean,Mathlib/Algebra/Ring/Subsemiring/Basic.lean,Mathlib/Algebra/Star/NonUnitalSubalgebra.lean,Mathlib/Algebra/Star/Subalgebra.lean,Mathlib/CategoryTheory/Center/Linear.lean,Mathlib/CategoryTheory/Center/NegOnePow.lean,Mathlib/CategoryTheory/Monoidal/Cartesian/Grp_.lean,Mathlib/CategoryTheory/Monoidal/Cartesian/Mon_.lean,Mathlib/Data/ZMod/QuotientGroup.lean,Mathlib/FieldTheory/Galois/Abelian.lean,Mathlib/GroupTheory/Focal.lean,Mathlib/GroupTheory/IsPerfect.lean,Mathlib/GroupTheory/Schreier.lean,Mathlib/GroupTheory/SchurZassenhaus.lean,Mathlib/GroupTheory/SpecificGroups/Cyclic.lean,Mathlib/GroupTheory/SpecificGroups/ZGroup.lean,Mathlib/GroupTheory/Subgroup/Centralizer.lean,Mathlib/GroupTheory/Submonoid/Centralizer.lean,Mathlib/GroupTheory/Subsemigroup/Centralizer.lean,Mathlib/GroupTheory/Transfer.lean,Mathlib/NumberTheory/NumberField/CMField.lean,Mathlib/RepresentationTheory/AlgebraRepresentation/Basic.lean,Mathlib/RepresentationTheory/Irreducible.lean,Mathlib/RingTheory/NonUnitalSubring/Basic.lean,Mathlib/RingTheory/NonUnitalSubsemiring/Basic.lean,Mathlib/Topology/Algebra/Algebra.lean,Mathlib/Topology/Algebra/NonUnitalAlgebra.lean,Mathlib/Topology/Algebra/NonUnitalStarAlgebra.lean,Mathlib/Topology/Algebra/StarSubalgebra.lean |
37 |
4 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
dagurtomas assignee:dagurtomas |
1-911 1 day ago |
1-977 1 day ago |
9-59262 9 days |
| 37170 |
tb65536 author:tb65536 |
feat(RingTheory/Artinian/Module): add `pow` version of `quotNilradicalEquivPi` |
This PR upgrades `IsArtinianRing.quotNilradicalEquivPi` and adds a `pow` version.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
large-import
label:t-algebra$ |
33/12 |
Mathlib/RingTheory/Artinian/Module.lean,Mathlib/RingTheory/Spectrum/Maximal/Basic.lean |
2 |
2 |
['github-actions', 'tb65536'] |
nobody |
1-237 1 day ago |
1-237 1 day ago |
1-232 1 day |
| 37172 |
DavidLedvinka author:DavidLedvinka |
feat(Analysis): add resolvent derivatives in the algebra component |
I would take suggestions for better names. |
|
17/1 |
Mathlib/Analysis/Normed/Algebra/GelfandFormula.lean |
1 |
2 |
['github-actions'] |
nobody |
0-85501 23 hours ago |
0-85667 23 hours ago |
0-85661 23 hours |
| 36760 |
SnirBroshi author:SnirBroshi |
feat(GroupTheory/Subgroup): basic API for set normalizers |
---
Since `@[to_additive]` [doesn't work](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/MulAut.20and.20to_additive/with/577355267) on `MulAut` (because `AddAut` wants to use multiplicative syntax) I've had to translate 2 theorems manually.
~~FWIW I think that `setNormalizer` should replace `normalizer`, as this old TODO says:~~
https://github.com/leanprover-community/mathlib4/blob/34ad346d5509066e2d41dc59c6a92a917ba55661/Mathlib/Algebra/Group/Subgroup/Defs.lean#L674
~~This will join `Subgroup.centralizer` which is already defined on sets rather than subgroups (and subgroups can use it thanks to their `SetLike`).~~
~~If you agree I'll create a separate PR that does it. Though it shouldn't block this PR.~~
- [x] depends on: #36852
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
115/33 |
Mathlib/Algebra/Group/Subgroup/Basic.lean,Mathlib/Algebra/Group/Subgroup/Defs.lean,Mathlib/Algebra/Group/Subgroup/Pointwise.lean,Mathlib/GroupTheory/Commutator/Basic.lean,Mathlib/GroupTheory/GroupAction/Quotient.lean,Mathlib/GroupTheory/Nilpotent.lean,Mathlib/GroupTheory/Subgroup/Center.lean,Mathlib/GroupTheory/Subgroup/Centralizer.lean |
8 |
11 |
['SnirBroshi', 'github-actions', 'mathlib-dependent-issues', 'tb65536'] |
tb65536 assignee:tb65536 |
0-84626 23 hours ago |
3-12138 3 days ago |
7-34962 7 days |
| 36837 |
nielstron author:nielstron |
feat(Computability/ContextFreeGrammar): Closure properties |
---
This PR is a rewrite of the closure property proofs of CFGs from scratch.
The proof follows the approach by Ullman and Hopcroft in
"Introduction to Automata Theory, Languages and Computation".
It should make #33601 #33592 and #33599 superfluous.
The main proof was created assisted by Aristotle, and then read and restructured by me.
Update: I noticed the same proof strategy would lend itself to show closure properties of regular languages, if there is interest in that.
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-computability
LLM-generated
|
1598/0 |
Mathlib.lean,Mathlib/Computability/ContextFreeGrammar.lean,Mathlib/Computability/ContextFreeGrammarClosure.lean,Mathlib/Computability/Language.lean,Mathlib/Data/List/Lemmas.lean |
5 |
3 |
['github-actions', 'nielstron'] |
nobody |
0-84394 23 hours ago |
0-84444 23 hours ago |
6-8538 6 days |
| 35928 |
xgenereux author:xgenereux |
feat(Subalgebra/Lattice): add notation for Algebra.adjoin |
This PR proposes a scoped notation for Algebra.adjoin, `R[a]`, inspired from `IntermediateField.adjoin`.
See [here](https://live.lean-lang.org/#codez=JYWwDg9gTgLgBAWQIYwBYBtgCMBQOC0+cAggCZJgwCmpcAxhKVXAGZQQhwAGAkgHbUoIGsBRUAYsCrpSXAHQ4+SYQGcwSOs2LoA5lSxQkeCGCp84AGSpJzwPjgD0hOAGUArmEiw7O1m750MMAQ5izQcGjMXABKANoAHoCBBAA08YBBBMlyWamAmQQAulxwSKQAVv6BweZ8EDAolXJw+A44YFDAAG5icMK1cEws3QDW/CpUsAAqY5wA3pwAXHDjAJ6mcIBJhIsrVAC+cLEIIcXdeXsHSqQAim41dSHHOHCPcAAU8SpwC+MuSwJI8cRQQxLbiCEAASg+3UWUw+AF44FB/HAAAxwADuqDGVAeCKRz2AkIAcigIQtOJMhHC+hAcY9gANUJCCQBqOAARjg8LechUwAAXsxIvYnk8uFxnry+Dp0FQYHcACSvFSxYB5MFg2lwaSjOD0uCMhYEgA8cG5vIFEUxwpF3HFdlGsDgireKrVTuegATCXHmfFwVls9UakXa7E223PACi4BgSwAwhB0DKKiE5FRo3GE0mgiENY5nDwBlwkqa0nAsg14jlIcRCkLuHEkqkMuXcgVde9Itx3FgkLp9IY4NESFwcHo+GMxLQsMDIjrpGmzDAVA0mjgVAxTLQQBp2HMAJxs5GogDSc1BcAARLEL6aVGepskAFSXvI3hbn2EAPmp4eKJQgdhOse7peiAwx8A6MAUpw3J6DAEYyiAKjqsYpjmFYNhwAAClAsoxjhdiCHIAAi0hIFg0AoOE3YRvErS6vYAACsQUGAAD6TDoORJB9gYSByH+AF8HkOA9EgcDqN4vZ9FQAyceRZD/nYhI3Nm5gLKRXFYFSGJmFhWEAPKUJUcBwfpKm1Gp1I4jK8DMF6cG0a0OI6G4SBQLQRoAD5anIwAqMQngGSwALADGtqCYBABsNmynA4hwF6aJhagxJQEsAK+Ki8m4I8tm3ol6IpWlGVQL4ACsMlaSMYwwACQI4uK8riLEzrLnK9VIEsYJPmqOC6bhOI5TVsCdcCGlkVgCAvBY/nwNBpLwqQNIivl9mmbKTlQJqepUH5AVBSFbThWKUaUBmiZUMmfCpum8aXddcAAEyWmYmqPLhMBuFA5ixCJwboDqu37YFYDBaFJ1cJK0qyncAAsr3WqtcXxIVyVoCVmVwAAzFV5HvQisrfb98T/U8Ia6gMe3+aD4PHcCYr2rVcCVUKBP5ajSXFe5pW+LjOXsyj7xcxjPNYwjw0QbVY0E59xOmh8CxvJqFMsEgwDoN92I4GYtDaHofF4M4tHKGAMoqHgoyPdUQi9gAqqMsZIKMqFmDxBuGEbRAqbb6BwG4LudG05Eyi8Q7EJCyymI+EKxPGIAgC4abAG0UqDicsRJyAKc+CQGf6/24nhyc0zidpdDVtseBUPEpuhwscRICc8KN8kRQnHM8LTnAvLgHgADEdCYnQgyDixImD8Po+t3AWAT0PV3TyxbdYG3dAiTrfC0Db27oA7VBOy7a5XVZdBcSoqB4EHohYKHzzh5HWwx3s8eJ8nqe+NEGdZznafEPnvEBzFzgNMAAGpXV25gsIJh+BwUQ6AcAmDdgXPicAcCT0XmPUBJxnBxGwY/VYbg2Jsmrlveg59L54BwEAA) for a preview of how it would look like.
Note that I am currently using bracked, `[`, `]`. I know this clashes with the notation for `Polynomial`, `DualNumber`, `AdjoinRoot` and `GetElem` but it is my impression that it would rarely cause issues.
See [#mathlib4 > Notation for Algebra.adjoin](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Notation.20for.20Algebra.2Eadjoin/with/576551144).
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
236/186 |
Mathlib/Algebra/Algebra/Subalgebra/Lattice.lean,Mathlib/Algebra/DualNumber.lean,Mathlib/Analysis/Normed/Unbundled/IsPowMulFaithful.lean,Mathlib/FieldTheory/IntermediateField/Adjoin/Algebra.lean,Mathlib/FieldTheory/IntermediateField/Adjoin/Defs.lean,Mathlib/FieldTheory/Minpoly/IsIntegrallyClosed.lean,Mathlib/FieldTheory/Minpoly/MinpolyDiv.lean,Mathlib/LinearAlgebra/Complex/Module.lean,Mathlib/LinearAlgebra/Semisimple.lean,Mathlib/NumberTheory/JacobiSum/Basic.lean,Mathlib/NumberTheory/NumberField/Cyclotomic/Basic.lean,Mathlib/RingTheory/Adjoin/Polynomial/Basic.lean,Mathlib/RingTheory/Adjoin/PowerBasis.lean,Mathlib/RingTheory/Adjoin/Singleton.lean,Mathlib/RingTheory/Algebraic/Basic.lean,Mathlib/RingTheory/Conductor.lean,Mathlib/RingTheory/IntegralClosure/IsIntegralClosure/Basic.lean,Mathlib/RingTheory/Polynomial/Eisenstein/IsIntegral.lean,Mathlib/RingTheory/Polynomial/Ideal.lean,Mathlib/RingTheory/RootsOfUnity/Lemmas.lean,Mathlib/RingTheory/Unramified/LocalStructure.lean,Mathlib/RingTheory/Valuation/LocalSubring.lean,Mathlib/Topology/Algebra/Algebra.lean |
23 |
10 |
['github-actions', 'leanprover-radar', 'mathlib-merge-conflicts', 'riccardobrasca', 'xgenereux'] |
riccardobrasca assignee:riccardobrasca |
0-84029 23 hours ago |
2-16922 2 days ago |
17-78882 17 days |
| 36644 |
gdies author:gdies |
feat(CategoryTheory/Adhesive): slices of adhesive categories are adhesive |
contributions:
- Adhesive (Over B) instance — slices of adhesive categories are adhesive.
Found it as Proposition 8(ii) of Adhesive Categories, Lack & Sobociński (2004) while researching for a project. Needed the proof so perhaps others could rely on it too. The proof applies adhesive_of_preserves_and_reflects_isomorphism to Over.forget B, which creates all colimits and creates connected limits.
AI tools used. Claude Opus 4.6 + GitHub Copilot scaffolding
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
new-contributor
LLM-generated
|
39/0 |
Mathlib.lean,Mathlib/CategoryTheory/Adhesive/Over.lean |
2 |
14 |
['erdOne', 'gdies', 'github-actions', 'joelriou', 'robin-carlier'] |
robin-carlier assignee:robin-carlier |
0-83109 23 hours ago |
6-4214 6 days ago |
9-50383 9 days |
| 37174 |
tb65536 author:tb65536 |
chore(GroupTheory/ResiduallyFinite): to_additivize some theorems |
This PR to_additivize's some theorems in `GroupTheory/ResiduallyFinite`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-group-theory
label:t-algebra$ |
19/3 |
Mathlib/GroupTheory/Index.lean,Mathlib/GroupTheory/ResiduallyFinite.lean |
2 |
1 |
['github-actions'] |
nobody |
0-82223 22 hours ago |
0-82223 22 hours ago |
0-82218 22 hours |
| 36416 |
j-loreaux author:j-loreaux |
feat(Analysis/CStarAlgebra): norms of sums of orthogonal selfadjoint elements |
---
- [ ] depends on: #36407
[](https://gitpod.io/from-referrer/)
|
|
84/0 |
Mathlib/Algebra/Star/BigOperators.lean,Mathlib/Analysis/CStarAlgebra/GelfandDuality.lean |
2 |
7 |
['github-actions', 'j-loreaux', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'themathqueen'] |
nobody |
0-81697 22 hours ago |
0-82808 23 hours ago |
1-14747 1 day |
| 36664 |
SnirBroshi author:SnirBroshi |
feat(SetTheory/Ordinal/Commute): characterize when ordinal addition commutes |
---
The proof is from ["Cardinal and Ordinal Numbers"](https://en.wikipedia.org/wiki/Cardinal_and_Ordinal_Numbers).
A similar fact for multiplication is mentioned on [Wikipedia](https://en.wikipedia.org/wiki/Ordinal_arithmetic).
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
51/0 |
Mathlib.lean,Mathlib/SetTheory/Ordinal/Commute.lean,docs/references.bib |
3 |
20 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'plp127', 'vihdzp'] |
alreadydone and vihdzp assignee:alreadydone assignee:vihdzp |
0-80311 22 hours ago |
10-52173 10 days ago |
11-20882 11 days |
| 35559 |
mike1729 author:mike1729 |
feat(Analysis/Normed): weak-topology embedding into weak-star bidual and compactenss transfer theorem |
This PR refactors the double dual material and adds new results connecting the weak topology on a normed space to the weak-star topology on its bidual.
## Changes
### New file: `Analysis.Normed.Module.DoubleDual`
Extracts the canonical embedding `inclusionInDoubleDual` and the bidual isometry `inclusionInDoubleDualLi` from `Analysis.Normed.Module.Dual` into a dedicated file, and adds:
- `inclusionInDoubleDualWeak`: the canonical map from `WeakSpace 𝕜 X` into `WeakDual 𝕜 (StrongDual 𝕜 X)`.
- `inclusionInDoubleDualWeak_isEmbedding`: this map is a topological embedding.
- `inclusionInDoubleDualWeak_homeomorph`: the map as a homeomorphism onto its range.
- `isCompact_closure_of_isBounded`: bounded sets whose bidual image has weak-star closure in range have weakly compact closure, via Banach–Alaoglu.
### Modified: `Analysis.Normed.Module.Dual`
The double dual inclusion material is moved out; polar set results remain. References to `inclusionInDoubleDual` in `polar_closure` are replaced by `ContinuousLinearMap.apply` to avoid a dependency on the new file.
---
CC: @faenuccio this may be relevant for your Goldstine formalization.
|
t-analysis
new-contributor
|
229/91 |
Mathlib.lean,Mathlib/Analysis/LocallyConvex/SeparatingDual.lean,Mathlib/Analysis/LocallyConvex/Separation.lean,Mathlib/Analysis/LocallyConvex/WeakSpace.lean,Mathlib/Analysis/Normed/Module/DoubleDual.lean,Mathlib/Analysis/Normed/Module/Dual.lean,Mathlib/Analysis/Normed/Module/WeakDual.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/FundThmCalculus.lean,Mathlib/MeasureTheory/Measure/CharacteristicFunction/Basic.lean,Mathlib/Probability/Distributions/Gaussian/CharFun.lean |
10 |
58 |
['ADedecker', 'faenuccio', 'github-actions', 'j-loreaux', 'mathlib-merge-conflicts', 'mike1729'] |
faenuccio and j-loreaux assignee:j-loreaux assignee:faenuccio |
0-79619 22 hours ago |
0-79726 22 hours ago |
30-61574 30 days |
| 37175 |
tb65536 author:tb65536 |
chore(GroupTheory/Nilpotent): move declarations into namespace |
This PR moves the declarations of `GroupTheory/Nilpotent` from the root namespace to either the `Subgroup` namespace or the `Group` namespace.
I also switched over to the commutator element notation in a few places.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-group-theory
label:t-algebra$ |
194/34 |
Mathlib/GroupTheory/Commutator/Basic.lean,Mathlib/GroupTheory/Frattini.lean,Mathlib/GroupTheory/Nilpotent.lean,Mathlib/GroupTheory/SpecificGroups/ZGroup.lean |
4 |
1 |
['github-actions'] |
nobody |
0-78346 21 hours ago |
0-78346 21 hours ago |
0-78342 21 hours |
| 36555 |
joelriou author:joelriou |
feat(Algebra/Homology/SpectralObject): the spectral sequence |
This PR constructs the spectral sequence attached to a spectral object in an abelian category.
---
- [x] depends on: #36182
- [x] depends on: #36550
[](https://gitpod.io/from-referrer/)
|
t-category-theory
t-algebra
label:t-algebra$ |
363/2 |
Mathlib/Algebra/Homology/SpectralObject/SpectralSequence.lean |
1 |
16 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'smorel394'] |
erdOne assignee:erdOne |
0-77196 21 hours ago |
4-13148 4 days ago |
4-64652 4 days |
| 37179 |
IvanRenison author:IvanRenison |
feat(Combinatorics/SimpleGraph): add lemmas about left and right elements of `SimpleGraph.sum` |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
25/0 |
Mathlib/Combinatorics/SimpleGraph/Sum.lean |
1 |
1 |
['github-actions'] |
nobody |
0-73603 20 hours ago |
0-73685 20 hours ago |
0-73679 20 hours |
| 35152 |
j-loreaux author:j-loreaux |
feat: add missing API for `lp E p` |
The API for `lp` is significantly underdeveloped. This PR attempts to rectify some of the shortcomings. In particular, we provide:
+ some missing tools for `Memℓp`, notably `memℓp_norm_iff` and `Memℓp.mono`.
+ some improved docstrings and more uniform notation for the non-dependent case; note that we also *remove* the notation `ℓ^∞(ι)` for `lp (fun _ : ι ↦ ℝ) ∞` on the basis that there are other choices besides `ℝ` which would make at least as much sense here, including `ℂ`.
+ bundled version of maps (evaluation, inclusion as a linear map, summation in `ℓ¹`)
as well as cleaning-up a few other odds and ends.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
189/26 |
Mathlib/Analysis/InnerProductSpace/l2Space.lean,Mathlib/Analysis/Normed/Lp/lpSpace.lean,Mathlib/Topology/MetricSpace/Kuratowski.lean |
3 |
9 |
['eric-wieser', 'github-actions', 'mcdoll'] |
urkud assignee:urkud |
0-67252 18 hours ago |
41-76033 41 days ago |
41-76351 41 days |
| 36676 |
euprunin author:euprunin |
chore: replace long terminal `simp only […]`:s (≥3 lemmas) with bare `simp`:s |
The goal of this PR is to decrease the number of times lemmas are called explicitly. Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `Polynomial.map_comp`: unchanged 🎉
* `AlgebraicGeometry.IsClosedImmersion.Spec_iff`: 152 ms before, 107 ms after 🎉
* `nnnorm_pow_le`: unchanged 🎉
* `norm_pow_le`: unchanged 🎉
* `integral_sin`: unchanged 🎉
* `SimpleGraph.Subgraph.le_induce_union`: unchanged 🎉
* `ENNReal.iSup_add_iSup`: unchanged 🎉
* `ENat.iSup_add_iSup`: unchanged 🎉
* `ENat.mul_epow`: unchanged 🎉
* `EReal.abs_eq_zero_iff`: unchanged 🎉
* `Finset.disjoint_biUnion_left`: unchanged 🎉
* `List.splitOnP.go_acc`: unchanged 🎉
* `Multiset.count_map_eq_count`: unchanged 🎉
* `Nat.toDigitsCore_length`: unchanged 🎉
* `PartENat.pos_iff_one_le`: unchanged 🎉
* `Rat.intCast_div_self`: unchanged 🎉
* `Set.biUnion_empty_finset`: unchanged 🎉
* `Quot.subsingleton_iff`: unchanged 🎉
* `Equiv.Perm.support_closure_subset_union`: unchanged 🎉
* `Module.Basis.reindexRange_repr'`: unchanged 🎉
* `MeasureTheory.mul_le_addHaar_image_of_lt_det`: unchanged 🎉
* `MeasureTheory.memLp_finset_sum`: unchanged 🎉
* `MeasureTheory.exists_lt_lowerSemicontinuous_integral_lt`: 450 ms before, 404 ms after 🎉
* `BoundedContinuousFunction.toReal_lintegral_coe_eq_integral`: unchanged 🎉
* `nullMeasurableSet_region_between_oc`: unchanged 🎉
* `nullMeasurableSet_region_between_co`: unchanged 🎉
* `nullMeasurableSet_region_between_cc`: unchanged 🎉
* `MeasureTheory.integral_le_liminf_integral_of_forall_isOpen_measure_le_liminf_measure`: unchanged 🎉
* `padicValNat.pow_add_pow`: unchanged 🎉
* `Monotone.biUnion_Ico_Ioc_map_succ`: unchanged 🎉
* `ProbabilityTheory.condIndepSets_singleton_iff`: unchanged 🎉
* `ProbabilityTheory.sum_variance_truncation_le`: unchanged 🎉
* `IsLocalRing.CotangentSpace.span_image_eq_top_iff`: unchanged 🎉
* `galRestrict'_galLift`: 163 ms before, 48 ms after 🎉
* `Valuation.ne_zero_of_isUnit`: unchanged 🎉
* `hasProd_prod`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
---
[](https://gitpod.io/from-referrer/)
|
|
36/36 |
Mathlib/Algebra/Polynomial/Eval/Defs.lean,Mathlib/Analysis/Normed/Ring/Basic.lean,Mathlib/Analysis/SpecialFunctions/Integrals/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Subgraph.lean,Mathlib/Data/ENNReal/Operations.lean,Mathlib/Data/ENat/Lattice.lean,Mathlib/Data/ENat/Pow.lean,Mathlib/Data/EReal/Inv.lean,Mathlib/Data/Finset/Union.lean,Mathlib/Data/List/SplitOn.lean,Mathlib/Data/Multiset/Filter.lean,Mathlib/Data/Nat/Digits/Defs.lean,Mathlib/Data/Rat/Lemmas.lean,Mathlib/Data/Set/Constructions.lean,Mathlib/Data/Setoid/Basic.lean,Mathlib/GroupTheory/Perm/Finite.lean,Mathlib/LinearAlgebra/Basis/Defs.lean,Mathlib/MeasureTheory/Function/Jacobian.lean,Mathlib/MeasureTheory/Function/LpSeminorm/TriangleInequality.lean,Mathlib/MeasureTheory/Integral/Bochner/VitaliCaratheodory.lean,Mathlib/MeasureTheory/Integral/BoundedContinuousFunction.lean,Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean,Mathlib/MeasureTheory/Measure/Portmanteau.lean,Mathlib/NumberTheory/Multiplicity.lean,Mathlib/Order/SuccPred/IntervalSucc.lean,Mathlib/Probability/Independence/Conditional.lean,Mathlib/Probability/StrongLaw.lean,Mathlib/RingTheory/Ideal/Cotangent.lean,Mathlib/RingTheory/IntegralClosure/IntegralRestrict.lean,Mathlib/RingTheory/Valuation/Basic.lean,Mathlib/Topology/Algebra/InfiniteSum/Basic.lean |
31 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
0-67142 18 hours ago |
0-67166 18 hours ago |
9-21917 9 days |
| 37177 |
JovanGerb author:JovanGerb |
perf(Analysis/Normed/Module/Ball/Action): add `SMul` shortcut instances |
There was an unexpected slowdown after I cleaned up the instances on `UnitDisc`. This PR gets the file back up to speed by adding some shortcut instances.
I tried to generalize this solution to other instances, but sadly it had no significant benefits there.
---
[](https://gitpod.io/from-referrer/)
|
|
16/6 |
Mathlib/Analysis/Normed/Module/Ball/Action.lean |
1 |
6 |
['JovanGerb', 'github-actions', 'leanprover-radar', 'mathlib-bors'] |
nobody |
0-66703 18 hours ago |
0-67769 18 hours ago |
0-67782 18 hours |
| 35654 |
euprunin author:euprunin |
chore: golf using `grind` |
The goal of this golfing PR is to decrease the number of times lemmas are called explicitly (replacing calls to lemmas with calls to tactics). Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `CochainComplex.HomComplex.mem_coboundaries_iff`: unchanged 🎉
* `integral_cos_mul_complex`: unchanged 🎉
* `List.next_getLast_cons`: unchanged 🎉
* `foldl_argAux_mem`: unchanged 🎉
* `Equiv.Perm.support_swap`: unchanged 🎉
* `Fermat42.mul`: unchanged 🎉
* `Filter.high_scores`: 155 ms before, 108 ms after 🎉
* `IocProdIoc_preimage`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
This golfing PR is batched under the following guidelines:
* Up to ~5 changed files per PR
* Up to ~25 changed declarations per PR
* Up to ~100 changed lines per PR
---
[](https://gitpod.io/from-referrer/)
|
|
10/44 |
Mathlib/Algebra/Homology/HomotopyCategory/HomComplexCohomology.lean,Mathlib/Analysis/SpecialFunctions/Integrals/Basic.lean,Mathlib/Data/List/MinMax.lean,Mathlib/GroupTheory/Perm/Support.lean,Mathlib/NumberTheory/FLT/Four.lean,Mathlib/Probability/Kernel/IonescuTulcea/Maps.lean |
6 |
6 |
['artie2000', 'euprunin', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
kex-y assignee:kex-y |
0-66488 18 hours ago |
17-78149 17 days ago |
30-76961 30 days |
| 35677 |
euprunin author:euprunin |
chore(SetTheory): golf proofs |
This PR removes unused `have`/`haveI`/`let`/`letI` calls + some small similar cleanups.
The goal of this golfing PR is to decrease the number of times lemmas are called explicitly (replacing calls to lemmas with calls to tactics). Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `Cardinal.mul_eq_self`: unchanged 🎉
* `Cardinal.succ_natCast`: unchanged 🎉
* `Ordinal.exists_fundamental_sequence`: unchanged 🎉
* `Cardinal.mk_subtype_le_of_countable_eventually_mem`: unchanged 🎉
* `Nat.card_image_of_injOn`: unchanged 🎉
* `mul_le_of_limit_aux`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
This golfing PR is batched under the following guidelines:
* Up to ~5 changed files per PR
* Up to ~25 changed declarations per PR
* Up to ~100 changed lines per PR
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
2/10 |
Mathlib/SetTheory/Cardinal/Arithmetic.lean,Mathlib/SetTheory/Cardinal/Basic.lean,Mathlib/SetTheory/Cardinal/CountableCover.lean,Mathlib/SetTheory/Cardinal/Finite.lean,Mathlib/SetTheory/Ordinal/Arithmetic.lean,Mathlib/SetTheory/ZFC/PSet.lean |
6 |
5 |
['artie2000', 'euprunin', 'github-actions', 'leanprover-radar', 'mathlib-merge-conflicts', 'vihdzp'] |
alreadydone assignee:alreadydone |
0-66370 18 hours ago |
0-66392 18 hours ago |
30-68608 30 days |
| 35962 |
euprunin author:euprunin |
chore: golf using `simp` |
The goal of this PR is to decrease the number of times lemmas are called explicitly (replacing calls to lemmas with calls to tactics). Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `CategoryTheory.MonoidalCategory.leftUnitor_monoidal`: unchanged 🎉
* `MeasureTheory.Measure.haar.is_left_invariant_index`: unchanged 🎉
* `Ideal.Filtration.submodule_fg_iff_stable`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
This PR is batched under the following guidelines:
* Up to ~5 changed files per PR
* Up to ~25 changed declarations per PR
* Up to ~100 changed lines per PR
---
[](https://gitpod.io/from-referrer/)
|
|
4/6 |
Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean,Mathlib/MeasureTheory/Measure/Haar/Basic.lean,Mathlib/RingTheory/Filtration.lean |
3 |
2 |
['artie2000', 'github-actions', 'mathlib-merge-conflicts'] |
dwrensha assignee:dwrensha |
0-66257 18 hours ago |
0-66280 18 hours ago |
23-66721 23 days |
| 36721 |
yoh-tanimoto author:yoh-tanimoto |
refactor(LinearAlgebra/LinearPMap): generalize (partially) to semilinear maps |
replace `LinearPMap.toFun : domain →ₗ[R] F` by `domain →ₛₗ[σ] F`, in order to allow semilinear maps, in particular conjugate-linear maps.
TODO: to define graph of a semilinear map, one has to consider twisted modules #35877
see discussion https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/.60SemilinearPMap.60/with/576451756 |
|
183/159 |
Mathlib/Algebra/Module/Injective.lean,Mathlib/Analysis/Convex/Cone/Extension.lean,Mathlib/Analysis/LocallyConvex/Separation.lean,Mathlib/LinearAlgebra/LinearPMap.lean,Mathlib/Topology/Algebra/Module/LinearPMap.lean |
5 |
13 |
['botbaki-review', 'github-actions', 'mathlib-merge-conflicts', 'mcdoll', 'yoh-tanimoto'] |
nobody |
0-66140 18 hours ago |
0-66166 18 hours ago |
10-18577 10 days |
| 37047 |
gasparattila author:gasparattila |
chore(Data/Finset/Lattice/Fold): use `to_dual` |
This PR uses the `@[to_dual]` attribute to generate dual lemmas about `Finset.sup`. The lemmas about `sdiff` and `himp` are skipped, as `HeytingAlgebra` is not yet tagged with `@[to_dual]`.
To improve the consistency between dual lemmas, several changes are made:
- tag `inf_insert` with `@[grind =]`
- rename `le_inf_const_le` to `le_inf_const`
- tag `inf_union` with `@[grind _=_]`
- tag `inf_mono_fun` with `@[grind ←]`
- tag `inf_mono` with `@[grind ←]`
- tag `inf_attach` with `@[simp]`
- add `le_inf_of_directed_le`
- add `inf_eq_top_of_isEmpty`
- add `inf_mem_of_nonempty`
- add `inf'_mono_fun`
- rename `comp_sup_eq_sup_comp_of_nonempty` to `apply_sup_eq_sup_comp_of_nonempty` and add `apply_inf_eq_inf_comp_of_nonempty`
---
[](https://gitpod.io/from-referrer/)
|
t-data |
126/479 |
Mathlib/Algebra/MvPolynomial/Degrees.lean,Mathlib/Algebra/Order/BigOperators/Group/LocallyFinite.lean,Mathlib/Data/Finset/Defs.lean,Mathlib/Data/Finset/Lattice/Fold.lean |
4 |
13 |
['JovanGerb', 'gasparattila', 'github-actions'] |
nobody |
0-64311 17 hours ago |
0-67994 18 hours ago |
2-85522 2 days |
| 34298 |
CoolRmal author:CoolRmal |
feat(MeasureTheory): Integral over Ioi tends to zero |
This PR proves that if `f` is integrable on `Ioi a`, then `∫ x in Ioi (b i), f x ∂μ` tends to zero as `b i` tends to infinity. This is an easy corollary of `intervalIntegral_tendsto_integral_Ioi`.
---
- [x] depends on #34197
- [x] depends on #34289
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
76/1 |
Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/Basic.lean |
2 |
8 |
['CoolRmal', 'EtienneC30', 'github-actions', 'mcdoll'] |
thorimur assignee:thorimur |
0-63917 17 hours ago |
0-63926 17 hours ago |
43-3282 43 days |
| 30526 |
SnirBroshi author:SnirBroshi |
chore(Logic/Relation): use `≤` to spell subrelation |
Replace every `∀ x y, r x y → r' x y` with `r ≤ r'`
---
[](https://gitpod.io/from-referrer/)
|
t-logic |
161/136 |
Mathlib.lean,Mathlib/Algebra/Category/Grp/FilteredColimits.lean,Mathlib/Algebra/Category/ModuleCat/FilteredColimits.lean,Mathlib/Algebra/Category/MonCat/FilteredColimits.lean,Mathlib/CategoryTheory/Action.lean,Mathlib/CategoryTheory/ConnectedComponents.lean,Mathlib/CategoryTheory/Filtered/Connected.lean,Mathlib/CategoryTheory/IsConnected.lean,Mathlib/CategoryTheory/Limits/Final.lean,Mathlib/CategoryTheory/Limits/Types/Coequalizers.lean,Mathlib/CategoryTheory/Limits/Types/Filtered.lean,Mathlib/Combinatorics/Enumerative/DyckWord.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Computability/ContextFreeGrammar.lean,Mathlib/Computability/TuringMachine/Config.lean,Mathlib/Data/PFunctor/Multivariate/M.lean,Mathlib/Data/Quot.lean,Mathlib/FieldTheory/PerfectClosure.lean,Mathlib/GroupTheory/FreeGroup/Basic.lean,Mathlib/Logic/Relation.lean,Mathlib/Order/Basic.lean,Mathlib/Order/Defs/Prop.lean,Mathlib/Order/Interval/Finset/Basic.lean,Mathlib/Order/WellFoundedSet.lean,Mathlib/Topology/Gluing.lean |
25 |
15 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot', 'thorimur', 'vihdzp'] |
nobody |
0-58793 16 hours ago |
15-40828 15 days ago |
61-65248 61 days |
| 34273 |
gasparattila author:gasparattila |
feat(Topology/Sets): finite sets are dense in `(Nonempty)Compacts` |
---
- [x] depends on: #34266
[](https://gitpod.io/from-referrer/)
|
t-topology |
35/0 |
Mathlib/Topology/Sets/VietorisTopology.lean |
1 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot'] |
mcdoll assignee:mcdoll |
0-58670 16 hours ago |
2-1767 2 days ago |
2-3011 2 days |
| 35820 |
smmercuri author:smmercuri |
feat: unit lemmas and embedding for `FiniteAdeleRing` |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
42/2 |
Mathlib/RingTheory/DedekindDomain/FiniteAdeleRing.lean |
1 |
1 |
['github-actions'] |
mattrobball assignee:mattrobball |
0-58669 16 hours ago |
28-1970 28 days ago |
28-2194 28 days |
| 36415 |
j-loreaux author:j-loreaux |
feat: interactions of the continuous functional calculus with the real and imaginary parts |
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
180/0 |
Mathlib.lean,Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/RealImaginaryPart.lean |
2 |
2 |
['github-actions', 'themathqueen'] |
mcdoll assignee:mcdoll |
0-58667 16 hours ago |
16-47072 16 days ago |
16-47172 16 days |
| 36794 |
vihdzp author:vihdzp |
doc(SetTheory/Ordinal/Principal): improve documentation |
The module docstring now contains a description of what an `op`-principal actually is. I've also added some additional names for discoverability.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory
documentation
|
26/20 |
Mathlib/SetTheory/Ordinal/Principal.lean,Mathlib/SetTheory/Ordinal/Veblen.lean |
2 |
8 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
alreadydone assignee:alreadydone |
0-58666 16 hours ago |
5-59140 5 days ago |
7-78337 7 days |
| 37008 |
BryceT233 author:BryceT233 |
feat(Algebra/Ring): introduce `pullback` for `RingHom` and `AlgHom` |
This PR introduces `pullback` for `RingHom` and `AlgHom` and adds `IsLocalHom`, `IsLocalRing` instances related to them.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
161/0 |
Mathlib/Algebra/Algebra/Subalgebra/Prod.lean,Mathlib/Algebra/Ring/Subring/Basic.lean,Mathlib/RingTheory/LocalRing/LocalSubring.lean |
3 |
5 |
['BryceT233', 'github-actions', 'wwylele'] |
mattrobball assignee:mattrobball |
0-58665 16 hours ago |
2-25388 2 days ago |
3-47386 3 days |
| 37009 |
dupuisf author:dupuisf |
feat(CStarAlgebra): `Ring.inverse` is convex and antitone on strictly positive operators |
This PR shows that the inverse is operator convex and operator antitone (we had the latter for inverse of elements in `Units`, but not for `Ring.inverse`).
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
368/13 |
Mathlib.lean,Mathlib/Algebra/Algebra/StrictPositivity.lean,Mathlib/Algebra/Group/Units/Defs.lean,Mathlib/Algebra/GroupWithZero/Units/Basic.lean,Mathlib/Algebra/Star/Basic.lean,Mathlib/Algebra/Star/SelfAdjoint.lean,Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/Order.lean,Mathlib/Analysis/SpecialFunctions/ContinuousFunctionalCalculus/Rpow/Basic.lean,Mathlib/Analysis/SpecialFunctions/ContinuousFunctionalCalculus/Rpow/ConjSqrt.lean,Mathlib/Analysis/SpecialFunctions/ContinuousFunctionalCalculus/Rpow/RingInverseOrder.lean |
10 |
16 |
['dupuisf', 'github-actions', 'j-loreaux', 'themathqueen'] |
mcdoll assignee:mcdoll |
0-58664 16 hours ago |
1-12929 1 day ago |
1-68628 1 day |
| 37045 |
edegeltje author:edegeltje |
feat(CategoryTheory/Limits): Pullback squares in cartesian monoidal categories |
This PR adds various lemmas about standard pullback squares in categories with chosen finite products.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
320/0 |
Mathlib.lean,Mathlib/CategoryTheory/Limits/Shapes/Pullback/IsPullback/CartesianMonoidal.lean |
2 |
1 |
['github-actions'] |
joelriou assignee:joelriou |
0-58663 16 hours ago |
3-1929 3 days ago |
3-2330 3 days |
| 37069 |
eric-wieser author:eric-wieser |
feat(Normed/Algebra/Exponential): closure under `NormedSpace.exp` |
---
[](https://gitpod.io/from-referrer/)
|
t-topology
t-analysis
|
27/0 |
Mathlib/Analysis/Analytic/ConvergenceRadius.lean,Mathlib/Analysis/Normed/Algebra/Exponential.lean,Mathlib/Topology/Algebra/InfiniteSum/Basic.lean |
3 |
4 |
['eric-wieser', 'github-actions', 'j-loreaux'] |
ADedecker assignee:ADedecker |
0-58661 16 hours ago |
0-72823 20 hours ago |
1-56016 1 day |
| 37107 |
Vierkantor author:Vierkantor |
chore(Tactic): rewrite `positivity` tactic and `@[positivity]` attr docstrings |
This PR rewrites the docstrings for the `positivity` tactic and `@[positivity]` attribute, to consistently match the official style guide, to make sure they are complete while not getting too long.
The goal was to make it clearer what an extension does exactly, and document how to write one in the `@[positivity]` docstring.
---
[](https://gitpod.io/from-referrer/)
|
documentation
t-meta
|
37/8 |
Mathlib/Tactic/Positivity/Core.lean |
1 |
1 |
['github-actions'] |
JovanGerb assignee:JovanGerb |
0-58660 16 hours ago |
2-6805 2 days ago |
2-6799 2 days |
| 37160 |
vihdzp author:vihdzp |
feat: product of Coxeter matrices |
The Coxeter matrix `A * B` is the block matrix `!![A, 2; 2, B]`.
---
I've used multiplication to denote this under the logic that the product of Coxeter groups has a Coxeter matrix given by this construction. Perhaps this isn't desirable, considering it doesn't match matrix multiplication. I'm open to suggestions.
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
13/3 |
Mathlib/GroupTheory/Coxeter/Matrix.lean |
1 |
1 |
['github-actions'] |
tb65536 assignee:tb65536 |
0-58659 16 hours ago |
1-20187 1 day ago |
1-20181 1 day |
| 37182 |
mckoen author:mckoen |
feat(AlgebraicTopology/SimplicialSet/Subcomplex): add `Subcomplex.unionProd`, a union of products of subcomplexes |
Given `X Y : SSet`, `S : X.Subcomplex`, and `T : Y.Subcomplex`, define the subcomplex `S.unionProd T : (X ⊗ Y).Subcomplex` given by `(X ⊗ T) ⊔ (S ⊗ Y)` and provide basic API.
All code is originally written by Joël Riou and modified for PR to mathlib (with permission).
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology
t-category-theory
|
117/0 |
Mathlib/AlgebraicTopology/SimplicialSet/Monoidal.lean,Mathlib/AlgebraicTopology/SimplicialSet/Subcomplex.lean |
2 |
1 |
['github-actions'] |
joelriou assignee:joelriou |
0-58657 16 hours ago |
0-67411 18 hours ago |
0-67419 18 hours |
| 37190 |
cjrl author:cjrl |
feat(Combinatorics): Set-Valued Pigeonhole Principle |
This PR contributes two theorems to combinatorics:
- `exists_lt_card_cover_of_card_biUnion_lt_card` is a set-valued version of the pigeonhole principle.
- `sum_card_eq_sum_card_cover_biUnion` is a set theoretic corollary of a double counting result proved for bipartite graphs (`Finset.sum_card_bipartiteAbove_eq_sum_card_bipartiteBelow`). This was needed to prove the above pigeonhole principle.
The motivation for these results is our Latin Square PR #36698. These results were proved in less general terms in that PR, but are independent of Latin Square considerations and so we have generalized and moved them into more relevant files.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
large-import
|
67/0 |
Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean,Mathlib/Combinatorics/Enumerative/DoubleCounting.lean,Mathlib/Combinatorics/Pigeonhole.lean |
3 |
2 |
['github-actions'] |
nobody |
0-55870 15 hours ago |
0-55798 15 hours ago |
0-55800 15 hours |
| 37193 |
JJYYY-JJY author:JJYYY-JJY |
docs(metric): add Main results sections for metric spaces |
Add Main results sections to metric-space definition modules
This PR improves discoverability in the metric-space definition modules by adding curated Main results sections and by fixing a stale internal file reference.
Add a Main results section to the pseudo-metric definitions module, highlighting key constructions and foundational lemmas.
Add a Main results section to the metric-space definitions module, highlighting core constructions and distance-based characterization lemmas.
Update the implementation note to point to the current pseudo-metric definitions path, clarifying where elementary pseudometric facts live.
This is a docstring-only change:
No declarations, theorem names, imports, instances, or proofs are changed;
only module docstrings in the two metric-space definition files are edited.
---
[](https://gitpod.io/from-referrer/) |
t-topology
new-contributor
|
25/3 |
Mathlib/Topology/MetricSpace/Defs.lean,Mathlib/Topology/MetricSpace/Pseudo/Defs.lean |
2 |
4 |
['copilot-pull-request-reviewer', 'github-actions'] |
nobody |
0-55317 15 hours ago |
0-55482 15 hours ago |
0-55476 15 hours |
| 36698 |
ghseeli author:ghseeli |
feat(Combinatorics/Enumerative): Latin squares |
This PR defines Latin rectangles and Latin squares and proves an extension theorem using Hall's Marriage Theorem.
## Main results
- `group_to_cayley_table`: every finite group `G` yields a `LatinSquare G G`.
- `latin_rectangle_extends_one_row`: a (non-square) `LatinRectangle` extends to a `LatinRectangle`
with one more row. This is an application of **Hall's Marriage Theorem**, `hallMatchingsOn.nonempty`.
- `latin_rectangle_extends_to_latin_square`: a `LatinRectangle` extends to a `LatinSquare`.
This is included in a new file `Combinatorics/Enumerative/LatinSquare.lean`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
|
698/0 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/LatinSquare.lean,docs/references.bib |
3 |
45 |
['SnirBroshi', 'cjrl', 'eric-wieser', 'ghseeli', 'github-actions', 'vlad902'] |
nobody |
0-55301 15 hours ago |
0-55369 15 hours ago |
8-41802 8 days |
| 36979 |
Komyyy author:Komyyy |
feat: `↑(Nat.log m n) = Ordinal.log ↑m ↑n` |
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
13/0 |
Mathlib/SetTheory/Ordinal/Basic.lean,Mathlib/SetTheory/Ordinal/Exponential.lean |
2 |
16 |
['Komyyy', 'github-actions', 'mathlib-merge-conflicts', 'plp127', 'vihdzp'] |
nobody |
0-54732 15 hours ago |
2-19121 2 days ago |
3-71777 3 days |
| 37192 |
artie2000 author:artie2000 |
chore(Geometry/Convex/Cone/Pointed): nits |
* Remove redundant instance `PointedCone.instZero`
* Tag `PointedCone.smul_mem` with `aesop`
* Remove misleading instance name `PointedCone.canLift`
* Add `simps` API to constructor `PointedCone.ofConeComb`
These are all small changes that bring this file into line with existing convention.
---
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry |
3/4 |
Mathlib/Geometry/Convex/Cone/Pointed.lean |
1 |
2 |
['artie2000', 'github-actions'] |
nobody |
0-54377 15 hours ago |
0-55503 15 hours ago |
0-55497 15 hours |
| 34871 |
zhuyizheng author:zhuyizheng |
feat(Calculus): Taylor with integral remainder |
This PR proves Taylor's theorem with the integral remainder. It provides two versions:
1. based on $f^{(n)}$ is absolutely continuous
2. based on $f \in C^{(n+1)}$
It also weakens the hypotheses `(hx : x₀ < x)` to `(hx : x₀ ≠ x)` in the following theorems:
- `taylor_mean_remainder`
- `taylor_mean_remainder_lagrange`
- `taylor_mean_remainder_lagrange_iteratedDeriv`
- `taylor_mean_remainder_cauchy`
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-analysis
|
216/71 |
Mathlib/Analysis/Calculus/ContDiff/Deriv.lean,Mathlib/Analysis/Calculus/IteratedDeriv/Defs.lean,Mathlib/Analysis/Calculus/Taylor.lean,Mathlib/MeasureTheory/Function/AbsolutelyContinuous.lean,Mathlib/Probability/Moments/MGFAnalytic.lean,Mathlib/Topology/Algebra/InfiniteSum/TsumUniformlyOn.lean,docs/undergrad.yaml |
7 |
20 |
['Komyyy', 'b-mehta', 'github-actions', 'joneugster', 'mathlib-merge-conflicts', 'sgouezel', 'zhuyizheng'] |
nobody |
0-49691 13 hours ago |
0-49691 13 hours ago |
32-75417 32 days |
| 37196 |
kim-em author:kim-em |
feat(scripts): add nightly-testing-checklist tool |
This PR adds `lake exe nightly-testing-checklist`, a tool for monitoring and repairing the `nightly-testing` branches at Batteries and Mathlib.
It checks toolchain freshness, upstream dependency versions (e.g. Batteries rev in Mathlib's lake-manifest.json), and CI status — displaying failing jobs and Lean error messages inline. It can automatically fix "has already been declared" errors by using Lean's parser to identify and remove duplicate declarations, and bumps stale toolchains and dependencies.
Flags:
- `--watch`: wait for in-progress CI runs to complete (wakes on first job failure)
- `--fix`: commit and push fixes (default is dry-run: generate `.patch` files)
- `--no-clone`: report only, don't clone repos to `/tmp`
- `--no-build`: clone and update deps, but don't build or fix errors
The `find_command_range.lean` helper uses `Lean.Parser.parseHeader` + `Lean.Parser.parseCommand` to walk top-level commands and find byte ranges, including preceding attributes and doc comments.
🤖 Prepared with Claude Code |
CI |
668/0 |
lakefile.lean,scripts/README.md,scripts/find_command_range.lean,scripts/nightly-testing-checklist.lean |
4 |
1 |
['github-actions'] |
nobody |
0-43271 12 hours ago |
0-43350 12 hours ago |
0-43344 12 hours |
| 36495 |
AlexKontorovich author:AlexKontorovich |
chore(Finset/NatDivisors): refactor `card_divisors_mul` and `sum_divisors_mul` to not rely on `ArithmeticFunction` |
`Nat.Coprime.card_divisors_mul` and `Nat.Coprime.sum_divisors_mul` are moved to not rely on `ArithmeticFunction`. See zulip discussion here: [#mathlib4 > Library design question, e.g.`Nat.Coprime.card_divisors_mul` @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Library.20design.20question.2C.20e.2Eg.2E.60Nat.2ECoprime.2Ecard_divisors_mul.60/near/577769899)
Co-authored-by: Ziyan Wei and Aayush Rajasekaran
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-number-theory
t-algebra
label:t-algebra$ |
45/14 |
Mathlib/Algebra/GCDMonoid/Basic.lean,Mathlib/Data/Finset/NatDivisors.lean,Mathlib/NumberTheory/ArithmeticFunction/Misc.lean |
3 |
2 |
['AlexKontorovich', 'github-actions'] |
alreadydone assignee:alreadydone |
0-38520 10 hours ago |
14-78054 14 days ago |
14-78048 14 days |
| 37155 |
vihdzp author:vihdzp |
chore(GroupTheory/Coxeter/Length): deprecate redundant theorems |
We deprecate `exists_reduced_word` and `exists_reduced_word'` in favor of a common `exists_isReduced`, which we accomplish by moving the definition `IsReduced` earlier in the file.
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
30/29 |
Mathlib/GroupTheory/Coxeter/Length.lean |
1 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
0-37417 10 hours ago |
0-37449 10 hours ago |
0-56704 15 hours |
| 35600 |
yisiox author:yisiox |
feat(Computability): add Kleene's algorithm to prove regular languages have regex matching |
This PR adds a proof that every regular language has some regular expression matching it.
This was achieved by the following constructions and proofs of their correctness
- Define `toSingleεNFA` to transform any epsilon-NFA to an equivalent one with only a single start and accept state (and the type is `ExtendedState`)
- Define a bijection between `ExtendedState` and `Fin (FinEnum.card (ExtendedState σ))` to index the states
- Define `pathRegex` which implements Kleene's algorithm
- Define `toRegex` which takes an epsilon-NFA, applies `toSingleεNFA` on it, and computes the corresponding regex using `pathRegex`
The proofs of correctness chain together to yield `(toRegex M).matches' = M.accepts` which asserts the direction of Kleene's theorem required.
---
As in [#mathlib4 > Regular languages: the review queue @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Regular.20languages.3A.20the.20review.20queue/near/573958148), this overlaps with #15654, which uses GNFA instead but has been inactive.
[](https://gitpod.io/from-referrer/)
|
t-computability
new-contributor
|
492/0 |
Mathlib/Computability/EpsilonNFA.lean |
1 |
15 |
['YaelDillies', 'github-actions', 'yisiox'] |
YaelDillies assignee:YaelDillies |
0-34815 9 hours ago |
2-15979 2 days ago |
21-18156 21 days |
| 36739 |
mbkybky author:mbkybky |
feat(RingTheory): UFD criteria via height `1` prime ideals and localization |
We prove the following UFD criteria via height `1` prime ideals and localization:
1. Let `R` be a Noetherian domain. Then `R` is a UFD if and only if every height `1` prime ideal is principal.
2. Let `R` be a Noetherian domain, `x ∈ R` be a prime element. If `Rₓ` is a UFD, then `R` is also a UFD.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
144/0 |
Mathlib.lean,Mathlib/RingTheory/Ideal/Height.lean,Mathlib/RingTheory/Ideal/UFD.lean,Mathlib/RingTheory/Localization/Away/Basic.lean |
4 |
2 |
['github-actions', 'tb65536'] |
mattrobball assignee:mattrobball |
0-30817 8 hours ago |
10-2145 10 days ago |
10-2647 10 days |
| 33520 |
NoneMore author:NoneMore |
feat(ModelTheory/ElementarySubstructures): add a variant of Tarski-Vaught test taking sets as input |
There should exist an `ElementarySubstructure.copy` such that we can directly bundle the set itself instaed of its closure as an elementary substructure.
---
[](https://gitpod.io/from-referrer/)
|
t-logic
new-contributor
|
91/0 |
Mathlib/ModelTheory/ElementarySubstructures.lean |
1 |
3 |
['Citronhat', 'NoneMore', 'github-actions'] |
fpvandoorn assignee:fpvandoorn |
0-27368 7 hours ago |
0-27432 7 hours ago |
82-19441 82 days |
| 35394 |
HugLycan author:HugLycan |
feat(Tactic/Positivity): make positivity work for types that are not partial orders |
Make positivity work for types that are not partial orders
Most PositivityExt haven't been updated for non partial order cases yet. They will be updated in the later PR.
`Strictness` now does not depend `Q(PartialOrder $α)`, and the constructors of `Strictness` now have their order typeclass arguments. In order to help `Qq` synth instances property, we have to move `assertInstancesCommute` to inner branch, manually add `haveI'` or explicitly pass the order typeclass instance into `.positive`/`.nonnegative`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-meta
|
611/322 |
Mathlib/Algebra/Order/AbsoluteValue/Basic.lean,Mathlib/Algebra/Order/Algebra.lean,Mathlib/Algebra/Order/BigOperators/Expect.lean,Mathlib/Algebra/Order/BigOperators/Ring/Finset.lean,Mathlib/Algebra/Order/Field/Basic.lean,Mathlib/Algebra/Order/Field/Power.lean,Mathlib/Algebra/Order/Floor/Extended.lean,Mathlib/Algebra/Order/Floor/Ring.lean,Mathlib/Algebra/Order/Module/Field.lean,Mathlib/Analysis/Complex/BorelCaratheodory.lean,Mathlib/Analysis/Complex/Order.lean,Mathlib/Analysis/SpecialFunctions/Bernstein.lean,Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean,Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean,Mathlib/Analysis/SpecialFunctions/Pow/Real.lean,Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean,Mathlib/Analysis/SpecialFunctions/Trigonometric/DerivHyp.lean,Mathlib/Combinatorics/Enumerative/DyckWord.lean,Mathlib/Combinatorics/SimpleGraph/Triangle/Removal.lean,Mathlib/Data/ENNReal/Basic.lean,Mathlib/Data/ENNReal/Real.lean,Mathlib/Data/EReal/Basic.lean,Mathlib/Data/EReal/Inv.lean,Mathlib/Data/EReal/Operations.lean,Mathlib/Data/NNReal/Defs.lean,Mathlib/Data/Nat/Totient.lean,Mathlib/Data/Rat/Cast/Order.lean,Mathlib/Data/Real/Sqrt.lean,Mathlib/MeasureTheory/Integral/Bochner/Basic.lean,Mathlib/MeasureTheory/Measure/Real.lean,Mathlib/NumberTheory/ArithmeticFunction/Misc.lean,Mathlib/NumberTheory/ArithmeticFunction/Zeta.lean,Mathlib/NumberTheory/LucasLehmer.lean,Mathlib/Tactic/Positivity/Basic.lean,Mathlib/Tactic/Positivity/Core.lean,Mathlib/Tactic/Positivity/Finset.lean,Mathlib/Topology/Algebra/InfiniteSum/Order.lean |
37 |
23 |
['HugLycan', 'JovanGerb', 'fpvandoorn', 'github-actions', 'joneugster'] |
JovanGerb assignee:JovanGerb |
0-25422 7 hours ago |
7-29159 7 days ago |
7-32271 7 days |
| 37022 |
vihdzp author:vihdzp |
feat(SetTheory/Cardinal/Cofinality): cof (a * b) = cof b |
We also tag `isSuccLimit_omega0` and `isSuccPrelimit_omega0` as simp, so that simp can solve goals like `(ω_ ω).cof = ω` or `cof (x * ω) = ω`.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
15/2 |
Mathlib/SetTheory/Cardinal/Cofinality.lean,Mathlib/SetTheory/Ordinal/Arithmetic.lean |
2 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
0-24901 6 hours ago |
1-29411 1 day ago |
3-32275 3 days |
| 35828 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(RingTheory/GradedAlgebra/Homogeneous/Hom): homogeneous algebra maps and evaluation |
Define the notion of homogeneous algebra morphism between algebra maps.
Prove that the evaluation of a (weighted) homogeneous multivariate polynomial at adequate elements
of a graded algebra define a homogeneous algebra morphism.
co-authored with @mariainesdff
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
74/0 |
Mathlib.lean,Mathlib/Algebra/GradedMonoid.lean,Mathlib/RingTheory/GradedAlgebra/Homogeneous/Hom.lean |
3 |
5 |
['github-actions', 'joneugster', 'riccardobrasca'] |
riccardobrasca assignee:riccardobrasca |
0-24379 6 hours ago |
27-63328 27 days ago |
27-63946 27 days |
| 32245 |
erdOne author:erdOne |
feat(RingTheory): the `coassoc_simps` simp set |
From Toric
Co-authored-by: Yaël Dillies
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
toric
t-meta
|
781/0 |
Mathlib.lean,Mathlib/RingTheory/Coalgebra/CoassocSimps.lean,Mathlib/Tactic/Attr/Register.lean,MathlibTest/RingTheory/CoassocSimps.lean |
4 |
26 |
['Paul-Lez', 'YaelDillies', 'b-mehta', 'erdOne', 'github-actions', 'joneugster', 'riccardobrasca'] |
b-mehta assignee:b-mehta |
0-24259 6 hours ago |
0-25957 7 hours ago |
32-30541 32 days |
| 37209 |
fpvandoorn author:fpvandoorn |
fix: fun_prop bug instantiating mvars |
Fixes bug reported in https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Weird.20behavior.20of.20fun_prop
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
25/1 |
Mathlib/Tactic/FunProp/Core.lean,MathlibTest/fun_prop_dev.lean |
2 |
1 |
['github-actions'] |
nobody |
0-22436 6 hours ago |
0-22298 6 hours ago |
0-22347 6 hours |
| 37208 |
yoh-tanimoto author:yoh-tanimoto |
feat(Data/Set, Finset): add lemmas about image and preimage |
add lemmas showing `image f s = preimage g s` when `f` is a left inverse of `g`, `g` is injective on `s`.
---
split off from #36489 |
t-data
maintainer-merge
|
17/0 |
Mathlib/Data/Finset/Preimage.lean,Mathlib/Data/Set/Function.lean |
2 |
8 |
['YaelDillies', 'github-actions', 'vihdzp'] |
nobody |
0-20803 5 hours ago |
0-20837 5 hours ago |
0-21460 5 hours |
| 35731 |
euprunin author:euprunin |
chore: golf using `exact`/`simpa` |
The goal of this PR is to decrease the number of times lemmas are called explicitly (replacing calls to lemmas with calls to tactics). Any decrease in compilation time is a welcome side effect, although it is not a primary objective.
Trace profiling results (differences <30 ms considered measurement noise):
* `AlgebraicGeometry.Scheme.Cover.exists_of_trans_eq_trans`: unchanged 🎉
* `AlgebraicGeometry.compactSpace_iff_exists`: unchanged 🎉
* `SimplexCategory.eq_id_of_mono`: unchanged 🎉
* `SimplexCategory.eq_id_of_epi`: unchanged 🎉
* `CategoryTheory.GrothendieckTopology.isIso_toPlus_of_isSheaf`: unchanged 🎉
* `CategoryTheory.Functor.isTriangulated_of_op`: unchanged 🎉
* `SimpleGraph.chromaticNumber_top`: unchanged 🎉
* `SimpleGraph.Subgraph.singletonSubgraph_connected`: unchanged 🎉
* `SimpleGraph.Walk.exists_length_eq_one_iff`: unchanged 🎉
* `Turing.TM2to1.addBottom_modifyNth`: unchanged 🎉
* `IsNoetherian.iff_fg`: unchanged 🎉
* `contMDiff_inclusion`: unchanged 🎉
* `FermatLastTheoremForThree_of_FermatLastTheoremThreeGen`: 146 ms before, 91 ms after 🎉
* `FermatLastTheoremForThreeGen.lambda_sq_dvd_c`: 313 ms before, 218 ms after 🎉
* `WithTop.isGLB_sInf`: unchanged 🎉
* `WithBot.succ_eq_bot`: 56 ms before, <30 ms after 🎉
* `WithTop.pred_eq_top`: unchanged 🎉
Profiled using `set_option trace.profiler true in`.
---
[](https://gitpod.io/from-referrer/)
|
|
32/103 |
Mathlib/AlgebraicGeometry/Cover/Directed.lean,Mathlib/AlgebraicGeometry/Morphisms/QuasiCompact.lean,Mathlib/AlgebraicTopology/SimplexCategory/Basic.lean,Mathlib/CategoryTheory/Sites/Plus.lean,Mathlib/CategoryTheory/Triangulated/Opposite/Functor.lean,Mathlib/Combinatorics/SimpleGraph/Coloring.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Basic.lean,Mathlib/FieldTheory/Finiteness.lean,Mathlib/Geometry/Manifold/ContMDiff/Basic.lean,Mathlib/NumberTheory/FLT/Three.lean,Mathlib/Order/ConditionallyCompleteLattice/Basic.lean,Mathlib/Order/SuccPred/WithBot.lean |
13 |
33 |
['artie2000', 'euprunin', 'github-actions', 'leanprover-radar', 'robin-carlier', 'vihdzp'] |
robin-carlier assignee:robin-carlier |
0-20443 5 hours ago |
17-73822 17 days ago |
29-33950 29 days |
| 36605 |
martinwintermath author:martinwintermath |
feat(Geometry/Convex/Cone): Add lemmas about interaction of hull, span and negation |
Prove lemmas about the interaction of hull, span and negation.
Co-authored-by: Olivia Röhrig, Kilian Rueß, Artie Khovanov
---
[](https://gitpod.io/from-referrer/)
|
|
95/5 |
Mathlib/Geometry/Convex/Cone/Pointed.lean |
1 |
49 |
['artie2000', 'github-actions', 'martinwintermath', 'mathlib-merge-conflicts'] |
nobody |
0-19651 5 hours ago |
1-24926 1 day ago |
11-66677 11 days |
| 37191 |
artie2000 author:artie2000 |
chore(Geometry/Convex/Cone/Pointed): clean up variables |
* Remove variable overwrites by changing `variable` declarations and renaming variables
* Rename variables to maintain rough type-consistency within the file
* Reorganise sections in order of increasing typeclass strength
* Bring explicit/implicit variables in line with convention
This PR doesn't change any declarations beyond changing variable explicitness.
---
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry |
135/115 |
Mathlib/Geometry/Convex/Cone/Pointed.lean |
1 |
3 |
['artie2000', 'github-actions', 'martinwintermath'] |
nobody |
0-19381 5 hours ago |
0-55459 15 hours ago |
0-55559 15 hours |
| 37053 |
artie2000 author:artie2000 |
refactor(Analysis/Convex/Cone): use `PointedCone` in Riesz extension theorem |
* Change the statement of the Riesz extension theorem to take a `PointedCone` rather than a `ConvexCone`.
---
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry |
15/11 |
Mathlib/Analysis/Convex/Cone/Extension.lean,Mathlib/Geometry/Convex/Cone/Pointed.lean |
2 |
2 |
['artie2000', 'github-actions'] |
nobody |
0-19212 5 hours ago |
0-51968 14 hours ago |
1-25606 1 day |
| 35405 |
xroblot author:xroblot |
feat(RamificationInertia): add `ramificationIdx_le_ramificationIdx` and `inertiaDeg_le_inertiaDeg` |
Assume that `Q` is over `P` that is over `p`. We prove that:
- `Ideal.ramificationIdx P Q ≤ Ideal.ramificationIdx p Q`
- `Ideal.inertiaDeg P Q ≤ Ideal.inertiaDeg p Q`
These results follow from [Ideal.ramificationIdx_algebra_tower](https://leanprover-community.github.io/mathlib4_docs/Mathlib/NumberTheory/RamificationInertia/Basic.html#Ideal.ramificationIdx_algebra_tower) and [Ideal.inertiaDeg_algebra_tower](https://leanprover-community.github.io/mathlib4_docs/Mathlib/NumberTheory/RamificationInertia/Basic.html#Ideal.inertiaDeg_algebra_tower) but they are proved here in a slightly more general situation.
---
- [x] depends on: #35483
[](https://gitpod.io/from-referrer/)
|
t-number-theory |
30/0 |
Mathlib/NumberTheory/RamificationInertia/Inertia.lean,Mathlib/NumberTheory/RamificationInertia/Ramification.lean |
2 |
5 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
alexjbest assignee:alexjbest |
0-18472 5 hours ago |
0-20198 5 hours ago |
36-15915 36 days |
| 37178 |
SnirBroshi author:SnirBroshi |
chore(LinearAlgebra/Matrix): generalize equivs and use `where` |
- Generalize `Matrix.compAddEquiv` from `AddCommMonoid` to `Add`
- Generalize `Matrix.transposeRingEquiv` from `CommSemigroup` to `CommMagma`
- Generalize `Matrix.conjTransposeRingEquiv` from `Semiring` to `NonUnitalNonAssocSemiring`
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
40/46 |
Mathlib/Data/Matrix/Basic.lean,Mathlib/Data/Matrix/Composition.lean,Mathlib/LinearAlgebra/Matrix/ConjTranspose.lean,Mathlib/LinearAlgebra/Matrix/Reindex.lean |
4 |
3 |
['github-actions', 'leanprover-radar', 'vihdzp'] |
nobody |
0-17977 4 hours ago |
0-73914 20 hours ago |
0-73908 20 hours |
| 36772 |
xroblot author:xroblot |
feat(FieldTheory/IntermediateField): define the image of an intermediate field in a larger extension |
Given a tower of fields `K ⊆ L ⊆ M` and an intermediate field `F` of `L/K`, defines `IntermediateField.extendTop F M` as the image of `F` under` L →ₐ[K] M`, together with instances transferring `Algebra`, `IsFractionRing` and `IsIntegralClosure` to the image. The main motivation is to embed a subextension `F/K` of `L/K` into a larger extension `M/K`. This is useful for instance when one needs `M/K` to be Galois.
This construction will be useful in a later PR to prove that the compositum of two unramified extensions is unramified. Indeed, the result is first proved when the two extensions are `IntermediateField K L` with `L/K` Galois, and then in the general case (see #36843)
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
120/0 |
Mathlib.lean,Mathlib/Algebra/Algebra/Hom.lean,Mathlib/FieldTheory/IntermediateField/ExtendTop.lean,Mathlib/RingTheory/Localization/FractionRing.lean |
4 |
3 |
['github-actions', 'plp127', 'xroblot'] |
chrisflav assignee:chrisflav |
0-17868 4 hours ago |
0-17747 4 hours ago |
9-5164 9 days |
| 36955 |
NoneMore author:NoneMore |
chore(ModelTheory/Types): expose `T` in `typesWith` and move it to `Theory` |
Make the `T : L.Theory` argument explicit in `typesWith` and place the definition in `FirstOrder.Language.Theory` to enable dot notation.
---
[](https://gitpod.io/from-referrer/)
|
t-logic
new-contributor
|
24/19 |
Mathlib/ModelTheory/Topology/Types.lean,Mathlib/ModelTheory/Types.lean |
2 |
2 |
['github-actions'] |
nobody |
0-14598 4 hours ago |
5-4963 5 days ago |
5-4957 5 days |
| 37056 |
lecopivo author:lecopivo |
feat(Tactic/FunProp): proper support for metavariables in fun_prop goals |
This PR add proper support for metavariables in `fun_prop` goals thus allows for properly solving goals like `HasFDerivAt k f ?f' x`.
---
This extension to `fun_prop` will enable computation of derivatives by properly handling metavariables in `fun_prop` goal thus allowing us to solve `HasFDerivAt k f ?f' x`
[](https://gitpod.io/from-referrer/)
|
t-meta
large-import
|
1219/220 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/FunProp/Attr.lean,Mathlib/Tactic/FunProp/Core.lean,Mathlib/Tactic/FunProp/Decl.lean,Mathlib/Tactic/FunProp/Elab.lean,Mathlib/Tactic/FunProp/Simproc.lean,Mathlib/Tactic/FunProp/Theorems.lean,Mathlib/Tactic/FunProp/Types.lean,Mathlib/Tactic/Measurability.lean,MathlibTest/fun_prop_dev.lean,MathlibTest/fun_prop_dev_out_param.lean |
12 |
9 |
['eric-wieser', 'github-actions', 'lecopivo', 'mathlib-merge-conflicts'] |
nobody |
0-14262 3 hours ago |
0-14277 3 hours ago |
0-15633 4 hours |
| 37183 |
dagurtomas author:dagurtomas |
feat(Tactic/CategoryTheory): map attribute |
Adding `@[map]` to a lemma named `H` of shape `∀ .., f = g`, where `f` and `g` are morphisms
in some category `C`, creates a new lemma named `H_map` of the form
`∀ .. {D} (func : C ⥤ D), F.map f = F.map g` and then applies
`simp only [Functor.map_comp, Functor.map_id]`.
---
[](https://gitpod.io/from-referrer/)
|
LLM-generated
t-meta
t-category-theory
|
212/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/CategoryTheory/Map.lean,MathlibTest/CategoryTheory/Map.lean |
4 |
5 |
['adamtopaz', 'dagurtomas', 'github-actions', 'joelriou'] |
nobody |
0-14213 3 hours ago |
0-43070 11 hours ago |
0-43412 12 hours |
| 34727 |
ocfnash author:ocfnash |
feat: the Geck construction yields a Lie algebra with the expected Cartan matrix |
---
Closes https://github.com/leanprover-community/mathlib4/issues/28714
- [ ] depends on: #36297
- [ ] depends on: #36298
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
192/0 |
Mathlib.lean,Mathlib/LinearAlgebra/LinearIndependent/BaseChange.lean,Mathlib/LinearAlgebra/RootSystem/CartanMatrix.lean,Mathlib/LinearAlgebra/RootSystem/GeckConstruction/Basic.lean,Mathlib/LinearAlgebra/RootSystem/GeckConstruction/Basis.lean |
5 |
13 |
['github-actions', 'jcommelin', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib-splicebot'] |
nobody |
0-13005 3 hours ago |
1-4347 1 day ago |
1-4465 1 day |
| 36779 |
gaetanserre author:gaetanserre |
feat(Kernel/Category): Stoch is a Markov category |
- Define `SFinKer`, the category of measurable spaces and s-finite kernels. Show that it is a copy-discard category.
- Define `Stoch`, the category of measurable spaces and Markov kernels as a `WideSubcategory` of `SFinKer`. Show that it is a Markov category. It uses new typeclasses for `MorphismProperty` that are stables under specific morphisms of the original category.
- Add some useful lemmas about parallel product of kernels.
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
t-category-theory
|
576/1 |
Mathlib.lean,Mathlib/CategoryTheory/CopyDiscardCategory/Widesubcategory.lean,Mathlib/CategoryTheory/Monoidal/Widesubcategory.lean,Mathlib/CategoryTheory/Widesubcategory.lean,Mathlib/Probability/Kernel/Category/SFinKer.lean,Mathlib/Probability/Kernel/Category/Stoch.lean,Mathlib/Probability/Kernel/Composition/KernelLemmas.lean,Mathlib/Probability/Kernel/Composition/ParallelComp.lean,Mathlib/Tactic/Linter/DirectoryDependency.lean |
9 |
39 |
['gaetanserre', 'github-actions', 'joelriou'] |
joelriou assignee:joelriou |
0-11560 3 hours ago |
0-13640 3 hours ago |
6-20024 6 days |
| 37215 |
wwylele author:wwylele |
feat(LinearAlgebra): lemma for LinearMap.toMatrix and Basis.map |
Two rfl lemma to make it more discoverable.
---
For easier review, here is the full statement including variables from the context
```
LinearMap.toMatrix_map_left.{u_1, u_3, u_4, u_5, u_6, u_7} {R : Type u_1} [CommSemiring R]
{m : Type u_3} {n : Type u_4}
[Fintype n] [Finite m] [DecidableEq n] {M₁ : Type u_5}
{M₂ : Type u_6} [AddCommMonoid M₁] [AddCommMonoid M₂]
[Module R M₁] [Module R M₂] (v₁ : Basis n R M₁) (v₂ : Basis m R M₂)
{M₃ : Type u_7} [AddCommMonoid M₃] [Module R M₃]
(f : M₃ →ₗ[R] M₂) (g : M₁ ≃ₗ[R] M₃) : (toMatrix (v₁.map g) v₂) f = (toMatrix v₁ v₂) (f ∘ₗ ↑g)
```
[](https://gitpod.io/from-referrer/)
|
t-algebra
easy
label:t-algebra$ |
10/0 |
Mathlib/LinearAlgebra/Matrix/ToLin.lean |
1 |
2 |
['github-actions', 'wwylele'] |
nobody |
0-10968 3 hours ago |
0-11049 3 hours ago |
0-11043 3 hours |
| 37217 |
wwylele author:wwylele |
feat(Algebra/Module): simp LinearEquiv.ofTop.toLinearMap |
---
I found this useful in simplifying a chain of linear map composition, but let's also run CI and see if it breaks any simp normal form...
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
4/0 |
Mathlib/Algebra/Module/Submodule/Equiv.lean |
1 |
1 |
['github-actions'] |
nobody |
0-10073 2 hours ago |
0-10156 2 hours ago |
0-10150 2 hours |
| 37220 |
b-mehta author:b-mehta |
feat(Algebra/Group/WithOne): improve API for WithOne.lift |
This PR uses the WithOne recursor rather than Option recursor for `lift.toFun`, to avoid defeq abuse, and allows us to golf the proof.
We also provide a simp lemma for the inverse function, to avoid needing to unfold it downstream. |
easy
t-algebra
label:t-algebra$ |
5/4 |
Mathlib/Algebra/Group/WithOne/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
0-8457 2 hours ago |
0-8574 2 hours ago |
0-8568 2 hours |
| 37171 |
SnirBroshi author:SnirBroshi |
chore(Data/Int/Init): generalize `le_induction` from `Prop` to `Sort*` + def lemmas |
---
[Zulip 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Add.20note.20to.20help.20search.20similar.20thms/near/535331432)
[](https://gitpod.io/from-referrer/)
|
t-data
large-import
|
56/48 |
Mathlib/Data/Int/Basic.lean,Mathlib/Data/Int/Init.lean,Mathlib/GroupTheory/CoprodI.lean |
3 |
4 |
['SnirBroshi', 'github-actions', 'plp127'] |
nobody |
0-7557 2 hours ago |
0-7625 2 hours ago |
0-56458 15 hours |
| 37219 |
wwylele author:wwylele |
feat(Analysis/InnerProductSpace): matrix of an isometry is unitary |
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
18/0 |
Mathlib/Analysis/InnerProductSpace/Adjoint.lean |
1 |
1 |
['github-actions'] |
nobody |
0-6722 1 hour ago |
0-8670 2 hours ago |
0-8664 2 hours |
| 37223 |
b-mehta author:b-mehta |
feat(Algebra/PresentedMonoid): characterise equality in presented monoids |
This PR adds two simple lemmas which describe when the embedding of two words into a presented monoid are equal.
[](https://gitpod.io/from-referrer/)
|
easy
t-algebra
label:t-algebra$ |
6/2 |
Mathlib/Algebra/PresentedMonoid/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
0-6628 1 hour ago |
0-6709 1 hour ago |
0-6703 1 hour |
| 34487 |
martinwintermath author:martinwintermath |
feat(LinearAlgebra/SesquilinearForm/Basic): add instances for SeparatingLeft, SeparatingRight and Nondegenerate |
Add typeclass instances for `Fact B.SeparatingLeft`, `Fact B.SeparatingRight`, `Fact B.Nondegenerate`:
* inferring `Fact B.flip.SeparatingLeft` from `Fact B.SeparatingRight` and vice versa
* inferring `Fact B.SeparatingLeft` and `Fact B.SeparatingRight` from `Fact B.Nondegenerate`
* inferring `Fact B.SeparatingLeft` and `Fact B.Nondegenerate` for `.id` and `Dual.eval`
* inferring `Fact B.Nondegenerate` from `B.IsPerfPair`
I also updated `PointedCone.dual_univ` to demonstrate the usefulness of these additions. Note that I needed to add an import to `Cone/Dual.lean` which somehow imports cardinals. So I needed to remove cardinals from `assert_not_exists`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
large-import
label:t-algebra$ |
87/16 |
Mathlib/Geometry/Convex/Cone/Dual.lean,Mathlib/LinearAlgebra/Dual/Lemmas.lean,Mathlib/LinearAlgebra/PerfectPairing/Basic.lean,Mathlib/LinearAlgebra/SesquilinearForm/Basic.lean |
4 |
3 |
['github-actions', 'martinwintermath', 'mathlib4-merge-conflict-bot'] |
nobody |
0-4423 1 hour ago |
10-68027 10 days ago |
10-68021 10 days |
| 36828 |
mortarsanjaya author:mortarsanjaya |
feat(Algebra/Order/Floor/Defs): add instances on `FloorSemiring` and `FloorRing` |
These instances are `NeZero` and `Nontrivial` instances, made so that we can weaken the `IsStrictOrderedRing` instances on several theorems about floor rings into `IsOrderedRing`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
15/0 |
Mathlib/Algebra/Order/Floor/Defs.lean,Mathlib/Logic/Nontrivial/Defs.lean |
2 |
10 |
['eric-wieser', 'github-actions', 'leanprover-radar', 'mortarsanjaya'] |
nobody |
0-4239 1 hour ago |
7-71219 7 days ago |
7-78426 7 days |
| 37224 |
MichaelStollBayreuth author:MichaelStollBayreuth |
chore: allow AlgebraicGeometry import from NumberTheory |
---
[](https://gitpod.io/from-referrer/)
|
t-number-theory
t-linter
|
0/1 |
Mathlib/Tactic/Linter/DirectoryDependency.lean |
1 |
1 |
['Multramate', 'github-actions'] |
nobody |
0-3890 1 hour ago |
0-6415 1 hour ago |
0-6409 1 hour |
| 36897 |
vihdzp author:vihdzp |
chore: golf results on principal ordinals |
---
- [x] depends on: #37132
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
14/27 |
Mathlib/SetTheory/Ordinal/Principal.lean |
1 |
11 |
['SnirBroshi', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp'] |
nobody |
0-3741 1 hour ago |
0-19176 5 hours ago |
3-73438 3 days |
| 37187 |
Brian-Nugent author:Brian-Nugent |
feat(CategoryTheory): Add `reflectsIsomorphisms_of_iso` |
Adds lemma to show that `Functor.ReflectsIsomorphisms` is stable under natural isomorphism.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
new-contributor
|
11/0 |
Mathlib/CategoryTheory/Functor/ReflectsIso/Basic.lean |
1 |
3 |
['github-actions', 'joelriou'] |
nobody |
0-3569 59 minutes ago |
0-3613 1 hour ago |
0-59990 16 hours |
| 37214 |
Kha author:Kha |
perf(Tactic/Abel): use `mkAuxTheorem` for proof term |
Removes some duplication from types of nested proofs |
t-meta |
4/1 |
Mathlib/Tactic/Abel.lean |
1 |
3 |
['Kha', 'github-actions', 'leanprover-radar'] |
nobody |
0-3496 58 minutes ago |
0-7273 2 hours ago |
0-7267 2 hours |
| 36731 |
michael-novak-math author:michael-novak-math |
feat: add a few basic definitions and classical results about differential geometry of plane curves |
We define the curvature function, normal vector function and the Frénet moving frame and we prove the Frénet equations for plane curves and the fundamental theorem of plane curves. |
new-contributor
t-differential-geometry
t-analysis
|
635/0 |
Mathlib.lean,Mathlib/Analysis/InnerProductSpace/Calculus.lean,Mathlib/Geometry/PlaneCurves.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/FundThmCalculus.lean,docs/references.bib |
5 |
31 |
['Ruben-VandeVelde', 'github-actions', 'grunweg', 'michael-novak-math'] |
nobody |
0-3474 57 minutes ago |
3-70008 3 days ago |
6-55728 6 days |
| 36938 |
kebekus author:kebekus |
feat: Poisson Integral Formula for the circle average of `log ‖· - ρ‖` |
Establish an analogue of the **Poisson Integral Formula** for the circle average of `log ‖· - ρ‖` along the circle with radius `‖ρ‖`.
The result will be used to establish Poisson's generalization of the classic Jensen formula in complex analysis.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
232/0 |
Mathlib/Analysis/Complex/JensenFormula.lean,Mathlib/Analysis/Complex/Poisson.lean |
2 |
5 |
['github-actions', 'sgouezel'] |
sgouezel assignee:sgouezel |
0-3150 52 minutes ago |
5-29949 5 days ago |
5-29943 5 days |
| 36743 |
Jun2M author:Jun2M |
feat(Combinatorics/GraphLike): introduce `GraphLike` typeclass |
Per discussion at ([#graph theory > HasAdj](https://leanprover.zulipchat.com/#narrow/channel/252551-graph-theory/topic/HasAdj/with/575843445)), This PR introduces the `GraphLike` typeclass to capture the notions like `dart` and `walk` across various graph objects, such as `SimpleGraph`, `Graph`, and `Digraph`.
The goal is that by abstracting these core components into a typeclass, we can prove these results once for all graph-like structures rather than duplicating them across different graph types.
This PR generalises #35776 to also unify `Graph`.
### Main definitions
* `GraphLike α β Gr`: A typeclass parameterized by a vertex type `α`, dart type `β` and a graph type `Gr` (with `α` as an `outParam`).
* `GraphLike.verts : Set α`: The set of vertices of the graph.
* `GraphLike.darts : Set β`: The set of darts of the graph.
* `GraphLike.Adj : α → α → Prop`: The adjacency relation, defined by default as `Nonempty (darts G u v)`.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
285/0 |
Mathlib.lean,Mathlib/Combinatorics/Digraph/GraphLike.lean,Mathlib/Combinatorics/GraphLike/Basic.lean,Mathlib/Combinatorics/SimpleGraph/GraphLike.lean |
4 |
24 |
['IvanRenison', 'Jun2M', 'SnirBroshi', 'github-actions', 'lauramonk', 'mathlib-merge-conflicts'] |
nobody |
0-2783 46 minutes ago |
4-67419 4 days ago |
9-37239 9 days |
| 33387 |
AntoineChambert-Loir author:AntoineChambert-Loir |
chore(LinearAlgebra/Transvection/Basic): mv Transvection.lean file to Transvection.Basic.lean |
In preparation for a long file about Dieudonné's theorem on the generation of the general and special linear groups,
mv file#Mathlib/LinearAlgebra/Transvection.lean to file#Mathlib/LinearAlgebra/Transvection/Basic.lean
---
- [x] depends on: #33348
- [x] depends on: #33347
[](https://gitpod.io/from-referrer/)
|
file-removed
t-algebra
maintainer-merge
label:t-algebra$ |
3/2 |
Mathlib.lean,Mathlib/LinearAlgebra/Center.lean,Mathlib/LinearAlgebra/Transvection/Basic.lean |
3 |
10 |
['dagurtomas', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
dagurtomas assignee:dagurtomas |
0-2496 41 minutes ago |
7-22432 7 days ago |
7-23909 7 days |
| 35710 |
tb65536 author:tb65536 |
feat(AlgebraicGeometry/EllipticCurve/Reduction): define split multiplicative reduction |
This PR adds the definition of split multiplicative reduction.
---
- [x] depends on: #35709
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-algebraic-geometry
t-number-theory
label:t-algebra$ |
14/0 |
Mathlib/AlgebraicGeometry/EllipticCurve/Reduction.lean |
1 |
5 |
['Multramate', 'github-actions', 'mathlib-dependent-issues', 'riccardobrasca'] |
riccardobrasca assignee:riccardobrasca |
0-2346 39 minutes ago |
7-21869 7 days ago |
7-21908 7 days |
| 37195 |
JovanGerb author:JovanGerb |
feat(OrderDual): fix leaky instances |
This PR fixes the leaky `OrderDual` instances. It is not necessarily obvious at first that this possible to do. The heuristic for making these changes is as follows:
- Start at the data instances (LE, Max, One) and define them with the data field in eta-expanded form, with the lambda binders matching the type..
For example, the previous verion
```
instance instSup (α : Type*) [Min α] : Max αᵒᵈ :=
⟨((· ⊓ ·) : α → α → α)⟩
```
was bad, because the lambda binder had type `α` instead of `αᵒᵈ`. This would cause unification failures in type class search.
- For structures with child structures, use `where` notation, and fill in the proof fields manually.
This PR removes 25 uses of `backward.isDefEq.respectTransparency`.
We should think about writing a metaprogram that can make these obvious instances for type wrappers/synonyms, which would save us the manual effort. Because in principle, we will have to do the same refactor for `Lex`, `Colex`, `Additive`, `Multiplicate` and any other such types.
In one place a proof broke due to this change, which was caused by stuff unifying in the `default` transparency *before* type class synthesis had finished. I fixed by with a `by exact`, which delays that elaboration/unification.
---
[](https://gitpod.io/from-referrer/)
|
|
277/241 |
Mathlib/Algebra/Field/Basic.lean,Mathlib/Algebra/Order/Archimedean/Basic.lean,Mathlib/Algebra/Order/Group/Action/Synonym.lean,Mathlib/Algebra/Order/Group/Synonym.lean,Mathlib/Algebra/Order/GroupWithZero/Action/Synonym.lean,Mathlib/Algebra/Order/GroupWithZero/Synonym.lean,Mathlib/Algebra/Order/Hom/Monoid.lean,Mathlib/Algebra/Order/Module/Synonym.lean,Mathlib/Algebra/Order/Ring/Cast.lean,Mathlib/Algebra/Order/Ring/Synonym.lean,Mathlib/Analysis/Convex/Basic.lean,Mathlib/Data/Finset/Max.lean,Mathlib/Data/Nat/Cast/Synonym.lean,Mathlib/LinearAlgebra/AffineSpace/Ordered.lean,Mathlib/Order/BoundedOrder/Basic.lean,Mathlib/Order/Circular.lean,Mathlib/Order/CompleteLattice/Defs.lean,Mathlib/Order/GaloisConnection/Basic.lean,Mathlib/Order/Lattice.lean,Mathlib/Order/OrderDual.lean,Mathlib/Topology/Order/Lattice.lean |
21 |
4 |
['bryangingechen', 'github-actions', 'leanprover-radar'] |
nobody |
0-1887 31 minutes ago |
0-21435 5 hours ago |
0-23889 6 hours |
| 36851 |
YaelDillies author:YaelDillies |
feat(Algebra/MonoidAlgebra): `supported` |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
large-import
maintainer-merge
label:t-algebra$ |
59/4 |
Mathlib/Algebra/MonoidAlgebra/Module.lean |
1 |
3 |
['dagurtomas', 'github-actions'] |
dagurtomas assignee:dagurtomas |
0-1773 29 minutes ago |
7-21636 7 days ago |
7-21630 7 days |
| 36884 |
eric-wieser author:eric-wieser |
chore(LinearAlgebra/CliffordAlgebra): trivial algebraic lemmas |
Inspired by Ian's lemmas in [#Is there code for X? > E₈ Lie algebra formalization + sparse Jacobi + scalability @ 💬](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/E.E2.82.88.20Lie.20algebra.20formalization.20.2B.20sparse.20Jacobi.20.2B.20scalability/near/580551446)
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
maintainer-merge
label:t-algebra$ |
12/0 |
Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean |
1 |
3 |
['dagurtomas', 'github-actions'] |
dagurtomas assignee:dagurtomas |
0-1733 28 minutes ago |
6-55329 6 days ago |
6-55323 6 days |
| 37225 |
SnirBroshi author:SnirBroshi |
feat(GroupTheory/Commutator/Basic): `commutator G ≤ H → H.Normal` |
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
22/1 |
Mathlib/GroupTheory/Commutator/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
0-1381 23 minutes ago |
0-6063 1 hour ago |
0-6057 1 hour |
| 33683 |
joelriou author:joelriou |
feat(AlgebraicTopology/SimplicialSet): the simplicial homotopy induced by a homotopy |
In this PR, we show that a homotopy between morphisms of simplicial sets (given as a morphism `X ⊗ Δ[1] ⟶ Y`) induces a "combinatorial" simplicial homotopy.
---
- [x] depends on: #37186
- [x] depends on: #36985
- [x] depends on: #36987
- [x] depends on: #36916
- [x] depends on: #32881
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology |
181/1 |
Mathlib.lean,Mathlib/AlgebraicTopology/SimplicialSet/Homotopy.lean,Mathlib/AlgebraicTopology/SimplicialSet/ProdStdSimplexOne.lean,Mathlib/AlgebraicTopology/SimplicialSet/StdSimplex.lean |
4 |
6 |
['github-actions', 'joelriou', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
dagurtomas assignee:dagurtomas |
0-1366 22 minutes ago |
0-26208 7 hours ago |
0-26204 7 hours |
| 37227 |
vihdzp author:vihdzp |
feat: characterization of open/closed sets in Scott-Hausdorff topology |
I had to do some awkward re-sectioning to fit a `PartialOrder` section.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
t-order
|
40/14 |
Mathlib/Topology/Order/ScottTopology.lean |
1 |
1 |
['github-actions'] |
nobody |
0-898 14 minutes ago |
0-915 15 minutes ago |
0-1061 17 minutes |
| 36116 |
xgenereux author:xgenereux |
feat(Module/Torsion): P-primary component |
This PR adds the definition of the `P`-primary component of a module:
$$M(P) := \bigcup_{i : \mathbb{N}} \text{torsionBySet A M } P ^ i.$$
as well as some basic lemmas on how it behaves on `inf` and `sup`.
The main goal of this definition is to eventually have
$$M = \bigoplus_{P} M(P).$$
as well as showing that:
Given a surjective linear map `(φ : M₂ →ₗ[A] M₃)`, we have: `Surjective (primaryComponent.map P φ)`.
These will require #35539 and I will them PR separately. (Proof is quite small but they should be their own PR I think.)
Looking forward for feedback on this!
Co-authored-by: María Inés de Frutos Fernández <[mariaines.dff@gmail.com](mailto:mariaines.dff@gmail.com)>
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
153/0 |
Mathlib.lean,Mathlib/Algebra/Module/Torsion/Basic.lean,Mathlib/Algebra/Module/Torsion/PrimaryComponent.lean |
3 |
19 |
['dagurtomas', 'github-actions', 'xgenereux'] |
dagurtomas assignee:dagurtomas |
0-642 10 minutes ago |
0-710 11 minutes ago |
11-26740 11 days |
| 36506 |
BryceT233 author:BryceT233 |
feat(Data/Finsupp): add various computational lemmas for `Finsupp` |
This PR adds various computational lemmas related to operations of finitely supported functions. Alongside #35329, theses lemmas provide the necessary helpers to construct various equivalences for `MvPowerSeries`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
53/0 |
Mathlib/Data/Finsupp/Antidiagonal.lean,Mathlib/Data/Finsupp/Basic.lean,Mathlib/Data/Finsupp/Option.lean |
3 |
1 |
['github-actions'] |
Vierkantor assignee:Vierkantor |
0-448 7 minutes ago |
3-48808 3 days ago |
14-51036 14 days |
| 37229 |
b-mehta author:b-mehta |
feat(Algebra/Free): relate the free semigroup and the free monoid |
---
[](https://gitpod.io/from-referrer/)
|
|
88/3 |
Mathlib/Algebra/Free.lean,Mathlib/Algebra/FreeMonoid/Semigroup.lean |
2 |
0 |
[] |
nobody |
0-306 5 minutes ago |
0-306 5 minutes ago |
0-300 5 minutes |
| Number |
Author |
Title |
Description |
Labels |
+/- |
Modified files (first 100) |
📝 |
💬 |
All users who commented or reviewed |
Assignee(s) |
Updated |
Last status change |
total time in review |
| 31662 |
edwin1729 author:edwin1729 |
feat(Topology/Order): topological basis of scott topology on Complete… |
…PartialOrder
---
[Zulip discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/.3E.20Algebraic.20complete.20partial.20order.20and.20domain.20theory/with/536359313) for this PR.
(1/2) PRs in domain theory, proving that scott topologies over Algebraic DCPOs (`CompletePartialOrder`) are sober.
The main reference is [Renata, Duality in Domain Theory](https://alyata.github.io/documents/duality_domain_theory.pdf). But the statements can also be found in the canonical text [Abramsky and Jung](https://www.cs.ox.ac.uk/people/samson.abramsky/handbook.pdf)
This first PR proves two prerequisites, namely:
- the specialization order induced by the scott topology corresponds to the existing order of the DCPO. Prop 3.1.5 in [Duality in Domain Theory](https://alyata.github.io/documents/duality_domain_theory.pdf) and Prop 2.3.2(1) in [Abramsky and Jung](https://www.cs.ox.ac.uk/people/samson.abramsky/handbook.pdf)
- the upward closures of compact elements of the DCPO form a topological basis for the Scott Topology. Prop 3.5.2 in [Duality in Domain Theory](https://alyata.github.io/documents/duality_domain_theory.pdf) and Prop 2.3.6(2) in [Abramsky and Jung](https://www.cs.ox.ac.uk/people/samson.abramsky/handbook.pdf)
- [x] depends on: #33061
**The next PR is here:** #31670
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
239/1 |
Mathlib.lean,Mathlib/Topology/Order/ScottTopology.lean,Mathlib/Topology/Order/ScottTopologyDCPO.lean,docs/references.bib |
4 |
66 |
['b-mehta', 'edwin1729', 'github-actions', 'mathlib-merge-conflicts', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'plp127'] |
b-mehta assignee:b-mehta |
15-65890 15 days ago |
19-13530 19 days ago |
25-66241 25 days |
| 35812 |
khwilson author:khwilson |
feat(MeasureTheory/Group/GeometryOfNumbers): successive minima and existence of a directional basis |
Define the successive minima of a discrete subgroup of a real vector space with respect to a convex set. These invariants show up throughout the geometry of numbers and are the focus of Minkowski's Second Theorem (whose statement is left here with a `proof_wanted`).
Note: The key lemma is that the "gauge set" of the convex set is closed. I took the approach of showing that it is sequentially closed. There's an alternative approach via showing it's the union of a finite number of closed sets. I personally thought this approach was more intuitive, but the union approach may result in a slightly shorter proof.
Co-authored-by: Yaël Dillies
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-measure-probability
|
392/33 |
Mathlib/Analysis/Convex/Basic.lean,Mathlib/Analysis/Convex/Body.lean,Mathlib/Analysis/Convex/Gauge.lean,Mathlib/LinearAlgebra/FiniteDimensional/Lemmas.lean,Mathlib/LinearAlgebra/LinearIndependent/Lemmas.lean,Mathlib/MeasureTheory/Group/GeometryOfNumbers.lean |
6 |
3 |
['github-actions', 'joneugster'] |
urkud assignee:urkud |
15-58787 15 days ago |
27-47736 27 days ago |
27-50696 27 days |
| 35568 |
goliath-klein author:goliath-klein |
refactor(PiTensorProduct/{InjectiveNorm, ProjectiveNorm}): switch NormedSpace instance to `projectiveSeminorm` |
The PR switches the `NormedSpace` instance on `PiTensorProduct`s from `injectiveSeminorm` to `projectiveSeminorm` and updates all follow-up results.
The signature of `norm_eval_le_projectiveSeminorm` is changed to match the one of `norm_eval_le_injectiveSeminorm`.
This is the second in a series of three PRs with the goal to [deprecate `PiTensorProuduct.injectiveSeminorm`](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/injectiveSeminorm/with/568798633).
---
- [x] depends on: #35567
This series is the result of splitting up #34137. More discussion there.
Co-authored-by: Davood H. H. Tehrani
[](https://gitpod.io/from-referrer/)
|
new-contributor |
27/29 |
Mathlib/Analysis/Normed/Module/PiTensorProduct/InjectiveSeminorm.lean,Mathlib/Analysis/Normed/Module/PiTensorProduct/ProjectiveSeminorm.lean |
2 |
5 |
['github-actions', 'goliath-klein', 'mathlib-dependent-issues', 'robin-carlier'] |
robin-carlier assignee:robin-carlier |
12-79648 12 days ago |
12-79648 12 days ago |
19-85681 19 days |
| 34599 |
cameronfreer author:cameronfreer |
feat(Logic/Equiv/Fintype): generalize toCompl and exists_extending_pair to finite source |
Generalize the Equiv subtype-extension API so it only needs finiteness of
the source subtype, then use that to drastically simplify
`Equiv.Perm.isMultiplyPretransitive`.
### Changes to `Logic/Equiv/Fintype.lean`
* **`Equiv.toCompl`**: generalize from `[Finite α]` to `[Finite {x | p x}]`.
New proof (due to tb65536) uses finset symmetric differences to avoid
needing finiteness of the ambient type.
* **`Equiv.extendSubtype`** and related lemmas: adapt to `[Finite {x | p x}]`.
* **`Equiv.Perm.exists_extending_pair`**: strengthen from `[Finite β]` to
`[Finite α]`. Given two injective functions `f, g : α → β` where `α` is
finite, there exists `σ : Perm β` with `σ ∘ f = g`. The target `β` can
now be infinite.
### Changes to `MultipleTransitivity.lean`
* **`Equiv.Perm.isMultiplyPretransitive`**: replace ~70-line manual
bijectivity construction with a two-line proof via
`exists_smul_eq_embedding`.
* **`exists_smul_eq_embedding`**: rewire to use `exists_extending_pair`
directly (removing the old cardinal-arithmetic proof
`exists_extending_pair_of_finite_source`).
### Application
Used in formalizing de Finetti's theorem (exchangeability ⇒ contractability):
https://github.com/cameronfreer/exchangeability/blob/03a854a2/Exchangeability/Contractability.lean#L459
Co-authored-by: tb65536 |
t-group-theory
new-contributor
|
51/79 |
Mathlib/GroupTheory/GroupAction/MultipleTransitivity.lean,Mathlib/Logic/Equiv/Fintype.lean |
2 |
26 |
['LLaurance', 'cameronfreer', 'github-actions', 'mathlib-merge-conflicts', 'tb65536'] |
mattrobball assignee:mattrobball |
10-49979 10 days ago |
18-77170 18 days ago |
40-11738 40 days |
| 36443 |
Fieldnote-Echo author:Fieldnote-Echo |
feat(Combinatorics/SimpleGraph): add SimpleGraph.ball (open metric ball) |
Add `SimpleGraph.ball`, the open ball in the graph extended metric.
## Design decisions
- **Open ball** (strict `<`, not `≤`): `ball c ⊤` coincides with the connected
component of `c`, whereas a closed ball would give `closedBall c ⊤ = univ`.
- **Named `SimpleGraph.ball`** (not `eball`): since `dist`-valued balls are less
natural for disconnected graphs, the `e` prefix is unnecessary.
- **Graph-specific** (not via `PseudoEMetricSpace`): avoids importing `ℝ`.
AI assistance: Claude (Opus 4.6) helped draft and iterate on the implementation. I reviewed the code line by line and vouch for the final contents.
Discussed on [Zulip](https://leanprover.zulipchat.com/#narrow/channel/252551-graph-theory/topic/SimpleGraph.20metric.20balls/with/577846803).
---
[](https://gitpod.io/from-referrer/) |
t-combinatorics
new-contributor
LLM-generated
|
59/3 |
Mathlib/Combinatorics/SimpleGraph/Metric.lean |
1 |
36 |
['Fieldnote-Echo', 'Rida-Hamadani', 'SnirBroshi', 'github-actions', 'lauramonk', 'vlad902'] |
nobody |
10-7896 10 days ago |
16-6408 16 days ago |
16-6402 16 days |
| 35069 |
A-M-Berns author:A-M-Berns |
feat(Geometry/Polygon): simple polygons and boundary map |
This PR introduces Simple polygons with the predicate `IsSimple`, which captures the idea of a non-self-intersecting boundary, in the file Simple.lean. In the file Boundary.lean, a boundary map from `AddCircle n` is defined. I prove that the range of this map is the boundary and that this map is injective if and only if the polygon is simple. I kept Boundary.lean and Simple.lean separate because future results will include stuff just about the boundary map independent of simplicity (e.g. that it is continuous in the appropriate setting) and stuff just about simple polygons independent of the boundary map (e.g. that for n = 3, IsSimple iff HasNondegenerateVertices.) I used Claude Code to help generate some of the proof material, but I golfed and edited all AI contribution.
- [x] depends on: #34598
---
|
new-contributor
t-euclidean-geometry
LLM-generated
|
360/0 |
Mathlib.lean,Mathlib/Geometry/Polygon/Boundary.lean,Mathlib/Geometry/Polygon/Simple.lean,Mathlib/Logic/Equiv/Fin/Rotate.lean |
4 |
29 |
['A-M-Berns', 'eric-wieser', 'github-actions', 'joneugster', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp', 'wwylele'] |
JovanGerb assignee:JovanGerb |
10-7549 10 days ago |
28-84646 28 days ago |
31-32526 31 days |
| 34854 |
GrigorenkoPV author:GrigorenkoPV |
chore(Combinatorics/Enumerative/Catalan): split into `Basic` & `Tree` |
---
Split off from #34853
[](https://gitpod.io/from-referrer/)
|
new-contributor |
227/194 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Catalan.lean,Mathlib/Combinatorics/Enumerative/Catalan/Basic.lean,Mathlib/Combinatorics/Enumerative/Catalan/Tree.lean,Mathlib/Combinatorics/Enumerative/DyckWord.lean,Mathlib/RingTheory/PowerSeries/Catalan.lean |
6 |
5 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
thorimur assignee:thorimur |
9-5465 9 days ago |
9-5491 9 days ago |
28-81784 28 days |
| 36786 |
SproutSeeds author:SproutSeeds |
feat(DoubleCounting): parity of odd-degree vertices in bipartite incidence |
Adds `odd_card_filter_odd_bipartiteAbove_iff_odd_card_filter_odd_bipartiteBelow` to
`Mathlib.Combinatorics.Enumerative.DoubleCounting`.
This is the small parity-helper first step for #25231.
Validation:
- `lake build Mathlib.Combinatorics.Enumerative.DoubleCounting`
Supersedes closed #36077 after replaying the helper cleanly on current `master`.
AI usage: used Codex for branch recovery, replay onto current `master`, and draft wording;
final code choices and verification by me.
|
new-contributor
t-combinatorics
large-import
|
17/0 |
Mathlib/Combinatorics/Enumerative/DoubleCounting.lean |
1 |
2 |
['github-actions'] |
nobody |
8-53255 8 days ago |
8-53338 8 days ago |
8-53332 8 days |
| 36637 |
Smithl-Lin author:Smithl-Lin |
feat(InformationTheory): Pinsker's inequality for finite distributions |
This PR formalizes Pinsker's inequality for discrete probability
distributions on finite types.
For distributions P and Q on a finite set, the total variation
distance is bounded by the KL divergence:
TV(P, Q) ≤ √(D_KL(P ‖ Q) / 2)
## Main results
- `pinsker_inequality`: The core inequality relating total variation
distance and KL divergence for `Fintype` distributions.
- Supporting definitions and lemmas for discrete KL divergence and
total variation.
## Context and motivation
Pinsker's inequality is a fundamental result in information theory
that connects two widely used divergence measures. It is used in
statistical learning theory (PAC-Bayes bounds), hypothesis testing
(minimax lower bounds via Le Cam and Fano), and sequential analysis.
This result is not currently in Mathlib and complements the existing
measure-theoretic probability infrastructure.
## LLM disclosure
LLM tools (Anthropic Claude) were used to assist with proof
exploration and tactic drafting. All proofs were subsequently
reviewed, tested, and verified by the author in the Lean 4
development environment. The author understands every proof step
and takes full responsibility for correctness.
## References
- Pinsker, M. S. *Information and Information Stability of Random
Variables and Processes*. Holden-Day (1964).
- Tsybakov, A. B. *Introduction to Nonparametric Estimation*.
Springer (2009), Lemma 2.5.
---
|
t-measure-probability
new-contributor
LLM-generated
|
507/0 |
Mathlib.lean,Mathlib/InformationTheory/Pinsker.lean |
2 |
2 |
['github-actions'] |
RemyDegenne assignee:RemyDegenne |
8-35056 8 days ago |
12-15354 12 days ago |
12-15908 12 days |
| 36832 |
KryptosAI author:KryptosAI |
chore(Data/Finset/Card): rename `pred_card_le_card_erase` to `sub_one_card_le_card_erase` |
## Summary
The name `pred_card_le_card_erase` suggests `Nat.pred` but the statement uses `- 1` (i.e., `Nat.sub 1`). Rename to `sub_one_card_le_card_erase` to match the actual statement.
A deprecated alias is added for backwards compatibility.
### Files changed
- `Mathlib/Data/Finset/Card.lean` — definition renamed + deprecated alias
- `Mathlib/Data/Finset/Powerset.lean` — reference updated
- `Mathlib/Combinatorics/Additive/SubsetSum.lean` — reference updated
- `Mathlib/Algebra/Polynomial/EraseLead.lean` — reference updated
Addresses the `Finset.pred_card_le_card_erase` item in #21584.
## AI disclosure
I used Claude Code to explore the codebase (finding all references to rename) and to draft the PR description. I reviewed and understand all changes — these are straightforward renames with a deprecated alias. |
new-contributor |
7/4 |
Mathlib/Algebra/Polynomial/EraseLead.lean,Mathlib/Combinatorics/Additive/SubsetSum.lean,Mathlib/Data/Finset/Card.lean,Mathlib/Data/Finset/Powerset.lean |
4 |
2 |
['github-actions'] |
nobody |
7-51062 7 days ago |
7-63634 7 days ago |
7-66526 7 days |
| 36886 |
Deep0Thinking author:Deep0Thinking |
feat(Combinatorics/Enumerative/Bonferroni): add Bonferroni inequalities |
This PR adds Bonferroni inequalities.
Main theorems:
- `Finset.indicator_biUnion_le_bonferroniIndicator_of_odd`
- `Finset.bonferroniIndicator_le_indicator_biUnion_of_even`
- `Finset.card_biUnion_le_bonferroniCard_of_odd`
- `Finset.bonferroniCard_le_card_biUnion_of_even`
Co-authored-by: Claude (Opus 4.6)
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
334/4 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Bonferroni.lean,Mathlib/Combinatorics/Enumerative/InclusionExclusion.lean |
3 |
2 |
['github-actions'] |
nobody |
6-7791 6 days ago |
6-7878 6 days ago |
6-8701 6 days |
| 34227 |
stepan2698-cpu author:stepan2698-cpu |
feat: If sum of densities is at least one, the sumset covers the naturals |
Proves an outstanding TODO item from Mathlib.Combinatorics.Schnirelmann : shows that if the sum of two densities is at least one, the sumset covers the positive naturals.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
51/1 |
Mathlib/Combinatorics/Schnirelmann.lean |
1 |
3 |
['github-actions', 'grunweg', 'kbuzzard'] |
b-mehta assignee:b-mehta |
6-4955 6 days ago |
63-65053 63 days ago |
63-79150 63 days |
| 36210 |
vbeffara author:vbeffara |
feat(Combinatorics/SimpleGraph): definitions of graph contraction and graph minor |
A contraction is the image of a graph through a surjective function with connected fibers, and a minor is a contraction of a subgraph.
This PR shows that being a contraction is transitive, but does not show the same for minors because the proof is more involved, it will be in a subsequent PR. The definitions are in `Prop` and do not contain data, but I'm not sure if that was the right choice.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
151/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Contraction.lean,Mathlib/Combinatorics/SimpleGraph/Minor.lean |
3 |
7 |
['YaelDillies', 'github-actions', 'mathlib-merge-conflicts', 'vbeffara'] |
YaelDillies assignee:YaelDillies |
6-3991 6 days ago |
7-11918 7 days ago |
20-38502 20 days |
| 36677 |
AlexeyMilovanov author:AlexeyMilovanov |
feat(Computability.Partrec): add computability of Nat.find |
This PR bridges `Partrec.rfind` with total unbounded search (`Nat.find`).
It adds:
* `Computable.find`: Proves that `x ↦ Nat.find (h_ex x)` is computable for a computable decidable predicate `P`.
* `Computable.rightInverse_of_surjective`: Proves that the right inverse of a computable surjective function is computable. |
t-computability
new-contributor
|
31/0 |
Mathlib/Computability/Partrec.lean |
1 |
5 |
['AlexeyMilovanov', 'github-actions', 'vlad902'] |
Komyyy assignee:Komyyy |
5-58788 5 days ago |
11-20563 11 days ago |
11-20557 11 days |
| 36937 |
Yaohua-Leo author:Yaohua-Leo |
feat(Algebra/Jordan): add first linearization lemmas for IsCommJordan |
AI assistance disclosure: I used AI assistance for CI/debugging and module-structure fixes in this PR. The mathematical content and main lemmas were written by me, with help from @pelicanhere.
This PR adds a new file `Mathlib/Algebra/Jordan/Linearization.lean`
containing first linearization lemmas for the commutative Jordan identity.
Main declarations:
* `IsCommJordan.four_nsmul_associator_mul_add`
* `IsCommJordan.associator_mul_add`
These lemmas formalize the standard first linearization of the commutative
Jordan identity using `associator`, following McCrimmon, Proposition 1.8.5.
I put them in a separate file since they seem to be the beginning of a small
linearization API for Jordan rings, and I expect follow-up lemmas
(e.g. further linearizations) to belong naturally in the same place.
I also asked on Zulip about file placement and naming; I am happy to rename
declarations or move them if reviewers prefer. |
t-algebra
new-contributor
label:t-algebra$ |
59/0 |
Mathlib.lean,Mathlib/Algebra/Jordan/Linearization.lean |
2 |
4 |
['Yaohua-Leo', 'github-actions', 'grunweg'] |
nobody |
5-27735 5 days ago |
5-32224 5 days ago |
5-32846 5 days |
| 36917 |
iarnoldy author:iarnoldy |
feat(LinearAlgebra/CliffordAlgebra): bivector Lie subalgebra |
Define the submodule of grade-n elements (n-vectors) in a Clifford algebra
and show that bivectors (n = 2) form a `LieSubalgebra` under the commutator
bracket. This gives the standard construction of so(Q) from Cl(Q).
Main definitions:
* `CliffordAlgebra.nvector` — grade-n submodule, spanned by n-fold products of ι
* `CliffordAlgebra.bivector` — nvector 2 Q, the bivector submodule
* `CliffordAlgebra.bivectorLieSubalgebra` — LieSubalgebra of bivectors
Main results:
* `CliffordAlgebra.lie_ι_mul_ι` — explicit commutator formula for bivector generators
* `CliffordAlgebra.lie_mem_bivector` — bracket closure of the bivector submodule
* `CliffordAlgebra.bivector_le_evenOdd_zero` — bivectors lie in the even part
The `LieModule` instance for `CliffordAlgebra Q` acting on itself is provided
explicitly (`instLieModuleSelf`) because automatic synthesis exceeds the default
heartbeat limit.
AI disclosure: This code was generated with AI assistance (Claude, Anthropic).
The submitter directed the construction and QA but is not a Lean programmer.
The mathematical content is classical (Doran & Lasenby, Ch. 3). Extra review
scrutiny is welcomed.
Co-authored-by: Claude
---
Open design questions for reviewers:
1. **Naming**: Is `nvector` the right name? Eric Wieser suggested generalizing
to n-vectors. Alternatives: `ιProd`, `grade`, or following the `exteriorPower`
pattern via `equivExterior` pullback.
2. **Scalar contamination**: The spanning set `{ι m₁ * ι m₂}` includes
`ι m * ι m = Q(m)` (scalars). Eric suggested pulling back `exteriorPower`
through `equivExterior` for pure grades (requires `Invertible (2 : R)`).
Happy to rework if that's preferred.
3. **instLieModuleSelf**: Should this be an upstream issue rather than a
local workaround? @ocfnash
4. **ι_mul_ι_comm'**: This may duplicate existing API (`ι_mul_ι_comm b a`
plus `polar_comm`). Happy to inline if reviewers prefer.
Discussed on Zulip: https://leanprover.zulipchat.com (Is there code for X? thread) |
new-contributor
t-algebra
LLM-generated
label:t-algebra$ |
338/0 |
Mathlib.lean,Mathlib/LinearAlgebra/CliffordAlgebra/Bivector.lean |
2 |
2 |
['github-actions'] |
nobody |
5-19634 5 days ago |
5-65099 5 days ago |
5-66318 5 days |
| 36849 |
mike1729 author:mike1729 |
feat(Analysis/Normed/Module/SchauderBasis): basic sequences and Grünblum/Nikolskii criteria |
This PR introduces the theory of basic sequences in Banach spaces, following Albiac–Kalton. Defines basic sequences and unconditional basic sequences in normed spaces, and prove the classical criteria for recognizing them.
New definitions (in BasicSequence.lean)
- `BasicSequence`: a bundled ℕ-indexed sequence forming a Schauder basis for its algebraic span, with finite projection bound.
- `UnconditionalBasicSequence`: the unconditional analogue, indexed by a general type β.
- `SatisfiesGrunblumCondition`: partial sums over initial segments are bounded by a constant times the full sum.
- `SatisfiesNikolskiiCondition`: partial sums over subsets are bounded by a constant times any larger sum.
Main results
- `SatisfiesGrunblumCondition.basicSequence`: a nonzero sequence satisfying the Grünblum condition is a basic sequence.
- `SatisfiesNikolskiiCondition.unconditionalBasicSequence`: the analogous result for unconditional basic sequences under the Nikolskii condition.
- `SatisfiesGrunblumCondition.linearIndependent`, `SatisfiesNikolskiiCondition.linearIndependent`: nonzero sequences satisfying these conditions are linearly independent.
---
- [x] follow up to : #34209
- [ ] blocks : #35473
[](https://gitpod.io/from-referrer/) |
file-removed
t-analysis
new-contributor
|
410/1 |
Mathlib.lean,Mathlib/Analysis/Normed/Module/SchauderBasis/Basic.lean,Mathlib/Analysis/Normed/Module/SchauderBasis/BasicSequence.lean |
3 |
2 |
['github-actions'] |
sgouezel assignee:sgouezel |
5-8357 5 days ago |
7-21892 7 days ago |
7-21987 7 days |
| 36324 |
psinary-sketch author:psinary-sketch |
feat(NumberTheory/LSeries): Schwarz reflection for completedRiemannZeta₀ |
---
Three new theorems about `completedRiemannZeta₀`:
- `completedRiemannZeta₀_conj`: Schwarz reflection
`Λ₀(conj s) = conj(Λ₀(s))`
- `completedRiemannZeta₀_im_eq_zero_on_half`: the completed zeta
function is real-valued on the critical line
- `completedRiemannZeta₀_conj_eq_self_on_half`: equivalent fixed-point
formulation
The Schwarz reflection follows from the Mellin representation: the
kernel is real-valued, so the integral commutes with conjugation via
`integral_conj`. The critical-line results compose this with the
functional equation. |
t-number-theory
new-contributor
|
147/0 |
Mathlib.lean,Mathlib/NumberTheory/LSeries/SchwarzReflection.lean |
2 |
13 |
['SnirBroshi', 'github-actions', 'psinary-sketch'] |
alexjbest assignee:alexjbest |
5-6862 5 days ago |
5-6931 5 days ago |
14-57135 14 days |
| 36889 |
KryptosAI author:KryptosAI |
feat(LinearAlgebra/Matrix/MoorePenrose): define the Moore-Penrose pseudo-inverse |
Defines `IsMoorePenroseInverse` and constructs the Moore-Penrose pseudo-inverse for matrices over `RCLike` fields. Closes #24787.
`Defs.lean` defines the predicate using the heterogeneous four-condition characterization from the issue, plus uniqueness for semigroups with `StarMul`.
`Basic.lean` constructs the inverse via orthogonal projection and `ker(f)ᗮ ≃ₗ range(f)`, then proves:
```lean
theorem exists_isMoorePenroseInverse (A : Matrix m n 𝕜) :
∃ (As : Matrix n m 𝕜), IsMoorePenroseInverse A As
def moorePenroseInverse (A : Matrix m n 𝕜) : Matrix n m 𝕜
lemma moorePenroseInverse_conjTranspose :
moorePenroseInverse (Aᴴ) = (moorePenroseInverse A)ᴴ
lemma moorePenroseInverse_eq_nonsing_inv (hA : IsUnit A) :
moorePenroseInverse A = A⁻¹
```
### AI disclosure
- **Gemini 2.5 Pro**: proof planning, initial code, edits
- **Claude Code (Opus 4.6)**: debugging, compilation, type-checking against mathlib4
I reviewed and directed all changes.
---
[](https://gitpod.io/from-referrer/) |
t-algebra
new-contributor
LLM-generated
label:t-algebra$ |
399/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/MoorePenrose/Basic.lean,Mathlib/LinearAlgebra/Matrix/MoorePenrose/Defs.lean |
3 |
25 |
['KryptosAI', 'github-actions', 'vihdzp'] |
nobody |
5-1921 5 days ago |
5-1984 5 days ago |
5-3120 5 days |
| 36421 |
ROTARTSI82 author:ROTARTSI82 |
feat(RingTheory/IsAdjoinRoot): add mkOfAdjoinEqTop' |
Alternative hypothesis to existing theorem: prove the result from a `Module.Free `hypothesis instead of `IsIntegrallyClosed`. If `α` generates `S` as an algebra, then `S` is given by adjoining a root of `minpoly R α`.
---
Hello, we are the Algebraic Geometry group from the UW Math AI lab, and this is our first PR! This definition of `mkOfAdjoinEqTop'` generalizes the existing `mkOfAdjoinEqTop` and shows the result from `Module.Free` instead of `IsIntegrallyClosed`. It is used in future results that we would like to upstream at https://github.com/uw-math-ai/monogenic-extensions, which is a project to formalize lemmas 3.1 and 3.2 from https://arxiv.org/abs/2503.07846.
Co-authored-by: George Peykanu
Co-authored-by: Bryan Boehnke
Co-authored-by: Bianca Viray <67076332+b-viray@users.noreply.github.com>
-->
[](https://gitpod.io/from-referrer/)
|
new-contributor
large-import
t-ring-theory
|
47/0 |
Mathlib/FieldTheory/Minpoly/Basic.lean,Mathlib/RingTheory/IsAdjoinRoot.lean |
2 |
4 |
['ROTARTSI82', 'b-viray', 'github-actions'] |
dupuisf assignee:dupuisf |
4-81923 4 days ago |
16-60096 16 days ago |
16-60090 16 days |
| 34742 |
Brian-Nugent author:Brian-Nugent |
feat(SheafCohomology): add API for Sheaf Cohomology |
Defines the long exact sequence on cohomology associated to a short exact sequence of sheaves `H.longSequence`. Also defines `H.equiv₀`, the additive equivalence between `H F 0` and `((sheafSections J AddCommGrpCat).obj (op T)).obj F` when the category has a terminal object `T`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
large-import
t-category-theory
|
87/3 |
Mathlib/Algebra/Category/Grp/ForgetCorepresentable.lean,Mathlib/CategoryTheory/Sites/Abelian.lean,Mathlib/CategoryTheory/Sites/SheafCohomology/Basic.lean |
3 |
33 |
['Brian-Nugent', 'adamtopaz', 'dagurtomas', 'github-actions', 'joelriou', 'joneugster', 'mathlib-merge-conflicts'] |
adamtopaz assignee:adamtopaz |
4-81745 4 days ago |
4-81745 4 days ago |
43-42794 43 days |
| 33714 |
idontgetoutmuch author:idontgetoutmuch |
feat(Mathlib/Geometry/Manifold): Riemannian metrics exist II |
Supersedes https://github.com/leanprover-community/mathlib4/pull/33519
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
new-contributor
|
680/0 |
Mathlib.lean,Mathlib/Geometry/Manifold/ExistsRiemannianMetric.lean,Mathlib/Geometry/Manifold/PartitionOfUnity.lean |
3 |
200 |
['github-actions', 'grunweg', 'idontgetoutmuch'] |
grunweg, ocfnash, sgouezel assignee:ocfnash assignee:grunweg assignee:sgouezel |
4-58779 4 days ago |
25-4853 25 days ago |
39-35022 39 days |
| 35653 |
pepamontero author:pepamontero |
feat: add ChartedSpace structure on orbit space |
feat: add ChartedSpace structure on orbit space
Add topological preliminaries for properly discontinuous group actions, and use them to equip the orbit space `orbitRel.Quotient G M` with a `ChartedSpace` structure.
In particular:
- Show that the quotient map `Quotient.mk _ : M → orbitRel.Quotient G M` is a covering map and hence a local homeomorphism.
- Construct chosen local inverses of the quotient map and establish properties over them.
- Define a `ChartedSpace` instance on the quotient by composing these local inverses with charts of M.
This started as an ItaLean2025 project; here is the [Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/541885-ItaLean-2025/topic/Projects.3A.20Quotient.20Manifolds/with/575121158) dedicated to it.
---
|
new-contributor
t-differential-geometry
|
186/0 |
Mathlib.lean,Mathlib/Geometry/Manifold/Instances/OrbitSpace.lean,Mathlib/Topology/Algebra/OrbitSpace.lean |
3 |
2 |
['github-actions'] |
PatrickMassot, ocfnash, sgouezel assignee:ocfnash assignee:sgouezel assignee:PatrickMassot |
4-58778 4 days ago |
31-77821 31 days ago |
31-78490 31 days |
| 36910 |
Brian-Nugent author:Brian-Nugent |
feat(CategoryTheory): 4 and 5 lemmas for ComposableArrows 5 |
Adds versions of the 4 and 5 lemmas for morphisms in `ComposableArrows 5`.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
new-contributor
|
71/2 |
Mathlib/CategoryTheory/Abelian/DiagramLemmas/Four.lean |
1 |
2 |
['github-actions'] |
adamtopaz assignee:adamtopaz |
4-58763 4 days ago |
5-83809 5 days ago |
5-83803 5 days |
| 36781 |
hommmmm author:hommmmm |
feat(RingTheory/UniqueFactorizationDomain): UFD iff height one primes are principal |
We prove that a Noetherian integral domain is a UFD if and only if every prime ideal of height one is principal (`UniqueFactorizationMonoid.iff_height_one_prime_principal`).
## New declarations
* `UniqueFactorizationMonoid.exists_height_one_le_of_finite_height`: given a prime of finite height ≥ 1, there exists a height one prime contained in it.
* `UniqueFactorizationMonoid.ne_bot_of_height_one`: an ideal of height one is nonzero.
* `UniqueFactorizationMonoid.height_ge_one_of_prime_ne_bot`: the height of a nonzero prime ideal in a domain is at least one.
* `UniqueFactorizationMonoid.height_one_prime_principal`: in a UFD, every height one prime is principal.
* `UniqueFactorizationMonoid.of_height_one_prime_principal`: every height one prime being principal implies UFD (Noetherian case).
* `UniqueFactorizationMonoid.iff_height_one_prime_principal`: the full iff statement.
## References
See https://stacks.math.columbia.edu/tag/0AFT
## AI Disclosure
This code is written without AI, then uses Claude Code with cameronfreer's [Lean4-skills](https://github.com/cameronfreer/lean4-skills) (specifically, the `review`, `refactor`, and `golf` workflow) for style changes, refactoring and golfing.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
large-import
|
102/1 |
Mathlib/RingTheory/UniqueFactorizationDomain/Kaplansky.lean |
1 |
8 |
['Thmoas-Guan', 'chrisflav', 'github-actions', 'hommmmm', 'tb65536'] |
mariainesdff assignee:mariainesdff |
3-76558 3 days ago |
3-76559 3 days ago |
8-25760 8 days |
| 36785 |
hommmmm author:hommmmm |
feat(RingTheory/Localization): Nagata's criterion for primality in localization away |
## Summary
- Add `dvd_of_mem_span_singleton_localization`: if `p` is prime and `p ∤ x`, then
membership in the span of the image of `x` in `R[1/p]` implies divisibility by `x`.
- Add `prime_of_prime_in_localization` (Nagata's criterion): if `p` is prime, `x` is
irreducible, and the image of `x` in `R[1/p]` is prime, then `x` is prime.
## References
- [Stacks Project, Tag 0AFU](https://stacks.math.columbia.edu/tag/0afu)
## AI Disclosure
This code is written without AI, then uses Claude Code with cameronfreer's [Lean4-skills](https://github.com/cameronfreer/lean4-skills) (specifically, the `review`, `refactor`, and `golf` workflow) for style changes, refactoring and golfing.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
72/0 |
Mathlib.lean,Mathlib/RingTheory/Localization/Away/Prime.lean |
2 |
4 |
['chrisflav', 'github-actions', 'hommmmm'] |
chrisflav assignee:chrisflav |
3-76558 3 days ago |
3-76558 3 days ago |
8-16773 8 days |
| 33662 |
Pjotr5 author:Pjotr5 |
feat(Algebra/Order/BigOperators/Expect): add lemmas and strict variants |
### Summary
- Combine `le_expect_nonempty_of_subadditive` and `le_expect_of_subadditive` into a single lemma `le_expect_of_subadditive`.
The extra assumptions `(hs : s.Nonempty)` and `(h_zero : m 0 = 0)` are unnecessary (since `m 0 = 0` follows from `h_div`).
This requires a small downstream update to `Mathlib/Analysis/RCLike/Basic.lean` (`norm_expect_le`).
- Add strict-inequality variants:
`expect_lt_expect`, `expect_lt`, `lt_expect`.
- Add existence lemmas:
`exists_le_of_expect_le_expect`, `exists_le_of_le_expect`, `exists_le_of_expect_le`,
and `exists_lt_of_expect_lt_expect`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-algebra
label:t-algebra$ |
46/16 |
Mathlib/Algebra/Order/BigOperators/Expect.lean,Mathlib/Analysis/RCLike/Basic.lean |
2 |
6 |
['Pjotr5', 'b-mehta', 'github-actions'] |
b-mehta assignee:b-mehta |
3-73660 3 days ago |
3-73833 3 days ago |
79-28967 79 days |
| 36245 |
BryceT233 author:BryceT233 |
feat(RingTheory/LocalRing): introduce algebra map version of `ResidueField.map` |
This PR added `IsLocalHom` instances to `AlgHom` and introduced the algebra map version of `IsLocalRing.ResidueField.map`
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-ring-theory
|
57/0 |
Mathlib/RingTheory/LocalRing/ResidueField/Basic.lean,Mathlib/RingTheory/LocalRing/RingHom/Basic.lean |
2 |
2 |
['github-actions'] |
mattrobball assignee:mattrobball |
3-61027 3 days ago |
20-40323 20 days ago |
20-40414 20 days |
| 35707 |
BryceT233 author:BryceT233 |
feat(RingTheory/MvPowerSeries): introduce `truncTotal` |
This PR introduces the total degree truncation of multivariate formal power series when the index is finite, and uses it to establish the algebraic equivalence between `MvPowerSeries` and the adic completion of `MvPolynomial` with respect to the ideal spanned by all variables `idealOfVars`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-ring-theory
|
213/2 |
Mathlib.lean,Mathlib/Data/Finsupp/Weight.lean,Mathlib/RingTheory/MvPowerSeries/Equiv.lean,Mathlib/RingTheory/MvPowerSeries/Trunc.lean |
4 |
7 |
['BryceT233', 'github-actions', 'joneugster', 'mathlib-bors', 'wwylele'] |
erdOne assignee:erdOne |
3-61007 3 days ago |
21-52571 21 days ago |
30-35456 30 days |
| 28546 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): basic setup of Zd, full shift, cylinders, pat… |
This PR adds a **group-generic** foundation for symbolic dynamics over an arbitrary group `G`, together with convenient specializations for `ℤ` and `ℤ^d`.
Summary of additions:
- **Full shift and shift action**
- `abbrev FullShift (A G) := G → A` (inherits product topology from the Π-type).
- Right shift `shift g x` with convention `(shift g x) h = x (h * g)`.
- **Cylinders and topology**
- `cylinder U x : Set (G → A)` for finite `U : Finset G`.
- Cylinders are open under `[DiscreteTopology A]`; with a finite alphabet they are also closed.
- Equality with dependent products:
`cylinder U x = Set.pi (↑U) (fun i => ({x i} : Set A))`, enabling use of the `Set.pi` API.
- **Patterns, occurrences, and subshifts**
- `Pattern A G` with finite `support : Finset G` and `data : support → A`.
- `Pattern.occursIn p x g` (occurrence at translate `g`) and the expected shift law.
- `forbids F` and `Subshift A G` (closed, shift-invariant subsets).
- `FixedSupport A G U` with an equivalence to `(U → A)` to obtain finiteness.
- **Language on finite shapes and counting**
- `languageOn X U`, `languageCardOn X U`, and `patternCountOn Y U`.
- **Entropy along a shape sequence**
- `limsupAtTop` (as an `sInf` of eventual upper bounds).
- `entropyAlong X F hF := limsup (log (patternCountOn X (F n) + 1) / |F n|)`
for any nonempty finite shapes `F : ℕ → Finset G` (the `+ 1` avoids `log 0`).
- **Specializations**
- `IntShapes`: segments `[-n,n]` on `Multiplicative ℤ`, with `entropy_Z`.
- `ZdShapes`: boxes `[-n,n]^d` on `ℤ^d` (as functions `Fin d → ℤ`), with `entropy_Zd`.
Mathematical remarks:
- The API is **shape-parametric**: entropy is defined along user-provided finite shapes.
- On **amenable** groups, using a **Følner** sequence yields a canonical value (Ornstein–Weiss).
This PR does not assume amenability; the family of shapes is an explicit input.
Motivation:
Provide a clean, reusable base for symbolic dynamics on groups in mathlib.
Future work:
- Add a Følner predicate and prove shape-independence / limit existence on amenable groups.
- Expand the `ℤ`/`ℤ^d` toolkit (alternative shapes, mixing, factors).
- Develop 1D theory and, longer-term, multidimensional SFT results (e.g. along the lines of Hochman–Meyerovitch).
|
t-dynamics
new-contributor
|
746/0 |
Mathlib.lean,Mathlib/Dynamics/SymbolicDynamics/Basic.lean,Mathlib/Tactic/Translate/ToAdditive.lean |
3 |
181 |
['Sfgangloff', 'botbaki-review', 'eric-wieser', 'github-actions', 'kckennylau', 'mathlib4-merge-conflict-bot', 'sgouezel'] |
urkud assignee:urkud |
3-58743 3 days ago |
37-59549 37 days ago |
141-19013 141 days |
| 32807 |
WilliamCoram author:WilliamCoram |
feat: Define the Gauss norm for MvPowerSeries |
We adjust the current definition for Gauss norm on power series to work for multivariate power series.
If this seems acceptable I can refactor the single variable case.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
124/0 |
Mathlib.lean,Mathlib/RingTheory/MvPowerSeries/GaussNorm.lean |
2 |
25 |
['WilliamCoram', 'erdOne', 'fbarroero', 'github-actions', 'mathlib4-merge-conflict-bot', 'vihdzp'] |
erdOne assignee:erdOne |
3-58741 3 days ago |
41-12704 41 days ago |
54-20560 54 days |
| 33985 |
YellPika author:YellPika |
feat(Order/OmegaCompletePartialOrder): `OmegaCompletePartialOrder` instance for `Sum` with basic `ωScottContinuous` lemmas |
This PR adds an `OmegaCompletePartialOrder` instance for `Sum`, along with `ωScottContinuous` lemmas for basic operations (`inl`, `inr`, `elim`). Appropriate lemmas are marked with `@[fun_prop]` so that the `fun_prop` tactic can automatically deduce `ωScottContinuous` proofs for functions involving `Sum`s (e.g. see the proof of `Sum.ωScottContinuous_map`).
---
- [x] depends on: #33941
[](https://gitpod.io/from-referrer/)
|
new-contributor
large-import
t-order
|
191/1 |
Mathlib/Data/Sum/Basic.lean,Mathlib/Data/Sum/Order.lean,Mathlib/Order/OmegaCompletePartialOrder.lean,Mathlib/Order/ScottContinuity.lean |
4 |
20 |
['Vierkantor', 'YellPika', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp'] |
pechersky assignee:pechersky |
3-58735 3 days ago |
41-519 41 days ago |
50-49165 50 days |
| 34093 |
YellPika author:YellPika |
feat(Order/OmegaCompletePartialOrder): add `OmegaCompletePartialOrder` instance for `Option` with basic `ωScottContinuous` lemmas |
---
- [x] depends on: #33941
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
297/0 |
Mathlib.lean,Mathlib/Data/Option/Order.lean,Mathlib/Order/Monotone/Basic.lean,Mathlib/Order/OmegaCompletePartialOrder.lean |
4 |
5 |
['YellPika', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
Komyyy assignee:Komyyy |
3-58733 3 days ago |
50-41094 50 days ago |
50-44052 50 days |
| 34182 |
IlPreteRosso author:IlPreteRosso |
feat(Data/Finsupp/Single, Data/Finsupp/Indicator): Add set_indicator_singleton, indicator_singleton; golfed single_eq_set_indicator, single_eq_indicator |
[Mathlib.Data.Finsupp.Single](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Finsupp/Single.html#Finsupp.single)
- Add `set_indicator_singleton`, golfed `single_eq_set_indicator`
[Mathlib.Data.Finsupp.Indicator](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Finsupp/Indicator.html#Finsupp.indicator_apply)
- Add `indicator_singleton`, golfed `single_eq_indicator`
Continues the work from #34095 |
large-import
t-data
new-contributor
|
17/17 |
Mathlib/Data/Finsupp/Indicator.lean,Mathlib/Data/Finsupp/Single.lean |
2 |
29 |
['IlPreteRosso', 'eric-wieser', 'github-actions', 'mathlib-bors', 'urkud'] |
TwoFX assignee:TwoFX |
3-58731 3 days ago |
64-47082 64 days ago |
64-55069 64 days |
| 34481 |
DAE123456 author:DAE123456 |
feat: Ore's Theorem |
Ore Theorem : Let G be a graph of order n ≥ 3 that satisfies the Ore property. Then G has a Hamilton cycle. |
t-combinatorics
new-contributor
|
3372/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Ore.lean |
2 |
25 |
['DAE123456', 'LLaurance', 'Ruben-VandeVelde', 'YaelDillies', 'github-actions', 'kim-em', 'tb65536', 'vlad902'] |
kmill assignee:kmill |
3-58730 3 days ago |
52-27219 52 days ago |
55-78727 55 days |
| 34722 |
GrigorenkoPV author:GrigorenkoPV |
feat(Data/Finset/RangeDistance): add |
---
Rebase of https://github.com/leanprover-community/mathlib4/pull/26347
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-data
|
34/0 |
Mathlib.lean,Mathlib/Algebra/Order/Group/Unbundled/Abs.lean,Mathlib/Data/Finset/RangeDistance.lean |
3 |
4 |
['GrigorenkoPV', 'github-actions', 'joneugster', 'plp127'] |
pechersky assignee:pechersky |
3-58727 3 days ago |
52-13011 52 days ago |
52-14910 52 days |
| 34851 |
dennj author:dennj |
feat(Data/Matrix/Mul): add diagonal and transpose lemmas for vector operations |
This adds three lemmas for matrix-vector operations that serve as foundational support for future ML formalization:
- `vecMul_diagonal_dotProduct`: weighted inner product `x ᵥ* diagonal d ⬝ᵥ y = ∑ i, d i * x i * y i`
- `dotProduct_transpose_mulVec`: bilinear form symmetry `x ⬝ᵥ Aᵀ *ᵥ y = y ⬝ᵥ A *ᵥ x`
- `mul_diagonal_mulVec`: column-weighted sum `(A * diagonal d) *ᵥ x = ∑ i, (d i * x i) • A.col i`
These are basic linear algebra identities involving diagonal matrices and vector operations that appear frequently in machine learning contexts (weighted inner products, attention mechanisms, feature scaling, diagonal preconditioning). |
t-data
new-contributor
|
22/0 |
Mathlib/Data/Matrix/Mul.lean |
1 |
5 |
['dennj', 'eric-wieser', 'github-actions', 'themathqueen'] |
TwoFX assignee:TwoFX |
3-58724 3 days ago |
49-74258 49 days ago |
49-74252 49 days |
| 34875 |
banrovegrie author:banrovegrie |
feat(LinearAlgebra/Matrix): add Sherman-Morrison formula |
Mathlib has the matrix determinant lemma (`det_add_replicateCol_mul_replicateRow` in SchurComplement.lean) but lacked the corresponding inverse formula. This PR fills that gap.
- Add `Matrix.inv_add_vecMulVec`: Sherman-Morrison formula for `(A + uv^T)^{-1}`
- Add `Matrix.inv_sub_vecMulVec`: subtraction variant
- Add `Matrix.isUnit_det_add_vecMulVec`: invertibility under the formula's hypotheses
## Test plan
- [x] `lake build` passes
- [x] Lines within 100 char limit
- [x] All declarations have docstrings |
t-algebra
new-contributor
label:t-algebra$ |
135/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/ShermanMorrison.lean |
2 |
11 |
['Xxxjdjdid', 'banrovegrie', 'copilot-pull-request-reviewer', 'eric-wieser', 'github-actions', 'wwylele'] |
eric-wieser assignee:eric-wieser |
3-58723 3 days ago |
49-7090 49 days ago |
49-7084 49 days |
| 35597 |
BryceT233 author:BryceT233 |
feat(AdicTopology): add lemmas about adic topology |
This PR adds APIs to transport topological and uniform properties of adic topologies across ring equivalences, By upgrading an ideal-preserving ring equivalence to a `UniformEquiv`, we provide natural congruence lemmas for adic completeness, precompleteness, and Hausdorffness, which serve as necessary topological preliminaries for the ongoing formalization of the Cohen Structure Theorem.
Co-authored-by: @Thmoas-Guan
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
55/2 |
Mathlib/RingTheory/AdicCompletion/Topology.lean,Mathlib/Topology/Algebra/Nonarchimedean/AdicTopology.lean |
2 |
7 |
['erdOne', 'github-actions'] |
PatrickMassot assignee:PatrickMassot |
3-58717 3 days ago |
30-50141 30 days ago |
33-37495 33 days |
| 35857 |
AlexeyMilovanov author:AlexeyMilovanov |
feat(Logic.Equiv.BijectiveBase2): add bijective base-2 numeration |
This PR introduces a formalization of the bijective base-2 numeration system.
Unlike standard binary representation, bijective base-2 avoids the "leading zeros" problem, providing a strict mathematical bijection between natural numbers (`ℕ`) and lists of booleans (`List Bool`).
**Main additions:**
* `Equiv.BijectiveBase2.toBits`: Encodes `ℕ` to `List Bool`.
* `Equiv.BijectiveBase2.ofBits`: Decodes `List Bool` to `ℕ`.
* `equivBijectiveBase2`: The formal `ℕ ≃ List Bool` equivalence.
---
Zulip: [#PR reviews > PR #35857: Bijective Base-2 Numeration](https://leanprover.zulipchat.com/#narrow/channel/144837-PR-reviews/topic/PR.20.2335857.3A.20Bijective.20Base-2.20Numeration/with/576336540)
*(Note: This replaces my previously closed PR to avoid the terminology clash between "Dyadic" and dyadic rationals. The namespace and definitions have been updated accordingly).*
*(Note: Used AI to assist with standardizing proof structures).* |
t-logic
new-contributor
LLM-generated
|
95/0 |
Mathlib.lean,Mathlib/Logic/Equiv/ListNatBijective.lean |
2 |
5 |
['AlexeyMilovanov', 'SnirBroshi', 'github-actions', 'joneugster'] |
awainverse assignee:awainverse |
3-58714 3 days ago |
26-79982 26 days ago |
26-80433 26 days |
| 36787 |
hommmmm author:hommmmm |
feat(RingTheory/LocalRing): Krull dimension results for maximal ideal of local ring |
## Summary
This PR adds two results connecting the Krull dimension of a local ring to its maximal ideal:
* `IsLocalRing.ringKrullDim_eq_zero_of_maximalIdeal_eq_bot`: A local ring whose maximal ideal is `⊥` has Krull dimension zero.
* `IsLocalRing.exists_mem_maximalIdeal_not_mem_sq`: In a Noetherian local ring of positive Krull dimension, there exists an element in the maximal ideal that is not in its square.
The second result follows from Nakayama's lemma: if every element of the maximal ideal `𝔪` were in `𝔪²`, then `𝔪 = 𝔪²`, and Nakayama gives `𝔪 = ⊥`, contradicting positive dimension.
## New file
* `Mathlib/RingTheory/LocalRing/MaximalIdeal/KrullDimension.lean`
## Acknowledgements
Thanks to Dora Kassabova and Leopold Mayer for edit suggestions.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-ring-theory
|
57/0 |
Mathlib.lean,Mathlib/RingTheory/LocalRing/MaximalIdeal/KrullDimension.lean |
2 |
10 |
['NoahW314', 'github-actions', 'hommmmm', 'tb65536', 'wwylele'] |
chrisflav assignee:chrisflav |
3-58707 3 days ago |
7-76031 7 days ago |
8-51800 8 days |
| 36788 |
hommmmm author:hommmmm |
feat(RingTheory): height of span of a prime element is one |
## Summary
- Add `Ideal.height_span_singleton_eq_one_of_prime`: in a Noetherian integral domain, the ideal generated by a prime element has height one.
## Notes
The new theorem follows directly from `height_le_one_of_isPrincipal_of_mem_minimalPrimes` (upper bound) and the fact that `span {p} ≠ ⊥` for `p` prime (lower bound).
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
12/1 |
Mathlib/RingTheory/Ideal/KrullsHeightTheorem.lean |
1 |
2 |
['github-actions'] |
mattrobball assignee:mattrobball |
3-58706 3 days ago |
8-51035 8 days ago |
8-51029 8 days |
| 36789 |
hommmmm author:hommmmm |
feat(RingTheory/Ideal/Height): prime ideal determined by height among overideals |
## Summary
- Add `Ideal.eq_of_le_of_height_eq`: a prime ideal of finite height is equal to any ideal of the same height that contains it.
## Notes
This is a direct consequence of `Ideal.height_strict_mono_of_is_prime`: if `I` were strictly contained in `J`, their heights would differ.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
10/0 |
Mathlib/RingTheory/Ideal/Height.lean |
1 |
7 |
['github-actions', 'hommmmm', 'tb65536'] |
erdOne assignee:erdOne |
3-58706 3 days ago |
8-50743 8 days ago |
8-50737 8 days |
| 36813 |
AlexeyMilovanov author:AlexeyMilovanov |
feat(Computability.Encoding): add self-delimiting unary and pair encodings |
Adds `unaryPrefix` (a self-delimiting $1^n 0$ code) and `prefixPair` to `Mathlib.Computability.Encoding`.
**Key changes:**
* **`unaryPrefix`**: A prefix-free unary encoding for $\mathbb{N}$, distinct from the existing `unaryEncodeNat`.
* **`unaryPrefix_append_inj`**: A basic cancellation lemma that allows unique extraction of a unary prefix from a concatenated list.
* **`prefixPair`**: A self-delimiting pairing function for boolean lists, defined as $\text{unaryPrefix } |x| \frown x \frown y$.
* **`prefixPair_inj`**: A concise proof of pair injectivity leveraging the new prefix lemmas.
|
t-computability
new-contributor
|
56/1 |
Mathlib/Computability/Encoding.lean |
1 |
2 |
['github-actions'] |
Komyyy assignee:Komyyy |
3-58705 3 days ago |
8-5440 8 days ago |
8-5434 8 days |
| 36896 |
PieterCuijpers author:PieterCuijpers |
feat (Algebra/Order/Quantale): isMulIdempotent, isMulLeftsided, isMulRightsided, isMulTwosided and strict versions |
* Adding definitions of quantale elements being idempotent, leftsided, rightsided, and twosided, and strict versions
I'd value some discussion on whether especially the definition of isMulIdempotent would belong here, since
it applies to semigroups in general. I only see definitions of IdempotentOp in the library so far, focussing on
operators that are fully idempotent, while in the study of Quantales it seems that subquantales of elements
that are idempotent in the original are also interesting. This argues the need for having definitions on
separate elements.
Also, should we include these definitions in the main Algebra/Order/Quantale.lean file, or start a separate file for them?
And I have a few basic theorems I would like to include, but invite suggestions.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
105/1 |
Mathlib/Algebra/Order/Quantale.lean |
1 |
4 |
['NoahW314', 'github-actions'] |
kim-em assignee:kim-em |
3-58704 3 days ago |
6-24459 6 days ago |
6-24453 6 days |
| 36968 |
NoahW314 author:NoahW314 |
feat: add missing IndiscreteTopology instances |
Add several instances for the IndiscreteTopology. These instances are chosen as they have short proofs and imply many of the more common instances like `NormalSpace` and `LocPathConnectedSpace`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-topology
|
21/0 |
Mathlib/Topology/AlexandrovDiscrete.lean,Mathlib/Topology/Constructions.lean,Mathlib/Topology/Irreducible.lean,Mathlib/Topology/Metrizable/Basic.lean |
4 |
2 |
['github-actions'] |
PatrickMassot assignee:PatrickMassot |
3-58700 3 days ago |
4-57096 4 days ago |
4-57090 4 days |
| 37000 |
Qulinecier author:Qulinecier |
feat: generalize rank_submatrix_le to arbitrary column maps |
This PR generalizes `rank_submatrix_le` to allow an arbitrary function on columns
instead of requiring an `Equiv`. The previous version required `e : m₀ ≃ m` and
`[Fintype m]`, while this version only requires `c : n₀ → n` and `[Fintype n₀]`.
The previous version can be recovered as a special case of the new one.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
16/6 |
Mathlib/LinearAlgebra/Matrix/Rank.lean |
1 |
4 |
['Qulinecier', 'github-actions', 'themathqueen'] |
nobody |
3-19414 3 days ago |
3-77015 3 days ago |
3-77009 3 days |
| 34138 |
pfaffelh author:pfaffelh |
feat(MeasureTheory): Introduce `MassFunction α` giving rise to a `Measure α ⊤` |
Define `MassFunction α := α → ℝ≥0∞`
Define `toMeasure (w : MassFunction α) : @Measure α ⊤` as a sum of diracs
Show properties of the resulting objects
This PR intends to start a more userfriendly interaction with probability mass functions (`PMF`). There are two main differences between `MassFunction` and `PMF`:
* `PMF` hast the additional property `HasSum 1`, making the resulting measure a probability measure. (For `MassFunction`, I intend to use the typeclass `IsProbabilityMeasure`in a later PR instead.)
* The `toMeasure` function of `MassFunction` directly defines the measure as a sum of diracs, which immediately makes computations possible.
Discussion thread on [zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/PMF.20Refactor.3A.20FunLike.20vs.20Definition.20Change)
- depends on: #37060
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
new-contributor
|
252/1 |
Mathlib.lean,Mathlib/Algebra/Group/Indicator.lean,Mathlib/Algebra/GroupWithZero/Indicator.lean,Mathlib/Data/Set/Pairwise/Basic.lean,Mathlib/MeasureTheory/Measure/MassFunction.lean,Mathlib/Topology/Algebra/InfiniteSum/Basic.lean |
6 |
13 |
['DavidLedvinka', 'github-actions', 'metakunt', 'pfaffelh'] |
kex-y and ocfnash assignee:ocfnash assignee:kex-y |
2-69824 2 days ago |
2-69778 2 days ago |
65-72888 65 days |
| 34191 |
IlPreteRosso author:IlPreteRosso |
feat(Topology/Algebra/InfiniteSum): Discrete Convolution API 1st PR |
Defines the very basics of the discrete convolution API. In analogy with [MeasureTheory.Convolution](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Analysis/Convolution.html#MeasureTheory.convolution).
Main definitions include
- `mulFiber`, `convolution`, `ConvolutionExists`, `ConvolutionExists.add_distrib`, `ConvolutionExistsAt.smul_convolution`, `mulFiber_swapEquiv`, `convolution_comm`
RM:
- The main docstring is *as is*
- Next step is triple sum intrastrcutre + `assoc` theorems for convolution (long)
Continues the work from #33411 and #33410 (splitting into shorter PRs, carries over the modifications from previous reviews) |
t-topology
new-contributor
|
277/0 |
Mathlib.lean,Mathlib/Topology/Algebra/InfiniteSum/DiscreteConvolution.lean |
2 |
18 |
['IlPreteRosso', 'github-actions', 'j-loreaux'] |
ocfnash assignee:ocfnash |
2-58795 2 days ago |
50-1349 50 days ago |
59-3026 59 days |
| 34477 |
spanning-tree author:spanning-tree |
refactor(Order): make CompletePartialOrder extend OrderBot |
Make `CompletePartialOrder` extend `OrderBot`, and add a constructor `completePartialOrderOfLubOfDirected`. Previously, `CompletePartialOrder` had an implicit bottom element but did not extend OrderBot explicitly.
Breaking change: `CompletePartialOrder` instances must provide `⊥` and `bot_le`, or use the constructor.
See discussion in [Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/.3E.20complete.20partial.20order.20and.20domain.20theory.20formalization).
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
15/1 |
Mathlib/Order/CompletePartialOrder.lean |
1 |
3 |
['Citronhat', 'github-actions', 'mathlib-merge-conflicts'] |
bryangingechen assignee:bryangingechen |
2-58793 2 days ago |
25-11692 25 days ago |
45-73243 45 days |
| 35329 |
BryceT233 author:BryceT233 |
feat(Data/Finsupp): add computational lemmas for cons and single |
This PR introduces `cons_eq_single_zero_iff` and `cons_eq_single_succ_iff`, which are helper lemmas designed to facilitate calculations (or simplification) of equalities involving `Finsupp.cons` and `Finsupp.single`.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
25/0 |
Mathlib/Data/Finsupp/Fin.lean |
1 |
2 |
['github-actions'] |
nobody |
2-58790 2 days ago |
23-65313 23 days ago |
39-34575 39 days |
| 36720 |
YanYablonovskiy author:YanYablonovskiy |
feat(Order): `OrderType.lift` and more order type API |
Adding the universe lifting operation to `OrderType` , addresses a 'TODO' .
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
41/2 |
Mathlib/Order/Types/Defs.lean |
1 |
23 |
['YaelDillies', 'YanYablonovskiy', 'github-actions', 'vihdzp'] |
bryangingechen assignee:bryangingechen |
2-58783 2 days ago |
3-28272 3 days ago |
4-78222 4 days |
| 36752 |
Ljon4ik4 author:Ljon4ik4 |
feat: Alternative definition of a tensor product for an algebra |
Let $A$ be an $R$-algebra and $M$ and $N$ $A$-modules.
Then the tensor product $M\otimes_A N$ can be constructed as a quotient of $M\otimes_R N$ by the submodule generated by elements of the shape $am\otimes n - m\otimes an$. This PR realizes this construction and shows that it is isomorphic to the general definition of $M\otimes_A N$.
As one consequence we obtain a description of the kernel of `mapOfCompatibleSMul'` as a span of elements of the shape $am\otimes n - m\otimes an$.
* I wasn't sure where exactly to put it: Currently it is in `Algebra.TensorProduct`, which I think could be a place for more results of tensor products over algebras in the long term, but maybe some file inside `Mathlib.LinearAlgebra.TensorProduct` could also make sense.
* I am not sure if it is very nice to mention 'variable (R A M N)' everywhere, they could also be defined as explicit in the top of the document, and explicitly omitted where unneeded.
* The `omit [IsScalarTower R A N] in` was suggested by the linter, I am not sure I understand why
* Since the relations contain negation, this procedure only works if some of the ingredients admit negation, one could imagine alternative versions (e.g. when $N$ admits negations and not $M$) but this seemed the most intuitive one.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
120/0 |
Mathlib.lean,Mathlib/Algebra/Algebra/TensorProduct.lean,Mathlib/LinearAlgebra/TensorProduct/Basic.lean |
3 |
6 |
['Ljon4ik4', 'github-actions', 'mathlib-bors'] |
ocfnash assignee:ocfnash |
2-33331 2 days ago |
2-33411 2 days ago |
7-42377 7 days |
| 36621 |
quantumsnow author:quantumsnow |
feat: add the category of topological pairs |
This is needed for the Eilenberg-Steenrod axioms for a homology theory.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
247/0 |
Mathlib.lean,Mathlib/Topology/Category/TopCat/Limits/Basic.lean,Mathlib/Topology/Category/TopPair.lean |
3 |
54 |
['chrisflav', 'erdOne', 'github-actions', 'joelriou', 'quantumsnow', 'vlad902'] |
dagurtomas assignee:dagurtomas |
2-4226 2 days ago |
2-4226 2 days ago |
6-18156 6 days |
| 37109 |
zeekmartin author:zeekmartin |
feat(SimpleGraph): card of common neighbors equals card of triangles containing edge |
Adds `SimpleGraph.card_commonNeighbors_eq_card_triangles_containing_edge`
to `Mathlib/Combinatorics/SimpleGraph/Clique.lean`.
For adjacent vertices `u v` in a finite simple graph, establishes the bijection
between common neighbors and 3-cliques containing the edge `{u, v}`:
```lean
theorem card_commonNeighbors_eq_card_triangles_containing_edge
{u v : α} (huv : G.Adj u v) :
(G.commonNeighbors u v).toFinset.card =
((G.cliqueFinset 3).filter fun s => {u, v} ⊆ s).card
```
This connects `commonNeighbors` (defined in `Basic.lean`) with `cliqueFinset` —
a gap not previously covered in `Clique.lean`.
**AI disclosure**: Claude (Anthropic) was used as an assistant during the development of this proof. It helped with the initial proof structure and tactic suggestions. The proof was reviewed and validated step by step by the author, who can vouch for all the content. The mathematical idea originates from the author's prior Lean 4 work on spectral graph theory (github.com/zeekmartin/topostability-lean4).
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
LLM-generated
new-contributor
|
61/0 |
Mathlib/Combinatorics/SimpleGraph/Clique.lean |
1 |
7 |
['SnirBroshi', 'github-actions', 'zeekmartin'] |
nobody |
1-84214 1 day ago |
2-4973 2 days ago |
2-4967 2 days |
| 37061 |
tannerduve author:tannerduve |
feat(Computability): rename RecursiveIn to Nat.RecursiveIn and generalize to Primcodable types |
Rename `RecursiveIn` to `Nat.RecursiveIn` (protected) for the `ℕ →. ℕ` version, and introduce a new `RecursiveIn` that lifts `Nat.RecursiveIn` to partial functions between `Primcodable` types via `liftPrim`.
Also adds:
- `Nat.PrimrecIn`: primitive recursion relative to oracles
- `liftPrim` / `liftPrimrec`: encode typed functions as `ℕ →. ℕ` / `ℕ → ℕ`
- `RecursiveIn₂`, `ComputableIn`, `ComputableIn₂`, `PrimrecIn'`
- Basic API: `of_eq`, `of_eq_tot`, `subst`, `mono`, `partrec_of_zero`, `partrec_of_none`, `partrec_iff_forall_recursiveIn`, etc.
To be merged before #37062 |
t-computability
new-contributor
|
239/39 |
Mathlib/Computability/RecursiveIn.lean,Mathlib/Computability/TuringDegree.lean |
2 |
14 |
['Komyyy', 'eric-wieser', 'github-actions', 'tannerduve'] |
Komyyy assignee:Komyyy |
1-83442 1 day ago |
2-2902 2 days ago |
2-68759 2 days |
| 37006 |
hakii6 author:hakii6 |
feat(LinearAlgebra/Matrix/Block, Analysis/Normed/Algebra/MatrixExponential): add BlockTriangular.pow and BlockTriangular.exp |
# Summary
Add BlockTriangular.pow and BlockTriangular.exp for proving "det (exp A) = exp (trace A)"
# Which part using LLM
The part I used LLM is for
1. Searching duplicated theorems and lemmas I may missed (I already search them myself first).
2. Help me handle the "variables and signatures", the "letI" part, some of lemmas and theorems trivial but hard to find the true one.
3. After I finished, let them helped me check the structure match the disciplines of mathlib.
4. Check the steps PR match the disciplines of mathlib
Most things above are done by me first, then let them to make sure I'm not missing something.
# More context
More context can be found in a topic in "# new member" in Zulip
[#new members > (Matrix and NormedSpace.exp) | det (exp A) = exp (trace A)](https://leanprover.zulipchat.com/#narrow/channel/113489-new-members/topic/.28Matrix.20and.20NormedSpace.2Eexp.29.20.7C.20det.20.28exp.20A.29.20.3D.20exp.20.28trace.20A.29/with/580964688)
|
new-contributor
LLM-generated
|
29/0 |
Mathlib/Analysis/Normed/Algebra/MatrixExponential.lean,Mathlib/LinearAlgebra/Matrix/Block.lean |
2 |
19 |
['SnirBroshi', 'eric-wieser', 'github-actions', 'hakii6', 'wwylele'] |
nobody |
1-78091 1 day ago |
2-54727 2 days ago |
3-63921 3 days |
| 35402 |
samueloettl author:samueloettl |
feat(Dynamics/BirkhoffSum): birkhoffAverage const |
---
I think this is useful and one of these should be a simp lemma.
I'm not really sure if I got the naming of the theorems correct.
When generalizing to the assumption (n : R) ≠ 0 instead of the special case CharZero R with n ≠ 0 I had to use "open Classical in". I'm a bit unfamiliar with that part so please check if this makes sense. See also https://github.com/leanprover-community/mathlib4/pull/35307#discussion_r2823586252
[](https://gitpod.io/from-referrer/)
|
t-dynamics
new-contributor
|
22/0 |
Mathlib/Dynamics/BirkhoffSum/Average.lean |
1 |
2 |
['github-actions'] |
ADedecker assignee:ADedecker |
1-58779 1 day ago |
31-68452 31 days ago |
38-15334 38 days |
| 37071 |
ericluap author:ericluap |
feat: Dedekind completion of rationals is isomorphic to EReal |
|
t-order
new-contributor
|
96/0 |
Mathlib.lean,Mathlib/Data/EReal/Basic.lean,Mathlib/Data/EReal/DedekindCut.lean |
3 |
36 |
['ericluap', 'github-actions', 'vihdzp', 'wwylele'] |
vihdzp assignee:vihdzp |
1-50805 1 day ago |
1-52591 1 day ago |
1-70761 1 day |
| 37138 |
dtumad author:dtumad |
feat(Data/FinEnum): instances for standard signed and unsigned integer types |
Adds `FinEnum` instances for `UIntN`/`IntN` for various `N`, and for platform sized integers.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
56/0 |
Mathlib/Data/FinEnum.lean |
1 |
3 |
['github-actions'] |
nobody |
1-43210 1 day ago |
1-43414 1 day ago |
1-43408 1 day |
| 36865 |
psinary-sketch author:psinary-sketch |
feat(Analysis/Analytic): analytic order at zero with vanishing value |
Add AnalyticAt.analyticOrderAt_eq_one_of_zero_deriv_ne_zero: if f is analytic at x, f(x) = 0, and f'(x) ≠ 0, then analyticOrderAt f x = 1.
Placed next to analyticOrderAt_sub_eq_one_of_deriv_ne_zero in Order.lean per review feedback on #36778. |
t-analysis
new-contributor
LLM-generated
|
9/1 |
Mathlib/Analysis/Analytic/Order.lean |
1 |
3 |
['github-actions', 'mathlib-merge-conflicts'] |
sgouezel assignee:sgouezel |
1-37861 1 day ago |
1-59629 1 day ago |
6-28134 6 days |
| 36871 |
psinary-sketch author:psinary-sketch |
feat(Analysis/Analytic): nonvanishing in punctured neighborhood from derivative |
Add AnalyticAt.eventually_ne_nhdsWithin_of_deriv_ne_zero: if f is analytic at x and f'(x) ≠ 0, then f(w) ≠ f(x) in a punctured neighborhood of x.
No hypothesis on f(x) needed — stronger than the version in #36778. Placed in Order.lean per review feedback from @wwylele.
Split from #36778 (2 of 3). |
t-analysis
new-contributor
LLM-generated
|
21/1 |
Mathlib/Analysis/Analytic/Order.lean |
1 |
3 |
['github-actions', 'mathlib-merge-conflicts'] |
j-loreaux assignee:j-loreaux |
1-37857 1 day ago |
1-55166 1 day ago |
6-18298 6 days |
| 36667 |
NoneMore author:NoneMore |
feat(ModelTheory): add `exClosure` definition for first-order formulas |
Prepare for moving realizations between elementarily equivalent structures.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-logic
|
37/0 |
Mathlib/ModelTheory/Semantics.lean,Mathlib/ModelTheory/Syntax.lean |
2 |
2 |
['github-actions'] |
awainverse assignee:awainverse |
1-33309 1 day ago |
11-43009 11 days ago |
11-43003 11 days |
| 32744 |
NoneMore author:NoneMore |
feat(ModelTheory/Definablity): add `DefinableFun` definition and lemmas |
This PR adds two basic shapes of definable sets and `DefinableFun` definition with relevant lemmas.
The main result is `Set.Definable.preimage_of_map` asserting that the preimage of a definable set under a definable map is definable.
There are also some tool lemmas derived by the preimage lemma.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-logic
|
147/0 |
Mathlib/ModelTheory/Definability.lean |
1 |
60 |
['NoneMore', 'github-actions', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot', 'staroperator'] |
nobody |
1-31184 1 day ago |
1-31165 1 day ago |
96-75793 96 days |
| 37027 |
mike1729 author:mike1729 |
refactor(LocallyConvex,Topology): split WeakDual/WeakSpace and rename WeakBilin |
Reorganize the weak topology files for cleaner dependencies:
1. **Rename** `Analysis.LocallyConvex.WeakDual` → `Analysis.LocallyConvex.WeakBilin`:
This file contains only general `WeakBilin` infrastructure (`LinearMap.toSeminormFamily`,
`weakBilin_withSeminorms`, `WeakBilin.locallyConvexSpace`, etc.) with no reference to
`WeakDual`. The name now reflects the content.
2. **Split** `Topology.Algebra.Module.WeakDual` into `WeakDual` and `WeakSpace`:
The `WeakSpace` type, its instances, and `toWeakSpace`/`toWeakSpaceCLM` move to a new
`Topology.Algebra.Module.WeakSpace`. This allows downstream files about weak spaces
to avoid depending on `WeakDual`.
3. **Add** `WeakSpace.seminormFamily` and `WeakSpace.withSeminorms` to
`Analysis.LocallyConvex.WeakSpace`: The weak topology on `WeakSpace 𝕜 E` is generated
by the seminorm family `fun f x ↦ ‖f x‖` indexed by `StrongDual 𝕜 E`, via the general
`LinearMap.weakBilin_withSeminorms` applied to the flipped `topDualPairing`.
Moves:
- Mathlib.Analysis.LocallyConvex.WeakDual -> Mathlib.Analysis.LocallyConvex.WeakBilin
- WeakSpace -> Mathlib.Topology.Algebra.Module.WeakSpace
- toWeakSpace -> Mathlib.Topology.Algebra.Module.WeakSpace
- toWeakSpaceCLM -> Mathlib.Topology.Algebra.Module.WeakSpace
CC @j-loreaux |
new-contributor
file-removed
|
192/114 |
Mathlib.lean,Mathlib/Analysis/LocallyConvex/WeakBilin.lean,Mathlib/Analysis/LocallyConvex/WeakSpace.lean,Mathlib/Analysis/Normed/Module/WeakDual.lean,Mathlib/Topology/Algebra/Module/WeakDual.lean,Mathlib/Topology/Algebra/Module/WeakSpace.lean |
6 |
3 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
1-26468 1 day ago |
1-27267 1 day ago |
3-25935 3 days |
| 37076 |
ertwro author:ertwro |
feat(Combinatorics/SimpleGraph/Hasse): Hasse diagram is triangle-free |
Add `SimpleGraph.hasse_cliqueFree_three`: the Hasse diagram of a preorder is triangle-free (`CliqueFree 3`).
This is the graph-theoretic formulation of `not_covBy_of_lt_of_lt`: if `a ⋖ b` and `b ⋖ c`, then `¬ a ⋖ c`, so no three elements can be pairwise adjacent in the Hasse diagram.
The proof extracts three vertices from a hypothetical 3-clique, case-splits on the covering directions (8 cases), and closes each by `not_covBy_of_lt_of_lt` (6 transitive cases) or `lt_asymm` (2 cyclic cases).
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
13/1 |
Mathlib/Combinatorics/SimpleGraph/Hasse.lean |
1 |
11 |
['SnirBroshi', 'ertwro', 'github-actions'] |
nobody |
1-21528 1 day ago |
2-37277 2 days ago |
2-37271 2 days |
| 36174 |
mike1729 author:mike1729 |
feat(Topology/Compactness): add countably compact sets |
This PR introduces the theory of countably compact sets and spaces. The motivation was the Eberlein–Šmulian theorem but of course this theory is of its own interest and there are many more applications.
New definitions:
- `IsCountablyCompact A`: a set `A` is countably compact if every sequence in `A`
has a cluster point in `A`.
- `CountablyCompactSpace E`: the whole space `E` is countably compact.
Main results:
- `IsCountablyCompact.elim_finite_subcover`: finite subcover from any countable open cover.
- `isCountablyCompact_iff_countable_open_cover`: equivalence with the finite-subcover property.
- `IsCompact.IsCountablyCompact`: compact implies countably compact.
- `IsSeqCompact.IsCountablyCompact`: sequentially compact implies countably compact.
- `IsCountablyCompact.isSeqCompact`: countably compact implies sequentially compact
in a first-countable space.
- `isCountablyCompact_iff_infinite_subset_has_accPt`: Bolzano–Weierstrass characterisation
in a T₁ space.
- `IsLindelof.isCompact`: a countably compact Lindelöf set is compact.
- `IsCountablyCompact.image`: continuous images of countably compact sets are countably compact.
- Union stability: binary, `Finset`, `Set.Finite`, and `iUnion` variants.
Co-authored-by: Yongxi Lin @CoolRmal
---
This PR adds `Mathlib.Topology.Compactness.CountablyCompact`, a new file alongside the existing `Compact`, `SeqCompact`, and `Lindelof` files.
The primary definition follows Engelking's *General Topology* (the cluster-point characterisation for sequences), and the equivalence with the finite-subcover characterisation is established immediately.
The immediate motivation for this PR is #35473 (Eberlein–Šmulian theorem), which depends on it. Further PRs will extend the theory of countably compact spaces.
-->
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-topology
|
311/0 |
Mathlib.lean,Mathlib/Topology/ClusterPt.lean,Mathlib/Topology/Compactness/CountablyCompact.lean |
3 |
27 |
['github-actions', 'j-loreaux', 'mike1729', 'plp127'] |
j-loreaux assignee:j-loreaux |
1-20809 1 day ago |
1-25125 1 day ago |
19-71757 19 days |
| 37075 |
SproutSeeds author:SproutSeeds |
feat: extend `@[reassoc]` to `LinearMap` |
Closes #34342.
This follows the collaborator notes from the issue thread by keeping the `LinearMap`
`@[reassoc]` extension out of `CategoryTheory` and by splitting the relevant
universes instead of forcing the codomain universes to coincide.
Summary:
- add `Mathlib.Tactic.LinearMapReassoc`
- extend the existing `@[reassoc]` machinery to generate `_assoc` lemmas for equalities of linear maps
- fold the coverage into `MathlibTest/CategoryTheory/Reassoc.lean`
Verification:
- `COPYFILE_DISABLE=1 ~/.elan/bin/lake build Mathlib.Tactic.LinearMapReassoc MathlibTest.CategoryTheory.Reassoc`
- `COPYFILE_DISABLE=1 ~/.elan/bin/lake build Mathlib.Tactic`
|
t-meta
new-contributor
|
95/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/LinearMapReassoc.lean,MathlibTest/CategoryTheory/Reassoc.lean |
4 |
4 |
['github-actions', 'themathqueen'] |
nobody |
1-15432 1 day ago |
2-40392 2 days ago |
2-40796 2 days |
| 36850 |
whocares-abt author:whocares-abt |
feat(Combinatorics/SimpleGraph/Acyclic): add delete leaf from tree gives tree |
Added theorem stating Deleting a leaf from a tree produces a tree. |
t-combinatorics
new-contributor
|
5/0 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean |
1 |
7 |
['github-actions', 'vlad902'] |
nobody |
1-10955 1 day ago |
5-35943 5 days ago |
7-18793 7 days |
| 36216 |
michaellee94 author:michaellee94 |
feat(CategoryTheory): characterize pullback squares via the `Over` category |
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
new-contributor
|
48/0 |
Mathlib/CategoryTheory/Limits/Shapes/Pullback/IsPullback/Basic.lean |
1 |
11 |
['dagurtomas', 'github-actions', 'joelriou', 'michaellee94'] |
robin-carlier assignee:robin-carlier |
1-7061 1 day ago |
1-7061 1 day ago |
2-40327 2 days |
| 36837 |
nielstron author:nielstron |
feat(Computability/ContextFreeGrammar): Closure properties |
---
This PR is a rewrite of the closure property proofs of CFGs from scratch.
The proof follows the approach by Ullman and Hopcroft in
"Introduction to Automata Theory, Languages and Computation".
It should make #33601 #33592 and #33599 superfluous.
The main proof was created assisted by Aristotle, and then read and restructured by me.
Update: I noticed the same proof strategy would lend itself to show closure properties of regular languages, if there is interest in that.
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-computability
LLM-generated
|
1598/0 |
Mathlib.lean,Mathlib/Computability/ContextFreeGrammar.lean,Mathlib/Computability/ContextFreeGrammarClosure.lean,Mathlib/Computability/Language.lean,Mathlib/Data/List/Lemmas.lean |
5 |
3 |
['github-actions', 'nielstron'] |
nobody |
0-84394 23 hours ago |
0-84444 23 hours ago |
6-8538 6 days |
| 36644 |
gdies author:gdies |
feat(CategoryTheory/Adhesive): slices of adhesive categories are adhesive |
contributions:
- Adhesive (Over B) instance — slices of adhesive categories are adhesive.
Found it as Proposition 8(ii) of Adhesive Categories, Lack & Sobociński (2004) while researching for a project. Needed the proof so perhaps others could rely on it too. The proof applies adhesive_of_preserves_and_reflects_isomorphism to Over.forget B, which creates all colimits and creates connected limits.
AI tools used. Claude Opus 4.6 + GitHub Copilot scaffolding
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
new-contributor
LLM-generated
|
39/0 |
Mathlib.lean,Mathlib/CategoryTheory/Adhesive/Over.lean |
2 |
14 |
['erdOne', 'gdies', 'github-actions', 'joelriou', 'robin-carlier'] |
robin-carlier assignee:robin-carlier |
0-83109 23 hours ago |
6-4214 6 days ago |
9-50383 9 days |
| 35559 |
mike1729 author:mike1729 |
feat(Analysis/Normed): weak-topology embedding into weak-star bidual and compactenss transfer theorem |
This PR refactors the double dual material and adds new results connecting the weak topology on a normed space to the weak-star topology on its bidual.
## Changes
### New file: `Analysis.Normed.Module.DoubleDual`
Extracts the canonical embedding `inclusionInDoubleDual` and the bidual isometry `inclusionInDoubleDualLi` from `Analysis.Normed.Module.Dual` into a dedicated file, and adds:
- `inclusionInDoubleDualWeak`: the canonical map from `WeakSpace 𝕜 X` into `WeakDual 𝕜 (StrongDual 𝕜 X)`.
- `inclusionInDoubleDualWeak_isEmbedding`: this map is a topological embedding.
- `inclusionInDoubleDualWeak_homeomorph`: the map as a homeomorphism onto its range.
- `isCompact_closure_of_isBounded`: bounded sets whose bidual image has weak-star closure in range have weakly compact closure, via Banach–Alaoglu.
### Modified: `Analysis.Normed.Module.Dual`
The double dual inclusion material is moved out; polar set results remain. References to `inclusionInDoubleDual` in `polar_closure` are replaced by `ContinuousLinearMap.apply` to avoid a dependency on the new file.
---
CC: @faenuccio this may be relevant for your Goldstine formalization.
|
t-analysis
new-contributor
|
229/91 |
Mathlib.lean,Mathlib/Analysis/LocallyConvex/SeparatingDual.lean,Mathlib/Analysis/LocallyConvex/Separation.lean,Mathlib/Analysis/LocallyConvex/WeakSpace.lean,Mathlib/Analysis/Normed/Module/DoubleDual.lean,Mathlib/Analysis/Normed/Module/Dual.lean,Mathlib/Analysis/Normed/Module/WeakDual.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/FundThmCalculus.lean,Mathlib/MeasureTheory/Measure/CharacteristicFunction/Basic.lean,Mathlib/Probability/Distributions/Gaussian/CharFun.lean |
10 |
58 |
['ADedecker', 'faenuccio', 'github-actions', 'j-loreaux', 'mathlib-merge-conflicts', 'mike1729'] |
faenuccio and j-loreaux assignee:j-loreaux assignee:faenuccio |
0-79619 22 hours ago |
0-79726 22 hours ago |
30-61574 30 days |
| 37190 |
cjrl author:cjrl |
feat(Combinatorics): Set-Valued Pigeonhole Principle |
This PR contributes two theorems to combinatorics:
- `exists_lt_card_cover_of_card_biUnion_lt_card` is a set-valued version of the pigeonhole principle.
- `sum_card_eq_sum_card_cover_biUnion` is a set theoretic corollary of a double counting result proved for bipartite graphs (`Finset.sum_card_bipartiteAbove_eq_sum_card_bipartiteBelow`). This was needed to prove the above pigeonhole principle.
The motivation for these results is our Latin Square PR #36698. These results were proved in less general terms in that PR, but are independent of Latin Square considerations and so we have generalized and moved them into more relevant files.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
large-import
|
67/0 |
Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean,Mathlib/Combinatorics/Enumerative/DoubleCounting.lean,Mathlib/Combinatorics/Pigeonhole.lean |
3 |
2 |
['github-actions'] |
nobody |
0-55870 15 hours ago |
0-55798 15 hours ago |
0-55800 15 hours |
| 37193 |
JJYYY-JJY author:JJYYY-JJY |
docs(metric): add Main results sections for metric spaces |
Add Main results sections to metric-space definition modules
This PR improves discoverability in the metric-space definition modules by adding curated Main results sections and by fixing a stale internal file reference.
Add a Main results section to the pseudo-metric definitions module, highlighting key constructions and foundational lemmas.
Add a Main results section to the metric-space definitions module, highlighting core constructions and distance-based characterization lemmas.
Update the implementation note to point to the current pseudo-metric definitions path, clarifying where elementary pseudometric facts live.
This is a docstring-only change:
No declarations, theorem names, imports, instances, or proofs are changed;
only module docstrings in the two metric-space definition files are edited.
---
[](https://gitpod.io/from-referrer/) |
t-topology
new-contributor
|
25/3 |
Mathlib/Topology/MetricSpace/Defs.lean,Mathlib/Topology/MetricSpace/Pseudo/Defs.lean |
2 |
4 |
['copilot-pull-request-reviewer', 'github-actions'] |
nobody |
0-55317 15 hours ago |
0-55482 15 hours ago |
0-55476 15 hours |
| 36698 |
ghseeli author:ghseeli |
feat(Combinatorics/Enumerative): Latin squares |
This PR defines Latin rectangles and Latin squares and proves an extension theorem using Hall's Marriage Theorem.
## Main results
- `group_to_cayley_table`: every finite group `G` yields a `LatinSquare G G`.
- `latin_rectangle_extends_one_row`: a (non-square) `LatinRectangle` extends to a `LatinRectangle`
with one more row. This is an application of **Hall's Marriage Theorem**, `hallMatchingsOn.nonempty`.
- `latin_rectangle_extends_to_latin_square`: a `LatinRectangle` extends to a `LatinSquare`.
This is included in a new file `Combinatorics/Enumerative/LatinSquare.lean`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
|
698/0 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/LatinSquare.lean,docs/references.bib |
3 |
45 |
['SnirBroshi', 'cjrl', 'eric-wieser', 'ghseeli', 'github-actions', 'vlad902'] |
nobody |
0-55301 15 hours ago |
0-55369 15 hours ago |
8-41802 8 days |
| 35600 |
yisiox author:yisiox |
feat(Computability): add Kleene's algorithm to prove regular languages have regex matching |
This PR adds a proof that every regular language has some regular expression matching it.
This was achieved by the following constructions and proofs of their correctness
- Define `toSingleεNFA` to transform any epsilon-NFA to an equivalent one with only a single start and accept state (and the type is `ExtendedState`)
- Define a bijection between `ExtendedState` and `Fin (FinEnum.card (ExtendedState σ))` to index the states
- Define `pathRegex` which implements Kleene's algorithm
- Define `toRegex` which takes an epsilon-NFA, applies `toSingleεNFA` on it, and computes the corresponding regex using `pathRegex`
The proofs of correctness chain together to yield `(toRegex M).matches' = M.accepts` which asserts the direction of Kleene's theorem required.
---
As in [#mathlib4 > Regular languages: the review queue @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Regular.20languages.3A.20the.20review.20queue/near/573958148), this overlaps with #15654, which uses GNFA instead but has been inactive.
[](https://gitpod.io/from-referrer/)
|
t-computability
new-contributor
|
492/0 |
Mathlib/Computability/EpsilonNFA.lean |
1 |
15 |
['YaelDillies', 'github-actions', 'yisiox'] |
YaelDillies assignee:YaelDillies |
0-34815 9 hours ago |
2-15979 2 days ago |
21-18156 21 days |
| 33520 |
NoneMore author:NoneMore |
feat(ModelTheory/ElementarySubstructures): add a variant of Tarski-Vaught test taking sets as input |
There should exist an `ElementarySubstructure.copy` such that we can directly bundle the set itself instaed of its closure as an elementary substructure.
---
[](https://gitpod.io/from-referrer/)
|
t-logic
new-contributor
|
91/0 |
Mathlib/ModelTheory/ElementarySubstructures.lean |
1 |
3 |
['Citronhat', 'NoneMore', 'github-actions'] |
fpvandoorn assignee:fpvandoorn |
0-27368 7 hours ago |
0-27432 7 hours ago |
82-19441 82 days |
| 35394 |
HugLycan author:HugLycan |
feat(Tactic/Positivity): make positivity work for types that are not partial orders |
Make positivity work for types that are not partial orders
Most PositivityExt haven't been updated for non partial order cases yet. They will be updated in the later PR.
`Strictness` now does not depend `Q(PartialOrder $α)`, and the constructors of `Strictness` now have their order typeclass arguments. In order to help `Qq` synth instances property, we have to move `assertInstancesCommute` to inner branch, manually add `haveI'` or explicitly pass the order typeclass instance into `.positive`/`.nonnegative`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-meta
|
611/322 |
Mathlib/Algebra/Order/AbsoluteValue/Basic.lean,Mathlib/Algebra/Order/Algebra.lean,Mathlib/Algebra/Order/BigOperators/Expect.lean,Mathlib/Algebra/Order/BigOperators/Ring/Finset.lean,Mathlib/Algebra/Order/Field/Basic.lean,Mathlib/Algebra/Order/Field/Power.lean,Mathlib/Algebra/Order/Floor/Extended.lean,Mathlib/Algebra/Order/Floor/Ring.lean,Mathlib/Algebra/Order/Module/Field.lean,Mathlib/Analysis/Complex/BorelCaratheodory.lean,Mathlib/Analysis/Complex/Order.lean,Mathlib/Analysis/SpecialFunctions/Bernstein.lean,Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean,Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean,Mathlib/Analysis/SpecialFunctions/Pow/Real.lean,Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean,Mathlib/Analysis/SpecialFunctions/Trigonometric/DerivHyp.lean,Mathlib/Combinatorics/Enumerative/DyckWord.lean,Mathlib/Combinatorics/SimpleGraph/Triangle/Removal.lean,Mathlib/Data/ENNReal/Basic.lean,Mathlib/Data/ENNReal/Real.lean,Mathlib/Data/EReal/Basic.lean,Mathlib/Data/EReal/Inv.lean,Mathlib/Data/EReal/Operations.lean,Mathlib/Data/NNReal/Defs.lean,Mathlib/Data/Nat/Totient.lean,Mathlib/Data/Rat/Cast/Order.lean,Mathlib/Data/Real/Sqrt.lean,Mathlib/MeasureTheory/Integral/Bochner/Basic.lean,Mathlib/MeasureTheory/Measure/Real.lean,Mathlib/NumberTheory/ArithmeticFunction/Misc.lean,Mathlib/NumberTheory/ArithmeticFunction/Zeta.lean,Mathlib/NumberTheory/LucasLehmer.lean,Mathlib/Tactic/Positivity/Basic.lean,Mathlib/Tactic/Positivity/Core.lean,Mathlib/Tactic/Positivity/Finset.lean,Mathlib/Topology/Algebra/InfiniteSum/Order.lean |
37 |
23 |
['HugLycan', 'JovanGerb', 'fpvandoorn', 'github-actions', 'joneugster'] |
JovanGerb assignee:JovanGerb |
0-25422 7 hours ago |
7-29159 7 days ago |
7-32271 7 days |
| 36955 |
NoneMore author:NoneMore |
chore(ModelTheory/Types): expose `T` in `typesWith` and move it to `Theory` |
Make the `T : L.Theory` argument explicit in `typesWith` and place the definition in `FirstOrder.Language.Theory` to enable dot notation.
---
[](https://gitpod.io/from-referrer/)
|
t-logic
new-contributor
|
24/19 |
Mathlib/ModelTheory/Topology/Types.lean,Mathlib/ModelTheory/Types.lean |
2 |
2 |
['github-actions'] |
nobody |
0-14598 4 hours ago |
5-4963 5 days ago |
5-4957 5 days |
| 34487 |
martinwintermath author:martinwintermath |
feat(LinearAlgebra/SesquilinearForm/Basic): add instances for SeparatingLeft, SeparatingRight and Nondegenerate |
Add typeclass instances for `Fact B.SeparatingLeft`, `Fact B.SeparatingRight`, `Fact B.Nondegenerate`:
* inferring `Fact B.flip.SeparatingLeft` from `Fact B.SeparatingRight` and vice versa
* inferring `Fact B.SeparatingLeft` and `Fact B.SeparatingRight` from `Fact B.Nondegenerate`
* inferring `Fact B.SeparatingLeft` and `Fact B.Nondegenerate` for `.id` and `Dual.eval`
* inferring `Fact B.Nondegenerate` from `B.IsPerfPair`
I also updated `PointedCone.dual_univ` to demonstrate the usefulness of these additions. Note that I needed to add an import to `Cone/Dual.lean` which somehow imports cardinals. So I needed to remove cardinals from `assert_not_exists`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
large-import
label:t-algebra$ |
87/16 |
Mathlib/Geometry/Convex/Cone/Dual.lean,Mathlib/LinearAlgebra/Dual/Lemmas.lean,Mathlib/LinearAlgebra/PerfectPairing/Basic.lean,Mathlib/LinearAlgebra/SesquilinearForm/Basic.lean |
4 |
3 |
['github-actions', 'martinwintermath', 'mathlib4-merge-conflict-bot'] |
nobody |
0-4423 1 hour ago |
10-68027 10 days ago |
10-68021 10 days |
| 36828 |
mortarsanjaya author:mortarsanjaya |
feat(Algebra/Order/Floor/Defs): add instances on `FloorSemiring` and `FloorRing` |
These instances are `NeZero` and `Nontrivial` instances, made so that we can weaken the `IsStrictOrderedRing` instances on several theorems about floor rings into `IsOrderedRing`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
15/0 |
Mathlib/Algebra/Order/Floor/Defs.lean,Mathlib/Logic/Nontrivial/Defs.lean |
2 |
10 |
['eric-wieser', 'github-actions', 'leanprover-radar', 'mortarsanjaya'] |
nobody |
0-4239 1 hour ago |
7-71219 7 days ago |
7-78426 7 days |
| 37187 |
Brian-Nugent author:Brian-Nugent |
feat(CategoryTheory): Add `reflectsIsomorphisms_of_iso` |
Adds lemma to show that `Functor.ReflectsIsomorphisms` is stable under natural isomorphism.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
new-contributor
|
11/0 |
Mathlib/CategoryTheory/Functor/ReflectsIso/Basic.lean |
1 |
3 |
['github-actions', 'joelriou'] |
nobody |
0-3569 59 minutes ago |
0-3613 1 hour ago |
0-59990 16 hours |
| 36731 |
michael-novak-math author:michael-novak-math |
feat: add a few basic definitions and classical results about differential geometry of plane curves |
We define the curvature function, normal vector function and the Frénet moving frame and we prove the Frénet equations for plane curves and the fundamental theorem of plane curves. |
new-contributor
t-differential-geometry
t-analysis
|
635/0 |
Mathlib.lean,Mathlib/Analysis/InnerProductSpace/Calculus.lean,Mathlib/Geometry/PlaneCurves.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/FundThmCalculus.lean,docs/references.bib |
5 |
31 |
['Ruben-VandeVelde', 'github-actions', 'grunweg', 'michael-novak-math'] |
nobody |
0-3474 57 minutes ago |
3-70008 3 days ago |
6-55728 6 days |