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 |
| 34952 |
joneugster author:joneugster |
feat(scripts/autolabel): use `Cli` and integrate `curl` call into `autolabel` |
- use `Cli` for `lake exe autolabel`
- add arguments `--pr xxx --gh` and `--pr xxx --curl ` to chose between different interaction methods with github
- add `--force` to skip the check whether labels are already present. (note: the current `curl` setup doesn't perform this step and neither does the refactor, so I added a `Todo` to remember this. )
- make CI-workflow simpler and more robust by removing current stdout-parsing of the debug-messages which `autolabel` emits.
### Testing
Make some local changes and commit them. Ensure your local `origin/master` is in sync with `upstream/master` if you are on a fork.
- `lake exe autolabel`: prints the labels which would be applicable
- `lake exe autolabel --pr 34952 --gh --force` adds these labels to this PR using `gh`.
- `lake exe autolabel --pr 34952 --gh` adds these labels to this PR using `gh` if no topic labels are present.
- `lake exe autolabel --pr 34952 --curl ` adds these labels to this PR using `curl`. This requires a github access token for authentication
---
[](https://gitpod.io/from-referrer/)
|
CI |
85/72 |
.github/workflows/add_label_from_diff.yaml,scripts/autolabel.lean |
2 |
4 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
80-66292 2 months ago |
64-26901 64 days ago |
96-67521 96 days |
| 37865 |
Jun2M author:Jun2M |
feat(Combinatorics/Graph): Edge cut of `Graph` |
This PR introduces
- `edgeCut`: A function on set of vertices that returns the set of edges with exactly one end in the set.
- `IsEdgeCut`: A predicate for set of edges that promises it is `edgeCut` of some set.
- `IsBridge`: An edge `e` is a bridge iff it is a singleton edge cut.
- `IsBond`: An edge Set `B` is bond iff it is minimal nonempty edge cut.
---
- [x] depends on: #35879
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
194/0 |
Mathlib/Combinatorics/Graph/Connected/EdgeCut.Lean,Mathlib/Combinatorics/Graph/Subgraph.lean |
2 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
nobody |
46-84176 1 month ago |
47-15433 47 days ago |
47-15653 47 days |
| 37420 |
artie2000 author:artie2000 |
refactor: change definitions to avoid `ConvexCone` |
Change the definitions of `PointedCone.positive` and `PointedCone.closure` to avoid mentioning `ConvexCone`.
This PR is part of a series deprecating `ConvexCone`: https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Replacing.20.60ConvexCone.60.20with.20.60PointedCone.60/with/582738985
---
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry
maintainer-merge
|
10/4 |
Mathlib/Analysis/Convex/Cone/Closure.lean,Mathlib/Geometry/Convex/Cone/Pointed.lean |
2 |
3 |
['YaelDillies', 'github-actions', 'mathlib-merge-conflicts', 'ooovi', 'vihdzp'] |
nobody |
46-27345 1 month ago |
46-27309 46 days ago |
61-47654 61 days |
| 38185 |
Jun2M author:Jun2M |
feat(Order/Partition): operations over Frame |
This PR introduces:
* `Partition.induce`: The induce of a partition by a frame element.
* `Partition.disjUnion`: The disjoint union of two partitions.
* `Partition.bind`: The finer partition obtained by family of partitions for each part of the original partition.
Co-authored-by: Peter Nelson
---
[](https://gitpod.io/from-referrer/)
|
t-order |
89/11 |
Mathlib/Order/Partition/Basic.lean,Mathlib/Order/SupIndep.lean |
2 |
1 |
['github-actions'] |
nobody |
44-80511 1 month ago |
44-80583 44 days ago |
44-80365 44 days |
| 38356 |
SnirBroshi author:SnirBroshi |
feat(Order/ConditionallyCompleteLattice/Finset): `sSup s ≠ ⊤` in a `CompleteLinearOrder` for a finite set without `⊤` |
---
btw `to_dual` here is blocked on #35213
[](https://gitpod.io/from-referrer/)
|
t-order |
20/0 |
Mathlib/Order/ConditionallyCompleteLattice/Finset.lean |
1 |
1 |
['github-actions'] |
nobody |
40-63369 1 month ago |
40-63444 40 days ago |
40-63226 40 days |
| 38325 |
Jun2M author:Jun2M |
feat(Combinatorics/Graph): EndPoint function |
This PR introduces `endPoints`: `Set` of incident vertices, given an edge (in the case of non-edge, return empty).
**Import change**: `Graph/Basic` now imports `Data/Set/Card` to allow reasoning about card of `endPoints`.
[Relavent Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/New.20graph.20definitions/with/588616269)
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
large-import
|
83/3 |
Mathlib/Combinatorics/Graph/Basic.lean |
1 |
9 |
['Jun2M', 'SnirBroshi', 'eric-wieser', 'github-actions', 'mathlib-bors'] |
nobody |
39-70367 1 month ago |
39-79197 39 days ago |
41-48922 41 days |
| 38498 |
SnirBroshi author:SnirBroshi |
feat(Order/RelIso/Basic): lift a function to an order morphism into `Relation.Map` or from `Function.onFun` |
For an `α`-relation `r` we have:
```
mapRelHom (f : α → β) : r →r Relation.Map r f f
mapRelEmbedding (f : α ↪ β) : r ↪r Relation.Map r f f
mapRelIso (f : α ≃ β) : r ≃r Relation.Map r f f
```
For a `β`-relation `r` we have:
```
onFunRelHom (f : α → β) : r.onFun f →r r
onFunRelEmbedding (f : α ↪ β) : r.onFun f ↪r r
onFunRelIso (f : α ≃ β) : r.onFun f ≃r r
```
---
These are pretty similar to `SimpleGraph.{Embedding/Iso}.map` and `SimpleGraph.{Hom/Embedding/Iso}.comap`, as [`comap`](https://github.com/leanprover-community/mathlib4/blob/9268b22206b0425419498769f780a91dee03bcf3/Mathlib/Combinatorics/SimpleGraph/Maps.lean#L117-L118) on graphs is a wrapper around `onFun`, and [`map`](https://github.com/leanprover-community/mathlib4/blob/9268b22206b0425419498769f780a91dee03bcf3/Mathlib/Combinatorics/SimpleGraph/Maps.lean#L57-L58) on graphs is *almost* a wrapper around `Relation.Map`.
btw `@[simps]` is angry at me when I try to use it on the structures that use spread syntax.
[](https://gitpod.io/from-referrer/)
|
t-order |
42/0 |
Mathlib/Order/RelIso/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
37-54011 1 month ago |
37-54086 37 days ago |
37-53868 37 days |
| 38344 |
robo7179 author:robo7179 |
feat(SimpleGraph/Coloring/VertexColoring): Matching is 2 colorable |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
51/0 |
Mathlib/Combinatorics/SimpleGraph/Coloring/VertexColoring.lean |
1 |
5 |
['SnirBroshi', 'github-actions', 'vlad902'] |
nobody |
37-29934 1 month ago |
40-83878 40 days ago |
40-84046 40 days |
| 38222 |
IvanRenison author:IvanRenison |
feat(Combinatorics/SimpleGraph/Girth): add lemmas about isomorphism and girth |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
19/1 |
Mathlib/Combinatorics/SimpleGraph/Girth.lean |
1 |
6 |
['IvanRenison', 'SnirBroshi', 'github-actions', 'vlad902'] |
nobody |
37-13556 1 month ago |
43-74869 43 days ago |
43-74651 43 days |
| 38528 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Paths): some cycle lemmas are true for circuits |
Add `IsCircuit.{not_of_nil,ne_bot,three_le_length}` by using their corresponding `IsCycle` proofs.
Also golfs a bit.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
17/9 |
Mathlib/Combinatorics/SimpleGraph/Paths.lean |
1 |
1 |
['github-actions'] |
nobody |
37-12460 1 month ago |
37-12530 37 days ago |
37-12312 37 days |
| 38549 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Copy): `Is(Ind)Contained` `completeGraph` lemmas |
- `G ⊑ completeGraph V`
- `G ⊑ completeGraph W ↔ Nonempty (V ↪ W)`
- `completeGraph V ⊴ completeGraph W ↔ Nonempty (V ↪ W)`
- `G ⊴ completeGraph W → G = ⊤`
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
12/0 |
Mathlib/Combinatorics/SimpleGraph/Copy.lean |
1 |
1 |
['github-actions'] |
nobody |
36-19035 1 month ago |
36-19104 36 days ago |
36-18886 36 days |
| 38529 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Girth): `egirth ⊤ = 3` when there are at least 3 vertices |
Since `Nontrivial` is not enough, we use the condition `3 ≤ ENat.card α`.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
17/0 |
Mathlib/Combinatorics/SimpleGraph/Girth.lean |
1 |
5 |
['SnirBroshi', 'github-actions', 'vlad902'] |
nobody |
36-18978 1 month ago |
37-9695 37 days ago |
37-9477 37 days |
| 37835 |
YaelDillies author:YaelDillies |
doc(Algebra/Order): update mentions of `OrderedSemiring` and friends |
As of #20676, it was replaced by `IsOrderedRing`.
Not all docs were straightforward to update.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-order
label:t-algebra$ |
123/280 |
Counterexamples/HomogeneousPrimeNotPrime.lean,Counterexamples/OrderedCancelAddCommMonoidWithBounds.lean,Mathlib/Algebra/Group/Subgroup/Order.lean,Mathlib/Algebra/Group/ULift.lean,Mathlib/Algebra/Order/AddTorsor.lean,Mathlib/Algebra/Order/Floor/Defs.lean,Mathlib/Algebra/Order/Floor/Ring.lean,Mathlib/Algebra/Order/Floor/Semiring.lean,Mathlib/Algebra/Order/Group/Cone.lean,Mathlib/Algebra/Order/Group/Cyclic.lean,Mathlib/Algebra/Order/GroupWithZero/Unbundled/Defs.lean,Mathlib/Algebra/Order/Hom/Monoid.lean,Mathlib/Algebra/Order/Interval/Set/Monoid.lean,Mathlib/Algebra/Order/Monoid/Canonical/Defs.lean,Mathlib/Algebra/Order/Monoid/Unbundled/Defs.lean,Mathlib/Algebra/Order/Monoid/Unbundled/ExistsOfLE.lean,Mathlib/Algebra/Order/Positive/Ring.lean,Mathlib/Algebra/Order/Ring/Basic.lean,Mathlib/Algebra/Order/Ring/Defs.lean,Mathlib/Algebra/Order/Ring/Unbundled/Basic.lean,Mathlib/Algebra/Order/Star/Basic.lean,Mathlib/Algebra/Order/Sub/WithTop.lean,Mathlib/Algebra/Order/ToIntervalMod.lean,Mathlib/Algebra/Order/WithTop/Untop0.lean,Mathlib/Combinatorics/Pigeonhole.lean,Mathlib/Data/Finsupp/Weight.lean,Mathlib/Data/NNReal/Defs.lean,Mathlib/Data/Nat/Cast/Order/Basic.lean,Mathlib/Data/Nat/Cast/Order/Ring.lean,Mathlib/MeasureTheory/Function/LpOrder.lean,Mathlib/MeasureTheory/Measure/Typeclasses/Finite.lean,Mathlib/Order/Filter/Germ/OrderedMonoid.lean,Mathlib/RingTheory/GradedAlgebra/Radical.lean,Mathlib/RingTheory/HahnSeries/PowerSeries.lean,Mathlib/RingTheory/HahnSeries/Valuation.lean,Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean,Mathlib/Tactic/NormNum/Ineq.lean |
37 |
9 |
['NoahW314', 'SnirBroshi', 'github-actions', 'mathlib-merge-conflicts'] |
nobody |
36-10914 1 month ago |
36-10939 36 days ago |
51-5855 51 days |
| 38554 |
YaelDillies author:YaelDillies |
chore(Combinatorics/SimpleGraph): use the auto-param in `loopless` more |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
5/13 |
Mathlib/Combinatorics/Digraph/Orientation.lean,Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean,Mathlib/Combinatorics/SimpleGraph/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Hasse.lean,Mathlib/Combinatorics/SimpleGraph/Maps.lean,Mathlib/Combinatorics/SimpleGraph/Prod.lean,Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean,Mathlib/Order/Cover.lean |
8 |
6 |
['SnirBroshi', 'YaelDillies', 'github-actions'] |
nobody |
34-85934 1 month ago |
35-31875 35 days ago |
35-33726 35 days |
| 38364 |
openendings author:openendings |
feat: create Order/DirectedCompletePartialOrder/Defs.lean |
Define DirectedCompletePartialOrder and its interaction with iSup and sSup.
---
A DirectedCompletePartialOrder is equivalently:
- a partial order with LUBs of nonempty directed sets;
- what happens when you remove ⊥ from a CompletePartialOrder; or
- a ConditionallyCompletePartialOrder in which every directed set is BddAbove.
Like CPOs, DCPOs are commonly studied in denotational semantics.
Potential applications:
- [#Is there code for X? > Summing `ENat`s without topology](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Summing.20.60ENat.60s.20without.20topology/with/590070848) -- defining infinite sums in an DCPO-enriched `AddCommMonoidWithTop` such as `ENat` or `ENNReal`.
- [#Is there code for X? > Scott Induction](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Scott.20Induction/with/590112858) -- fixpoint theorems similar to `OmegaCompletePartialOrder`, generalised to arbitrary cardinalities.
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
123/0 |
Mathlib.lean,Mathlib/Order/DirectedCompletePartialOrder/Defs.lean,docs/references.bib |
3 |
4 |
['SnirBroshi', 'github-actions', 'openendings'] |
nobody |
33-74190 1 month ago |
39-64310 39 days ago |
40-38918 40 days |
| 38612 |
SnirBroshi author:SnirBroshi |
feat(Order/SuccPred/CompleteLinearOrder): `sSup s < x` iff theorems when we know if `x` is a successor pre-limit or not |
Adds the following theorems (along with their duals and indexed versions):
```lean
sSup_lt_iff_of_not_isSuccPrelimit : ¬IsSuccPrelimit x → sSup s < x ↔ ∀ a ∈ s, a < x
le_sSup_iff_of_not_isSuccPrelimit : ¬IsSuccPrelimit x → x ≤ sSup s ↔ ∃ a ∈ s, x ≤ a
Order.IsSuccPrelimit.sSup_lt_iff : IsSuccPrelimit x → sSup s < x ↔ ∃ a < x, ∀ b ∈ s, b < a
Order.IsSuccPrelimit.le_sSup_iff : IsSuccPrelimit x → x ≤ sSup s ↔ ∀ a < x, ∃ b ∈ s, a ≤ b
```
They are similar to these existing theorems, but not the same:
```lean
sSup_lt_iff : sSup s < x ↔ ∃ a < x, ∀ b ∈ s, b ≤ a
le_sSup_iff_forall_lt : x ≤ sSup s ↔ ∀ a < x, ∃ b ∈ s, a < b
```
---
[](https://gitpod.io/from-referrer/)
|
t-order |
43/0 |
Mathlib/Order/SuccPred/CompleteLinearOrder.lean |
1 |
6 |
['SnirBroshi', 'github-actions', 'vihdzp'] |
nobody |
33-44999 1 month ago |
34-41913 34 days ago |
34-41695 34 days |
| 37930 |
vlad902 author:vlad902 |
chore(SimpleGraph): move `cycleGraph` to its own file |
PR #34797 re-defined `cycleGraph` independent of `circulantGraph`. Now move the definition of `cycleGraph` to its own file so that the definition can be used without importing the algebra hierarchy.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
173/148 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Circulant.lean,Mathlib/Combinatorics/SimpleGraph/Cycle.lean |
3 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
32-48968 1 month ago |
32-48991 32 days ago |
32-49160 32 days |
| 38747 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Basic): more `neighborSet` and `IsIsolated` lemmas |
---
`neighborSet_mono` moved from `Maps.lean` to `Basic.lean` with a simpler proof
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
72/17 |
Mathlib/Combinatorics/SimpleGraph/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Finite.lean,Mathlib/Combinatorics/SimpleGraph/Maps.lean,Mathlib/Combinatorics/SimpleGraph/StronglyRegular.lean |
4 |
2 |
['github-actions', 'vlad902'] |
nobody |
31-70647 1 month ago |
31-77603 31 days ago |
32-45274 32 days |
| 38841 |
SnirBroshi author:SnirBroshi |
feat(Mathlib/Order/SuccPred/Limit): more `WithTop` lemmas about `IsMin`/`CovBy`/`IsSuccLimit` |
---
Continues the work from #38244
We should probably also have such lemmas for `WithTopBot`/`WithBotTop`, but that's for another day
[](https://gitpod.io/from-referrer/)
|
t-order |
111/30 |
Mathlib/Order/Cover.lean,Mathlib/Order/SuccPred/Limit.lean,Mathlib/Order/WithBot.lean |
3 |
1 |
['github-actions'] |
nobody |
30-29445 30 days ago |
30-39961 30 days ago |
30-40550 30 days |
| 38316 |
tannerduve author:tannerduve |
feat(Order/OmegaCompletePartialOrder): least fixed point and Scott induction |
Adds `ContinuousHom.lfp` for endomorphisms on an ωCPO with `⊥`, as the `ωSup` of the iterate chain from `⊥`, together with `map_lfp`, `isFixedPt_lfp`, `lfp_le_fixed`, `isLeast_lfp`, and the Scott induction theorem `lfp_induction` (specialized from a more general seed-based `ωSup_iterate_induction`).
For `Part.fix`, adds:
* `Part.exists_mem_approx_of_mem_fix`: if `y ∈ Part.fix g x`, some finite approximation of `g` already contains `y`.
* `Part.Fix.approx_eq_iterate_bot` and `Part.Fix.approxChain_eq_iterateChain`: bridges between `Fix.approx`/`approxChain` and `f^[n] ⊥`/`iterateChain`.
* `Part.fix_eq_lfp`: `Part.fix g = ContinuousHom.lfp (.ofFun g hc)` when `g` is ω-Scott continuous.
* `Part.fix_scott_induction`: Scott induction specialized to `Part.fix`.
* `Part.fix_induction_mem`: membership induction on `Part.fix`, derived from `fix_scott_induction`. |
new-contributor |
114/0 |
Mathlib/Control/LawfulFix.lean,Mathlib/Order/OmegaCompletePartialOrder.lean,docs/references.bib |
3 |
2 |
['github-actions'] |
nobody |
30-4270 30 days ago |
41-66772 41 days ago |
41-67080 41 days |
| 38358 |
yuanyi-350 author:yuanyi-350 |
doc(1000.yaml): note more formalised theorems |
---
[](https://gitpod.io/from-referrer/)
|
documentation
maintainer-merge
|
9/2 |
docs/1000.yaml |
1 |
12 |
['YaelDillies', 'github-actions', 'grunweg', 'vihdzp', 'yuanyi-350'] |
nobody |
29-34347 29 days ago |
29-34409 29 days ago |
40-35847 40 days |
| 38871 |
0xTerencePrime author:0xTerencePrime |
feat(Combinatorics/SimpleGraph): add parity lemmas for outer and inner vertices |
Adds three lemmas to `SimpleGraph.DegreeSum`:
- `sum_degrees_option_zmod_two`: the handshaking lemma for `Option I` over ZMod 2
- `degree_none_zmod_two_eq_sum`: simp-normal form of the above
- `card_degree_one_option_eq_outer_zmod_two`: under degree bound ≤ 2, count of degree-1 inner vertices equals outer vertex degree mod 2 |
t-combinatorics
new-contributor
|
65/3 |
Mathlib/Combinatorics/SimpleGraph/DegreeSum.lean |
1 |
6 |
['0xTerencePrime', 'SnirBroshi', 'github-actions'] |
nobody |
28-53755 28 days ago |
29-23983 29 days ago |
29-23765 29 days |
| 38897 |
0xTerencePrime author:0xTerencePrime |
feat(Combinatorics/SetFamily): formalize 1D Sperner's Lemma parity |
Formalizes the 1-dimensional Sperner's Lemma (parity version): given a coloring of
the `n + 1` vertices of a subdivided line segment with two colors (`ZMod 2`), if the
two endpoints have different colors, then the number of color-changing edges is odd.
This is **distinct** from `IsAntichain.sperner` in `SetFamily.LYM`, which concerns
antichains in a power set. This file formalizes the topological/combinatorial parity
statement used as the base case in higher-dimensional Sperner arguments.
## Key declarations
- `SpernerColoring`: type-safe coloring via `Fin (n + 1) → ZMod 2`
- `edgeDiff`: color difference on adjacent vertices, computed in `ZMod 2`
- `totalDiff`: telescoping sum of all edge differences
- `diffEdges`: the `Finset` of bichromatic (color-changing) edges
- `sperner_1d`: main theorem — `Odd (diffEdges c).card`
## Design notes
- Using `Fin (n + 1) → ZMod 2` instead of `ℕ → ZMod 2` makes boundary conditions
unrepresentable at the type level, eliminating out-of-bounds cases entirely.
- The proof reduces to a telescoping sum in `ZMod 2`, using `CharTwo.add_self_eq_zero`
to cancel all interior vertices, avoiding parity case splits.
This is intended as the 1D base case, the approach generalizes to higher-dimensional
Sperner's Lemma in future work.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
133/0 |
Mathlib.lean,Mathlib/Combinatorics/SetFamily/Sperner1D.lean |
2 |
3 |
['github-actions', 'grunweg'] |
nobody |
28-44989 28 days ago |
28-55139 28 days ago |
28-54921 28 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
|
256/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 |
27 |
['ADedecker', 'EtienneC30', 'felixpernegger', 'github-actions', 'mathlib-merge-conflicts'] |
nobody |
27-39102 27 days ago |
27-39142 27 days ago |
67-34274 67 days |
| 38951 |
thomaskwaring author:thomaskwaring |
feat(Order/PrimeSeparator): remove unnecessary hypotheses |
In `mem_ideal_sup_principal`, boundedness and distributivity were unused, and in `prime_ideal_of_disjoint_filter_ideal`, boundedness was only used to produce an element of the filter `F`, which is already nonempty by definition.
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
9/19 |
Mathlib/Order/PrimeSeparator.lean |
1 |
2 |
['github-actions'] |
nobody |
27-37680 27 days ago |
27-37767 27 days ago |
27-37549 27 days |
| 38667 |
SnirBroshi author:SnirBroshi |
feat(Order/Hom/Basic): equivalences of `Order{Hom/Embedding/Iso}` |
- `OrderHom`s are equivalent to `RelHom`s of `LE` (unlike `OrderEmbedding`/`OrderIso` they aren't defined using it)
- Congruence equivs for `OrderEmbedding`/`OrderIso` when the two sides are order-isomorphic. This already exists for `OrderHom`.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
55/1 |
Mathlib/Order/Hom/Basic.lean |
1 |
3 |
['SnirBroshi', 'dagurtomas', 'github-actions'] |
nobody |
26-74730 26 days ago |
26-74730 26 days ago |
33-72033 33 days |
| 38979 |
ldct author:ldct |
feat(EReal): simplify nat + ⊤ |
Alternative version of https://github.com/leanprover-community/mathlib4/pull/38975
---
[](https://gitpod.io/from-referrer/)
|
t-data |
28/2 |
Mathlib/Data/EReal/Basic.lean,Mathlib/Data/EReal/Operations.lean,MathlibTest/EReal.lean |
3 |
6 |
['SnirBroshi', 'eric-wieser', 'github-actions', 'ldct', 'leanprover-radar'] |
nobody |
26-18612 26 days ago |
26-18378 26 days ago |
26-18290 26 days |
| 39004 |
zhuyizheng author:zhuyizheng |
chore(ModelTheory): fix hypo of `realize_liftAt` |
changes the hypo of `realize_liftAt` from the incorrect `(hmn : m + n' ≤ n + 1)` to the correct `(hmn : m ≤ n)`
---
[](https://gitpod.io/from-referrer/)
|
t-logic |
2/2 |
Mathlib/ModelTheory/Semantics.lean |
1 |
3 |
['github-actions', 'plp127', 'zhuyizheng'] |
nobody |
25-65241 25 days ago |
26-14970 26 days ago |
26-14752 26 days |
| 38310 |
ZRTMRH author:ZRTMRH |
feat(Combinatorics/Quiver/Schreier): word evaluation and reachability |
Adds word evaluation and reachability results to the Schreier graph API.
* `SchreierGraph.evalWord` : evaluates a word `List (S × Bool)` as an element of the ambient group, where `(s, true)` contributes `ι s` and `(s, false)` contributes `(ι s)⁻¹`.
* `SchreierGraph.evalWord_eq_lift` : agreement with `FreeGroup.lift`.
* `SchreierGraph.evalWord_mem_closure` : every word evaluates into the subgroup generated by `ι`.
* `SchreierGraph.pathFromWord` : a Bool-tagged word yields a path in `Symmetrify (SchreierGraph V ι)` from `x` to `evalWord ι w • x`.
* `SchreierGraph.reachable_iff` : two vertices are connected by a path in the symmetrification iff some element of the subgroup closure carries one to the other.
Follow-up to #36320.
This PR was written with AI assistance (Claude). The code has been reviewed by the author.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
large-import
LLM-generated
|
157/0 |
Mathlib/Combinatorics/Quiver/Schreier.lean |
1 |
2 |
['github-actions'] |
nobody |
25-51695 25 days ago |
41-85169 41 days ago |
41-84951 41 days |
| 39023 |
TBUGTB author:TBUGTB |
feat(Algebra/Order): API lemmas on floor and abs |
Co-authored-by: Etienne Marion @EtienneC30
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
brownian
new-contributor
label:t-algebra$ |
9/0 |
Mathlib/Algebra/Order/Floor/Semiring.lean,Mathlib/Algebra/Order/Ring/Abs.lean |
2 |
3 |
['TBUGTB', 'github-actions'] |
nobody |
25-33421 25 days ago |
25-36610 25 days ago |
25-36392 25 days |
| 39078 |
fpvandoorn author:fpvandoorn |
feat: add lemmas about products over Finset.Iio |
* Mostly useful for `ℕ`
* I added the `Finset.Iic` lemmas by symmetry, but I'm happy to remove them if we think they are redundant.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
29/0 |
Mathlib/Algebra/Order/BigOperators/Group/LocallyFinite.lean |
1 |
1 |
['github-actions'] |
nobody |
24-24066 24 days ago |
24-24146 24 days ago |
24-23928 24 days |
| 38328 |
astrainfinita author:astrainfinita |
feat: `OrderSupSet` |
This PR introduces `OrderSupSet` and `OrderInfSet`, which are typeclasses expressing that `sSup` (resp., `sInf`) returns the least upper bound (resp., the greatest lower bound) of a set whenever one exists.
This allows us to prove properties about the `sSup` of specific sets (such as `∅`, singletons, finite sets, and `univ`) without any typeclasses asserting the existence of LUBs. For example, `sSup ∅ = ⊥` holds for any type equipped with `OrderBot` `OrderSupSet`, no longer requiring typeclasses like `ConditionallyCompleteLinearOrderBot`.
For a general set `s`, this gives a uniform way to extend results about `IsLUB s a → motive a` to `motive (sSup s)`, `motive (⨆ i, f i)`, `motive (a ⊔ b)`, etc., which allows proof reuse for basic API such as [`csSup_insert`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Order/ConditionallyCompleteLattice/Basic.html#csSup_insert), [`iSup_insert`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Order/CompleteLattice/Basic.html#iSup_insert), and [`sSup_insert`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Order/CompleteLattice/Basic.html#sSup_insert) and downstream code like [`csSup_add`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Order/Group/Pointwise/CompleteLattice.html#csSup_add), [`sSup_add`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Order/Group/Pointwise/CompleteLattice.html#sSup_add), and [`sup_add`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Order/Group/Lattice.html#sup_add).
Furthermore, this allows us to refactor incrementally, reducing the dependency of results about various completeness typeclasses on the specific implementation of `sSup`.
---
[Zulip](https://leanprover.zulipchat.com/#narrow/channel/113488-general/topic/Any.20infimum.20based.20version.20of.20.60OmegaCompletePartialOrder.60.3F)
[](https://gitpod.io/from-referrer/)
|
t-order |
156/73 |
Mathlib/MeasureTheory/OuterMeasure/Induced.lean,Mathlib/Order/Bounds/Basic.lean,Mathlib/Order/Bounds/Defs.lean,Mathlib/Order/CompleteLattice/Basic.lean,Mathlib/Order/CompleteLattice/Defs.lean,Mathlib/Order/SetNotation.lean,Mathlib/Topology/UniformSpace/OfCompactT2.lean |
7 |
16 |
['JovanGerb', 'astrainfinita', 'b-mehta', 'github-actions', 'j-loreaux', 'mathlib-merge-conflicts', 'openendings', 'vihdzp'] |
nobody |
23-43576 23 days ago |
23-43615 23 days ago |
28-74105 28 days |
| 39123 |
SnirBroshi author:SnirBroshi |
chore(Data/Matrix/Basic): mention `mopMatrix` in `transpose{Ring/Alg}Equiv`s docstring and vice versa |
- `RingEquiv.mopMatrix` and `transposeRingEquiv` differ by a `ᵐᵒᵖ` since the latter assumes `CommMagma α` instead of `Mul α`
- `AlgEquiv.mopMatrix` and `transposeAlgEquiv` differ by a `ᵐᵒᵖ` since the latter assumes `CommSemiring α` instead of `Semiring α`
---
Also slightly golfs `RingEquiv.mopMatrix` as a drive-by.
[](https://gitpod.io/from-referrer/)
|
t-data |
18/11 |
Mathlib/Data/Matrix/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
23-2036 23 days ago |
23-2118 23 days ago |
23-1900 23 days |
| 38855 |
SnirBroshi author:SnirBroshi |
feat(Order/ConditionallyCompleteLattice/Indexed): `≤` version of `ciSup_or'` for `ConditionallyCompleteLattice` |
Deprime `ciSup_or'` because there's no `ciSup_or`, and add a `≤` version (and dual) for `ConditionallyCompleteLattice`.
Only `≤` because equality does not hold when `p ≠ q` without `sSup ∅ = ⊥`.
---
`ciSup_or'` can't have a dual because there's no dual to `ConditionallyCompleteLinearOrderBot`.
[](https://gitpod.io/from-referrer/)
|
t-order |
8/1 |
Mathlib/Order/ConditionallyCompleteLattice/Indexed.lean |
1 |
1 |
['github-actions'] |
nobody |
22-40617 22 days ago |
29-61825 29 days ago |
29-61607 29 days |
| 38649 |
chrisflav author:chrisflav |
chore(RingTheory): equality of linear map with values in finite module spreads out |
We add some corollaries of `Module.Finite.exists_smul_of_comp_eq_of_isLocalizedModule`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
large-import
|
75/1 |
Mathlib/Algebra/Module/FinitePresentation.lean,Mathlib/RingTheory/Localization/BaseChange.lean,Mathlib/RingTheory/Localization/Module.lean |
3 |
2 |
['github-actions'] |
alreadydone assignee:alreadydone |
21-65026 21 days ago |
34-17775 34 days ago |
34-17557 34 days |
| 39107 |
SnirBroshi author:SnirBroshi |
feat(Geometry/Manifold/ChartedSpace): `H ≃ₜ M` → `ChartedSpace H M` |
---
I thought it was strange that `Homeomorph`s didn't have this easy dot-notation, though I'm not familiar with this part of the library so I might be missing something.
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry |
6/0 |
Mathlib/Geometry/Manifold/ChartedSpace.lean |
1 |
1 |
['github-actions'] |
PatrickMassot assignee:PatrickMassot |
21-65015 21 days ago |
23-43543 23 days ago |
23-43325 23 days |
| 39157 |
vihdzp author:vihdzp |
feat: `Nat.cast` commutes with addition |
---
[](https://gitpod.io/from-referrer/)
|
|
26/9 |
Mathlib/Data/Nat/Cast/Commute.lean,Mathlib/SetTheory/Ordinal/Arithmetic.lean |
2 |
2 |
['github-actions', 'plp127'] |
nobody |
21-18933 21 days ago |
21-80398 21 days ago |
21-80180 21 days |
| 39219 |
WenrongZou author:WenrongZou |
feat(FieldTheory/Finite): add variant theorems for `expand_card` |
Add `MvPolynomial, MvPowerSeries, PowerSeries` version of `FiniteField.expand_card`, which is only for polynomial.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
large-import
label:t-algebra$ |
45/4 |
Mathlib/FieldTheory/Finite/Basic.lean,Mathlib/LinearAlgebra/Matrix/Charpoly/FiniteField.lean,Mathlib/RingTheory/MvPolynomial/Expand.lean,Mathlib/RingTheory/MvPowerSeries/Expand.lean,Mathlib/RingTheory/PowerSeries/Expand.lean |
5 |
1 |
['github-actions'] |
nobody |
20-80720 20 days ago |
20-80761 20 days ago |
20-80775 20 days |
| 36863 |
artie2000 author:artie2000 |
refactor(Algebra/Order/Ring/Ordering): unbundle `RingPreordering` |
The current design for [RingPreordering](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Order/Ring/Ordering/Defs.html#RingPreordering) ran into issues at PR #32077. This PR unbundles [RingPreordering](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Order/Ring/Ordering/Defs.html#RingPreordering) into a class predicate on [Subsemiring](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Ring/Subsemiring/Defs.html#Subsemiring), generalising the material on supports as far as possible.
Zulip thread: https://leanprover.zulipchat.com/#narrow/channel/116395-maths/topic/Ring.20orderings.20-.20structure.20or.20predicate.3F/with/562594050
See #37298 for the analogous change to group and ring cones.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
large-import
label:t-algebra$ |
455/87 |
Mathlib.lean,Mathlib/Algebra/Order/Ring/Ordering/Basic.lean,Mathlib/Algebra/Order/Ring/Ordering/Defs.lean,Mathlib/Algebra/Ring/Subsemiring/Support.lean |
4 |
14 |
['artie2000', 'chrisflav', 'github-actions', 'mathlib-merge-conflicts'] |
eric-wieser assignee:eric-wieser |
20-77664 20 days ago |
20-77664 20 days ago |
63-32278 63 days |
| 39162 |
anovickis author:anovickis |
feat(Topology/PartitionOfUnity): add pointwise_decomposition_finsum + companions |
Add three short lemmas to `Mathlib/Topology/PartitionOfUnity.lean` extending the existing `PartitionOfUnity` API:
- `pointwise_decomposition_finsum` — for `f : X → ℝ` and `x ∈ s`, `f x = ∑ᶠ i, ρ i x · f x`. This is the pointwise step that lifts to integral linearity in measure-theoretic PoU integration: `∫_s f dμ = ∑ᶠ i, ∫_s (ρ i · f) dμ`.
- `one_minus_sum_nonneg` — `0 ≤ 1 - ∑ᶠ i, ρ i x`. Direct rearrangement of the existing `sum_le_one` field; useful as a complement-mass remainder bound in chart-by-chart estimates.
- `abs_le_one` — `|ρ i x| ≤ 1`. Combines the existing `nonneg` and `le_one`; convenience for absolute-value bounds.
All three are short proofs using existing structure fields (`sum_eq_one`, `sum_le_one`, `nonneg`, `le_one`).
These came up while writing chart-by-chart Stokes-on-manifold estimates where one wants to decompose `∫_M f` into chart-supported pieces using a partition of unity. The pointwise identity is the obvious first step; the other two are complementary algebraic bounds that show up in remainder estimates.
---
🤖 Generated with [Claude Code](https://claude.com/claude-code) |
t-topology
new-contributor
LLM-generated
|
27/0 |
Mathlib/Topology/PartitionOfUnity.lean |
1 |
2 |
['github-actions'] |
urkud assignee:urkud |
20-65402 20 days ago |
21-61323 21 days ago |
21-61105 21 days |
| 39195 |
linesthatinterlace author:linesthatinterlace |
feat(Logic/Function/Defs): Add dcomp lemmas |
This PR adds API lemmas about `dcomp` that were previously missing.
---
[](https://gitpod.io/from-referrer/)
|
t-logic |
13/0 |
Mathlib/Logic/Function/Defs.lean |
1 |
6 |
['github-actions', 'linesthatinterlace', 'plp127'] |
nobody |
20-23834 20 days ago |
21-25333 21 days ago |
21-25115 21 days |
| 39230 |
bryangingechen author:bryangingechen |
chore: extract API from #38807 and golf |
I wanted to understand why these two proofs in #38807 were long (and also play around more with the API in this corner of the library) so I walked through them with Claude Opus.
prepared with Claude code
|
t-order
LLM-generated
|
23/37 |
Mathlib/Order/Bounds/Basic.lean,Mathlib/Order/DirSupClosed.lean |
2 |
2 |
['github-actions', 'vihdzp'] |
nobody |
19-74597 19 days ago |
20-62833 20 days ago |
20-62615 20 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 |
21 |
['SnirBroshi', 'YaelDillies', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
YaelDillies assignee:YaelDillies |
19-36519 19 days ago |
68-36068 68 days ago |
87-27811 87 days |
| 39279 |
jayscambler author:jayscambler |
feat(Cryptography/Sigma): Schnorr sigma protocol and signature scheme |
Adds `Mathlib/Cryptography/Sigma/Schnorr.lean`. New file in a new top-level directory; mathlib currently has no `Mathlib/Cryptography/`, so I've taken `Mathlib/Cryptography/Sigma/` as the natural home for sigma-protocol formalizations.
The file proves the three defining properties of Schnorr's identification scheme as a sigma protocol:
- `Schnorr.correct`: completeness. Honest verifier accepts honest signer's transcript.
- `Schnorr.specialSoundness`: from two accepting transcripts sharing the commitment but using different challenges `c, c'`, the witness `x = (s - s') / (c - c')` is recovered. Needs `q` prime so `c - c'` is invertible in `ZMod q`.
- `Schnorr.hvzkAccepts`: the HVZK simulator `g^s · (y^c)⁻¹` always yields accepting transcripts. This is the structural-correctness half of HVZK only; the distributional indistinguishability statement is a separate result and not in this PR.
On top of the sigma protocol there's `Schnorr.Signature.{keyGen, sign, verify, correct}` wrapping it as a Fiat-Shamir signature scheme; `Schnorr.Signature.correct` is a one-line corollary of `Schnorr.correct`.
Two auxiliary lemmas, `Schnorr.gpow_sub` and `Schnorr.gpow_mul`, bridge `ZMod q` arithmetic and group exponentiation under `Fintype.card G = q`. They're local to this file for now because the surrounding `gpow` API is itself cryptography-specific; if a general `ZMod q`-graded group action framework lands in mathlib later, both lemmas would become instances of it.
There's also a small `example` instantiating everything on `Multiplicative (ZMod q)` for `Fact q.Prime` to show the API typechecks. That instantiation is a toy (DLOG is trivial in that group), but it confirms the abstraction is usable.
**AI disclosure**: this PR was a collaboration between myself, Grey Haven's autocontext and Claude Opus 4.7 (Anthropic). I read each line and built locally on current master. (strawberry has three r's) |
new-contributor
LLM-generated
|
352/0 |
Mathlib.lean,Mathlib/Cryptography/Sigma/Schnorr.lean |
2 |
2 |
['github-actions'] |
nobody |
19-12017 19 days ago |
19-12096 19 days ago |
19-12368 19 days |
| 35255 |
vlad902 author:vlad902 |
feat(SimpleGraph): `cycleGraph.IsContained` in every graph with a cycle |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
35/0 |
Mathlib/Combinatorics/SimpleGraph/Circulant.lean |
1 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
19-8657 19 days ago |
33-81529 33 days ago |
33-82258 33 days |
| 38114 |
javgomzar author:javgomzar |
feat(FinitelyPresentedGroup): add finite groups instance |
Add IsFinitelyPresented instance for finite groups.
Co-authored-by: Hang Lu Su , Thomas Browning
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory
new-contributor
large-import
|
31/2 |
Mathlib/GroupTheory/FinitelyPresentedGroup.lean,Mathlib/GroupTheory/FreeGroup/Basic.lean |
2 |
33 |
['github-actions', 'javgomzar', 'kbuzzard', 'mathlib-merge-conflicts', 'plp127', 'tb65536', 'vihdzp'] |
mattrobball assignee:mattrobball |
19-3627 19 days ago |
19-3663 19 days ago |
42-1182 42 days |
| 34855 |
staroperator author:staroperator |
feat(Order): use `to_dual` for `PFilter` |
This PR redefines `PFilter` to get rid of `OrderDual` and uses `to_dual` to translate theorems. The whole file of `PFilter` is now deprecated.
Some changes:
- To align with `Filter`, the order on `PFilter` is changed to the reversed set inclusion. Ultrafilters, the dual notion of maximal ideals, become minimal in this order.
- `to_dual` does not work on `sequenceOfCofinals`. I left `Order.Cofinal` and the Rasiowa–Sikorski lemma not `to_dual`-ized, and we should move them to a separate file later.
- `IsLEChain` is added to tag `to_dual`.
- `IsCoatom.isProper`/`IsCoatom.isMaximal` is deprecated by `Order.Ideal.isProper_of_isCoatom`/`Order.Ideal.isMaximal_of_isProper`, since this result is special to ideals while `IsCoatom` namespace should be for orders in general.
---
- [x] depends on: #34820
---
[](https://gitpod.io/from-referrer/)
|
t-order |
292/242 |
Mathlib/Order/Atoms.lean,Mathlib/Order/BooleanAlgebra/Basic.lean,Mathlib/Order/BooleanAlgebra/Defs.lean,Mathlib/Order/CompleteLattice/Defs.lean,Mathlib/Order/Ideal.lean,Mathlib/Order/PFilter.lean,Mathlib/Order/Preorder/Chain.lean,Mathlib/Order/PrimeIdeal.lean,Mathlib/Order/PrimeSeparator.lean,Mathlib/Order/ZornAtoms.lean,Mathlib/RingTheory/IdealFilter/Basic.lean,Mathlib/RingTheory/IdealFilter/Topology.lean,Mathlib/Tactic/Translate/ToDual.lean |
13 |
4 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
18-82838 18 days ago |
18-82616 18 days ago |
31-19310 31 days |
| 37928 |
AlexeyMilovanov author:AlexeyMilovanov |
refactor(Computability.Encoding): unbundle Γ and remove FinEncoding |
This PR unbundles the alphabet `Γ` from the `Encoding` structure and completely removes `FinEncoding`.
`Encoding`: The alphabet `Γ` is now an explicit parameter: `structure Encoding (α : Type u) (Γ : Type v)`.
`FinEncoding`: Removed. Finiteness is now handled via standard typeclasses (e.g., `[Fintype Γ] (e : Encoding α Γ)`).
Combinators: Functions like `finEncodingPair` are simplified to `encodingPair`, dropping the `fin` prefix and `[Fintype]` requirements where no longer needed.
Downstream: Mechanically updated `Mathlib.Computability` and `Mathlib.ModelTheory` to pass the explicit `Γ` and use `[Fintype Γ]` where `FinEncoding` was previously required.
|
new-contributor
maintainer-merge
|
87/67 |
Mathlib/Computability/Encoding.lean,Mathlib/ModelTheory/Encoding.lean |
2 |
9 |
['AlexeyMilovanov', 'dagurtomas', 'github-actions', 'vihdzp'] |
nobody |
18-69888 18 days ago |
25-34466 25 days ago |
51-14104 51 days |
| 38816 |
tb65536 author:tb65536 |
refactor(GroupTheory/Finiteness): make duplicate definitions into abbrevs |
The definitions `Submonoid.FG`, `Group.FG`, and `Subgroup.FG` are all equivalent to `Monoid.FG`, so I've made them into abbrevs. In the future we might even want to consider deprecating all but one to avoid having four ways to write the same thing.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-group-theory
label:t-algebra$ |
140/122 |
Mathlib/Algebra/AffineMonoid/Irreducible.lean,Mathlib/GroupTheory/Finiteness.lean,Mathlib/GroupTheory/MonoidLocalization/Finite.lean,Mathlib/GroupTheory/Schreier.lean,Mathlib/ModelTheory/Arithmetic/Presburger/Semilinear/Basic.lean,Mathlib/ModelTheory/Arithmetic/Presburger/Semilinear/Defs.lean,Mathlib/RingTheory/FiniteType.lean,Mathlib/RingTheory/Finiteness/Defs.lean,Mathlib/RingTheory/Localization/InvSubmonoid.lean |
9 |
5 |
['eric-wieser', 'github-actions', 'j-loreaux', 'tb65536'] |
mattrobball assignee:mattrobball |
18-65029 18 days ago |
31-1552 31 days ago |
31-1335 31 days |
| 39341 |
drocta author:drocta |
feat(Algebra/Colimit/DirectLimit): add DirectLimit.(NonUnital)StarAlgebra.(lift/of) maps and associated lemmas |
add the `of` and `lift` maps for `DirectLimit.StarAlgebra` and `DirectLimit.NonUnitalStarAlgebra`, as well as the associated lemmas, `of_f`, `lift_comp_of`, `lift_of`, and `hom_ext` for each. Also make `DirectLimit.NonUnitalAlgebra` only require `[Monoid R]` rather than `[CommSemiring R]`.
---
Use of AI: I again asked ChatGPT for some advice about some things about this code. I can personally vouch for all of the code I'm submitting, and that I understand all of it.
This is the third part of my project towards supporting direct limits of $C^∗$ -algebras (as I described [on Zulip](https://leanprover.zulipchat.com/#narrow/channel/113489-new-members/topic/Early.20feedback.20on.20approach.20towards.20formalizing.20UHF.20algebras.3F) ).
This PR adds an import of `Mathlib.Algebra.Star.StarAlgHom` (because it needs `StarAlgHom` and `NonUnitalStarAlgHom`) replacing/encompassing the previously added imports of `Mathlib.Algebra.Star.StarRingHom` and `Mathlib.Algebra.Algebra.NonUnitalHom` (added in PR #38308 and #38672 respectively). |
t-algebra
new-contributor
label:t-algebra$ |
100/3 |
Mathlib/Algebra/Colimit/DirectLimit.lean |
1 |
2 |
['github-actions'] |
nobody |
18-64440 18 days ago |
18-67132 18 days ago |
18-66914 18 days |
| 39373 |
yuanyi-350 author:yuanyi-350 |
refactor(NumberTheory): golf `Mathlib/NumberTheory/ModularForms/CongruenceSubgroups` |
- simplifies `Gamma_mem` to a single `simp` proof via `Gamma_mem'` and `SpecialLinearGroup.ext_iff`
- shortens `ModularGroup_T_pow_mem_Gamma` and the `Gamma0` closure proofs with direct `simp`/`simpa` arguments
Extracted from #38144
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
|
4/22 |
Mathlib/NumberTheory/ModularForms/CongruenceSubgroups.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
18-11114 18 days ago |
18-12847 18 days ago |
18-12629 18 days |
| 39375 |
yuanyi-350 author:yuanyi-350 |
refactor(NumberTheory): golf `Mathlib/NumberTheory/ModularForms/SlashActions` |
- streamlines `prod_slash_sum_weights` by letting `simp` handle the empty case and removing the redundant singleton split in the inductive step
Extracted from #38144
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
|
1/5 |
Mathlib/NumberTheory/ModularForms/SlashActions.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
18-10751 18 days ago |
18-12841 18 days ago |
18-12623 18 days |
| 39376 |
yuanyi-350 author:yuanyi-350 |
refactor(NumberTheory): golf `Mathlib/NumberTheory/RamificationInertia/Basic` |
- shortens `quotientToQuotientRangePowQuotSucc_surjective` by switching the ideal-factor argument to `irreducible_pow_sup` and `count_normalizedFactors_eq` after isolating the span hypotheses
Extracted from #38144
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
|
4/10 |
Mathlib/NumberTheory/RamificationInertia/Basic.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
18-10579 18 days ago |
18-12839 18 days ago |
18-12621 18 days |
| 39392 |
jayscambler author:jayscambler |
feat(Cryptography): one-time pad and Shannon perfect secrecy |
Adds `Mathlib/Cryptography/OTP.lean`. One-time pad over an arbitrary
finite abelian group `G`:
- `OTP.encrypt k m := m + k`, `OTP.decrypt k c := c - k`.
- `OTP.correct`: `decrypt k (encrypt k m) = m`, by `abel`.
- `OTP.perfect_secrecy`: for any `m₀, m₁`, the distributions of
`encrypt k m₀` and `encrypt k m₁` over uniform `k` are equal;
both reduce to `PMF.uniformOfFintype G`. Proof goes via
`Equiv.addLeft`.
Independent of the Schnorr PR (#39279); no shared definitions. Unlike
everything else likely to live under `Mathlib/Cryptography/`, the
security guarantee here is information-theoretic, not computational.
**AI disclosure**: this PR was a collaboration between myself, Grey
Haven's autocontext and Claude Opus 4.7 (Anthropic). I read each
line and built locally on current master. (strawberry has three r's) |
new-contributor
LLM-generated
|
76/0 |
Mathlib.lean,Mathlib/Cryptography/OTP.lean |
2 |
3 |
['MrBrain295', 'github-actions'] |
nobody |
17-60969 17 days ago |
17-83443 17 days ago |
17-83225 17 days |
| 37745 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(RingTheory/AugmentationIdeal): base change for augmentation ideals |
Base change for augmentation ideals
Co-authored with: @mariainesdff
---
- [x] depends on: #37744
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
large-import
label:t-algebra$ |
441/1 |
Mathlib.lean,Mathlib/Algebra/Algebra/Hom.lean,Mathlib/Algebra/Algebra/Subalgebra/Basic.lean,Mathlib/Algebra/Module/Submodule/Range.lean,Mathlib/LinearAlgebra/Projection.lean,Mathlib/LinearAlgebra/Span/Defs.lean,Mathlib/LinearAlgebra/TensorProduct/Projection.lean,Mathlib/LinearAlgebra/TensorProduct/RightExactness.lean,Mathlib/LinearAlgebra/TensorProduct/Submodule.lean,Mathlib/Order/Disjoint.lean,Mathlib/RingTheory/Ideal/IsAugmentation.lean,Mathlib/RingTheory/TensorProduct/Basic.lean |
12 |
18 |
['AntoineChambert-Loir', 'dagurtomas', 'github-actions', 'mathlib-dependent-issues'] |
nobody |
17-30308 17 days ago |
17-30379 17 days ago |
18-4137 18 days |
| 39438 |
SnirBroshi author:SnirBroshi |
chore(Order/WellFounded): use `to_dual` |
Creates `argmax`/`argmaxOn` duals to the existing `argmin`/`argminOn`,
and `WellFoundedLT.min`/`WellFoundedGT.max` in order to properly dualize `WellFounded.min_le`.
Some theorems about `WellFounded{LT/GT}` which didn't have a dual before have to be renamed to make room,
e.g. `StrictMono.range_inj` is renamed to `StrictMono.range_inj_of_wellFoundedLT`.
---
This is blocking dualizing things in `ConditionallyCompleteLattice/Basic.lean`.
`WellFounded.min_le` has ~30 usages in ~10 files, so deprecating it should probably happen in a separate PR.
[](https://gitpod.io/from-referrer/)
|
t-order |
80/34 |
Mathlib/Data/Finset/Sort.lean,Mathlib/Order/Hom/Set.lean,Mathlib/Order/WellFounded.lean,Mathlib/SetTheory/Ordinal/Enum.lean |
4 |
5 |
['SnirBroshi', 'github-actions', 'vihdzp'] |
nobody |
16-63375 16 days ago |
16-63447 16 days ago |
16-71825 16 days |
| 39106 |
SnirBroshi author:SnirBroshi |
feat(LinearAlgebra/Matrix/Reindex): `AddEquiv` and `RingEquiv` |
We had `Matrix.reindex` bundled as a `LinearEquiv` and an `AlgEquiv`,
and this bundles it as an `AddEquiv` and a `RingEquiv`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
158/43 |
Mathlib/LinearAlgebra/Matrix/Basis.lean,Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean,Mathlib/LinearAlgebra/Matrix/Reindex.lean,Mathlib/LinearAlgebra/Matrix/Transvection.lean |
4 |
10 |
['SnirBroshi', 'eric-wieser', 'github-actions', 'themathqueen'] |
nobody |
16-62934 16 days ago |
19-65621 19 days ago |
20-1205 20 days |
| 37707 |
MavenRain author:MavenRain |
feat(Combinatorics/SimpleGraph): add IsMaximalClique/IsMaximalIndepSet, refactor IsMaximum* to MaximalFor |
Addresses #34962
|
new-contributor
t-combinatorics
|
63/31 |
Mathlib/Combinatorics/SimpleGraph/Clique.lean |
1 |
6 |
['MavenRain', 'SnirBroshi', 'eric-wieser', 'github-actions'] |
nobody |
16-44692 16 days ago |
16-44764 16 days ago |
16-46186 16 days |
| 39368 |
gasparattila author:gasparattila |
feat: homogenization of an affine space |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
401/0 |
Mathlib.lean,Mathlib/LinearAlgebra/AffineSpace/Homogenization.lean,docs/references.bib |
3 |
15 |
['eric-wieser', 'gasparattila', 'github-actions'] |
nobody |
16-21574 16 days ago |
18-13080 18 days ago |
18-14064 18 days |
| 39472 |
NoahW314 author:NoahW314 |
feat(RingTheory/MvPolynomial/Homogeneous): add homogeneous lemmas |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
large-import
|
74/2 |
Mathlib/Data/Finsupp/Weight.lean,Mathlib/RingTheory/MvPolynomial/Homogeneous.lean,Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean |
3 |
1 |
['github-actions'] |
nobody |
16-623 16 days ago |
16-693 16 days ago |
16-669 16 days |
| 37720 |
cjrl author:cjrl |
feat(Data/Fintype/Card): existsUnique_notMem_image_of_injective_of_card_succ |
This pull requests adds a small theorem `existsUnique_notMem_image_of_injective_of_card_succ` to `Mathlib/Data/Fintype/Card` that says given an injective map f : α → β such that β has cardinality one more than α, there exists a unique element of β not in the image of f.
This can be viewed as going in the opposite direction of `card_lt_of_injective_of_notMem`.
This little fact is needed for our Latin Square PR #36698.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
t-set-theory
|
19/0 |
Mathlib/Data/Finset/Card.lean,Mathlib/Data/Fintype/Card.lean |
2 |
10 |
['IvanRenison', 'cjrl', 'dagurtomas', 'ghseeli', 'github-actions'] |
nobody |
15-61672 15 days ago |
15-61672 15 days ago |
53-32310 53 days |
| 39443 |
justus-springer author:justus-springer |
feat(Data/Set/Image): `nonempty_preimage_iff` |
Basically a converse to `nonempty_of_nonempty_preimage`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
4/0 |
Mathlib/Data/Set/Image.lean |
1 |
4 |
['Paul-Lez', 'github-actions', 'justus-springer', 'urkud'] |
nobody |
15-43773 15 days ago |
16-74950 16 days ago |
16-74732 16 days |
| 33392 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(LinearAlgebra/Transvection/Generation): non-exceptional case in Dieudonné's theorem |
We prove the theorem of [Dieudonné-1955][J. Dieudonné, “Sur les générateurs
des groupes classiques”].
Let `K` be a division ring and `V` be a `K`-module.
* `LinearEquiv.mem_transvections_pow_mul_dilatransvections_of_fixedReduce_eq_one`:
If `e.fixedReduce = 1`, then `e` can be written as the product
of `finrank K (V ⧸ e.fixedSubmodule) - 1` transvections
and one dilatransvection.
This is the first part of the non-exceptional case in Dieudonné's theorem.
(This statement is not interesting when `e = 1`.)
* `LinearEquiv.mem_transvections_pow_mul_dilatransvections_of_fixedReduce_ne_smul_id`:
If `e.fixedReduce` is not a homothety, then `e` can be written as the product
of `finrank K (V ⧸ e.fixedSubmodule) - 1` transvections and one dilatransvection.
This is the second part of the non-exceptional case in Dieudonné's theorem.
* `LinearEquiv.IsExceptional`:
A linear equivalence `e : V ≃ₗ[K] V` is exceptional if `1 < finrank K (V ⧸ e.fixedSubmodule)`
and if `e.fixedReduce` is a nontrivial homothety.
* `LinearEquiv.mem_dilatransvections_pow_of_notIsExceptional`:
This is the non-exceptional case in Dieudonné's theorem,
as a combination of the two preceding statements.
---
- [x] depends on: #33348
- [x] depends on: #33282
- [x] depends on: #33347
- [ ] depends on: #33387
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
551/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Center.lean,Mathlib/LinearAlgebra/LinearIndependent/Lemmas.lean,Mathlib/LinearAlgebra/Transvection/Generation.lean |
4 |
16 |
['AntoineChambert-Loir', 'dagurtomas', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
joelriou assignee:joelriou |
15-40303 15 days ago |
15-40371 15 days ago |
62-79001 62 days |
| 39231 |
mbkybky author:mbkybky |
chore(RingTheory/PicardGroup): drop `StrongRankCondition` assumptions in two lemmas |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
3/6 |
Mathlib/RingTheory/PicardGroup.lean |
1 |
1 |
['github-actions'] |
nobody |
15-29351 15 days ago |
20-48717 20 days ago |
20-57889 20 days |
| 39504 |
WenrongZou author:WenrongZou |
feat(MvPowerSeries/Ideal): kernel of map equals map `C` of kernel |
In this PR, we prove that given a ring homomorphism f, suppose that kernel of f is finitely generated, then kernel of map equals map `C` of kernel. (See `ker_map_of_FG`).
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
87/0 |
Mathlib.lean,Mathlib/RingTheory/MvPowerSeries/Ideal.lean |
2 |
4 |
['CoolRmal', 'WenrongZou', 'github-actions'] |
nobody |
15-20154 15 days ago |
15-30471 15 days ago |
15-30553 15 days |
| 37848 |
rwst author:rwst |
feat(RingTheory/PowerSeries/Log): log and exp as inverses |
This adds the lemmas `exp_subst_log` and `log_subst_exp_sub_one`, together with two helpers needed for the proofs.
Note: I'm using Claude + Opus for supervised formalization tasks. Claude has no permission to use git on my machine.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
LLM-generated
|
88/0 |
Mathlib/RingTheory/PowerSeries/Log.lean,Mathlib/RingTheory/PowerSeries/Substitution.lean |
2 |
10 |
['chrisflav', 'github-actions', 'rwst'] |
chrisflav assignee:chrisflav |
15-6553 15 days ago |
21-16682 21 days ago |
51-85340 51 days |
| 39514 |
SnirBroshi author:SnirBroshi |
chore(RingTheory/Polynomial/Basic): golf `degreeLTEquiv` |
Also extracts the `monomial i a ∈ degreeLT R n` proof to a lemma.
---
The semicolons might be a bit excessive, let me know if so.
Also the `right_inv` proof is slower than the previous version, so maybe it should be reverted, but the rest is fine.
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
11/32 |
Mathlib/RingTheory/Polynomial/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
14-86352 14 days ago |
15-238 15 days ago |
15-428 15 days |
| 36954 |
FMLJohn author:FMLJohn |
feat(Topology/ClosedBases): `TopologicalSpace.IsClosedBasis` and `TopologicalSpace.IsClosedSubbasis s` |
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`.
---
[](https://gitpod.io/from-referrer/) |
t-topology |
117/0 |
Mathlib.lean,Mathlib/Topology/Bases.lean,Mathlib/Topology/ClosedBases.lean |
3 |
19 |
['github-actions', 'scholzhannah'] |
urkud assignee:urkud |
14-85918 14 days ago |
39-26273 39 days ago |
68-28381 68 days |
| 38916 |
yuanyi-350 author:yuanyi-350 |
chore(CategoryTheory/CatCommSq): remove an erw |
- rewrites `hInv_hInv` by using `conv_rhs` with `iso_hom_naturality`
- removes the `rw`/`erw` pair around `Functor.comp_map`
Extracted from #38415
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
|
3/2 |
Mathlib/CategoryTheory/CatCommSq.lean |
1 |
2 |
['github-actions', 'loefflerd'] |
nobody |
14-85106 14 days ago |
28-30230 28 days ago |
28-30012 28 days |
| 26479 |
thefundamentaltheor3m author:thefundamentaltheor3m |
feat(Analysis/Complex/CauchyIntegral): Cauchy–Goursat for Unbounded Rectangles |
In this PR, we prove versions of the Cauchy-Goursat theorem where the contours in question are rectangular and unbounded (ie, where the contours look like the $\bigsqcup$ symbol). I am not sure if I have formalised these in the best way, or if `Analysis.Complex.CauchyIntegral` is the best place for them (it might be prudent to reorganise the file into multiple files at some point), but I believe this is a useful result. Suggestions welcome.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-analysis
sphere-packing
|
219/0 |
Mathlib/Analysis/Complex/CauchyIntegral.lean |
1 |
7 |
['github-actions', 'j-loreaux', 'loefflerd', 'mathlib4-merge-conflict-bot', 'thefundamentaltheor3m', 'wwylele'] |
urkud assignee:urkud |
14-52507 14 days ago |
14-52507 14 days ago |
48-63511 48 days |
| 35122 |
Marygold-Dusk author:Marygold-Dusk |
feat: define C^n submersions |
This PR defines submersions between C^n manifolds. In the infinite-dimensional setting, submersions are defined via local normal forms rather than surjectivity of the mfderiv. A map f is a submersion at x if, in suitable charts around x and f x, it has the form (u, v) ↦ u after identifying the model space with a product.
We prove a few basic properties:
- being a submersion is a local property,
- products of submersions are submersions,
- the set of submersed points is open
Future PRs will prove that submersions are C^n and deduce equivalence with the standard definition in finite dimensions. From the path towards the regular value theorem.
This file was developed under the supervision of Michael Rothgang.
Co-authored-by: Michael Rothgang
---
Most of the design is analogues to immersions.
|
t-differential-geometry
new-contributor
|
642/0 |
Mathlib.lean,Mathlib/Geometry/Manifold/Submersion.lean,docs/references.bib |
3 |
54 |
['Marygold-Dusk', 'chrisflav', 'github-actions', 'grunweg'] |
PatrickMassot and grunweg assignee:grunweg assignee:PatrickMassot |
14-40695 14 days ago |
14-40695 14 days ago |
58-61011 58 days |
| 39370 |
fpvandoorn author:fpvandoorn |
feat: add specialized grind sets |
This adds two grind attributes for specialized tactics. See module doc for more information and motivation. This PR does not tag any lemmas yet.
[Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/small.20specialized.20grind.20sets/with/595132109)
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
113/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/Common.lean,Mathlib/Tactic/GrindAttrs.lean |
4 |
5 |
['chenson2018', 'fpvandoorn', 'github-actions'] |
dwrensha assignee:dwrensha |
14-14991 14 days ago |
18-13667 18 days ago |
18-13449 18 days |
| 39269 |
godofecht author:godofecht |
feat(Algebra/Spectrum): add the second resolvent identity |
Adds `spectrum.resolvent_sub_resolvent`:
For `a b : A` in an `R`-algebra and `r` in the resolvent set of both,
`resolvent a r - resolvent b r = resolvent a r * (a - b) * resolvent b r`.
Companion to `spectrum.resolvent_eq`. |
t-algebra
new-contributor
label:t-algebra$ |
15/0 |
Mathlib/Algebra/Algebra/Spectrum/Basic.lean |
1 |
3 |
['github-actions', 'wwylele'] |
nobody |
14-10489 14 days ago |
19-85054 19 days ago |
19-84836 19 days |
| 39366 |
akiezun author:akiezun |
feat(Data/Nat): add prime divisibility for ascFactorial and choose |
Adds two prime-divisibility lemmas for natural-number factorial/binomial APIs.
The first characterizes when a prime divides an ascending factorial:
`Nat.Prime.dvd_ascFactorial_iff`.
The second applies this to binomial coefficients:
`Nat.Prime.dvd_choose_add_sub_one_iff`, using
`Nat.ascFactorial_eq_factorial_mul_choose'` and cancellation of the `n!` factor
when `n < p`.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
large-import
|
46/0 |
Mathlib.lean,Mathlib/Data/Nat/Choose/Consecutive.lean,Mathlib/Data/Nat/Factorial/BigOperators.lean |
3 |
9 |
['SnirBroshi', 'akiezun', 'github-actions', 'wwylele'] |
nobody |
14-3036 14 days ago |
14-5077 14 days ago |
18-15238 18 days |
| 39549 |
Hagb author:Hagb |
feat(Order/RelIso/Basic): `swap`s and `compl`s are `Equiv`s |
---
[](https://gitpod.io/from-referrer/)
|
t-order |
13/8 |
Mathlib/Order/RelIso/Basic.lean |
1 |
3 |
['Hagb', 'github-actions', 'leanprover-radar'] |
nobody |
13-81772 13 days ago |
13-84213 13 days ago |
13-83995 13 days |
| 39555 |
b-mehta author:b-mehta |
feat(Data/Finset/Image): relate images with nontriviality |
---
[](https://gitpod.io/from-referrer/)
|
t-data |
20/0 |
Mathlib/Data/Finset/Image.lean |
1 |
1 |
['github-actions'] |
nobody |
13-75312 13 days ago |
13-75390 13 days ago |
13-75172 13 days |
| 39098 |
BoltonBailey author:BoltonBailey |
chore(Data/Vector): add `grind` to cons lemmas |
This PR affects `List.Vector.head_cons` and `List.Vector.tail_cons`. It moves the simp attribute assignment of these lemmas to the lemma declarations and also applies the `grind =` attribute.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
2/2 |
Mathlib/Data/Vector/Basic.lean,Mathlib/Data/Vector/Defs.lean |
2 |
4 |
['BoltonBailey', 'github-actions', 'leanprover-radar'] |
nobody |
13-68434 13 days ago |
13-68508 13 days ago |
22-81920 22 days |
| 29744 |
espottesmith author:espottesmith |
feat(Combinatorics): define directed hypergraphs |
This PR defines directed hypergraphs:
```
@[ext]
structure DiHypergraph (α : Type*) where
/-- The vertex set -/
vertexSet : Set α
/-- The edge set -/
edgeSet : Set ((Set α) × (Set α))
/-- Each edge is a pair (s, d), where s ⊆ vertexSet and d ⊆ vertexSet -/
edge_src_dst_isSubset_vertexSet' : ∀ ⦃e⦄, e ∈ edgeSet → e.1 ⊆ vertexSet ∧ e.2 ⊆ vertexSet
```
Additional definitions:
- tail/head stars and negative/positive stars
- some special cases (B-Graph, F-Graph, BF-Graph, and what I'm calling a "non-endless" dihypergraph, where neither the source/tail nor the destination/head are empty)
- Vertex and (hyper)edge adjacency
- isolated vertices
- empty and nonempty dihypergraphs
The design employed here is based off of #28613, but this PR does not depend on that one.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
398/0 |
Mathlib.lean,Mathlib/Combinatorics/DiHypergraph/Basic.lean |
2 |
4 |
['b-mehta', 'espottesmith', 'github-actions', 'mathlib4-merge-conflict-bot'] |
nobody |
13-66299 13 days ago |
59-35684 59 days ago |
117-18933 117 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 |
23 |
['Parcly-Taxel', 'b-mehta', 'eric-wieser', 'github-actions', 'jsm28', 'vihdzp'] |
nobody |
13-66298 13 days ago |
138-83406 138 days ago |
138-83188 138 days |
| 39027 |
fpvandoorn author:fpvandoorn |
feat: delaborators for inequalities in big operators |
`∏ i < n, f i` was already accepted as valid syntax, but this PR now also prints appropriate sums/products using this notation.
---
[Zulip discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/missing.20delaborator.20for.20finsum)
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-meta
label:t-algebra$ |
132/49 |
Mathlib/Algebra/BigOperators/Group/Finset/Defs.lean,MathlibTest/BigOps.lean |
2 |
2 |
['fpvandoorn', 'github-actions'] |
kim-em assignee:kim-em |
13-64828 13 days ago |
14-15225 14 days ago |
14-25610 14 days |
| 39558 |
b-mehta author:b-mehta |
feat(Data/Finset/Prod): count the number of ordered pairs in a set |
These proofs were written a while ago, so they may be golfable
---
[](https://gitpod.io/from-referrer/)
|
t-data |
21/0 |
Mathlib/Data/Finset/Prod.lean |
1 |
2 |
['github-actions', 'plp127'] |
nobody |
13-45430 13 days ago |
13-72785 13 days ago |
13-72567 13 days |
| 38906 |
lua-vr author:lua-vr |
feat(ConditionallyCompleteLattice/Indexed): add binary versions of lemmas |
Add binary versions of some of the lemmas. Those are useful when the domain is indexed over the members of a set.
From the Carleson project.
---
[](https://gitpod.io/from-referrer/)
|
t-order
carleson
|
21/5 |
Mathlib/Order/ConditionallyCompleteLattice/Indexed.lean |
1 |
19 |
['JovanGerb', 'SnirBroshi', 'github-actions', 'grunweg', 'lua-vr', 'mathlib-merge-conflicts'] |
nobody |
13-17956 13 days ago |
13-18021 13 days ago |
22-78116 22 days |
| 39567 |
AlexBrodbelt author:AlexBrodbelt |
feat(Mathlib/Data/Finite/Option): option type is finite iff type is finite |
Option type is finite if and only if the type is finite.
This is an intermediate result to proving that if the `GroupWithZero` is (in)finite then the `Units` are (in)finite.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
25/0 |
Mathlib.lean,Mathlib/Data/Finite/Option.lean |
2 |
11 |
['AlexBrodbelt', 'github-actions', 'plp127', 'themathqueen'] |
nobody |
13-17571 13 days ago |
13-33622 13 days ago |
13-34018 13 days |
| 37350 |
aditya-ramabadran author:aditya-ramabadran |
feat(Analysis/Distribution): define canonical maps between Schwartz/test functions, distributions/tempered distributions |
Defines these canonical maps: (1) continuous linear map from $\mathcal D$ to $\mathcal S$, and (2) induced (linear) restriction map from $\mathcal S'$ to $\mathcal D'$, as assigned by @ADedecker.
---
Put in a separate file since Distribution.lean only imports TestFunction right now and I thought it was cleaner to do in a new bridge file with both the maps. Open to changing this though.
* Made use of #36445 (proved first map locally on fixed support spaces first by local seminorm estimates, then used limitCLM)
* Needed a real to complex bridge `TestFunction.ToComplexSchwartzMap` since distributions are defined on real-valued test functions but tempered distributions in mathlib are defined on complex-valued Schwartz functions
* Induced map $\mathcal S'(E,F) \to \mathcal D'(Ω,F)$ is $\mathbb C$-linear
The main important defs are `ContDiffMapSupportedIn.toSchwartzMapCLM` which is the local fixed-support part, then `TestFunction.toSchwartzMapCLM` (where the continuity uses limitCLM to glue the local continuous linear maps on each $\mathcal D_K$), and `TemperedDistribution.toDistributionLM` which is the linear map from tempered distributions to ordinary distributions.
Tested with `lake env lean Mathlib/Analysis/Distribution/TestFunctionSchwartz.lean`
[](https://gitpod.io/from-referrer/)
|
t-analysis
new-contributor
|
225/0 |
Mathlib.lean,Mathlib/Analysis/Distribution/TestFunctionSchwartz.lean |
2 |
24 |
['aditya-ramabadran', 'github-actions', 'j-loreaux'] |
ADedecker and mcdoll assignee:mcdoll assignee:ADedecker |
13-9530 13 days ago |
22-14704 22 days ago |
54-14782 54 days |
| 39585 |
chrisflav author:chrisflav |
chore(RingTheory): add `rfl` lemmas for `Ideal.quotientInfRingEquivPiQuotient` |
From Pi1.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
11/0 |
Mathlib/RingTheory/Ideal/Quotient/Operations.lean |
1 |
1 |
['github-actions'] |
nobody |
13-8594 13 days ago |
13-8677 13 days ago |
13-8459 13 days |
| 39494 |
Hagb author:Hagb |
chore(Data/Finsupp/MonomialOrder): rename fields of `MonomialOrder` to match naming conventions |
Moves:
- MonomialOrder.acm -> MonomialOrder.addCommMonoid_syn
- MonomialOrder.lo -> MonomialOrder.linearOrder_syn
- MonomialOrder.iocam -> MonomialOrder.isOrderedCancelAddMonoid_syn
- MonomialOrder.wf -> MonomialOrder.wellFoundedLT_syn
---
See https://github.com/leanprover-community/mathlib4/pull/32829#discussion_r2716534558.
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
15/6 |
Mathlib/Data/Finsupp/MonomialOrder.lean,Mathlib/RingTheory/MvPolynomial/Groebner.lean |
2 |
1 |
['github-actions'] |
nobody |
13-5666 13 days ago |
15-57356 15 days ago |
15-57665 15 days |
| 34713 |
dennj author:dennj |
feat(Probability/Markov): stationary distributions for stochastic matrices |
This PR proves that every row-stochastic matrix on a finite nonempty
state space has a stationary distribution in the standard simplex.
Main additions to `Mathlib/Probability/Markov/Stationary.lean`:
- `IsStationary`: A distribution μ is stationary for matrix P if μ ᵥ* P = μ
- `cesaroAverage`: Cesàro average of iterates of a vector under a matrix
- `Matrix.rowStochastic.exists_stationary_distribution`: existence theorem
The proof uses Cesàro averaging: start with uniform distribution, form
averages, extract convergent subsequence by compactness, show limit is
stationary via L¹ non-expansiveness.
Also adds `vecMul_mem_stdSimplex` to `Stochastic.lean`: multiplying a
probability vector by a row-stochastic matrix preserves simplex membership.
This is human-made PR with AI help in golfing proof and documenting the code. |
new-contributor
t-measure-probability
|
166/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/Stochastic.lean,Mathlib/Probability/Markov/Stationary.lean |
3 |
17 |
['EtienneC30', 'dennj', 'dupuisf', 'github-actions', 'grunweg', 'j-loreaux', 'mathlib-merge-conflicts', 'riccardobrasca'] |
kex-y assignee:kex-y |
12-64764 12 days ago |
35-73218 35 days ago |
46-19613 46 days |
| 38014 |
cduenasnavarro author:cduenasnavarro |
feat(InformationTheory): linear codes over finite fields and minimum distance properties |
Define linear codes over a finite field `F` as finite-dimensional subspaces of `Fin n → F`,
together with their minimum Hamming distance.
Main definitions:
* `LinearCode`
* `minDist`
* `LinearCodeWithDist`
* `hammingSphere`
Main results:
* `minDist_eq_sInf_pairwiseDist`: characterisation of the minimum distance via pairwise distances
* `disjoint_spheres`: Hamming spheres of radius `t` around distinct codewords are disjoint
if `2 * t < d`
Pending:
* Choosing an adequate book reference
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
new-contributor
|
181/0 |
Mathlib.lean,Mathlib/InformationTheory/Coding/LinearCode.lean |
2 |
37 |
['cduenasnavarro', 'github-actions', 'linesthatinterlace', 'rkirov', 'vihdzp', 'wwylele'] |
kex-y assignee:kex-y |
12-64760 12 days ago |
48-84241 48 days ago |
48-84786 48 days |
| 38055 |
felixpernegger author:felixpernegger |
feat(Topology/EMetricSpace): add r-variation |
Redoing #37007 (I had accidently deleted my fork which nuked the PR).
See https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/p-variation for discussion.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
t-analysis
|
408/0 |
Mathlib.lean,Mathlib/Topology/EMetricSpace/RVariation.lean |
2 |
2 |
['felixpernegger', 'github-actions'] |
urkud assignee:urkud |
12-64759 12 days ago |
46-36878 46 days ago |
46-37054 46 days |
| 38716 |
YaelDillies author:YaelDillies |
feat(Algebra/Order): `NNRat.cast_sub` |
From AddCombi
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
large-import
label:t-algebra$ |
29/22 |
Mathlib/Algebra/Order/Field/Rat.lean,Mathlib/Algebra/Order/Ring/Rat.lean,Mathlib/Combinatorics/SetFamily/LYM.lean,Mathlib/Data/Finset/Density.lean,Mathlib/Data/NNRat/Defs.lean,Mathlib/Data/NNRat/Floor.lean,Mathlib/Data/NNRat/Order.lean,Mathlib/Data/Rat/Star.lean,Mathlib/RingTheory/Binomial.lean,Mathlib/Topology/Instances/Rat.lean |
10 |
1 |
['github-actions'] |
themathqueen assignee:themathqueen |
12-64758 12 days ago |
31-44613 31 days ago |
31-48778 31 days |
| 39172 |
yuanyi-350 author:yuanyi-350 |
refactor(MeasureTheory): golf `Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic` |
- refactors `Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic` by simplifying `stronglyMeasurable_in_set` and `stronglyMeasurable_of_measurableSpace_le_on`
Extracted from #38104
[](https://gitpod.io/from-referrer/)
|
codex
LLM-generated
t-measure-probability
|
16/42 |
Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
kex-y assignee:kex-y |
12-64755 12 days ago |
21-40185 21 days ago |
21-39967 21 days |
| 39384 |
EngelsVon author:EngelsVon |
feat(Analysis/Calculus/DifferentialForm): Stokes' theorem on rectangular boxes |
## Summary
This PR proves the generalized Stokes theorem for differential forms on rectangular boxes $[a, b] \subset \mathbb{R}^{m+1}$.
The proof strategy is:
1. Extract the `i`-th signed face component `boxFaceComponent ω i` from an `m`-form `ω` — a scalar function whose divergence equals the top-form density of the exterior derivative `dω`.
2. Apply Mathlib's existing divergence theorem for boxes (`integral_divergence_of_hasFDerivAt_off_countable'`).
This gives a genuine proved Stokes formula in the Euclidean setting, complementing the existing infrastructure for differential forms.
## Main definitions
- `DifferentialForm.topFormDensity`: density function of a top-form field
- `DifferentialForm.boxFaceComponent`: the `i`-th signed face component of an `m`-form on `ℝ^(m+1)`
- `DifferentialForm.boxBoundaryIntegral`: the signed boundary integral over `∂[a,b]`
## Main results
- `box_stokes_of_hasFDerivAt`: Stokes' theorem on boxes with pointwise differentiability hypotheses
- `box_stokes_of_contDiff`: a convenient `C¹` formulation
|
t-analysis
new-contributor
|
314/0 |
Mathlib.lean,Mathlib/Analysis/Calculus/DifferentialForm/BoxStokes.lean |
2 |
2 |
['github-actions'] |
j-loreaux assignee:j-loreaux |
12-64751 12 days ago |
18-5416 18 days ago |
18-5198 18 days |
| 39389 |
i-love-lean author:i-love-lean |
feat(Analysis/SpecialFunctions): homeomorphism for spherical coordinates |
A few months ago, I noticed that mathlib was missing change of variables to spherical coordinates, which is taught in undergraduate calculus and useful for many 3D integrals. So far, I used `PolarCoord.lean` as reference and implemented a similar homeomorphism for spherical coordinates. There's still a lot of work left to prove an analog of `integral_comp_polarCoord_symm` but for spherical coordinates, so I'm splitting up the work into several PRs. I also fixed a typo in `PolarCoord.lean`. |
t-analysis
new-contributor
|
133/2 |
Mathlib.lean,Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean,Mathlib/Analysis/SpecialFunctions/PolarCoord.lean,Mathlib/Analysis/SpecialFunctions/SphericalCoord.lean |
4 |
4 |
['github-actions', 'i-love-lean', 'wwylele'] |
j-loreaux assignee:j-loreaux |
12-64750 12 days ago |
17-82951 17 days ago |
17-83553 17 days |
| 39406 |
roos-j author:roos-j |
feat(Analysis): van der Corput's lemma |
Adds van der Corput's lemma on one-dimensional oscillatory integrals, a standard tool in harmonic analysis.
Co-authored-by: Manasa Praveen
---
From https://github.com/roos-j/lean-oscillatory, see there for future plans
Zulip discussion [#mathlib4 > Oscillatory integrals in Lean](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Oscillatory.20integrals.20in.20Lean/with/584786060)
AI disclosure: The code in this PR was predominantly human-written. gpt-5.5 has helped in the later stages with shortening proofs, golfing and general advice.
|
t-analysis
new-contributor
|
551/0 |
Mathlib.lean,Mathlib/Analysis/OscillatoryIntegrals/VanDerCorput.lean |
2 |
2 |
['github-actions'] |
j-loreaux assignee:j-loreaux |
12-64748 12 days ago |
17-42410 17 days ago |
17-43256 17 days |
| 39441 |
Paul-Lez author:Paul-Lez |
feat: small lemma about multilinear power series |
I'm currently working on a PR that connects the `PowerSeries` API to the `FormalMultilinearSeries` API, and in particular constructs a map from `PowerSeries A` to `FormalMultilinearSeries R A A` for any `R`-algebra `A`. This lemma was useful for proving that this map respects composition.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
7/0 |
Mathlib/Analysis/Analytic/Composition.lean |
1 |
3 |
['Paul-Lez', 'github-actions', 'grunweg'] |
j-loreaux assignee:j-loreaux |
12-64747 12 days ago |
16-75875 16 days ago |
16-75657 16 days |
| 39454 |
SnirBroshi author:SnirBroshi |
feat(Analysis/Convex/Jensen): more forms of Jensen's strict inequality |
Adds iff theorems for Jensen's strict inequality for `<`/`=`, positive/nonnegative weights, and canonical form versions.
---
Note that as established by existing theorems in the file, "canonical" here refers to comparing terms to the center of mass instead of to each other.
[](https://gitpod.io/from-referrer/)
|
t-analysis |
95/13 |
Mathlib/Analysis/Convex/Jensen.lean |
1 |
1 |
['github-actions'] |
j-loreaux assignee:j-loreaux |
12-64745 12 days ago |
16-64496 16 days ago |
16-64278 16 days |
| 38896 |
peabrainiac author:peabrainiac |
feat(Algebra): multiplicative torsors |
Introduce a class `Torsor` for torsors of multiplicative groups, as a multiplicative counterpart to the existing `AddTorsor` for torsors of additive groups.
---
Adopted / migrated from #8608.
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
385/286 |
Mathlib/Algebra/AddTorsor/Basic.lean,Mathlib/Algebra/AddTorsor/Defs.lean,Mathlib/Algebra/Group/Pointwise/Set/Scalar.lean,Mathlib/Algebra/Notation/Defs.lean,Mathlib/Analysis/Convex/Segment.lean,Mathlib/Tactic/Translate/ToAdditive.lean |
6 |
2 |
['github-actions', 'grunweg'] |
nobody |
12-59741 12 days ago |
12-59815 12 days ago |
18-63284 18 days |
| 39547 |
Hagb author:Hagb |
chore(Order/Preorder/Finite): use `@[to_dual]` on lemmas about `{Min,Max}imal{For,}` |
Proofs of other theorems (e.g. in #39427) with dual theorems dependent on these lemmas would benefit from their duality.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
11/25 |
Mathlib/Order/Preorder/Finite.lean |
1 |
4 |
['Hagb', 'github-actions', 'vihdzp'] |
nobody |
12-57976 12 days ago |
13-84634 13 days ago |
13-84416 13 days |
| 39611 |
mbkybky author:mbkybky |
feat(RingTheory): let `B` be a faithfully flat `A`-algebra, then `A` is a local ring if `B` is |
Let `B` be a faithfully flat `A`-algebra, then `A` is a local ring if `B` is.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
13/0 |
Mathlib/RingTheory/Flat/FaithfullyFlat/Algebra.lean |
1 |
1 |
['github-actions'] |
nobody |
12-29405 12 days ago |
12-29488 12 days ago |
12-29270 12 days |
| 39605 |
Qinghev author:Qinghev |
Add docstrings for reversed range telescoping lemmas |
This PR adds docstrings for two existing Finset telescoping lemmas and their additive versions generated by `to_additive`:
* `Finset.prod_range_div'` / `Finset.sum_range_sub'`
* `Finset.eq_prod_range_div` / `Finset.eq_sum_range_sub`
The goal is a small documentation-only contribution that makes the reversed range telescoping API easier to discover from search and hover docs.
Local checks:
* `git diff --check -- Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean`
* Attempted `lake env lean Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean`, but local validation is currently blocked by downloading the `leanprover/lean4:v4.30.0-rc2` toolchain from GitHub timing out/connection-resetting on this machine.
Opened as draft until the toolchain/network check can be completed or CI confirms the documentation-only change.
|
t-algebra
new-contributor
label:t-algebra$ |
8/2 |
Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean |
1 |
2 |
['github-actions'] |
nobody |
12-27853 12 days ago |
12-27853 12 days ago |
12-27635 12 days |
| 39332 |
Michaillus author:Michaillus |
chore(Topology/Spectral): Added two small lemmas |
chore(Topology/Spectral): Added two lemmas
`IsCompact.isClosed_constructibleTopology_of_isOpen`
`IsCompact.isClosed_constructibleTopology_of_isClosed`
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
12/0 |
Mathlib/Topology/Spectral/ConstructibleTopology.lean |
1 |
7 |
['Michaillus', 'github-actions', 'plp127', 'qawbecrdtey'] |
PatrickMassot assignee:PatrickMassot |
12-24347 12 days ago |
18-78823 18 days ago |
18-78605 18 days |
| 37477 |
kebekus author:kebekus |
feat: canonical decomposition of complex-meromorphic functions on disks |
Establish the Finite Canonical Decomposition of meromorphic functions, where a complex-meromorphic function `f` on a disk is written as a product of an analytic function without zeros and poles, and canonical factors that take only values of norm one on the boundary of the disk.
A future PR will extend this theorem to handle zeros/poles on the boundary of the disk.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
354/12 |
Mathlib.lean,Mathlib/Algebra/Order/WithTop/Untop0.lean,Mathlib/Analysis/Complex/CanonicalDecomposition.lean,Mathlib/Analysis/Meromorphic/Divisor.lean,Mathlib/Analysis/Meromorphic/Order.lean,Mathlib/Analysis/Meromorphic/RCLike.lean,Mathlib/Topology/LocallyFinsupp.lean,Mathlib/Topology/MetricSpace/Pseudo/Defs.lean |
8 |
25 |
['github-actions', 'j-loreaux', 'kebekus'] |
j-loreaux assignee:j-loreaux |
12-23948 12 days ago |
12-23948 12 days ago |
60-49301 60 days |
| 38047 |
mbkybky author:mbkybky |
feat(RingTheory/Finiteness/Ideal): `I` is finitely generated if `f(I)` and `I ∩ ker(f)` are finitely generated |
Let `f : R →+* S` be a surjective ring homomorphism, and let `I` be an ideal of `R`. If `f(I)` and `I ∩ ker(f)` are finitely generated ideals, then `I` is also finitely generated.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
10/3 |
Mathlib/RingTheory/Finiteness/Ideal.lean |
1 |
1 |
['github-actions'] |
mattrobball assignee:mattrobball |
12-21191 12 days ago |
21-20783 21 days ago |
47-55620 47 days |
| 39225 |
junodeveloper author:junodeveloper |
feat(SimpleGraph): add no-bridge theorem for even degree graphs |
This PR proves that a finite graph in which every vertex has even degree has no bridge.
It adds:
* `SimpleGraph.not_isBridge_of_even_degree`
The proof argues by contradiction: if an edge is a bridge, delete it and look at the connected component containing one endpoint. In that component, the endpoint has odd degree, while any other odd-degree vertex would contradict the bridge assumption and the even-degree hypothesis. This contradicts the handshaking lemma via the existing odd-degree API.
Local checks:
```bash
lake build Mathlib.Combinatorics.SimpleGraph.Connectivity.EdgeConnectivity
lake exe lint-style Mathlib.Combinatorics.SimpleGraph.Connectivity.EdgeConnectivity
lake exe runLinter Mathlib.Combinatorics.SimpleGraph.Connectivity.EdgeConnectivity
```
## AI usage disclosure
I used OpenClaw/Codex while developing this PR. Much of the Lean proof of `not_isBridge_of_even_degree` was drafted with AI assistance, including API search and proof refactoring. I reviewed the generated code, made edits, ran the local checks above, and understand and take responsibility for the final statement and proof. |
t-combinatorics
new-contributor
large-import
LLM-generated
|
122/0 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/EdgeConnectivity.lean |
1 |
12 |
['Rida-Hamadani', 'SnirBroshi', 'github-actions', 'junodeveloper', 'linesthatinterlace'] |
nobody |
12-19118 12 days ago |
20-75093 20 days ago |
20-74875 20 days |
| 39607 |
TentativeConvert author:TentativeConvert |
feat(Algebra/DirectSum): equivalence between direct sum indexed by ι₁ and double sum indexed by ι₂ and fibres of f : ι₁ → ι₂ |
1. Add variant `equivCongrLeft'` of `equivCongrLeft`, and corresponding `…_apply` lemma.
2. Add `…_of lemmas` for both `equivCongrLeft` and `equivCongrLeft'`.
3. Add `…of lemma` for `sigmaCurry`, i.e. `sigmaCurry_of`.
4. Add `sigmaFiberAddEquiv`: the equivalence between a direct sum indexed by a type `ι₁` and the double sum indexed by a type `ι₂` and the fibres of a map `f : ι₁ → ι₂`. Add two `…_apply` lemmas and an `…_of` lemma.
---
This is supposed to be a first step towards merging the draft PR #39356.
re 1: Mathematically, I don't see why one version should be preferred over the other, but I found the existing `equivCongrLeft` more difficult to work with when the equivalence `h : ι ≃ κ` is naturally given in the opposite direction. (I could not avoid explicit type casts through the equality `h.symm.symm = h` when defining `sigmaFiberAddEquiv` in terms of `equivCongrLeft`.)
Very unsure about the name of `equivCongrLeft'`. (I see that the name `equivCongrLeft` was chosen in analogy with `Equiv.piCongrLeft`. `Equiv.piCongrRight` looks very different, so presumably `equivCongrLeft'` should *not* be called `equivCongrRight`.)
re 4: Very unsure about the naming of the two different `…_apply` lemmas; called them `…_apply` and `…_apply'` for now. The second (`…_apply'`) cannot be a `simp` lemma as it would prevent the first (`…_apply`) from firing.
I've used Claude Opus for understanding error messages and git interaction, but everything is hand coded.
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
66/1 |
Mathlib/Algebra/DirectSum/Basic.lean |
1 |
3 |
['github-actions'] |
nobody |
12-18388 12 days ago |
12-30941 12 days ago |
12-32353 12 days |
| 39624 |
justus-springer author:justus-springer |
feat(Algebra/MvPolynomial/PDeriv): a coefficient formula for `pderiv` |
This formula is useful for defining partial derivatives of multivariate power series, see PR #39626.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
15/0 |
Mathlib/Algebra/MvPolynomial/PDeriv.lean |
1 |
1 |
['github-actions'] |
nobody |
12-8565 12 days ago |
12-9159 12 days ago |
12-8941 12 days |
| 39625 |
justus-springer author:justus-springer |
feat(RingTheory/MvPowerSeries/Trunc): generalize truncation lemmas |
Generalize `coeff_trunc_mul_trunc_eq_coeff_mul` (and its analogs for `truncFinset` and `trunc'`) to allow for different truncation levels for the two arguments. This matches the API for univariate power series, where we already have `PowerSeries.coeff_mul_eq_coeff_trunc_mul_trunc₂`.
This is useful for defining partial derivatives of multivariate power series, see PR #39626.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
39/7 |
Mathlib/RingTheory/MvPowerSeries/Trunc.lean |
1 |
1 |
['github-actions'] |
nobody |
12-8547 12 days ago |
12-8942 12 days ago |
12-8724 12 days |
| 39487 |
ADedecker author:ADedecker |
chore: switch `EqLocus` from `LinearMapClass` to `LinearMap` |
---
Note: this PR was opened at 35000 feet :slightly_smiling_face:
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
18/14 |
Mathlib/Algebra/Algebra/Subalgebra/Basic.lean,Mathlib/Algebra/Module/Submodule/EqLocus.lean,Mathlib/Analysis/InnerProductSpace/MeanErgodic.lean,Mathlib/Topology/Algebra/Module/ContinuousLinearMap/Basic.lean |
4 |
10 |
['ADedecker', 'b-mehta', 'github-actions', 'j-loreaux', 'themathqueen'] |
nobody |
11-78318 11 days ago |
12-33458 12 days ago |
15-5095 15 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
|
723/0 |
Mathlib.lean,Mathlib/Algebra/BigOperators/Finprod.lean,Mathlib/Geometry/Manifold/ExistsRiemannianMetric.lean,Mathlib/Geometry/Manifold/PartitionOfUnity.lean |
4 |
200 |
['Rida-Hamadani', 'github-actions', 'grunweg', 'idontgetoutmuch'] |
nobody |
11-66297 11 days ago |
43-19448 43 days ago |
88-26213 88 days |
| 39635 |
SnirBroshi author:SnirBroshi |
feat(LinearAlgebra/Eigenspace/Matrix): a scalar is in the spectrum iff it's an eigenvalue |
---
[#Is there code for X? > Matrix eigenvalues: spectrum and mulVec](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Matrix.20eigenvalues.3A.20spectrum.20and.20mulVec/with/596538140)
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
18/0 |
Mathlib/LinearAlgebra/Eigenspace/Matrix.lean |
1 |
1 |
['github-actions'] |
nobody |
11-64751 11 days ago |
11-64832 11 days ago |
11-64614 11 days |
| 38225 |
kim-em author:kim-em |
ci: block merging PRs with large import increases unless reviewed |
This PR makes the existing `large-import` label into a merge gate. PRs that significantly increase transitive imports (>2% for any modified file) are now blocked from merging until a reviewer adds the `allow-large-import` label.
### Why three labels?
Bors's `block_labels` has no conditional logic — if a label is in the list, merge is blocked unconditionally. We need "blocked unless a reviewer has approved", i.e. `large-import ∧ ¬allow-large-import`. Since bors can't express that, we use a derived label:
| Label | Managed by | Purpose |
|---|---|---|
| `large-import` | `build` job (import analysis) | Factual: this PR increases imports |
| `blocked-by-large-import` | `check-large-import` job | Operational: blocks bors |
| `allow-large-import` | Reviewer | Override: reviewer approves the increase |
Each label is managed by exactly one actor, so there is no label-fighting.
### How it works
1. The existing `build` job adds/removes `large-import` based on import analysis (unchanged).
2. A new `check-large-import` job (in the same workflow) waits for `build` to finish, then:
- If `large-import` is present and `allow-large-import` is absent → adds `blocked-by-large-import`
- Otherwise → removes `blocked-by-large-import`
3. `blocked-by-large-import` is added to `block_labels` in `bors.toml`.
When a reviewer adds `allow-large-import`, the `labeled` event re-triggers the workflow. The heavy `build` job is skipped (guarded by `github.event.action != 'labeled'`), but the lightweight `check-large-import` job runs, sees both labels, and removes `blocked-by-large-import`. Bors can now merge.
### Reviewer workflow
The CI failure message tells the reviewer to consider whether the PR could be improved by splitting files, rearranging material, or creating new intermediate files. If the import increase is reasonable, they add `allow-large-import`.
False positives can be reported on the [mathlib4 Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/large-import.20label).
🤖 Prepared with Claude Code |
CI |
78/2 |
.github/workflows/PR_summary.yml,bors.toml |
2 |
7 |
['SnirBroshi', 'github-actions', 'jcommelin', 'joneugster', 'kim-em'] |
bryangingechen assignee:bryangingechen |
11-64713 11 days ago |
41-71049 41 days ago |
41-71449 41 days |
| 38500 |
kebekus author:kebekus |
feat: integral presentation of the proximity function of value distribution theory |
If `f : ℂ → ℂ` is meromorphic, establish a presentation of the proximity function `proximity f ⊤` as iterated circle averages. This statement can be used to compare the proximity- and logarithmic counting functions, and is one of the key ingredients in the proof of Cartan's classic formula for the characteristic function.
This is the first section of a multi-part PR, establishing Cartan's formula.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
211/0 |
Mathlib.lean,Mathlib/Analysis/Complex/ValueDistribution/Proximity/IntegralPresentation.lean |
2 |
11 |
['github-actions', 'kebekus', 'wwylele'] |
j-loreaux assignee:j-loreaux |
11-64712 11 days ago |
36-49770 36 days ago |
37-44255 37 days |
| 38823 |
matthewjasper author:matthewjasper |
chore(LinearAlgebra/TensorProduct): fix diamond in `AddCommGroup` instance |
The `SMul` instance for tensor products directly used `AddCon.lift`, so wasn't type correct at instance transparency. This caused a diamond with the `AddCommGroup` instance on tensor products because after unfolding some types didn't match, so I've wrapped the sMul function in a semireducible def to prevent this.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
30/23 |
Mathlib/LinearAlgebra/TensorProduct/Basic.lean,Mathlib/LinearAlgebra/TensorProduct/Defs.lean |
2 |
6 |
['dagurtomas', 'github-actions', 'kbuzzard', 'leanprover-radar'] |
themathqueen assignee:themathqueen |
11-64711 11 days ago |
30-79108 30 days ago |
30-78890 30 days |
| 39474 |
emlis42 author:emlis42 |
feat(Topology/Separation/Hausdorff): add `Filter.limUnder_congr` |
This PR adds `Filter.limUnder_congr` and some lemmas about `limUnder`.
`Filter.limUnder_congr` allows rewriting `limUnder` expressions using equivalences of convergence behavior, without proving the filters actually converge, allowing convergence proofs to be carried out on more convenient expressions latter. |
t-topology
new-contributor
large-import
|
24/1 |
Mathlib/Order/Filter/AtTopBot/Archimedean.lean,Mathlib/Topology/Separation/Hausdorff.lean |
2 |
2 |
['github-actions'] |
PatrickMassot assignee:PatrickMassot |
11-64709 11 days ago |
15-86139 15 days ago |
15-85921 15 days |
| 38483 |
jessealama author:jessealama |
feat(Algebra/BigOperators): add `Antiperiodic.sum_Ico_shift` |
Three lemmas about `Finset` sums of `Function.Antiperiodic` functions: `sum_map_add_right` says that for `f` antiperiodic with antiperiod `c`, summing `f` over a `Finset` shifted by `c` (via `addRightEmbedding c`) negates the sum over the original; `sum_Ico_shift` is the half-open-interval specialization, immediate via `Finset.map_add_right_Ico`; and `sum_Ico_mul_add_sum_Ico_mul_shift_eq_zero` is a bilinear cancellation variant. Spun off from #29713 (Euler-Poincaré formula), where the bilinear form is used. |
t-algebra label:t-algebra$ |
63/0 |
Mathlib.lean,Mathlib/Algebra/BigOperators/Periodic.lean |
2 |
5 |
['github-actions', 'j-loreaux', 'jessealama', 'wwylele'] |
ocfnash assignee:ocfnash |
11-63673 11 days ago |
27-45900 27 days ago |
37-18713 37 days |
| 38934 |
YaelDillies author:YaelDillies |
feat(Geometry): convex hull in a `ConvexSpace` |
---
- [x] depends on: #38905
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry |
119/0 |
Mathlib.lean,Mathlib/Geometry/Convex/Hull.lean |
2 |
11 |
['YaelDillies', 'github-actions', 'martinwintermath', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
11-30676 11 days ago |
11-31107 11 days ago |
11-31602 11 days |
| 38531 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Paths): `Walk.map` preserves more properties |
Adds some missing theorems about how `Walk.map` behaves with `IsTrail`/`IsPath`/`IsCircuit`/`IsCycle`.
Summary of what we have now, with the 8 new theorems and 2 renames marked:
```
IsTrail.of_map : (p.map f).IsTrail → p.IsTrail -- new
map_isTrail_iff_of_injective : f.Injective → (p.map f).IsTrail ↔ p.IsTrail
IsTrail.map : f.Injective → p.IsTrail → (p.map f).IsTrail -- renamed from map_isTrail_of_injective
IsPath.of_map : (p.map f).IsPath → p.IsPath
map_isPath_iff_of_injective : f.Injective → (p.map f).IsPath ↔ p.IsPath
IsPath.map : f.Injective f → p.IsPath → (p.map f).IsPath -- renamed from map_isPath_of_injective
IsCircuit.of_map : (p.map f).IsCircuit → p.IsCircuit -- new
map_isCircuit_iff_of_injective : f.Injective → (p.map f).IsCircuit ↔ p.IsCircuit -- new
IsCircuit.map : f.Injective → p.IsCircuit → (p.map f).IsCircuit -- new
IsCycle.of_map : (p.map f).IsCycle → p.IsCycle -- new
map_isCycle_iff_of_injective : f.Injective → (p.map f).IsCycle ↔ p.IsCycle
IsCycle.map : f.Injective → p.IsCycle → (p.map f).IsCycle
mapLe_isTrail : G ≤ G' → (p.mapLe h).IsTrail ↔ p.IsTrail
IsTrail.of_mapLe : G ≤ G' → (p.mapLe h).IsTrail → p.IsTrail
IsTrail.mapLe : G ≤ G' → p.IsTrail → (p.mapLe h).IsTrail
mapLe_isPath : G ≤ G' → (p.mapLe h).IsPath ↔ p.IsPath
IsPath.of_mapLe : G ≤ G' → (p.mapLe h).IsPath → p.IsPath
IsPath.mapLe : G ≤ G' → p.IsPath → (p.mapLe h).IsPath
mapLe_isCircuit : G ≤ G' → (p.mapLe h).IsCircuit ↔ p.IsCircuit -- new
IsCircuit.of_mapLe : G ≤ G' → (p.mapLe h).IsCircuit → p.IsCircuit -- new
IsCircuit.mapLe : G ≤ G' → p.IsCircuit → (p.mapLe h).IsCircuit -- new
mapLe_isCycle : G ≤ G' → (p.mapLe h).IsCycle ↔ p.IsCycle
IsCycle.of_mapLe : G ≤ G' → (p.mapLe h).IsCycle → p.IsCycle
IsCycle.mapLe : G ≤ G' → p.IsCycle → (p.mapLe h).IsCycle
```
---
Also golfs `map_isPath_of_injective`/`IsPath.of_map`/`map_isTrail_iff_of_injective`, they don't need induction.
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
47/30 |
Mathlib/Combinatorics/SimpleGraph/Paths.lean |
1 |
1 |
['github-actions'] |
nobody |
11-24584 11 days ago |
36-81598 36 days ago |
36-81380 36 days |
| 39627 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/LapMatrix): 0 is always an eigenvalue |
and the determinant is always zero, plus a few other small lemmas.
---
- [x] depends on: #39642
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
71/15 |
Mathlib/Combinatorics/SimpleGraph/LapMatrix.lean |
1 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
nobody |
11-22699 11 days ago |
11-27169 11 days ago |
11-74661 11 days |
| 39657 |
mcdoll author:mcdoll |
feat(Algebra): add abstract `prod_apply` and `FunLike.coe_prod` |
Follow-up of #37779, where abstract `IsApply` classes were introduced. Now, we can prove a generic `sum_apply` lemma
and in following PRs this will replace specific ones in function spaces.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
25/5 |
Mathlib/Algebra/BigOperators/Pi.lean,Mathlib/Analysis/Calculus/FDeriv/Add.lean,Mathlib/Data/Matrix/PEquiv.lean,Mathlib/LinearAlgebra/Matrix/Polynomial.lean,Mathlib/LinearAlgebra/QuadraticForm/Dual.lean |
5 |
2 |
['github-actions', 'mcdoll'] |
nobody |
11-14919 11 days ago |
11-15523 11 days ago |
11-15305 11 days |
| 38319 |
Zetetic-Dhruv author:Zetetic-Dhruv |
feat(Combinatorics/SetFamily): Assouad's dual VC bound |
Adds the Finset-level form of Assouad's 1983 dual VC bound: if a family
`𝒜 : Finset (Finset α)` has VC dimension at most `d`, then for any
ground set `X : Finset α` the dual family
`{𝒜.filter (· ∋ x) : x ∈ X}` has VC dimension at most `2 ^ (d + 1) - 1`.
New declarations (in `Finset` namespace):
- `dualFamily 𝒜 X`: for each `x ∈ X`, the subfamily `{A ∈ 𝒜 | x ∈ A}`
- `mem_dualFamily` (`@[simp]`): membership characterisation
- `exists_shatters_of_dualFamily_shatters`: Assouad's bitstring-coding lemma
- `vcDim_dualFamily_le`: the headline VC bound
Proof by Assouad's classical bitstring-coding argument. Sits on top of `Finset.shatterer` / `Finset.vcDim` from
`Mathlib.Combinatorics.SetFamily.Shatter`.
References:
- P. Assouad, Densite et dimension, Ann. Inst. Fourier 33(3) (1983), Thm 2.13
- J. Matousek, Lectures on Discrete Geometry, GTM 212, Springer, 2002, Section 10.3 Lemma 10.3.3
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
199/0 |
Mathlib.lean,Mathlib/Combinatorics/SetFamily/DualVC.lean,docs/references.bib |
3 |
37 |
['Shreyas4991', 'YaelDillies', 'Zetetic-Dhruv', 'github-actions'] |
nobody |
11-10284 11 days ago |
22-78917 22 days ago |
39-39348 39 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
large-import
|
236/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 |
5 |
['EtienneC30', 'github-actions', 'mathlib-dependent-issues', 'sgouezel'] |
sgouezel assignee:sgouezel |
10-84383 10 days ago |
10-84350 10 days ago |
77-11483 77 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'] |
nobody |
10-66296 10 days ago |
78-50517 78 days ago |
78-50299 78 days |
| 27493 |
themathqueen author:themathqueen |
feat(RingTheory/Coalgebra): define Frobenius algebra |
A Frobenius algebra `A` has the structure of both an algebra and a coalgebra such that:
`(mul ⊗ id) ∘ assoc.symm ∘ (id ⊗ comul) = comul ∘ mul = (id ⊗ mul) ∘ assoc ∘ (comul ⊗ id)`.
In diagrams this law looks like:

It suffices to show that
`(mul ⊗ id) ∘ assoc.symm ∘ (id ⊗ comul) = (id ⊗ mul) ∘ assoc ∘ (comul ⊗ id)`.
---
- [x] depends on: #27567
- [x] depends on: #27569
- [x] depends on: #32245
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
112/0 |
Mathlib.lean,Mathlib/RingTheory/FrobeniusAlgebra.lean |
2 |
25 |
['YaelDillies', 'erdOne', 'github-actions', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot', 'themathqueen'] |
mariainesdff assignee:mariainesdff |
10-64815 10 days ago |
32-78041 32 days ago |
79-56213 79 days |
| 38141 |
Jun2M author:Jun2M |
feat(Order/Partition): Partition induced by symmetric, transitive relation |
We introduce a constructor for Partition from a symmetric, transitive relation, with `copy` function baked into the definition.
Co-authored-by: Peter Nelson
---
[](https://gitpod.io/from-referrer/)
|
t-order |
41/7 |
Mathlib/Order/Partition/Basic.lean |
1 |
1 |
['github-actions'] |
bryangingechen assignee:bryangingechen |
10-64807 10 days ago |
45-63192 45 days ago |
45-62974 45 days |
| 38975 |
ldct author:ldct |
feat(EReal): Add equations for EReal |
Add equational lemmas for the simplifier to simplify `[natural number literal] + ⊤` in `EReal`, and add a test file in `MathlibTest/EReal.lean`.
Without these lemmas, `simp` fails to close many of the goals in `MathlibTest/EReal.lean`. I believe simp should close all of them.
An alternative is to add something like this as a simp lemma, to allow `top_add_of_ne_bot` to make progress, but it's not clear to me that this is desirable as a simp lemma, since it's not equational
```
example {n : ℕ} [n.AtLeastTwo] : (ofNat(n) : EReal) ≠ ⊤ := by
exact Ne.symm (not_eq_of_beq_eq_false rfl)
```
---
[](https://gitpod.io/from-referrer/)
|
t-data |
32/0 |
Mathlib/Data/EReal/Operations.lean,MathlibTest/EReal.lean |
2 |
2 |
['github-actions', 'vihdzp'] |
TwoFX assignee:TwoFX |
10-64803 10 days ago |
26-73485 26 days ago |
26-73267 26 days |
| 39174 |
yuanyi-350 author:yuanyi-350 |
refactor(MeasureTheory): golf `Mathlib/MeasureTheory/Integral/Asymptotics` |
- refactors `Mathlib/MeasureTheory/Integral/Asymptotics` by simplifying `IsBigO.set_integral_isBigO`
Extracted from #38104
[](https://gitpod.io/from-referrer/)
|
codex
LLM-generated
t-measure-probability
|
6/12 |
Mathlib/MeasureTheory/Integral/Asymptotics.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
kex-y assignee:kex-y |
10-64802 10 days ago |
21-40181 21 days ago |
21-39963 21 days |
| 39175 |
yuanyi-350 author:yuanyi-350 |
refactor(MeasureTheory): golf `Mathlib/MeasureTheory/Integral/CircleTransform` |
- refactors `Mathlib/MeasureTheory/Integral/CircleTransform` by shortening `circleTransformDeriv_periodic`
Extracted from #38104
[](https://gitpod.io/from-referrer/)
|
codex
LLM-generated
t-measure-probability
|
1/6 |
Mathlib/MeasureTheory/Integral/CircleTransform.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
RemyDegenne assignee:RemyDegenne |
10-64801 10 days ago |
21-40178 21 days ago |
21-39960 21 days |
| 39437 |
ooovi author:ooovi |
feat(Geometry/Convex/ConvexSpace): show that an `AffineMap` `IsAffineMap` |
Show that `Convexity.IsAffineMap` generalises `AffineMap`s between affine spaces.
---
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry |
34/3 |
Mathlib/Geometry/Convex/ConvexSpace/AffineSpace.lean,Mathlib/Geometry/Convex/ConvexSpace/Defs.lean |
2 |
3 |
['github-actions', 'mathlib-merge-conflicts', 'ooovi'] |
nobody |
10-44564 10 days ago |
10-44637 10 days ago |
15-53910 15 days |
| 39575 |
YaelDillies author:YaelDillies |
chore(Data/Finsupp): make `mapDomain_congr` congr |
This makes simp stronger. It particular, it breaks some proofs that relied on simp being weak.
From MeanFourier
---
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry |
29/36 |
Mathlib/Algebra/MvPolynomial/Nilpotent.lean,Mathlib/Data/Finsupp/Basic.lean,Mathlib/Geometry/Convex/ConvexSpace/Defs.lean,Mathlib/LinearAlgebra/Basis/Defs.lean,Mathlib/LinearAlgebra/Finsupp/Pi.lean,Mathlib/LinearAlgebra/Matrix/Basis.lean,Mathlib/NumberTheory/NumberField/EquivReindex.lean,Mathlib/NumberTheory/NumberField/House.lean,Mathlib/RepresentationTheory/Homological/GroupHomology/Functoriality.lean,Mathlib/RepresentationTheory/Intertwining.lean |
10 |
1 |
['github-actions'] |
nobody |
10-39181 10 days ago |
10-39258 10 days ago |
10-48692 10 days |
| 39687 |
TentativeConvert author:TentativeConvert |
feat(Algebra/Group/Submonoid): type class to indicate that supremum in a SubmonoidClass agrees with supremum of submonoids |
Add a type class `SubmonoidClass.IsConcreteSSup` to indicate that the canonical map `.ofClass` from a class `S` of submonoids of `M` to `Submonoid M` preserves suprema.
---
This PR implements the minimal type class assumption needed to make „pushfoward of gradings along maps of indexing sets“ – see draft PR #39356 – work in some `SetLike` generality.
Given `{S M : Type*} [SetLike S M] [Monoid M] [SubmonoidClass S M]`, we have canonical maps
```
S → Submonoid M → Set M
```
The first is `Submonoid.ofClass`, the second and the composition are `coe` maps coming from the `SetLike` structures. Depending on `S`, these maps may or may not satisfy various properties with respect the lattice structures on `Submonoid M` and `Set M`. Mathlib so far includes the type class `[IsConcreteLE S M]`, which asserts that the composition `S → Set M` is order-preserving and order-reflecting. The type class defined here asserts that the first map, `S → Submonoid M`, preserves suprema.
In examples such as `S = Subgroup M`, `S = Submodule R M`, much more is true – in these cases, `S` is a complete sublattice of `Submonoid M`. But there are also examples where only the weaker property defined here holds, e.g. `S = OpenSubgroup M` for a topological group `M`.
Note on `outParam`: I did *not* write `(M : outParam Type*)` in the assumptions of `SubmonoidClass.IsConcreteSSup` in accordance with the [DocString of `Setlike`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/SetLike/Basic.html#SetLike). However, we do have `(B : outParam Type*)` in the definition of `IsConcreteLE`, so perhaps I'm misinterpreting the DocString.
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-algebra
label:t-algebra$ |
56/0 |
Mathlib.lean,Mathlib/Algebra/Group/Submonoid/SSup.lean |
2 |
2 |
['github-actions'] |
nobody |
10-34690 10 days ago |
10-34759 10 days ago |
10-35141 10 days |
| 39646 |
YaelDillies author:YaelDillies |
feat(Algebra/Order): maximally varying version of `prod_le_prod_of_subset_of_one_le` |
We need this for `gcongr`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
49/26 |
Mathlib/Algebra/Module/ZLattice/Summable.lean,Mathlib/Algebra/Order/BigOperators/Group/Finset.lean,Mathlib/Algebra/Order/BigOperators/GroupWithZero/Finset.lean,Mathlib/Analysis/Complex/Exponential.lean |
4 |
7 |
['YaelDillies', 'b-mehta', 'github-actions'] |
nobody |
10-33000 10 days ago |
11-33768 11 days ago |
11-37006 11 days |
| 36275 |
smmercuri author:smmercuri |
feat: norm for the finite adele ring of a number field |
---
- [x] depends on: #35820
[](https://gitpod.io/from-referrer/)
|
|
137/1 |
Mathlib.lean,Mathlib/NumberTheory/NumberField/Completion/FinitePlace.lean,Mathlib/NumberTheory/NumberField/FiniteAdeleRing.lean,Mathlib/Topology/Algebra/Valued/NormedValued.lean |
4 |
4 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
10-30986 10 days ago |
10-31059 10 days ago |
10-32101 10 days |
| 39621 |
chrisflav author:chrisflav |
refactor(Topology): use `WithTopology` to define `WithConstructibleTopology` |
We replace the type synonym `WithConstructibleTopology` by `WithTopology _ (constructibleTopology X)`. This breaks the def-eq `X = WithConstructibleTopology X`, which was luckily not abused much yet.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
38/5 |
Mathlib/Topology/Compactness/Compact.lean,Mathlib/Topology/Spectral/ConstructibleTopology.lean,Mathlib/Topology/WithTopology.lean |
3 |
2 |
['github-actions', 'plp127'] |
nobody |
10-8539 10 days ago |
12-10730 12 days ago |
12-10512 12 days |
| 38234 |
vihdzp author:vihdzp |
chore: make `IsSuccLimit` a structure |
This lets us name the fields. Note that the `mk_iff` lemma overwrites a recently deprecated theorem.
---
[](https://gitpod.io/from-referrer/)
|
t-order
maintainer-merge
|
40/33 |
Mathlib/Order/SuccPred/InitialSeg.lean,Mathlib/Order/SuccPred/Limit.lean |
2 |
6 |
['YaelDillies', 'github-actions', 'plp127'] |
nobody |
9-83392 9 days ago |
23-41451 23 days ago |
39-29520 39 days |
| 37718 |
SabrinaJewson author:SabrinaJewson |
feat(Order): add conversions from `Std` order typeclasses to Mathlib ones |
`{Preorder, PartialOrder, LinearOrder}.ofStd` exist to facilitate convenient translation from `Std` order typeclasses to Mathlib ones.
The design is modelled closely after [`Init.Data.Order.PackageFactories`](https://leanprover-community.github.io/mathlib4_docs/Init/Data/Order/PackageFactories.html) (`Std.PreorderPackage` is equivalent-ish to Mathlib’s `Preorder`, and same for partial and linear orders). The `OfStdArgs` types allow conveniently bundling a whole bunch of default arguments together in a way that allows one default argument set to `extends` another.
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
maintainer-merge
|
391/0 |
Mathlib.lean,Mathlib/Order/Std.lean,MathlibTest/OrderOfStd.lean |
3 |
9 |
['SabrinaJewson', 'YaelDillies', 'github-actions'] |
YaelDillies assignee:YaelDillies |
9-81407 9 days ago |
10-73203 10 days ago |
55-67327 55 days |
| 39697 |
sorrachai author:sorrachai |
feat(Data/Tree/Basic): add Membership instance, new notation, rename Tree |
Summary:
1. [Rename]([#CSLib > Splay tree PR: BinaryTree vs Tree @ 💬](https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Splay.20tree.20PR.3A.20BinaryTree.20vs.20Tree/near/596482765)) from Tree to BinaryTree, which propagates the changes to other files that use it.
2. Add membership instance, prove decidability of membership.
3. Add toListInOrder, toListPreOrder, toListPostOrder
Suggestion based on the discussion in the cslib [thread](https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Splay.20tree.20PR/near/596568391)[#CSLib > Splay tree PR @ 💬](https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Splay.20tree.20PR/near/596568391).
---
* depends on: #39707 |
new-contributor |
187/75 |
Mathlib/Combinatorics/Enumerative/Catalan/Tree.lean,Mathlib/Combinatorics/Enumerative/DyckWord.lean,Mathlib/Data/Tree/Basic.lean,Mathlib/Data/Tree/Get.lean,Mathlib/Data/Tree/Traversable.lean,Mathlib/Tactic/CancelDenoms/Core.lean,docs/overview.yaml |
7 |
4 |
['eric-wieser', 'github-actions', 'sorrachai'] |
nobody |
9-74422 9 days ago |
10-19582 10 days ago |
10-21419 10 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 |
30 |
['A-M-Berns', 'eric-wieser', 'github-actions', 'joneugster', 'jsm28', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp', 'wwylele'] |
nobody |
9-66299 9 days ago |
96-5754 96 days ago |
98-39822 98 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
|
14/0 |
Mathlib/Dynamics/BirkhoffSum/Average.lean |
1 |
26 |
['Maldooor', 'github-actions', 'lua-vr', 'mcdoll', 'samueloettl'] |
sgouezel assignee:sgouezel |
9-65125 9 days ago |
33-19248 33 days ago |
99-17843 99 days |
| 39033 |
tb65536 author:tb65536 |
feat(Analysis/DirichletEigenvalue): Dirichlet eigenvalues of a set |
This PR defines the Dirichlet eigenvalues of a set (in the sense of "can you hear the shape of a drum").
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
58/0 |
Mathlib.lean,Mathlib/Analysis/DirichletEigenvalue.lean |
2 |
1 |
['github-actions'] |
sgouezel assignee:sgouezel |
9-65117 9 days ago |
25-22223 25 days ago |
25-22007 25 days |
| 39738 |
NoahW314 author:NoahW314 |
feat(Algebra/Algebra/Bilinear): generalize to `NonUnitalNonAssocCommSemiring` |
Complete a TODO which can now be done since #28604 is merged.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
2/4 |
Mathlib/Algebra/Algebra/Bilinear.lean |
1 |
1 |
['github-actions'] |
nobody |
9-57459 9 days ago |
9-57534 9 days ago |
9-57316 9 days |
| 39518 |
abeldonate author:abeldonate |
feat(RingTheory/LocalProperties/Projective): Projective Module theorem |
Theorem: R Noetherian, M finitely generated R-Mod. Then:
M projective iff M_m free for all m maximal
|
t-ring-theory
new-contributor
large-import
|
21/0 |
Mathlib/RingTheory/LocalProperties/Projective.lean |
1 |
9 |
['abeldonate', 'github-actions', 'mbkybky', 'vlad902'] |
nobody |
9-40814 9 days ago |
13-18433 13 days ago |
13-60470 13 days |
| 39530 |
RaggedR author:RaggedR |
feat(Combinatorics/SimpleGraph): group actions on simple graphs |
This adds the first connection between Mathlib's MulAction and SimpleGraph libraries. The GraphAction class asserts that a group action on the vertex type preserves the adjacency relation, and builds on it to define vertex-transitivity and arc-transitivity for graphs.
The GraphAction typeclass gives adj_smul_iff (the biconditional for group actions) and toIso (each group element induces a graph automorphism). The IsVertexTransitive class combines GraphAction with IsPretransitive, and IsArcTransitive requires transitivity on ordered adjacent pairs (arcs).
The main theorem is the standard characterization: a graph is arc-transitive if and only if it is vertex-transitive and locally transitive (the stabilizer of each vertex acts transitively on its neighbors). The forward direction is proved directly by composing a vertex-transporting element with a neighbor-transporting stabilizer element. The reverse direction shows that an arc-transitive graph with no isolated vertices is vertex-transitive.
These definitions are the algebraic graph theory prerequisites for formalizing coset graphs (Sabidussi's construction) and the characterization of symmetric graphs via double cosets and involutions (Lorimer's theorem).
---
LLM tools were used to assist with Lean formalization. The mathematical content is the author's own work. |
t-combinatorics
new-contributor
LLM-generated
|
130/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Action.lean |
2 |
7 |
['RaggedR', 'b-mehta', 'github-actions', 'mathlib-bors'] |
nobody |
9-30182 9 days ago |
9-30182 9 days ago |
13-84814 13 days |
| 38194 |
ryanncode author:ryanncode |
feat(LinearAlgebra/BilinearForm): add indefinite metrics |
Add the `IndefiniteMetric` structure to support vector spaces equipped with a non-degenerate, symmetric, indefinite bilinear form.
Provide the algebraic foundation for indefinite inner product spaces by formalizing the metric via `LinearMap.BilinForm` and extracting its associated quadratic form without enforcing the `IsPosSemidef` typeclass.
Previously, mathlib required strictly positive-definite metrics to instantiate inner product spaces (`InnerProductSpace`), which prevented the formalization of indefinite geometries without causing typeclass inference failures. Bridge this gap by isolating the symmetric bilinear form from topological and positivity constraints, allowing the library to handle generalized indefinite metric spaces safely.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
47/0 |
Mathlib.lean,Mathlib/LinearAlgebra/BilinearForm/IndefiniteMetric.lean |
2 |
5 |
['dagurtomas', 'github-actions', 'mathlib-merge-conflicts', 'ryanncode'] |
nobody |
9-22382 9 days ago |
9-24127 9 days ago |
24-80078 24 days |
| 39412 |
mbkybky author:mbkybky |
feat(RingTheory/Flat): a finite flat `R`-module `M` is locally free if `rankAtStalk M` is constant |
Let `M` be a finite flat `R`-module, `p` be a prime ideal of `R`. We show that if `rankAtStalk M` is constant, then there exists `a ∉ p` such that the `M` is free after localization away from `a`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
136/2 |
Mathlib.lean,Mathlib/Algebra/Module/FinitePresentation.lean,Mathlib/Algebra/Module/LocalizedModule/Submodule.lean,Mathlib/LinearAlgebra/FiniteDimensional/Basic.lean,Mathlib/RingTheory/Flat/LocallyFree.lean,Mathlib/RingTheory/Localization/BaseChange.lean,Mathlib/RingTheory/Spectrum/Prime/FreeLocus.lean,Mathlib/RingTheory/Support.lean |
8 |
4 |
['github-actions', 'robin-carlier'] |
nobody |
9-20155 9 days ago |
14-10547 14 days ago |
17-15313 17 days |
| 39212 |
emlis42 author:emlis42 |
feat(Algebra/ContinuedFractions): add `partNums!` and `partDens!` |
This PR adds `partNums!` and `partDens!`, which provide infinite stream representations for the sequences of partial numerators and denominators of a generalized continued fraction. |
t-algebra
new-contributor
label:t-algebra$ |
8/0 |
Mathlib/Algebra/ContinuedFractions/Basic.lean |
1 |
4 |
['emlis42', 'github-actions', 'grunweg'] |
nobody |
9-6922 9 days ago |
21-8682 21 days ago |
21-8464 21 days |
| 38970 |
themathqueen author:themathqueen |
chore(Analysis/InnerProductSpace/Projection): rename `orthogonalProjection` to `orthogonalProjectionOnto` |
To match the current (continuous) linear projection to a submodule along its complement `Submodule.projection(Onto)(L)`, we change `Submodule.orthogonalProjection` to `Submodule.orthogonalProjectionOnto` (and later will change `Submodule.starProjection` to `Submodule.orthogonalProjection`).
---
Zulip thread: [#**mathlib4>Two variants of linear projections**](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Two.20variants.20of.20linear.20projections/with/591234152)
[](https://gitpod.io/from-referrer/)
|
t-analysis |
267/183 |
Mathlib/Analysis/InnerProductSpace/Adjoint.lean,Mathlib/Analysis/InnerProductSpace/GramSchmidtOrtho.lean,Mathlib/Analysis/InnerProductSpace/MeanErgodic.lean,Mathlib/Analysis/InnerProductSpace/PiL2.lean,Mathlib/Analysis/InnerProductSpace/Positive.lean,Mathlib/Analysis/InnerProductSpace/ProdL2.lean,Mathlib/Analysis/InnerProductSpace/Projection/Basic.lean,Mathlib/Analysis/InnerProductSpace/Projection/FiniteDimensional.lean,Mathlib/Analysis/InnerProductSpace/Projection/Reflection.lean,Mathlib/Analysis/InnerProductSpace/Projection/Submodule.lean,Mathlib/Analysis/InnerProductSpace/Spectrum.lean,Mathlib/Analysis/InnerProductSpace/l2Space.lean,Mathlib/Geometry/Euclidean/Projection.lean,Mathlib/Geometry/Euclidean/Volume/Measure.lean,Mathlib/Geometry/Manifold/Instances/Sphere.lean,Mathlib/MeasureTheory/Function/ConditionalExpectation/CondexpL2.lean,Mathlib/MeasureTheory/Measure/Hausdorff.lean,Mathlib/Topology/MetricSpace/HausdorffDimension.lean,docs/overview.yaml,docs/undergrad.yaml |
20 |
17 |
['ADedecker', 'eric-wieser', 'github-actions', 'mathlib-merge-conflicts', 'themathqueen'] |
mcdoll assignee:mcdoll |
9-5646 9 days ago |
9-5682 9 days ago |
26-53023 26 days |
| 39696 |
jsm28 author:jsm28 |
refactor(LinearAlgebra/Orientation,LinearAlgebra/AffineSpace/FiniteDimensional): instances for arbitrary orientations |
Based on suggestions by @kim-em on Zulip https://leanprover.zulipchat.com/#narrow/channel/144837-PR-reviews/topic/PRs.20towards.20IMO.20geometry.202024.20P4/near/596946072 add convenience scoped instances for choosing an arbitrary orientation of a module, and for the `finrank` of the span of the vertices of a simplex.
Note: I don't understand why the latter scoped instance is only found automatically in one of the two places using it; in `Sphere/Power.lean` it's necessary to use `Affine.Simplex.fact_finrank_direction_affineSpan_eq` rather than relying on typeclass inference, but in `Angle/Sphere.lean` typeclass inference suffices.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-euclidean-geometry
label:t-algebra$ |
26/23 |
Archive/Imo/Imo2019Q2.lean,Mathlib/Geometry/Euclidean/Angle/Sphere.lean,Mathlib/Geometry/Euclidean/Sphere/Power.lean,Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean,Mathlib/LinearAlgebra/Orientation.lean |
5 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
9-574 9 days ago |
9-607 9 days ago |
10-19746 10 days |
| 39576 |
plp127 author:plp127 |
chore(Topology): generalize `Topology.IsEmbedding.perfectlyNormalSpace` |
Generalize theorem `Topology.IsEmbedding.perfectlyNormalSpace` to inducing maps. Generalize some other theorem along the way. Rename `isGδ_induced` to `IsGδ.preimage`, to match `IsOpen.preimage` and `IsClosed.preimage`.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
29/27 |
Mathlib/Topology/Baire/LocallyCompactRegular.lean,Mathlib/Topology/GDelta/Basic.lean,Mathlib/Topology/Separation/GDelta.lean,Mathlib/Topology/Separation/PerfectlyNormal.lean,Mathlib/Topology/Separation/Regular.lean |
5 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
8-84249 8 days ago |
8-84284 8 days ago |
13-16037 13 days |
| 37716 |
slavanaprienko author:slavanaprienko |
feat(LinearAlgebra/Matrix/Determinant): Desnanot-Jacobi identity |
This PR adds the Desnanot-Jacobi identity (also known as the Lewis Carroll identity or Dodgson condensation): for any (n+2)×(n+2) matrix M over a commutative ring,
$$\det(M) \cdot \det(M_{1,n}^{1,n}) = \det(M_1^1) \cdot \det(M_n^n) - \det(M_1^n) \cdot \det(M_n^1)$$
The proof follows Bressoud's *Proofs and Confirmations* (Cambridge University Press, 1999): multiply M by an auxiliary matrix built from columns of the adjugate, then compare determinants. This yields the identity premultiplied by det(M). To cancel, we pass to a universal polynomial ring (an integral domain with nonzero determinant), then specialize back to arbitrary commutative rings.
It seems there's some interest in adding this:
https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Determinantal.20identity.20and.20the.20Cauchy.20matrix.20determinant/with/582946873
--- |
t-algebra
new-contributor
label:t-algebra$ |
217/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/Determinant/DesnanotJacobi.lean |
2 |
13 |
['SnirBroshi', 'github-actions', 'grunweg', 'kim-em', 'slavanaprienko'] |
nobody |
8-73831 8 days ago |
20-83788 20 days ago |
22-35400 22 days |
| 35753 |
Vilin97 author:Vilin97 |
feat(Topology/Algebra/Order): regular grid helpers and piecewise linear interpolation |
Make API for piecewise linear interpolation on regular grids. I need these to for ODE time-stepping methods, like forward Euler, and later Runge–Kutta methods.
Follow-up PR: #35755 (forward Euler method convergence).
I don't know if these numerical analysis ODE-solving methods even belong in mathlib. If someone could advise me on it, I would appreciate it.
---
The initial proof was produced by [Aristotle](https://aristotle.harmonic.fun). The code was iteratively refined (factoring out lemmas, golfing, simplifying proofs) using Claude Code.
- [ ] depends on: #38091 |
t-topology
new-contributor
LLM-generated
maintainer-merge
|
201/0 |
Mathlib.lean,Mathlib/Topology/Algebra/Order/PiecewiseLinear.lean |
2 |
59 |
['Vilin97', 'YanYablonovskiy', 'adomani', 'botbaki-review', 'copilot-pull-request-reviewer', 'dagurtomas', 'eric-wieser', 'github-actions', 'grunweg', 'j-loreaux', 'mathlib-dependent-issues', 'wwylele'] |
ADedecker assignee:ADedecker |
8-64792 8 days ago |
30-77019 30 days ago |
63-39481 63 days |
| 39763 |
NoahW314 author:NoahW314 |
feat(Algebra/GroupWithZero/Divisibility): add `mul_dvd_left_iff_isUnit` |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
9/0 |
Mathlib/Algebra/GroupWithZero/Divisibility.lean |
1 |
1 |
['github-actions'] |
nobody |
8-55998 8 days ago |
8-56078 8 days ago |
8-55860 8 days |
| 39765 |
vlad902 author:vlad902 |
doc(RingTheory): fix local ring doc comment |
The predicate for local rings was updated to the current definition on non-commutative semirings back in mathlib3, but the outdated comment stating that local rings are commutative rings with a unique maximal ideal has not been updated since.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
4/4 |
Mathlib/RingTheory/LocalRing/Defs.lean |
1 |
1 |
['github-actions'] |
nobody |
8-39189 8 days ago |
8-39271 8 days ago |
8-39053 8 days |
| 39783 |
SnirBroshi author:SnirBroshi |
feat(Order/Interval/Finset): `Set.ncard` lemmas for `LocallyFiniteOrder` |
Followup to #39414 which untagged `Fintype.card_I??` as `@[simp]`.
Adds `Cardinal.mk`/`Set.encard`/`Set.ncard` lemmas for the 8 interval sets `Set.I??` (= 24 lemmas),
that convert them to `Finset.card` over the corresponding `Finset.I??` from a `LocallyFiniteOrder` instance.
---
`simp`? I think it's a bit strange since the `LocallyFiniteOrder` instance could have crazy definitions for the finset intervals which aren't "simpler", though the instances we currently have are simple.
[](https://gitpod.io/from-referrer/)
|
t-order |
115/0 |
Mathlib.lean,Mathlib/Order/Interval/Finset/Card.lean |
2 |
1 |
['github-actions'] |
nobody |
8-10728 8 days ago |
8-10796 8 days ago |
8-10877 8 days |
| 36501 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(RingTheory/GradedAlgebra/Homogeneous/RingQuot): graded structure on the quotient of a graded ring by a homogeneous ideal |
Define the graded structure on the quotient of a graded ring by a homogeneous ideal
Co-authored with: @mariainesdff
(Possible TODO:
- Maybe define the graded structure on the quotient of a graded module by a homogeneous submodule.
- There is also an issue of working with ring congruences rather than with ideals. )
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
504/20 |
Mathlib.lean,Mathlib/Algebra/DirectSum/Decomposition.lean,Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Basic.lean,Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Scheme.lean,Mathlib/Data/DFinsupp/BigOperators.lean,Mathlib/RingTheory/GradedAlgebra/Basic.lean,Mathlib/RingTheory/GradedAlgebra/Homogeneous/Ideal.lean,Mathlib/RingTheory/GradedAlgebra/Homogeneous/RingQuot.lean,Mathlib/RingTheory/GradedAlgebra/HomogeneousLocalization.lean,Mathlib/RingTheory/Ideal/Span.lean |
10 |
133 |
['AntoineChambert-Loir', 'chrisflav', 'eric-wieser', 'github-actions', 'mathlib-merge-conflicts', 'robin-carlier'] |
eric-wieser and robin-carlier assignee:eric-wieser assignee:robin-carlier |
8-7361 8 days ago |
8-7438 8 days ago |
55-84635 55 days |
| 39545 |
Hagb author:Hagb |
feat(Order/OrderIsoNat): some lemmas about `((· < ·) : ℕ → ℕ → Prop) ↪r r` |
This PR contains several lemmas about relation embedding from `<` in `Nat`, well order, and (in)finiteness.
- `RelEmbedding.infinite_iff_nonempty_relEmbedding_of_isWellOrder`: a type with a well order relation is infinite iff there is such a relation embedding.
- `RelEmbedding.finite_iff_empty_relEmbedding_of_isWellOrder`: a finite variant of `infinite_iff_nonempty_relEmbedding_of_isWellOrder`
- `IsWellOrder.finite_of_isWellOrder_of_isWellOrder_swap`: a type with a linear order relation well founded on both directions is finite.
- `instFiniteOfWellFoundedLTOfWellFoundedGT`: an instance variant of `IsWellOrder.finite_of_isWellOrder_of_isWellOrder_swap` on `WellFounded{LT,GT}`.
- `RelEmbedding.infinite_iff_nonempty_relEmbedding_lt_or_nonempty_relEmbedding_gt`: a type with a linear order relation is infinite iff there are both relation embedding between `<` in `Nat` and this relation, and between `>` in `Nat` and this relation.
- `RelEmbedding.finite_iff_isEmpty_relEmbedding_lt_and_isEmpty_relEmbedding_gt`: a finite variant of `infinite_iff_nonempty_relEmbedding_lt_or_nonempty_relEmbedding_gt`.
---
[](https://gitpod.io/from-referrer/)
Edit: remove the description on the original motivation since `WellQuasiOrdered` instead of theorems in this PR can be used for that goal.
`RelEmbedding.finite_iff_empty_relEmbedding_of_isWellOrder` might be used for proof of
```lean
example {α β γ} [LinearOrder α] [LinearOrder β] [WellFoundedLT α] [WellFoundedLT β] [LinearOrder γ]
{f : α × β ≃ γ} (mono : Monotone f) : WellFoundedLT γ := sorry
```
The latter will be used for
```lean
example {α β γ} [Finite α] [LinearOrder β] [WellFoundedLT β] [LinearOrder γ]
{f : (α → β) ≃ γ} (mono : Monotone f) : WellFoundedLT γ := sorry
```
And the finial goal is the well-foundedness of monomial order when the index type `σ` is finite (under the definition in #39214). |
t-order |
58/0 |
Mathlib/Order/OrderIsoNat.lean |
1 |
15 |
['Hagb', 'SnirBroshi', 'github-actions', 'leanprover-radar', 'vihdzp'] |
nobody |
8-5643 8 days ago |
13-5676 13 days ago |
13-40898 13 days |
| 37752 |
JovanGerb author:JovanGerb |
chore(Order/CompleteLattice/Lemmas): use `to_dual` |
Use `to_dual` for lemmas about `CompleteLattice`.
---
[](https://gitpod.io/from-referrer/)
|
t-order
maintainer-merge
|
33/56 |
Mathlib/Order/CompleteLattice/Lemmas.lean,Mathlib/Tactic/Translate/ToDual.lean |
2 |
6 |
['JovanGerb', 'YaelDillies', 'github-actions', 'vihdzp'] |
nobody |
8-5436 8 days ago |
8-5503 8 days ago |
55-1902 55 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
maintainer-merge
|
329/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Extremal/ErdosStoneSimonovits.lean |
2 |
19 |
['YaelDillies', 'b-mehta', 'github-actions', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot', 'mitchell-horner', 'robin-carlier'] |
nobody |
7-66300 7 days ago |
28-66437 28 days ago |
88-74961 88 days |
| 39436 |
dtumad author:dtumad |
chore: Add `seqLeft` and `seqRight` unfolding to monad_norm simp set |
This PR adds `seqLeft_eq_bind` and `seqRight_eq_bind` to `monad_norm`, so that `<*` and `*>` get unfolded in the same way as `<*>` already does when using the `simp` set.
---
[](https://gitpod.io/from-referrer/)
|
t-meta
new-contributor
|
1/1 |
Mathlib/Tactic/Attr/Core.lean |
1 |
2 |
['github-actions'] |
dwrensha assignee:dwrensha |
7-65841 7 days ago |
16-79044 16 days ago |
16-78826 16 days |
| 30109 |
scholzhannah author:scholzhannah |
feat: the subcomplexes of a (relative classical) CW complex form a completely distributive lattice |
In this PR we prove that the space of subcomplexes `Subcomplex C` of a (relative classical) CW complex `C` is a `CompletelyDistribLattice`.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
304/1 |
Mathlib/Topology/CWComplex/Classical/Subcomplex.lean |
1 |
26 |
['ADedecker', 'github-actions', 'j-loreaux', 'scholzhannah'] |
alreadydone assignee:alreadydone |
7-64687 7 days ago |
38-24665 38 days ago |
45-7139 45 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 |
66/0 |
Mathlib/Data/Fin/Basic.lean,Mathlib/Data/Fin/SuccPred.lean |
2 |
13 |
['IvanRenison', 'chrisflav', 'github-actions', 'robin-carlier', 'wwylele'] |
Vierkantor assignee:Vierkantor |
7-64685 7 days ago |
30-76330 30 days ago |
96-23220 96 days |
| 38142 |
SnirBroshi author:SnirBroshi |
feat(Order/SuccPred/CompleteLinearOrder): generalize `csSup_mem_of_not_isSuccLimit` |
Given `s.Nonempty` and `BddAbove s` we can conclude `sSup s ∈ s` using either:
- `csSup_mem_of_not_isSuccPrelimit`, given `ConditionallyCompleteLinearOrder` and `¬IsSuccPrelimit (sSup s)`
- `csSup_mem_of_not_isSuccLimit`, given `ConditionallyCompleteLinearOrderBot` and `¬IsSuccLimit (sSup s)`
We generalize both to a theorem that requires `ConditionallyCompleteLinearOrder` and `¬IsSuccLimit (sSup s)`.
This creates 8 theorems that require `¬IsSuccPrelimit` but are now easily proved with the `¬IsSuccLimit` theorems, we replace `csSup_mem_of_not_isSuccPrelimit`/`exists_eq_ciSup_of_not_isSuccPrelimit` with their primed `ConditionallyCompleteLinearOrderBot` theorems, and deprecates the other 6.
Tags a random `to_dual` (in `ConditionallyCompleteLattice/Basic.lean`) to let us `to_dual`ize the new lemmas.
---
~~Should we also deprecate the 8 theorems that require `¬IsSuccPrelimit` and now use `mt`?~~
[](https://gitpod.io/from-referrer/)
|
t-order |
55/42 |
Mathlib/Order/ConditionallyCompleteLattice/Basic.lean,Mathlib/Order/SuccPred/CompleteLinearOrder.lean,Mathlib/SetTheory/Cardinal/Order.lean |
3 |
9 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
bryangingechen assignee:bryangingechen |
7-64681 7 days ago |
30-59907 30 days ago |
45-58095 45 days |
| 38214 |
emlis42 author:emlis42 |
feat(Algebra/ContinuedFractions): add Euler's continued fraction |
This PR formalizes Euler’s continued fractions by providing `Euler` which construct one by giving head term and coefficients with some basic property.
We also introduce a transformation `GenContFract.toEuler` that maps a generalized continued fraction `g : GenContFract K` to an equivalent Euler-form continued fraction. |
new-contributor
t-algebra
label:t-algebra$ |
262/0 |
Mathlib.lean,Mathlib/Algebra/ContinuedFractions/Euler.lean |
2 |
15 |
['github-actions', 'mathlib-bors', 'wwylele'] |
alreadydone assignee:alreadydone |
7-64680 7 days ago |
39-6415 39 days ago |
39-9949 39 days |
| 39256 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): add monotonicity lemma for LanguageOn |
In Symbolic dynamics.
Proof that the language of a set of configurations is monotone with respect to inclusion of configuration sets:
X ⊆ Y → LanguageOn X U ⊆ LanguageOn Y U
The proof is a direct unfolding of definitions: a pattern in the language of X comes from restricting some configuration x ∈ X, and inclusion X ⊆ Y allows the same witness to be used for Y.
Related to issue #39252 |
t-dynamics
new-contributor
|
9/1 |
Mathlib/Dynamics/SymbolicDynamics/Basic.lean |
1 |
3 |
['github-actions'] |
ADedecker assignee:ADedecker |
7-64679 7 days ago |
20-17529 20 days ago |
20-17311 20 days |
| 39799 |
NoahW314 author:NoahW314 |
chore(RingTheory/Ideal/Operations): deprecate duplicate theorem `Ideal.span_mul_span'` |
`Ideal.span_mul_span'` is identical to `Ideal.span_mul_span`.
---
[](https://gitpod.io/from-referrer/)
At one point, `Ideal.span_mul_span` and `Ideal.span_mul_span'` were distinct, but `Ideal.span_mul_span` was changed in #22151 to be identical to `Ideal.span_mul_span'`. |
t-ring-theory |
6/7 |
Mathlib/RingTheory/GradedAlgebra/Homogeneous/Ideal.lean,Mathlib/RingTheory/Ideal/Norm/RelNorm.lean,Mathlib/RingTheory/Ideal/Operations.lean,scripts/nolints_prime_decls.txt |
4 |
1 |
['github-actions'] |
nobody |
7-63802 7 days ago |
7-64071 7 days ago |
7-63853 7 days |
| 39634 |
SnirBroshi author:SnirBroshi |
feat(LinearAlgebra/Matrix/Nondegenerate): more API and generalize to non-domains |
- Syntactically generalize the bilinear form identities to non-square matrices
- Prove iff and transpose theorems for `SeparatingLeft`/`SeparatingRight`/`Nondegenerate`
- Prove `M *ᵥ v = 0 → v = 0` and `v ᵥ* M = 0 → v = 0` given `Nondegenerate`
(extracted from the existing `eq_zero_of_*_eq_zero`)
- Generalize `M.det ≠ 0 → M.Nondegenerate` to `M.det ∈ R⁰ → M.Nondegenerate` (over any `CommRing`)
- Add `M *ᵥ v = 0 → v = 0` and `v ᵥ* M = 0 → v = 0` theorems given `M.det ∈ R⁰`
- Allow `NonUnitalNonAssocSemiring`s in the `def`s
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
130/44 |
Mathlib/Data/Matrix/Mul.lean,Mathlib/LinearAlgebra/Matrix/Nondegenerate.lean,Mathlib/LinearAlgebra/Matrix/ToLinearEquiv.lean |
3 |
9 |
['SnirBroshi', 'github-actions', 'themathqueen'] |
nobody |
7-59034 7 days ago |
7-58885 7 days ago |
11-70884 11 days |
| 39774 |
Hagb author:Hagb |
feat(Order/WellFounded): `WellFounded` on subtype iff the relation restricted on the subtype is `WellFounded` |
Equivalence between `WellFounded` on a subtype and `WellFounded` on the underlying type with the relation restricted on the subtype.
---
(It was a lemma for #39781, which has been closed since there would be a better proof.)
[](https://gitpod.io/from-referrer/)
|
t-order |
13/0 |
Mathlib/Order/WellFounded.lean |
1 |
3 |
['Hagb', 'SnirBroshi', 'github-actions'] |
nobody |
7-50293 7 days ago |
8-5565 8 days ago |
8-5347 8 days |
| 39808 |
chenson2018 author:chenson2018 |
chore(Data): refactor proofs where `grind?` fails |
These are sources of technical debt as now reported in the [weekly linting report](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Weekly.20linting.20log/with/544658968). The idea is that a successful `grind` proof can fail to report the theorems it used via `grind?`, which means that if these proofs break across toolchains that it becomes significantly harder to repair.
Most of these are fixed by squeezing the call to `grind` and unsetting `linter.tacticAnalysis.verifyGrindOnly` so they no longer appear in the weekly report. Unfortunately, this can't be on by default for performance reasons, but I highly encourage using this linter when adding any `grind` proofs.
---
[](https://gitpod.io/from-referrer/)
|
t-data
tech debt
|
69/41 |
Mathlib/Data/Bool/Basic.lean,Mathlib/Data/Bool/Set.lean,Mathlib/Data/EReal/Operations.lean,Mathlib/Data/Fin/Tuple/NatAntidiagonal.lean,Mathlib/Data/Finset/Image.lean,Mathlib/Data/Finset/Powerset.lean,Mathlib/Data/Finset/Range.lean,Mathlib/Data/Finset/SMulAntidiagonal.lean,Mathlib/Data/List/Basic.lean,Mathlib/Data/List/Chain.lean,Mathlib/Data/List/Count.lean,Mathlib/Data/List/Cycle.lean,Mathlib/Data/List/Induction.lean,Mathlib/Data/List/ReduceOption.lean,Mathlib/Data/List/Sigma.lean,Mathlib/Data/List/Sort.lean,Mathlib/Data/List/TakeDrop.lean,Mathlib/Data/List/Triplewise.lean,Mathlib/Data/Option/Basic.lean,Mathlib/Data/Set/Card.lean,Mathlib/Data/Set/Disjoint.lean,Mathlib/Data/Set/Function.lean,Mathlib/Data/Set/Insert.lean,Mathlib/Data/Sum/Order.lean |
24 |
1 |
['github-actions'] |
nobody |
7-38221 7 days ago |
7-51641 7 days ago |
7-51423 7 days |
| 39623 |
justus-springer author:justus-springer |
feat(Algebra/MvPolynomial/Basic): `coeff_C_of_ne_zero` and `coeff_add_single_C` |
These lemmas are multivariate analogs to `Polynomial.coeff_C_of_ne_zero`, `Polynomial.coeff_C_succ` and `PowerSeries.coeff_C_of_ne_zero` and `PowerSeries.coeff_succ_C`. They are useful for defining partial derivatives for multivariate power series, see PR #39626.
- [x] depends on: #39632
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
16/0 |
Mathlib/Algebra/MvPolynomial/Basic.lean,Mathlib/RingTheory/MvPowerSeries/Basic.lean |
2 |
7 |
['Hagb', 'github-actions', 'justus-springer', 'mathlib-dependent-issues', 'wwylele'] |
nobody |
7-37693 7 days ago |
7-39357 7 days ago |
12-3038 12 days |
| 39769 |
chenson2018 author:chenson2018 |
chore(Topology): refactor proofs where `grind?` fails |
These are sources of technical debt as now reported in the [weekly linting report](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Weekly.20linting.20log/with/544658968). The idea is that a successful `grind` proof can fail to report the theorems it used via `grind?`, which means that if these proofs break across toolchains that it becomes significantly harder to repair.
Most of these are fixed by squeezing the call to `grind` and unsetting `linter.tacticAnalysis.verifyGrindOnly` so they no longer appear in the weekly report. Unfortunately, this can't be on by default for performance reasons, but I highly encourage using this linter when adding any `grind` proofs.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
tech debt
|
35/17 |
Mathlib/Topology/Compactness/CountablyCompact.lean,Mathlib/Topology/EMetricSpace/BoundedVariation.lean,Mathlib/Topology/MetricSpace/Pseudo/Defs.lean,Mathlib/Topology/Order/Basic.lean,Mathlib/Topology/Order/IsLUB.lean,Mathlib/Topology/Order/WithTop.lean,Mathlib/Topology/Path.lean,Mathlib/Topology/Sets/VietorisTopology.lean,Mathlib/Topology/Sheaves/Flasque.lean |
9 |
1 |
['github-actions'] |
nobody |
7-28148 7 days ago |
8-26899 8 days ago |
8-26681 8 days |
| 38669 |
dannyply author:dannyply |
feat(Topology/Algebra/PontryaginDual): prove compact monoids have discrete duals |
Proves that the Pontryagin dual of a compact monoid is discrete. As a consequence, it also adds the corresponding finite-type instances for compact discrete monoids.
This upstreams a result first added downstream in [`YaelDillies/APAP`](https://github.com/YaelDillies/APAP), where this fact was needed to close a `sorry`. The proof separates the trivial character from all the others using the right half of the circle and adds a few reusable `Circle` helper lemmas near the existing related API.
The original APAP proof was AI-assisted and then reviewed/rewritten during downstream review. For this PR, I used Codex to help adapt the APAP proof to mathlib and to refactor the supporting lemmas.
---
[](https://gitpod.io/from-referrer/) |
t-topology
new-contributor
|
130/16 |
Mathlib/Analysis/SpecialFunctions/Complex/Circle.lean,Mathlib/Topology/Algebra/PontryaginDual.lean,Mathlib/Topology/MetricSpace/Pseudo/Defs.lean |
3 |
30 |
['dannyply', 'github-actions', 'j-loreaux', 'tb65536'] |
j-loreaux assignee:j-loreaux |
7-24413 7 days ago |
7-24413 7 days ago |
8-12874 8 days |
| 39820 |
samuelchassot author:samuelchassot |
Add proof of the existence of an Eulerian walk if all vertices have even degree or if exactly vertices have odd degree |
As per the TODO open in `Trails.lean`.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
671/3 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Eulerian.lean,Mathlib/Combinatorics/SimpleGraph/Trails.lean |
3 |
8 |
['SnirBroshi', 'copilot-pull-request-reviewer', 'github-actions'] |
nobody |
7-23255 7 days ago |
7-24486 7 days ago |
7-24268 7 days |
| 39818 |
Ljon4ik4 author:Ljon4ik4 |
feat: Transferring Lie Algebra structures along Equivalences |
This pr adds the functionality to transfer Lie brackets along equivalences (additive, linear and plain ones).
I followed the scheme of the existing `TransferInstance.lean` file.
For one of the proofs, I also needed `linearEquiv_apply `, which seemed missing so I added it.
AI use disclaimer: I used claude to search for lemmas/ understand error messages / proofreading and feedback, but wrote the whole code myself.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
124/0 |
Mathlib.lean,Mathlib/Algebra/Lie/TransferInstance.lean,Mathlib/Algebra/Module/TransferInstance.lean |
3 |
2 |
['github-actions'] |
nobody |
7-20408 7 days ago |
7-20483 7 days ago |
7-22510 7 days |
| 37984 |
loefflerd author:loefflerd |
feat: abstract theory of measures |
General foundations of non-archimedean measure theory (intended for applications to Iwasawa algebras)
---
- [x] depends on: #38701 |
t-topology |
306/0 |
Mathlib.lean,Mathlib/NumberTheory/Padics/Measure/Basic.lean,Mathlib/NumberTheory/Padics/Measure/Topology.lean |
3 |
11 |
['github-actions', 'j-loreaux', 'loefflerd', 'mathlib-dependent-issues'] |
PatrickMassot assignee:PatrickMassot |
7-19541 7 days ago |
7-19541 7 days ago |
22-20142 22 days |
| 39736 |
NoahW314 author:NoahW314 |
feat(RingTheory/MvPolynomial/MonomialOrder): add `leadingTerm` lemmas |
Add lemmas for `leadingTerm` to match those for `leadingCoeff`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
87/0 |
Mathlib/RingTheory/MvPolynomial/MonomialOrder.lean |
1 |
5 |
['Hagb', 'NoahW314', 'github-actions'] |
nobody |
7-18440 7 days ago |
9-59014 9 days ago |
9-58796 9 days |
| 39692 |
YaelDillies author:YaelDillies |
chore(Algebra/Order/BigOperators): follow the `₀` naming convention |
We have long agreed that `MonoidWithZero` lemmas corresponding to `Monoid` lemmas should be suffixed with `₀`, while currently it is the `Monoid` lemmas that are primed.
Also deprecate two primed lemmas that only differed from the unprimed versions in a minor way.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-order
label:t-algebra$ |
283/219 |
Mathlib/Algebra/BigOperators/Finprod.lean,Mathlib/Algebra/Group/Submonoid/Pointwise.lean,Mathlib/Algebra/Order/BigOperators/Group/Finset.lean,Mathlib/Algebra/Order/BigOperators/Group/List.lean,Mathlib/Algebra/Order/BigOperators/Group/Multiset.lean,Mathlib/Algebra/Order/BigOperators/GroupWithZero/Finset.lean,Mathlib/Analysis/Analytic/Composition.lean,Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean,Mathlib/Analysis/BoxIntegral/DivergenceTheorem.lean,Mathlib/Analysis/Complex/Exponential.lean,Mathlib/Analysis/Complex/JensenFormula.lean,Mathlib/Analysis/InnerProductSpace/Orientation.lean,Mathlib/Analysis/InnerProductSpace/Subspace.lean,Mathlib/Analysis/Normed/Ring/Basic.lean,Mathlib/Analysis/Normed/Ring/InfiniteProd.lean,Mathlib/Analysis/ODE/DiscreteGronwall.lean,Mathlib/Analysis/Polynomial/MahlerMeasure.lean,Mathlib/Analysis/SpecialFunctions/Trigonometric/Chebyshev/Extremal.lean,Mathlib/Analysis/SpecificLimits/Basic.lean,Mathlib/MeasureTheory/Constructions/Pi.lean,Mathlib/MeasureTheory/Measure/HasOuterApproxClosedProd.lean,Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean,Mathlib/MeasureTheory/Measure/Lebesgue/VolumeOfBalls.lean,Mathlib/NumberTheory/Bertrand.lean,Mathlib/NumberTheory/Height/Basic.lean,Mathlib/NumberTheory/Height/MvPolynomial.lean,Mathlib/NumberTheory/NumberField/InfinitePlace/Basic.lean,Mathlib/NumberTheory/Primorial.lean,Mathlib/NumberTheory/SelbergSieve.lean,Mathlib/NumberTheory/SiegelsLemma.lean,Mathlib/NumberTheory/SmoothNumbers.lean,Mathlib/Probability/ProductMeasure.lean,Mathlib/RingTheory/Polynomial/Cyclotomic/Eval.lean,Mathlib/Topology/Algebra/InfiniteSum/ENNReal.lean,Mathlib/Topology/Algebra/InfiniteSum/Order.lean |
35 |
4 |
['github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
nobody |
7-17981 7 days ago |
7-18016 7 days ago |
8-46888 8 days |
| 39829 |
or4nge19 author:or4nge19 |
feat(LinearAlgebra): basis flag lemmas and genEigenspace map |
Part 1/3 of #39139.
Introduces basis flag lemmas and intertwining `genEigenspace` map, using directly available constructors, ie introducing none (so improving on #39139)
Co-authored-by: [kuotsanhsu](https://github.com/kuotsanhsu) [learningstud@gmail.com](mailto:learningstud@gmail.com)
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
large-import
label:t-algebra$ |
76/2 |
Mathlib/LinearAlgebra/Basis/Flag.lean,Mathlib/LinearAlgebra/Eigenspace/Basic.lean |
2 |
1 |
['github-actions'] |
nobody |
7-16247 7 days ago |
7-16305 7 days ago |
7-16114 7 days |
| 39815 |
sharky564 author:sharky564 |
feat(Analysis/Normed/Module/Complemented): add `IsCompl.isTopCompl_of_isClosed` and `isTopCompl_iff_isCompl_isClosed_isClosed` |
Adds two theorems:
- `IsCompl.isTopCompl_of_isClosed`: In a Banach space, two closed submodules that are algebraic complements are topological
- `isTopCompl_iff_isCompl_isClosed_isClosed`: `p` and `q` are topological complements if and only if `p` and `q` are algebraic complements and `p` and `q` are both closed.
---
This PR addresses the final point of #38416, and finally close it. However, this is no longer much of a refactor as it is more just adding these theorems in. |
t-analysis |
14/1 |
Mathlib/Analysis/Normed/Module/Complemented.lean |
1 |
3 |
['github-actions', 'themathqueen'] |
nobody |
7-15881 7 days ago |
7-28783 7 days ago |
7-28565 7 days |
| 39745 |
joneugster author:joneugster |
feat: install gh inside the devcontainer |
* Install `gh` automatically in the dev container, try to login on startup.
* Mount local `.gitconfig` in the container. This allows access to the globally configured git user name and such.
The motivation behind this PR is to provide a simple way of sandboxing PRs during review. In particular, keeping the .olean files, which originate from an untrusted fork, contained. During review, `gh pr checkout` is defacto a required tool.
Other tools like [bubble](https://github.com/kim-em/bubble#bubble) aim to address the same use case. However, vscode devcontainer are more mature and the setup is done with few lines of code, easy to understand.
---
### LLM usage
The line
```text
source=${localEnv:HOME}/.gitconfig,target=/home/vscode/.gitconfig,type=bind,consistency=cached
```
has been suggested by querying an LLM. It looks like this is what literature online seems to be using:
* https://github.com/microsoft/vscode/issues/265651
* https://marcandreuf.com/blog/2024-07-12-gitdevcont/
[](https://gitpod.io/from-referrer/)
|
CI |
14/1 |
.devcontainer/devcontainer.json,.gitignore |
2 |
1 |
['github-actions'] |
bryangingechen assignee:bryangingechen |
7-10771 7 days ago |
7-11008 7 days ago |
9-26640 9 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
maintainer-merge
|
55/3 |
Mathlib/Combinatorics/SimpleGraph/Bipartite.lean,Mathlib/Data/Sym/Sym2.lean |
2 |
19 |
['SnirBroshi', 'bryangingechen', 'chrisflav', 'eric-wieser', 'github-actions', 'mathlib-bors', 'mathlib-merge-conflicts'] |
eric-wieser assignee:eric-wieser |
7-9300 7 days ago |
7-9300 7 days ago |
89-44085 89 days |
| 38488 |
b-mehta author:b-mehta |
feat(Data/Finset/Card): iterating a function's image on a finite set stabilises |
...and does so in a bounded number of steps (which is why this is Finset-specific).
In a later PR, I'll add this for endofunctions on a fintype, as well as add a Set.Finite version.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
35/0 |
Mathlib/Data/Finset/Card.lean,Mathlib/Data/Finset/Image.lean |
2 |
17 |
['SnirBroshi', 'b-mehta', 'github-actions'] |
joneugster assignee:joneugster |
7-8387 7 days ago |
7-8471 7 days ago |
37-70046 37 days |
| 38245 |
RemyDegenne author:RemyDegenne |
feat: CountableSupClosed |
Define the property for a set of being closed by countable supremum (resp. infimum).
The new file is adapted from the `SupClosed` file, which describes sets closed by binary supremum.
Also use `to_dual` on `SupClosed`.
`CountableInfClosed` will be used in measure theory, for developments related to compact systems used for Kolmogorov's extension theorem and Choquet's capacitability theorem.
---
[](https://gitpod.io/from-referrer/)
|
t-order
brownian
|
381/66 |
Mathlib.lean,Mathlib/Order/CountableSupClosed.lean,Mathlib/Order/SupClosed.lean |
3 |
16 |
['RemyDegenne', 'b-mehta', 'github-actions', 'vihdzp'] |
nobody |
7-623 7 days ago |
7-17196 7 days ago |
43-29419 43 days |
| 39757 |
gasparattila author:gasparattila |
chore(Algebra/Star): clean up `simp` lemmas about bundled `star` equivalences |
This PR adds `.symm` lemmas for these equivalences, allowing `simp` to reduce applications of their inverses to applications of `star`.
---
[](https://gitpod.io/from-referrer/)
|
|
67/21 |
Mathlib/Algebra/Star/Basic.lean,Mathlib/Algebra/Star/Module.lean,Mathlib/Analysis/CStarAlgebra/Basic.lean,Mathlib/Topology/Algebra/Module/Star.lean |
4 |
2 |
['github-actions', 'themathqueen'] |
nobody |
6-84933 6 days ago |
8-85026 8 days ago |
8-84808 8 days |
| 39747 |
vihdzp author:vihdzp |
feat: intervals `Ici`/`Ioi` are cofinal/closed under directed suprema |
---
[](https://gitpod.io/from-referrer/)
|
t-order |
67/11 |
Mathlib/Order/Cofinal.lean,Mathlib/Order/DirSupClosed.lean,Mathlib/Order/Interval/Set/Basic.lean,Mathlib/Order/UpperLower/Basic.lean,Mathlib/Topology/Order/ScottTopology.lean |
5 |
16 |
['YaelDillies', 'b-mehta', 'github-actions', 'vihdzp'] |
nobody |
6-78472 6 days ago |
8-14898 8 days ago |
8-79050 8 days |
| 39850 |
Ljon4ik4 author:Ljon4ik4 |
feat: Lie-Rinehart subalgebras introduced |
This PR introduces subalgebras of Lie-Rinehart algebras. It defines the corresponding structures, introduces some basic api and shows that a Lie-Rinehart subalgebra is again a Lie-Rinehart algebra.
Most of the code was copied and adapted from `Mathlib/Algebra/Lie/Subalgebra.lean`, however I am not aware of a way to reuse the results from there without copy/pasting them. I also noticed a problem with the namespace of a few simp lemmas in `LieRinehartAlgebra/Defs.lean` and corrected it.
There are a few design decisions that I am not sure about:
* There is one structure, which only needs `[Module A L]` and `[LieRing L]` to be defined. Then additional properties are added along the file whenever needed. It is a little strange to have a `LieRinehartSubalgebra` of something which is not a `LieRinehartalgebra`, but I don't know what a better solution would be
* The structure only uses `A, L` and not `R`, so `R` has to be explicitly passed to the functions later in the file.
AI use disclaimer: I used claude to search for lemmas/ understand error messages / proofreading and feedback, but did not use it for generating the code.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
267/2 |
Mathlib.lean,Mathlib/Algebra/LieRinehartAlgebra/Defs.lean,Mathlib/Algebra/LieRinehartAlgebra/Subalgebra.lean |
3 |
1 |
['github-actions'] |
nobody |
6-77914 6 days ago |
6-77981 6 days ago |
6-78660 6 days |
| 39798 |
vihdzp author:vihdzp |
chore: use `notation3` for `Ordinal.typeLT` |
This creates a delaborator, which avoids goals from looking like `(type fun x1 x2 ↦ x1 < x2) < (type fun x1 x2 ↦ x1 < x2)`.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory
easy
maintainer-merge
|
5/1 |
Mathlib/SetTheory/Ordinal/Basic.lean |
1 |
4 |
['YaelDillies', 'github-actions', 'vihdzp'] |
YaelDillies assignee:YaelDillies |
6-76622 6 days ago |
6-77231 6 days ago |
7-8412 7 days |
| 39856 |
b-mehta author:b-mehta |
feat(Data/Set/Restrict): extend is injective on the range |
These lemmas are placed here since that puts them close to the other `extend` lemmas, but they can't be in Logic/Function/Basic since InjOn and Set.range aren't defined there yet
---
[](https://gitpod.io/from-referrer/)
|
t-data |
15/0 |
Mathlib/Data/Set/Restrict.lean |
1 |
1 |
['github-actions'] |
nobody |
6-69270 6 days ago |
6-69345 6 days ago |
6-69127 6 days |
| 39561 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Operations): a graph is the supremum of edge graphs |
- `G = ⨆ e ∈ G.edgeSet, fromEdgeSet {e}`
- `G = sSup { edge u v | (u : V) (v : V) (_ : G.Adj u v) }`
and `edgeSet` & `fromEdgeSet` preserve sup & inf.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
51/0 |
Mathlib/Combinatorics/SimpleGraph/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Operations.lean |
2 |
2 |
['b-mehta', 'github-actions'] |
nobody |
6-68888 6 days ago |
13-51676 13 days ago |
13-51458 13 days |
| 39505 |
dannyhe652 author:dannyhe652 |
feat(SimpleGraph): add Vizing's theorem for edge coloring |
Hi! I'm a high school student interested in formulization of mathematics in Lean. Recently, I have worked on a project to formulize Vizing Theorem with Daniel Raggi from Cambridge University with AI assistance. In particular, we first drafted an outline for the proof, and built the proof using Claude Opus 4.5 and 4.6. The proof is optimized using Aristotle and finally reviewed by ourselves. We rewrote some parts of the code and some comments. The code now builds cleanly and we wish this code to be reviewed by Lean Community. I am aware that there are previous attempts, some being successful, on formulizing Vizing Theorem, including this one by Arohee https://github.com/aroheebhoja/vizing. However, I believe that no PR have been made. Our proof is not based on his proof, but it could be helpful for the community to review that project as well. I sincerely thank everyone who has time to verify and review our code. A summary of the project is as follows. Please contact me if there are any questions or problems.
## Summary
This PR completes the proof of **Vizing's theorem** for edge coloring in simple graphs, proving that the chromatic index of any graph is either Δ (the maximum degree) or Δ + 1.
## Changes
### New files
- **`Mathlib/Combinatorics/SimpleGraph/Coloring/EdgeColoring.lean`** — Core definitions
- `edgeColoring`: Type for line graph colorings
- `edgeColorable`: Graph is edge-colorable with n colors
- `chromaticIndex`: Chromatic index as ℕ
- **`Mathlib/Combinatorics/SimpleGraph/Coloring/KempeChain.lean`** — Kempe Chain
- Coloring observables: `incidentEdges`, `incidentColors`, `missingColors`
- Kempe subgraph structure with bounded degree
- `swapKempe`: Recolor edges in a connected component via color-swapping
- **`Mathlib/Combinatorics/SimpleGraph/Coloring/VizingFan.lean`** — Vizing Fan Rotation
- `IsFan`: Vizing fan structure with special color properties
- Fan maximality and dichotomy on terminal vertices
- `rotate_termA`: Extend coloring when a free color exists at both endpoints
- `vizingAdjacencyLemma`: Main adjacency lemma for both cases
- **`Mathlib/Combinatorics/SimpleGraph/Coloring/VizingTheorem.lean`** — Main theorems
- `edge_eq_of_color_eq`: Proper edge colorings assign different colors to distinct edges sharing a vertex
- `maxDegree_le_chromaticIndex`: χ'(G) ≥ Δ(G)
- `chromaticIndex_bot`: Empty graph has chromatic index 0
- `vizingUpperBound_aux`: Inductive proof of upper bound on number of edge
- `vizingTheorem`: χ'(G) ∈ {Δ(G), Δ(G) + 1}
### Modified files
- `Mathlib.lean` — Added imports for the four new coloring modules
## Technical Approach
**Lower bound** (χ'(G) ≥ Δ):
- Edges incident to a max-degree vertex form a clique in the line graph
- Clique number lower-bounds chromatic number
**Upper bound** (χ'(G) ≤ Δ + 1):
- Induction on the number of edges
- Base case: empty graph colored with 0 colors
- Inductive step:
- If a free color exists at both endpoints of an edge, then extend directly
- Otherwise:
- Build a maximal fan from one endpoint
- Apply dichotomy: either extend via Term-A (free color at both endpoints) or Term-B (Kempe swap)
- Term-B uses a three-vertex connectivity argument to derive a contradiction, forcing the fan to extend
## Key Lemmas
- `incidentEdges`, `incidentColors`, `missingColors`: Coloring observables at vertices
- `kempeSubgraph`: Restricted subgraph of edges with two specific colors
- `swapKempe`: Recolor via Kempe chain swapping
- `IsFan.singleton`: Trivial fan always valid
- `IsFan.length_le_card`: Fan length is bounded by vertex count
- `IsFan.dichotomy`: Maximal fan satisfies Term-A or Term-B
- `IsFan.rotate_termA`: Term-A case extends the coloring inductively
- `vizingAdjacencyLemma`: Handles both cases for extending one edge
- `vizingUpperBound_aux`: Framework for full inductive proof
- `edge_eq_of_color_eq`: Distinctness of edges with same color
## Testing
All four modules compile with no `sorry` nor errors or warnings.
## References
* V. G. Vizing, *On an estimate of the chromatic class of a p-graph*,
Diskret. Analiz. 3 (1964), 25–30.
## Co-authors
Co-authored-by: Daniel Raggi
Co-authored-by: Aristotle (Harmonic)
Co-authored-by: Claude Opus 4.5 & 4.6
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
LLM-generated
|
1915/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/EdgeColoring.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/KempeChain.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/VizingFan.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/VizingTheorem.lean |
5 |
3 |
['github-actions'] |
nobody |
6-68800 6 days ago |
14-70561 14 days ago |
14-71722 14 days |
| 39792 |
vihdzp author:vihdzp |
chore: deprecate `Ordinal.IsAcc` and `Ordinal.IsClosedBelow` |
These predicates were introduced in #16710 as preliminaries for a development of club sets. Those have [since been defined](https://leanprover-community.github.io/mathlib4_docs/Mathlib/SetTheory/Cardinal/Cofinality/Club.html#IsClub) without them, so we deprecate them, and generalize the results on them to the setting of successor orders.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
64/37 |
Mathlib/SetTheory/Ordinal/Topology.lean,Mathlib/Topology/Order/SuccPred.lean |
2 |
2 |
['github-actions', 'mathlib-bors'] |
nobody |
6-66528 6 days ago |
7-60045 7 days ago |
7-79986 7 days |
| 33313 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Coloring/Edge): create a basic edge-coloring API |
Module name decided on [Zulip](https://leanprover.zulipchat.com/#narrow/channel/252551-graph-theory/topic/Coloring.20module.20names/with/583281500).
---
Future work (which I'm working on):
- Relating degrees to edge-colorability (`G.maxDegree ≤ G.chromaticIndex`, `G.EdgeColorable 1 ↔ G.maxDegree ≤ 1`, `G.chromaticIndex = 1 ↔ G.maxDegree = 1`, `G.EdgeColorable 2 ↔ G.maxDegree ≤ 2`, `G.chromaticIndex = 2 ↔ G.maxDegree = 2`)
- [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 |
300/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/Edge.lean |
2 |
28 |
['SnirBroshi', 'YaelDillies', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'ooovi'] |
b-mehta assignee:b-mehta |
6-64971 6 days ago |
32-8823 32 days ago |
69-49939 69 days |
| 39782 |
robin-carlier author:robin-carlier |
feat(Tactic): `nonempty` attribute |
This PR adds a `nonempty` attribute. When tagging a definition of type `α` with `[nonempty]`, an instance of type `Nonempty α` is automatically generated and registered using the definition.
Such an attribute is useful in the following scenario: certain structures are not classes (e.g., to avoid data-carrying classes potentially creating diamonds), but mere existence of terms of such structures allows to derive instances about the parameters of the structure. Using `[nonempty]` lets one auto-generate the instances derived instance (provided they correctly follow from `[Nonempty _]`).
Such is the case for the `CategoryTheory.Functor.FullyFaithful` structure, which allows to derive the `Prop`-classes `CategoryTheory.Functor.Full` and `CategoryTheory.Functor.Faithful`. Currently in mathlib, most definitions of type `CategoryTheory.Functor.FullyFaithful` are immediately followed by the corresponding `Full` and `Faithful` instances, adding "boilerplate" and increasing the surface for potential mistakes (like forgetting one or both of the instances.)
The attribute uses a variation of `addRelatedDecl` called `addRelatedInstance`, which handles automatic name generation and registration of instances from a given declaration and a "constructor" of type `Expr → List Name → MetaM (Expr × List Name)`.
---
I believe abstracting `addRelatedInst` might have other possible usages: for instance, given an adjunction `adj: L ⊣ R`, it would be nice to have an attribute that one can tag on such adjunctions that automatically registers `L.IsLeftAdjoint` and `R.IsRightAdjoint`. The `nonempty` attribute here can’t really do this because `R` can’t be inferred from a goal of type `L.IsLeftAdjoint`, but the situation is quite similar, and `addRelatedInst` could also help writing this kind of attribute.
[](https://gitpod.io/from-referrer/)
|
t-meta |
320/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/NonemptyAttr.lean,Mathlib/Util/AddRelatedDecl.lean,MathlibTest/NonemptyAttr.lean |
5 |
1 |
['github-actions'] |
dwrensha assignee:dwrensha |
6-64964 6 days ago |
6-82808 6 days ago |
6-82590 6 days |
| 39809 |
zcyemi author:zcyemi |
feat(LinearAlgebra/AffineSpace/Menelaus): add Menelaus' theorem |
Add Menelaus' theorem for both `AffineSpace` and `NormedAddTorsor`.
The `AffineSpace` version includes both the forward and converse directions, while the `NormedAddTorsor` version currently includes the forward direction.
For the converse direction in the `NormedAddTorsor` setting, I am still considering the most convenient formalization for future use. One possible approach is to use `sbtw` / `¬ sbtw` to distinguish the different positional cases for points on the edges of a triangle, but this seems too complicated under permutations of the triangle vertices.
|
t-euclidean-geometry |
218/0 |
Mathlib.lean,Mathlib/Analysis/Normed/Affine/Menelaus.lean,Mathlib/LinearAlgebra/AffineSpace/Menelaus.lean,docs/1000.yaml |
4 |
1 |
['github-actions'] |
jsm28 assignee:jsm28 |
6-64962 6 days ago |
7-43166 7 days ago |
7-43625 7 days |
| 39063 |
khwilson author:khwilson |
feat(Topology/Algebra/Module/LocallyConvex): a very nice basis of locally convex spaces |
In proving facts about locally convex spaces, you often work with a basis of the neighborhoods of 0 that are open, symmetric, convex, antitone, and have the property that `V (n + 1) + V (n + 1) ⊆ V n` and `closure (V (n + 1)) ⊆ V n`.
These lemmas construct such a basis.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
137/30 |
Mathlib/Analysis/LocallyConvex/AbsConvex.lean,Mathlib/Topology/Algebra/Group/Pointwise.lean,Mathlib/Topology/Algebra/Module/LocallyConvex.lean |
3 |
10 |
['github-actions', 'j-loreaux', 'khwilson'] |
j-loreaux assignee:j-loreaux |
6-60373 6 days ago |
6-60442 6 days ago |
18-26576 18 days |
| 39722 |
kg583 author:kg583 |
feat(Combinatorics): Link `Nat.Partition` to `YoungDiagram` |
---
AI disclosure: Claude was used to source some proof sketches.
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
large-import
|
120/4 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Partition/Basic.lean,Mathlib/Combinatorics/Enumerative/Partition/Conjugate.lean,Mathlib/Combinatorics/Young/YoungDiagram.lean |
4 |
36 |
['NoahW314', 'github-actions', 'kg583', 'wwylele'] |
nobody |
6-58281 6 days ago |
8-85490 8 days ago |
9-82847 9 days |
| 39789 |
vihdzp author:vihdzp |
feat: a cofinal set has a cofinal subset of order type `(cof α).ord` |
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory
maintainer-merge
|
38/20 |
Mathlib/SetTheory/Cardinal/Aleph.lean,Mathlib/SetTheory/Cardinal/Cofinality/Basic.lean,Mathlib/SetTheory/Cardinal/Cofinality/Ordinal.lean,Mathlib/SetTheory/Ordinal/Basic.lean |
4 |
7 |
['YaelDillies', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
nobody |
6-48054 6 days ago |
6-49814 6 days ago |
7-66668 7 days |
| 38275 |
TTony2019 author:TTony2019 |
feat: Add `AffineEquiv.image_intrinsicInterior` |
## Summary
This PR generalizes the existing lemma `AffineIsometry.image_intrinsicInterior` to the setting of affine equivalences, yielding the corresponding result `AffineEquiv.image_intrinsicInterior`.
Since affine equivalences are more general than affine isometries, the proof requires an additional finite-dimensionality assumption. The key extra input is that in finite-dimensional spaces, an affine equivalence induces a homeomorphism via `AffineEquiv.toHomeomorphOfFiniteDimensional`, so the assumptions are adjusted accordingly.
Apart from these extra assumptions, the argument is essentially the same as for `AffineIsometry.image_intrinsicInterior`.
## Collaboration
This PR was developed together with @imathwy.
|
t-analysis
new-contributor
|
283/41 |
Mathlib/Analysis/Convex/Intrinsic.lean,Mathlib/Analysis/Normed/Module/FiniteDimension.lean,Mathlib/LinearAlgebra/AffineSpace/Restrict.lean,Mathlib/Topology/Algebra/AffineSubspace.lean,Mathlib/Topology/Homeomorph/Defs.lean |
5 |
29 |
['TTony2019', 'github-actions', 'imathwy', 'j-loreaux', 'themathqueen'] |
j-loreaux assignee:j-loreaux |
6-39707 6 days ago |
6-39707 6 days ago |
23-30172 23 days |
| 39491 |
Yu-Misaka author:Yu-Misaka |
feat(Mathlib/LinearAlgebra/RootSystem/CartanMatrix): a Cartan matrix of a reduced crystallographic root system cannot have eigenvalue 4 |
This proves the TODO that a Cartan matrix of a reduced crystallographic root system cannot have eigenvalue 4.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-algebra
codex
LLM-generated
label:t-algebra$ |
125/8 |
Mathlib/Data/Matrix/Mul.lean,Mathlib/LinearAlgebra/RootSystem/CartanMatrix.lean,Mathlib/LinearAlgebra/RootSystem/GeckConstruction/Basis.lean,Mathlib/LinearAlgebra/RootSystem/GeckConstruction/Semisimple.lean |
4 |
6 |
['Yu-Misaka', 'copilot-pull-request-reviewer', 'github-actions', 'mathlib-bors', 'ocfnash'] |
ocfnash assignee:ocfnash |
6-36791 6 days ago |
6-36880 6 days ago |
6-36672 6 days |
| 39693 |
yuanyi-350 author:yuanyi-350 |
feat(Combinatorics/Enumerative/Bell): sum over partition shapes |
Kill TODO in `Mathlib/Combinatorics/Enumerative/Bell.lean` which proves `Nat.bell` as a sum of `Multiset.bell` over partition shapes
---
Migrated from #37690
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
maintainer-merge
|
128/35 |
Mathlib/Combinatorics/Enumerative/Bell.lean |
1 |
6 |
['YaelDillies', 'github-actions'] |
nobody |
6-34722 6 days ago |
10-30433 10 days ago |
10-30215 10 days |
| 28683 |
Thmoas-Guan author:Thmoas-Guan |
feat(RingTheory): regular local ring is domain |
In this PR, we proved for a regular local ring `R`,
1 : for a finite set `S` in the maximal Ideal of `R`, it can be extended to a regular system of parameters iff they are linear independent in the cotangent space iff `R/span S` is regular local ring of dimesion `dim R - |S|`
2 : is domain
3 : regular system of parameter form regular sequence.
---
- [x] depends on: #28682
- [x] depends on: #37627
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
323/0 |
Mathlib.lean,Mathlib/Algebra/Module/SpanRank.lean,Mathlib/RingTheory/Ideal/Height.lean,Mathlib/RingTheory/Ideal/Operations.lean,Mathlib/RingTheory/RegularLocalRing/Basic.lean |
5 |
58 |
['Raph-DG', 'Thmoas-Guan', 'WenrongZou', 'erdOne', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot', 'mbkybky'] |
nobody |
6-29196 6 days ago |
9-37148 9 days ago |
11-12635 11 days |
| 39600 |
plp127 author:plp127 |
chore(Topology/Compactness/CountablyCompact): generalize theorem |
Generalize theorem `Topology.IsEmbedding.isSeqCompact_iff` to `Topology.IsInducing.isSeqCompact_iff` by replacing `IsEmbedding` by `IsInducing`.
Also fix capitalization error.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
10/4 |
Mathlib/Topology/Compactness/CountablyCompact.lean |
1 |
5 |
['grunweg', 'plp127', 'themathqueen'] |
nobody |
6-28482 6 days ago |
8-76968 8 days ago |
11-53309 11 days |
| 38950 |
smmercuri author:smmercuri |
chore(Algebra): `coe_algHom` -> `coe_toAlgHom` |
---
There are also instances of `coe_ringHom`, `coe_linearMap` etc which I can fix in follow-up PRs
[](https://gitpod.io/from-referrer/)
|
|
78/64 |
Mathlib/Algebra/Algebra/Equiv.lean,Mathlib/Algebra/Algebra/Spectrum/Basic.lean,Mathlib/Algebra/Algebra/Subalgebra/Centralizer.lean,Mathlib/Algebra/Azumaya/Basic.lean,Mathlib/Algebra/MvPolynomial/Equiv.lean,Mathlib/AlgebraicGeometry/AffineSpace.lean,Mathlib/Analysis/CStarAlgebra/GelfandDuality.lean,Mathlib/FieldTheory/Extension.lean,Mathlib/FieldTheory/Galois/Basic.lean,Mathlib/FieldTheory/Isaacs.lean,Mathlib/FieldTheory/KummerExtension.lean,Mathlib/FieldTheory/LinearDisjoint.lean,Mathlib/FieldTheory/Minpoly/Field.lean,Mathlib/FieldTheory/SeparableDegree.lean,Mathlib/FieldTheory/SeparablyGenerated.lean,Mathlib/LinearAlgebra/Charpoly/Basic.lean,Mathlib/LinearAlgebra/TensorProduct/Subalgebra.lean,Mathlib/NumberTheory/Cyclotomic/Gal.lean,Mathlib/RingTheory/Algebraic/MvPolynomial.lean,Mathlib/RingTheory/Bialgebra/Equiv.lean,Mathlib/RingTheory/Bialgebra/Hom.lean,Mathlib/RingTheory/DividedPowerAlgebra/Init.lean,Mathlib/RingTheory/Extension/Presentation/Basic.lean,Mathlib/RingTheory/Extension/Presentation/Core.lean,Mathlib/RingTheory/GradedAlgebra/AlgHom.lean,Mathlib/RingTheory/GradedAlgebra/TensorProduct.lean,Mathlib/RingTheory/Ideal/Quotient/Operations.lean,Mathlib/RingTheory/MvPolynomial/Symmetric/FundamentalTheorem.lean,Mathlib/RingTheory/NoetherNormalization.lean,Mathlib/RingTheory/Polynomial/Cyclotomic/Factorization.lean,Mathlib/RingTheory/Smooth/Basic.lean,Mathlib/RingTheory/Smooth/IntegralClosure.lean,Mathlib/RingTheory/TensorProduct/Maps.lean |
33 |
6 |
['github-actions', 'j-loreaux', 'mathlib-merge-conflicts'] |
nobody |
6-20780 6 days ago |
6-20821 6 days ago |
22-14360 22 days |
| 26304 |
Raph-DG author:Raph-DG |
feat(AlgebraicGeometry): Pushforward of algebraic cycles |
In this PR we define a notion of the "pushfoward of functions with locally finite support". We give this PR the suggestive title "pushforward of algebraic cycles" because we will go on to model algebraic cycles on a scheme X as functions from X to the integers with locally finite support.
- [x] depends on: #26225
- [x] depends on: #26259
- [x] depends on: #35807
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry
maintainer-merge
|
91/0 |
Mathlib.lean,Mathlib/Topology/LocallyFinsupp.lean,Mathlib/Topology/LocallyFinsupp/Pushforward.lean |
3 |
63 |
['Raph-DG', 'chrisflav', 'github-actions', 'joelriou', 'leanprover-community-bot-assistant', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
joelriou assignee:joelriou |
6-20103 6 days ago |
6-20249 6 days ago |
48-65427 48 days |
| 39870 |
YaelDillies author:YaelDillies |
feat(Data): interleaving lists |
Define interleaving of lists, both as an operation and as a relation.
This will be used to define interleaving polynomials, which in turn are a central concept in the line of work that earned June Huh his 2022 Fields medal.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
119/0 |
Mathlib.lean,Mathlib/Data/List/Interleave.lean |
2 |
1 |
['github-actions'] |
nobody |
6-16644 6 days ago |
6-16710 6 days ago |
6-16926 6 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 |
41/32 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,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/Walk/Decomp.lean |
7 |
9 |
['SnirBroshi', 'YaelDillies', 'b-mehta', 'eric-wieser', 'github-actions', 'mathlib-merge-conflicts'] |
nobody |
6-15397 6 days ago |
6-15474 6 days ago |
68-53371 68 days |
| 39864 |
8e7 author:8e7 |
feat(Combinatorics/SimpleGraph/Acyclic): helly property on subtrees |
This PR adds several lemmas regarding connected subsets of vertices in trees (subtrees). The main result is the Helly property for subtrees: For a finite set of subtrees, if any pair of subtrees intersect, then there is a common vertex in all subtrees.
This lemma is part of an effort to formalize tree decompositions (see #38334), and will be used in a future PR to prove `G.cliqueNum - 1 <= G.treeWidth`.
AI Usage: The proofs were developed with the help of Claude Code. I vouch for all the code written and understand the content fully.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
LLM-generated
|
114/0 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean |
2 |
2 |
['github-actions'] |
nobody |
6-14775 6 days ago |
6-36288 6 days ago |
6-36184 6 days |
| 34805 |
DavidLedvinka author:DavidLedvinka |
feat(Tactic): generalize ofScientific NormNum extension to `DivisionSemiring` |
Co-authored-by: @hrmacbeth |
t-meta
maintainer-merge
|
70/16 |
Mathlib/Algebra/Field/Rat.lean,Mathlib/Tactic/NormNum/Inv.lean,Mathlib/Tactic/NormNum/OfScientific.lean,MathlibTest/Tactic/NormNum/Basic.lean |
4 |
31 |
['DavidLedvinka', 'JovanGerb', 'b-mehta', 'eric-wieser', 'github-actions', 'mathlib-merge-conflicts', 'thorimur'] |
eric-wieser assignee:eric-wieser |
6-8406 6 days ago |
6-63945 6 days ago |
92-37629 92 days |
| 39709 |
justus-springer author:justus-springer |
feat(RingTheory/): `MvPolynomial` is standard smooth |
Add the trivial submersive presentation for `MvPolynomial` and show that `MvPolynomial` is standard smooth over its base ring. This will be used to show that affine space is smooth in #39710.
- [x] depends on: #39708
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
47/0 |
Mathlib/RingTheory/Extension/Presentation/Basic.lean,Mathlib/RingTheory/Extension/Presentation/Submersive.lean,Mathlib/RingTheory/Smooth/StandardSmooth.lean |
3 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
6-2259 6 days ago |
6-2267 6 days ago |
6-4938 6 days |
| 39110 |
SnirBroshi author:SnirBroshi |
chore(Data/Set): reduce defeq abuse of `Set α = α → Prop` |
These are among the first places that would fail if `Set α` wasn't defeq to `α → Prop`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
35/20 |
Mathlib/Data/Set/Basic.lean,Mathlib/Data/Set/Defs.lean,Mathlib/Data/Set/Insert.lean,Mathlib/Data/Set/Prod.lean,Mathlib/Order/BooleanAlgebra/Set.lean |
5 |
24 |
['SnirBroshi', 'Vierkantor', 'github-actions', 'leanprover-radar', 'mathlib-bors', 'themathqueen', 'urkud', 'vihdzp'] |
urkud assignee:urkud |
6-688 6 days ago |
16-34931 16 days ago |
22-36113 22 days |
| 39863 |
thomaskwaring author:thomaskwaring |
feat(Topology/Sets/Opens): Heyting-algebra operations on open sets |
Add expressions for the Heyting-algebra operations on the frame of opens subsets of a topological space.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
22/0 |
Mathlib/Topology/Sets/Opens.lean |
1 |
9 |
['eric-wieser', 'github-actions', 'thomaskwaring'] |
nobody |
5-73230 5 days ago |
6-32447 6 days ago |
6-39780 6 days |
| 39855 |
b-mehta author:b-mehta |
feat(InfiniteSum): zero function has product zero |
Prove that in a comm monoid with zero, the product of the zero function is zero.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
13/0 |
Mathlib/Topology/Algebra/InfiniteSum/Basic.lean |
1 |
3 |
['b-mehta', 'github-actions', 'plp127'] |
nobody |
5-73008 5 days ago |
5-73054 5 days ago |
6-39676 6 days |
| 39011 |
Vierkantor author:Vierkantor |
chore(Algebra/Polynomial/Module): workaround for backward.inferInstanceAs |
This PR, like #38990, works around a `backward.inferInstanceAs` compatibility flag introduced by identifying `PolynomialModule` with `Finsupp` in our definitions. We introduce a new dsimp lemma `funLike_eq` that transfers the `FunLike` instances, and now we can use `PolynomialModule`'s `FunLike` instance, instead of the custom `CoeFun` instance.
This is not a great approach, but it seems the least painful for the short term. The alternative would be to strictly enforce the defeq barrier between `PolynomialModule` and `Finsupp`, which would mean a substantial rewrite of this corner of Mathlib. We can't make `PolynomialModule` an `@[implicit_reducible]`, because we need different multiplication on it than `Finsupp` has.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
tech debt
label:t-algebra$ |
8/5 |
Mathlib/Algebra/Polynomial/Module/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
5-66296 5 days ago |
26-7960 26 days ago |
26-7742 26 days |
| 37062 |
tannerduve author:tannerduve |
feat(Computability): Turing join and semilattice structure on Turing degrees |
## Summary
- Add `Partrec.kronecker` (equality test) and `Partrec.join` (disjoint union by parity) in `Partrec.lean`
- Prove `Nat.RecursiveIn` is closed under computable conditionals (`cond_const`, `cond`)
- Show each component reduces to the join (`left_le_join`, `right_le_join`) and the join is the least upper bound (`join_le`)
- Establish `SemilatticeSup` instance on `TuringDegree` |
t-computability
new-contributor
large-import
|
311/15 |
Mathlib/Computability/Partrec.lean,Mathlib/Computability/RecursiveIn.lean,Mathlib/Computability/TuringDegree.lean |
3 |
7 |
['Komyyy', 'github-actions', 'mathlib-merge-conflicts', 'tannerduve'] |
Komyyy assignee:Komyyy |
5-66123 5 days ago |
49-14801 49 days ago |
49-76877 49 days |
| 39895 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Normed/Module/MStructure` |
- refactors `Normed/Module/MStructure` by replacing a norm-zero argument with `nlinarith` and shortening the proof of `QP_eq_QPQ`
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
6/10 |
Mathlib/Analysis/Normed/Module/MStructure.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
5-65973 5 days ago |
5-67226 5 days ago |
5-67008 5 days |
| 39897 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Normed/Ring/Basic` |
- refactors `Normed/Ring/Basic` by removing redundant nonempty-case splits from `Real.iSup_fun_mul_eq_iSup_mul_iSup_of_nonneg`
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
0/4 |
Mathlib/Analysis/Normed/Ring/Basic.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
5-65971 5 days ago |
5-67222 5 days ago |
5-67004 5 days |
| 39894 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Normed/Lp/WithLp` |
- refactors `Normed/Lp/WithLp` by deriving scalar tower and scalar commutation instances from `WithLp.equiv`
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
4/8 |
Mathlib/Analysis/Normed/Lp/WithLp.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
5-65721 5 days ago |
5-67228 5 days ago |
5-67010 5 days |
| 39896 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Normed/Operator/ContinuousLinearMap` |
- refactors `Normed/Operator/ContinuousLinearMap` by reusing `mkContinuous` in bounded linear continuity proofs and shortening `homothety_inverse`
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
5/16 |
Mathlib/Analysis/Normed/Operator/ContinuousLinearMap.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
5-65646 5 days ago |
5-67224 5 days ago |
5-67006 5 days |
| 39898 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Normed/Unbundled/AlgebraNorm` |
- refactors `Normed/Unbundled/AlgebraNorm` by using structure inheritance in `MulRingNorm.toRingNorm`
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
1/5 |
Mathlib/Analysis/Normed/Unbundled/AlgebraNorm.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
5-65407 5 days ago |
5-67220 5 days ago |
5-67002 5 days |
| 39899 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Normed/Unbundled/FiniteExtension` |
- refactors `Normed/Unbundled/FiniteExtension` by proving `Basis.norm_smul` via `Finset.mul₀_sup'`
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
4/15 |
Mathlib/Analysis/Normed/Unbundled/FiniteExtension.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
5-65267 5 days ago |
5-67218 5 days ago |
5-67000 5 days |
| 39900 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/SpecialFunctions/Gaussian/GaussianIntegral` |
- refactors `Gaussian/GaussianIntegral` by proving `integral_gaussian_complex_Ioi` using `integral_comp_neg_Ioi`
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
13/20 |
Mathlib/Analysis/SpecialFunctions/Gaussian/GaussianIntegral.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
5-65164 5 days ago |
5-67216 5 days ago |
5-66998 5 days |
| 38881 |
yuanyi-350 author:yuanyi-350 |
refactor(MeasureTheory): golf `Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic` |
- shortens `stronglyMeasurable_in_set` by inlining the restricted approximation sequence and folding the `hg_eq` / `hg_zero` helper lemmas into the two `by_cases` branches
Extracted from #38104
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
t-measure-probability
|
7/13 |
Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
RemyDegenne assignee:RemyDegenne |
5-64668 5 days ago |
29-20113 29 days ago |
29-19895 29 days |
| 31222 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra): `Hom` commute with flat base change |
In this PR, we proved `Hom_S (M \tensor S, N \tensor S)` is base change of `Hom_R (M, N)` with respect to `LinearMap.baseChangeHom`.
Co-authored-by: Wang Jingting
---
- [x] depends on: #31218
- [x] depends on: #31219
- [x] depends on: #31696
[](https://gitpod.io/from-referrer/)
|
large-import
t-algebra
label:t-algebra$ |
49/0 |
Mathlib/Algebra/Module/FinitePresentation.lean |
1 |
5 |
['github-actions', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot'] |
kim-em assignee:kim-em |
5-34165 5 days ago |
31-74858 31 days ago |
31-74906 31 days |
| 39185 |
ooovi author:ooovi |
feat(Geometry/Convex/Cone/Pointed): faces of pointed cones |
- Define PointedCone.IsFaceOf, for a pointed cone being a face of another pointed cone.
- Prove some basic properties, that faces are extreme sets of their cone, and how they behave under intersection, map and product operations.
Co-authored-by: Martin Winter
---
split off of #33664
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry |
289/0 |
Mathlib.lean,Mathlib/Geometry/Convex/Cone/Face/Basic.lean |
2 |
4 |
['YaelDillies', 'github-actions', 'martinwintermath', 'mathlib-bors'] |
YaelDillies assignee:YaelDillies |
5-31306 5 days ago |
5-31306 5 days ago |
5-33747 5 days |
| 39067 |
mbkybky author:mbkybky |
feat(Algebra/Module): define modules admitting finite free resolutions |
We say that an `R`-module `M` has a finite free resolution if there exists an exact sequence `0 ⟶ Eₙ ⟶ ⋯ ⟶ E₀ ⟶ M ⟶ 0` such that `Eᵢ` are finite free `R`-modules.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
186/0 |
Mathlib.lean,Mathlib/Algebra/Module/Equiv/Defs.lean,Mathlib/Algebra/Module/FiniteFreeResolution/Basic.lean |
3 |
1 |
['github-actions'] |
nobody |
5-30609 5 days ago |
21-12585 21 days ago |
24-35360 24 days |
| 39369 |
pd4st8hb95-hub author:pd4st8hb95-hub |
feat: add basic fuzzy set definitions |
This PR adds a minimal `FuzzySet` API in `Mathlib/Order/FuzzySet`.
A fuzzy set is represented as an abbreviation:
`FuzzySet α L := α → L`
The file provides basic definitions and lemmas:
- `degree`
- `support`
- `core`
- `weakCut`
- `strongCut`
- membership simp lemmas
- extensionality
- basic monotonicity lemmas for weak and strong cuts
This PR intentionally does not add complement, union/intersection-specific API, normal or convex fuzzy sets, fuzzy relations, or advanced fuzzy set theory.
Validation:
- `lake build Mathlib.Order.FuzzySet`
- `#lint only docBlame docBlameThm`
Feedback on whether `Mathlib/Order/FuzzySet.lean` is the right location for this minimal API would be appreciated.
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
169/0 |
Mathlib.lean,Mathlib/Order/FuzzySet.lean |
2 |
6 |
['github-actions', 'grunweg', 'pd4st8hb95-hub', 'wwylele'] |
nobody |
5-22428 5 days ago |
16-20029 16 days ago |
16-20171 16 days |
| 39307 |
FordUniver author:FordUniver |
feat(Combinatorics/SimpleGraph/Copy): introduce `UnlabeledCopy` carrier subtype |
Adds `abbrev UnlabeledCopy A B := {B' : B.Subgraph // Nonempty (A ≃g B'.coe)}` and uses it to replace the previous inline filter-set body of `copyCount G H`. Drops the now unused legacy Finset-image bridge `copyCount_eq_card_image_copyToSubgraph`. Adds `uniqueUnlabeledCopyBot` instance so `copyCount_bot` is a one-liner via `Fintype.card_unique`.
Co-authored-by: Malte Jackisch <45597826+MaltyBlanket@users.noreply.github.com>
---
**Step 1/5 of the `Copy` / `InducedCopy` refactor-feat stack.**
This PR isolates the `UnlabeledCopy` type introduction and the count's type-form redefinition from the larger rename/convention work in the rest of the stack. Note that resolving the current clash in naming (`Copy` and `UnlabeledCopy` vs `labelledCopyCount` and `copyCount`) is part of #38745.
|
t-combinatorics
maintainer-merge
|
32/30 |
Mathlib/Combinatorics/SimpleGraph/Copy.lean |
1 |
8 |
['FordUniver', 'YaelDillies', 'github-actions', 'mathlib-bors', 'mathlib-merge-conflicts', 'mitchell-horner'] |
nobody |
5-18059 5 days ago |
7-44423 7 days ago |
17-53344 17 days |
| 39288 |
FordUniver author:FordUniver |
feat(Combinatorics/SimpleGraph/Subgraph): add `Embedding.ofIsInduced` and `IsInduced.map` |
Three additions to the `SimpleGraph.Subgraph` API for induced subgraphs. `Embedding.ofIsInduced` is the canonical embedding of an induced subgraph into its ambient graph, paired with `toHom_ofIsInduced` and `ofIsInduced_apply` lemmas. This is the embedding counterpart of `Subgraph.hom`, which only produces a homomorphism because non-induced subgraphs do not reflect adjacency. `Subgraph.IsInduced.map` then records that the image of an induced subgraph under a graph embedding is induced, strengthened to `IsInduced.map_iff` for the iso case.
Co-authored-by: Malte Jackisch <45597826+MaltyBlanket@users.noreply.github.com>
---
**Orthogonal pre-requisite of the `Copy` / `InducedCopy` refactor-feat stack.**
Extracted as a prerequisite from #38631 that is otherwise independent of the wider `Copy` / `InducedCopy` refactor-feat stack. |
t-combinatorics |
27/4 |
Mathlib/Combinatorics/SimpleGraph/Copy.lean,Mathlib/Combinatorics/SimpleGraph/Subgraph.lean |
2 |
16 |
['FordUniver', 'SnirBroshi', 'github-actions', 'mathlib-bors', 'mathlib-merge-conflicts'] |
nobody |
5-17523 5 days ago |
7-44039 7 days ago |
18-79737 18 days |
| 39690 |
b-mehta author:b-mehta |
feat(Analysis/Complex/Exponential): add new bounds on exponential |
We add new upper bounds on Real.exp in terms of 2x/(2+x), and use these to move some bounds on log higher in mathlib.
We also add a lemma for the common bound (1+1/n)^n <= e, though this is a special-case of `one_sub_div_pow_le_exp_neg` (immediately before), but is added for convenience and discoverability, as this is a "well-known" bound.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
36/11 |
Mathlib/Analysis/Complex/Exponential.lean,Mathlib/Analysis/Complex/ExponentialBounds.lean,Mathlib/Analysis/SpecialFunctions/Log/Basic.lean,Mathlib/Analysis/SpecialFunctions/Log/Deriv.lean |
4 |
3 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
5-15824 5 days ago |
5-15863 5 days ago |
8-71951 8 days |
| 39935 |
FordUniver author:FordUniver |
feat(Combinatorics/SimpleGraph/Finite): LocallyFiniteOrder |
Adds an order-theoretic `LocallyFiniteOrder (SimpleGraph V)` instance (closed intervals are finite), distinct from the existing graph-theoretic `LocallyFinite` (vertex degrees) already in this file. The instance takes `DecidableLE` as an explicit hypothesis rather than routing through `Classical`, because per-graph `DecidableRel G.Adj` is value-dependent and cannot be a free global instance.
Co-authored-by: Malte Jackisch <45597826+MaltyBlanket@users.noreply.github.com>
---
Came up while writing a Möbius inversion between copy counts and induced copy counts ([WIP](https://github.com/FordUniver/mathlib4/pull/36/changes)) that sums over the closed interval `Finset.Icc G ⊤` of supergraphs. Decidability of the order plus local-finiteness of the lattice felt like a clean standalone piece to land first, before the rest of the Möbius file.
Less sure about what the conventions for declaring type class instances are in mathlib, let me know if this is not of the expected shape or should not be included at all. |
t-combinatorics |
20/0 |
Mathlib/Combinatorics/SimpleGraph/Finite.lean |
1 |
1 |
['github-actions'] |
nobody |
5-12939 5 days ago |
5-14284 5 days ago |
5-14066 5 days |
| 39907 |
Hagb author:Hagb |
feat(Order/InititalSeg): `PrincipalSeg` is trichotomous for well orders |
For any two well orders, one is a principal segment of the other, or they are isomorphic.
Suggested by @vihdzp in the review of #39545
https://github.com/leanprover-community/mathlib4/pull/39545#discussion_r3262466782. It may slightly simplify the proof of `infinite_iff_nonempty_relEmbedding_of_isWellOrder`.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
7/0 |
Mathlib/Order/InitialSeg.lean |
1 |
1 |
['github-actions', 'vihdzp'] |
nobody |
5-10951 5 days ago |
5-53261 5 days ago |
5-53043 5 days |
| 39905 |
plp127 author:plp127 |
chore(Order/CompleteBooleanAlgebra): dualize `symmDiff` theorems |
Dualize some `symmDiff` theorems, and also generalize them from `CompleteBooleanAlgebra` to `Order.Coframe`.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
76/39 |
Mathlib/Order/CompleteBooleanAlgebra.lean |
1 |
3 |
['github-actions', 'plp127', 'vihdzp'] |
nobody |
5-9898 5 days ago |
5-65262 5 days ago |
5-65044 5 days |
| 37071 |
ericluap author:ericluap |
feat: Dedekind completion of rationals is isomorphic to EReal |
|
t-order
new-contributor
|
128/4 |
Mathlib.lean,Mathlib/Data/EReal/Basic.lean,Mathlib/Data/EReal/DedekindCut.lean,Mathlib/Order/Completion.lean |
4 |
59 |
['ericluap', 'github-actions', 'plp127', 'vihdzp', 'wwylele'] |
vihdzp assignee:vihdzp |
5-571 5 days ago |
21-11729 21 days ago |
44-6699 44 days |
| 39724 |
vihdzp author:vihdzp |
feat: finite sets are closed under directed suprema |
As are chains of length ≤ ω.
---
We don't prove `Set.Finite.dirSupClosed` via `DirectedOn.finite_le`, in order to save a few imports.
[](https://gitpod.io/from-referrer/)
|
file-removed
t-order
|
239/31 |
Mathlib.lean,Mathlib/Data/Fintype/Order.lean,Mathlib/Order/Cofinal.lean,Mathlib/Order/DirSupClosed/Basic.lean,Mathlib/Order/DirSupClosed/Finite.lean,Mathlib/Order/IsNormal.lean,Mathlib/SetTheory/Cardinal/Cofinality/Club.lean,Mathlib/SetTheory/Cardinal/Cofinality/Ordinal.lean,Mathlib/Topology/Order/ScottTopology.lean |
9 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
4-85909 4 days ago |
4-85946 4 days ago |
8-19313 8 days |
| 35217 |
kim-em author:kim-em |
feat: auxiliary lemmas for Artin and braid groups |
This PR adds small lemmas to existing files, in preparation for the Artin groups and braid groups PRs.
- `Commute.mul_pow_eq_one`: for commuting elements with `a ^ m = 1` and `b ^ m = 1`
- `Equiv.Perm.swap_conjugate`: braid relation for adjacent transpositions
- `Equiv.Perm.swap_mul_swap_comm_of_disjoint`: disjoint transpositions commute
- `@[grind =]` attributes on `Perm.mul_apply`, `Perm.one_apply`; new `Perm.pow_add_one_apply`
- `Subgroup.normalClosure_singleton_one`
- `FreeGroup.ofList` and associated lemmas
- `FreeGroup.freeGroupUnitMulEquivInt`
- `PresentedGroup.instUniqueOfIsEmpty`
- `CoxeterMatrix.Aₙ_adjacent`, `CoxeterMatrix.Aₙ_far`
🤖 Prepared with Claude Code |
t-group-theory
LLM-generated
|
98/2 |
Mathlib/Algebra/Group/Commute/Defs.lean,Mathlib/Algebra/Group/End.lean,Mathlib/Algebra/Group/Subgroup/Basic.lean,Mathlib/GroupTheory/Coxeter/Matrix.lean,Mathlib/GroupTheory/FreeGroup/Basic.lean,Mathlib/GroupTheory/Perm/Cycle/Basic.lean,Mathlib/GroupTheory/PresentedGroup.lean |
7 |
17 |
['eric-wieser', 'github-actions', 'kim-em', 'mathlib-merge-conflicts', 'themathqueen'] |
thorimur assignee:thorimur |
4-85701 4 days ago |
4-85613 4 days ago |
25-78626 25 days |
| 39533 |
b-mehta author:b-mehta |
feat(Data/Finset/Image): add image_comp and image_comp_image |
The statement `image_comp` is worth adding because it matches the Set version, and also is more useful for rewriting in the forward direction.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
13/0 |
Mathlib/Data/Finset/Image.lean,Mathlib/Data/Set/Image.lean |
2 |
5 |
['b-mehta', 'github-actions', 'j-loreaux', 'themathqueen'] |
nobody |
4-83403 4 days ago |
7-5271 7 days ago |
8-11190 8 days |
| 39865 |
eliasjudin author:eliasjudin |
feat(Algebra): add eval API parity lemmas |
Adds two eval API parity lemmas from #23044: `MvPolynomial.hom_eval₂`, parallel to `Polynomial.hom_eval₂`, and `Polynomial.eval₂RingHom_comp_C`, parallel to `MvPolynomial.eval₂Hom_comp_C`.
This addresses the eval portion of #23044; the degree-name discussion there is left for separate work.
|
t-algebra
new-contributor
label:t-algebra$ |
10/0 |
Mathlib/Algebra/MvPolynomial/Eval.lean,Mathlib/Algebra/Polynomial/Eval/Defs.lean |
2 |
2 |
['github-actions'] |
nobody |
4-82041 4 days ago |
6-39348 6 days ago |
6-39130 6 days |
| 37870 |
Jun2M author:Jun2M |
feat(Combinatorics/Graph): `Simple` typeclass for `Graph` |
This PR introduces two type classes on `Graph`: `Loopless` and `Simple`.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
92/0 |
Mathlib.lean,Mathlib/Combinatorics/Graph/Simple.lean |
2 |
8 |
['Jun2M', 'YaelDillies', 'github-actions', 'mathlib-merge-conflicts'] |
YaelDillies assignee:YaelDillies |
4-81780 4 days ago |
31-63210 31 days ago |
51-11025 51 days |
| 39802 |
vihdzp author:vihdzp |
feat: more theorems on `toBoolRing` |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
23/0 |
Mathlib/Algebra/Ring/BooleanRing.lean |
1 |
3 |
['github-actions', 'plp127'] |
nobody |
4-78645 4 days ago |
4-78780 4 days ago |
6-33112 6 days |
| 39727 |
vihdzp author:vihdzp |
feat: stationary sets |
We define stationary sets as sets intersecting all club sets, and prove basic theorems about them.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory
maintainer-merge
|
154/22 |
Mathlib/Order/Cofinal.lean,Mathlib/SetTheory/Cardinal/Cofinality/Club.lean |
2 |
7 |
['YaelDillies', 'github-actions', 'vihdzp'] |
nobody |
4-77685 4 days ago |
8-15231 8 days ago |
9-72369 9 days |
| 38231 |
NoneMore author:NoneMore |
feat(ModelTheory/Definablity): add syntax-to-definability bridge lemmas |
Add bridge lemmas from syntax to definability and refactor downstream proofs to use them.
---
[](https://gitpod.io/from-referrer/) |
t-logic |
88/56 |
Mathlib/ModelTheory/Definability.lean,Mathlib/ModelTheory/ElementarySubstructures.lean |
2 |
1 |
['github-actions'] |
nobody |
4-66300 4 days ago |
43-50984 43 days ago |
43-50766 43 days |
| 38815 |
dagurtomas author:dagurtomas |
feat(Tactic/CategoryTheory): extend `@[to_app]` to natural transformations |
This extends the `@[to_app]` attribute so it also generates componentwise lemmas from equalities of natural transformations between functors, while preserving the existing bicategory behavior. It also ensures generated component lemmas remain usable by dsimp when they are definitionally true. |
t-category-theory
LLM-generated
t-meta
|
148/22 |
Mathlib/Tactic/CategoryTheory/ToApp.lean,Mathlib/Util/AddRelatedDecl.lean,MathlibTest/CategoryTheory/ToApp.lean |
3 |
1 |
['github-actions'] |
nobody |
4-66296 4 days ago |
31-5399 31 days ago |
31-5235 31 days |
| 32282 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Angle/Incenter): unoriented angle bisection |
Add lemmas giving unoriented angles involving the incenter and excenters of a triangle as expressions involving dividing angles of the triangle by 2, deduced from oriented bisection lemmas.
---
- [ ] depends on: #30981
- [ ] depends on: #30982
- [ ] depends on: #31205
- [ ] depends on: #32019
- [ ] depends on: #32021
- [ ] depends on: #32259
- [ ] depends on: #32260
- [ ] depends on: #32270
- [ ] depends on: #32273
- [ ] depends on: #32278
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
98/0 |
Mathlib/Geometry/Euclidean/Angle/Incenter.lean |
1 |
8 |
['github-actions', 'jsm28', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot', 'wwylele'] |
eric-wieser assignee:eric-wieser |
4-65158 4 days ago |
66-3852 66 days ago |
66-4370 66 days |
| 35868 |
Raph-DG author:Raph-DG |
feat(Topology): add variant of the sheaf condition which assumes non triviality of the cover |
In this PR we add in a variant of the sheaf condition which assumes the cover present in the sheaf condition is nontrivial in the sense that the indexing type is nonempty and the values of the presheaf on each element of the cover are nonempty.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
54/0 |
Mathlib/Topology/Sheaves/SheafCondition/UniqueGluing.lean |
1 |
5 |
['Raph-DG', 'chrisflav', 'github-actions'] |
alreadydone assignee:alreadydone |
4-65156 4 days ago |
31-38874 31 days ago |
37-16122 37 days |
| 37714 |
mortarsanjaya author:mortarsanjaya |
feat(Algebra/Order/Floor/Defs): `Nat.cast` is strictly monotone in `FloorSemiring` and `FloorRing` |
As title says, and without the `IsOrderedRing` assumption.
Other than that, I removed the `IsOrderedRing` assumption from pretty much all the lemmas in `Algebra/Order/Floor/Defs` that could possibly have this assumption removed, and reduced some `IsStrictOrderedRing` assumptions to `IsOrderedRing` + `Nontrivial`.
Due to strict monotonicity, we can also provide `CharZero` instance on `FloorSemiring` and `FloorRing`. Thus we can remove the `NeZero` and `Nontrivial` instances on them.
The changes on `/Ring` and `/Semiring` are trivial changes due to some lemmas not requiring an `IsOrderedRing` instance anymore.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
96/39 |
Mathlib/Algebra/ContinuedFractions/Computation/Approximations.lean,Mathlib/Algebra/ContinuedFractions/Computation/TerminatesIffRat.lean,Mathlib/Algebra/Order/Floor/Defs.lean,Mathlib/Algebra/Order/Floor/Ring.lean,Mathlib/Algebra/Order/Floor/Semiring.lean |
5 |
24 |
['dagurtomas', 'eric-wieser', 'github-actions', 'mathlib-bors', 'mortarsanjaya'] |
riccardobrasca assignee:riccardobrasca |
4-65150 4 days ago |
31-25670 31 days ago |
55-24942 55 days |
| 38049 |
WilliamCoram author:WilliamCoram |
feat: lemmas towards showing gaussNorm on MvPowerSeries is an absolute value |
We prove lemmas: ``gaussNorm_mul_le`` and ``gaussNorm_le_mul`` which will allow us to show it is an absolute value on Mv restricted power series.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
144/1 |
Mathlib/RingTheory/MvPowerSeries/GaussNorm.lean |
1 |
4 |
['WilliamCoram', 'github-actions'] |
riccardobrasca assignee:riccardobrasca |
4-65148 4 days ago |
48-8539 48 days ago |
48-8321 48 days |
| 38432 |
SnirBroshi author:SnirBroshi |
feat(Logic/Relation): `Map r f g ≤ s ↔ r ≤ s.bicompl f g` |
and the dual `s ≤ Relation.Map r f g ↔ s.bicompl f g ≤ r` which requires `f` and `g` to be bijective.
Adds `Galois{Connection/Insertion/Coinsertion}` for the dual.
The theorems are specialized to `onFun` instead of `bicompl` for when `f = g`.
The `≤` theorems are spelled using `Subrelation` since `≤` is not yet available in this file, and `∀` for the `bicompl` theorems since `Subrelation` only supports homogeneous relations.
A `GaloisConnection` for the iff in the title requires `f`/`g` to be bijective, but then we can get an `OrderIso` which is stronger (see #38499).
---
[](https://gitpod.io/from-referrer/)
|
t-logic |
119/28 |
Mathlib/Logic/Relation.lean,Mathlib/Order/GaloisConnection/Basic.lean |
2 |
3 |
['SnirBroshi', 'github-actions', 'plp127'] |
fpvandoorn assignee:fpvandoorn |
4-65146 4 days ago |
37-52411 37 days ago |
38-73615 38 days |
| 39294 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): prove LanguageOn monotonicity under intersection |
In symbolic dynamics.
This PR proves that taking the language over a finite shape is monotone with respect to intersections of configuration sets:
```math
\mathrm{LanguageOn}(X \cap Y)\, U
\subseteq
\mathrm{LanguageOn}\, X\, U \cap \mathrm{LanguageOn}\, Y\, U
```
The proof is a direct unfolding of definitions: a pattern in the language of `X ∩ Y` comes from restricting a configuration `x ∈ X ∩ Y`. Since such an `x` belongs simultaneously to `X` and `Y`, the same restriction witness gives membership both in `LanguageOn X U` and in `LanguageOn Y U`, yielding membership in their intersection.
Related to issue #39252 |
t-dynamics
new-contributor
|
9/1 |
Mathlib/Dynamics/SymbolicDynamics/Basic.lean |
1 |
2 |
['github-actions'] |
ADedecker assignee:ADedecker |
4-65142 4 days ago |
19-33788 19 days ago |
19-33570 19 days |
| 39411 |
JovanGerb author:JovanGerb |
feat(Push): allow pushing `∀` through `∃` |
This PR adds `Classical.skolem` to the `push` set. This allows pusing a forall through an exists, which can sometimes be convenient.
This PR also removes `forall_self_imp` from the `push` set. I'm not sure why I added it in the first place - I think it is out of scope.
This PR also fixes a subtle bug in `push` which causes `push` to not be idempotent. Namely that the default value of `post` returns `.done` instead of `.continue`, causing the tactic to stop earlier than it should/
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
9/3 |
Mathlib/Tactic/Push.lean,MathlibTest/Tactic/Push/Basic.lean |
2 |
3 |
['github-actions', 'mathlib-merge-conflicts'] |
dwrensha assignee:dwrensha |
4-65141 4 days ago |
10-26871 10 days ago |
0-6372 1 hour |
| 39473 |
faenuccio author:faenuccio |
feat(Topology.Homeomorph.Lemmas): add lemmas about `coe` and `IsHomeomorph` |
Add lemmas `IsHomeomorph.coe_equiv` and `IsHomeomorph.coe_inv`
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
7/1 |
Mathlib/Topology/Homeomorph/Lemmas.lean |
1 |
2 |
['ADedecker', 'github-actions'] |
alreadydone assignee:alreadydone |
4-65139 4 days ago |
16-182 15 days ago |
15-86364 15 days |
| 39903 |
akiezun author:akiezun |
feat(NumberTheory): add almost prime numbers |
Adds Nat.IsAlmostPrime k n for natural numbers with exactly k prime factors counted with multiplicity, plus
Nat.IsAtMostAlmostPrime and Nat.IsSemiprime. The definitions reuse the existing arithmetic function Ω, and the initial
API proves the basic zero/one cases, prime examples, and closure under multiplication.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-number-theory
|
87/0 |
Mathlib.lean,Mathlib/NumberTheory/AlmostPrime.lean |
2 |
5 |
['SnirBroshi', 'akiezun', 'github-actions', 'vihdzp'] |
loefflerd assignee:loefflerd |
4-65135 4 days ago |
5-67207 5 days ago |
5-66989 5 days |
| 39953 |
plp127 author:plp127 |
feat(RingTheory/Valuation): embedding of valuation groups |
We show that if `vR` and `vA` are valuations satisfying `vR.HasExtension vA`, then there is an induced embedding of the valuation groups compatible with the valuations and with the extension.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
39/1 |
Mathlib/Algebra/Group/WithOne/Defs.lean,Mathlib/RingTheory/Valuation/Extension.lean |
2 |
2 |
['github-actions', 'plp127'] |
nobody |
4-63514 4 days ago |
4-63760 4 days ago |
4-63588 4 days |
| 36507 |
BryceT233 author:BryceT233 |
feat(RingTheory/MvPowerSeries): various equivalences for `MvPowerSeries` |
This PR adds a number of equivalences related to power series rings and is patterned after `Mathlib/Algebra/MvPolynomial/Equiv.lean`.
To be specific, it adds:
* `MvPowerSeries.isEmptyEquiv` : The isomorphism between multivariable power series
in no variables and the ground ring.
* `MvPowerSeries.uniqueEquiv` : The isomorphism between multivariable power series
in a single variable and power series over the ground ring.
* `MvPowerSeries.mapEquiv`, `MvPowerSeries.mapAlgEquiv` : The isomorhism between
multivariable power series induced by an isomorphism between the coefficient rings.
* `MvPowerSeries.sumAlgEquiv` : The isomorphism between multivariable power series
in a sum of two types, and multivariable power series in one of the types,
with coefficients in multivariable power series in the other type.
* `MvPowerSeries.commAlgEquiv` : The isomorphism between multivariable power series
in variables `σ` of multivariable power series in variables `τ` and multivariable power series
in variables `τ` of multivariable power series in variables `σ`.
* `MvPowerSeries.optionEquivLeft` : The isomorphism between multivariable power series
in `Option σ` and power series with coefficients in `MvPowerSeries σ R`.
* `MvPowerSeries.optionEquivRight` : The isomorphism between multivariable power series
in `Option σ` and multivariable power series in `σ` with coefficients in `PowerSeries R`
* `MvPowerSeries.finSuccEquiv` : The isomorphism between multivariable power series
in `Fin (n + 1)` and power series over multivariable power series in `Fin n`.
---
[](https://gitpod.io/from-referrer/)
- [x] depends on: #35329
- [x] depends on: #36506 |
t-ring-theory |
596/4 |
Mathlib/RingTheory/MvPowerSeries/Basic.lean,Mathlib/RingTheory/MvPowerSeries/Equiv.lean |
2 |
27 |
['AntoineChambert-Loir', 'BryceT233', 'Thmoas-Guan', 'WenrongZou', 'YaelDillies', 'eric-wieser', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
mattrobball assignee:mattrobball |
4-54798 4 days ago |
4-54853 4 days ago |
55-7710 55 days |
| 38200 |
Parcly-Taxel author:Parcly-Taxel |
feat: Turán numbers and their strict monotonicity |
`strictMonoOn_turanNumber` was initially proved by @Aristotle-Harmonic, then hand-polished.
Co-authored-by: Aristotle (Harmonic) |
t-combinatorics |
45/21 |
Mathlib/Combinatorics/SimpleGraph/Extremal/Turan.lean |
1 |
5 |
['Parcly-Taxel', 'github-actions', 'mathlib-merge-conflicts', 'tb65536'] |
nobody |
4-53221 4 days ago |
4-53260 4 days ago |
42-82136 42 days |
| 38086 |
dagurtomas author:dagurtomas |
feat(CategoryTheory): composition of profunctors |
---
- [x] depends on: #38085
- [x] depends on: #38382
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
365/0 |
Mathlib.lean,Mathlib/CategoryTheory/Profunctor/Comp.lean,Mathlib/Logic/Relation.lean |
3 |
16 |
['adamtopaz', 'dagurtomas', 'github-actions', 'mathlib-dependent-issues', 'robin-carlier'] |
robin-carlier assignee:robin-carlier |
4-48499 4 days ago |
4-48243 4 days ago |
17-74761 17 days |
| 39133 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra/ModuleCat): exactness of restrictScalars for general universe level |
Currently exactness of `ModuleCat.restrictScalars` is synth via being adjoint functor, however this needs the universe level to be some `max u v` where `u` is the universe level of the ring. Here we provide exactness of restrictScalars for general universe level using it preserves short exact sequence.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
46/0 |
Mathlib.lean,Mathlib/Algebra/Category/ModuleCat/ChangeOfRingsExact.lean |
2 |
1 |
['github-actions'] |
nobody |
4-47716 4 days ago |
22-53713 22 days ago |
22-53495 22 days |
| 37374 |
NoneMore author:NoneMore |
feat(Topology/DerivedSet): add relative derived set lemmas |
Add `relDerivedSet`, `relDerivedSet_subset`, and `IsClosed.relDerivedSet_eq`.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
17/0 |
Mathlib/Topology/DerivedSet.lean |
1 |
7 |
['NoneMore', 'github-actions', 'plp127', 'vihdzp'] |
fpvandoorn assignee:fpvandoorn |
4-45856 4 days ago |
4-45924 4 days ago |
62-10411 62 days |
| 38583 |
kim-em author:kim-em |
feat(LinearAlgebra/Matrix/GeneralLinearGroup): polynomial functions on matrices over an infinite field are determined by their values on GL |
This PR adds `MvPolynomial.eq_of_eval_eq_on_gl`: two polynomials in `MvPolynomial (m × m) k` over an infinite field `k` are equal whenever their evaluations agree at every invertible matrix.
The proof multiplies by the generic determinant `det (Matrix.mvPolynomialX m m k)` so that `MvPolynomial.funext` applies (covering both invertible and non-invertible specializations of the variables), then divides by it (it is nonzero by `Matrix.det_mvPolynomialX_ne_zero`) using that the polynomial ring is an integral domain.
The lemma is useful when reasoning about polynomial representations of `GL n k`, where natural identities are easiest to check on `GL n k` itself but the final statement lives at the level of polynomials.
The lemma is placed in a new file `Mathlib/LinearAlgebra/Matrix/GeneralLinearGroup/MvPolynomial.lean` because the existing `Mathlib/LinearAlgebra/Matrix/MvPolynomial.lean` is upstream of `Adjugate`, which is itself upstream of `GeneralLinearGroup.Defs` — so we cannot import `GeneralLinearGroup.Defs` from `Matrix.MvPolynomial` without creating a cycle.
🤖 Prepared with Claude Code |
t-algebra
maintainer-merge
label:t-algebra$ |
60/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/GeneralLinearGroup/MvPolynomial.lean,Mathlib/LinearAlgebra/Matrix/MvPolynomial.lean |
3 |
10 |
['SnirBroshi', 'dagurtomas', 'github-actions', 'kim-em', 'wwylele'] |
dagurtomas assignee:dagurtomas |
4-45716 4 days ago |
4-83179 4 days ago |
20-68023 20 days |
| 38596 |
JJYYY-JJY author:JJYYY-JJY |
Add basic row-equivalence and echelon-form API for matrices |
This PR adds the first foundational slice of `Mathlib.LinearAlgebra.Matrix.Echelon`, a theorem-oriented API for elementary row operations, row-equivalence, and echelon-form predicates for matrices.
The main additions are:
* elementary row-scaling matrices and their `GL` versions;
* `Matrix.RowEquivalent` for the left action of `GL m R` on rectangular matrices;
* row-zero, pivot, echelon, and reduced-echelon predicates;
* semantic representative predicates `Matrix.IsEchelonFormOf` and `Matrix.IsReducedEchelonFormOf`.
This intentionally stops before row-space characterizations, existence and uniqueness of reduced echelon representatives, and the noncomputable canonical representative `Matrix.rref`; those are planned for later PRs.
Co-authored-by: Joseph Qian
Co-authored-by: Veer Shukla
Co-authored-by: Dhruv Bhatia
Co-authored-by: Zheng Wu <1036819072@qq.com>
---
This update trims the original full row-reduction API in response to reviewer feedback that the PR was too large. It keeps only the foundation needed by later row-reduction and `rref` PRs. |
t-algebra
new-contributor
label:t-algebra$ |
312/6 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/Echelon.lean,Mathlib/LinearAlgebra/Matrix/Transvection.lean |
3 |
10 |
['JJYYY-JJY', 'SnirBroshi', 'copilot-pull-request-reviewer', 'dagurtomas', 'github-actions', 'wwylele'] |
nobody |
4-45319 4 days ago |
18-71245 18 days ago |
26-46450 26 days |
| 39841 |
hawkrobe author:hawkrobe |
feat(RingTheory/HopfAlgebra): Construction on primitive elements |
Adds `HopfAlgebra.ofPrimitives` which builds a Hopf algebra structure on a bialgebra generated by primitive elements, given a candidate anti-algebra hom that sends each generator to its negation.
---
The commutative case with `.ofAlgHom` gets this for free via `ext` but the non-commutative case needs extra work.
* [ ] depends on: #39785 |
t-ring-theory
new-contributor
|
314/20 |
Mathlib.lean,Mathlib/RingTheory/Bialgebra/Primitive.lean,Mathlib/RingTheory/HopfAlgebra/Basic.lean,Mathlib/RingTheory/HopfAlgebra/Generators.lean,Mathlib/RingTheory/HopfAlgebra/Primitive.lean,Mathlib/RingTheory/HopfAlgebra/TensorProduct.lean |
6 |
2 |
['github-actions'] |
nobody |
4-42454 4 days ago |
5-4412 5 days ago |
7-1610 7 days |
| 38052 |
WenrongZou author:WenrongZou |
feat(FormalGroup): `F(X,0)=X` and `F(0,X)=X` |
In this PR, I prove that given a formal group law `F`, then `F(X,0) = X` and `F(0,X) = X`. And modify the definition of `FormalGroup.Point` to be a subtype. And prove that this subtype is a `AddZeroClass`. Eventually we will prove that this is a `AddGroup`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
253/33 |
Mathlib/RingTheory/FormalGroup/Basic.lean,Mathlib/RingTheory/MvPowerSeries/Substitution.lean,Mathlib/RingTheory/PowerSeries/Basic.lean,Mathlib/RingTheory/PowerSeries/Evaluation.lean,Mathlib/RingTheory/PowerSeries/Substitution.lean |
5 |
19 |
['WenrongZou', 'eric-wieser', 'github-actions', 'mariainesdff', 'mathlib-merge-conflicts'] |
mattrobball assignee:mattrobball |
4-37932 4 days ago |
4-37973 4 days ago |
47-48772 47 days |
| 38228 |
kim-em author:kim-em |
ci: block merging PRs that increase technical debt unless reviewed |
This PR adds a merge gate for technical debt increases.
When the existing technical debt metrics script reports an increase, the `build` job adds an `increases-technical-debt` label. A `check-technical-debt` job then adds `blocked-by-increases-technical-debt`, which blocks bors.
A reviewer can add `allow-increases-technical-debt` to unblock after confirming the increase is acceptable.
### Fail-closed detection
The detection greps for the *safe* patterns (`Decrease in tech debt:` / `No changes to technical debt.`) rather than for `Increase`. If `mathlib-ci` changes the script's output wording, the label is added (fail closed) rather than silently skipped (fail open).
### Labels (three-label pattern, same as #38225)
| Label | Managed by | Purpose |
|---|---|---|
| `increases-technical-debt` | `build` job (tech debt script) | Factual: this PR increases debt |
| `blocked-by-increases-technical-debt` | `check-technical-debt` job | Operational: blocks bors |
| `allow-increases-technical-debt` | Reviewer | Override: reviewer approves the increase |
Bors's `block_labels` has no conditional logic, so we need the derived `blocked-by-increases-technical-debt` label to express the conjunction "increases-technical-debt AND NOT allow-increases-technical-debt".
False positives can be reported on the [mathlib4 Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/increases-technical-debt.20label).
🤖 Prepared with Claude Code
-----------
- [x] depends on: leanprover-community/mathlib-ci#28 |
CI |
83/2 |
.github/workflows/PR_summary.yml,bors.toml |
2 |
9 |
['github-actions', 'grunweg', 'jcommelin', 'joneugster', 'kim-em', 'mathlib-dependent-issues'] |
Vierkantor and jcommelin assignee:Vierkantor assignee:jcommelin |
4-33849 4 days ago |
4-33849 4 days ago |
17-22937 17 days |
| 38594 |
ScottCarnahan author:ScottCarnahan |
feat(Algebra/Lie): grading on loop algebras |
In this PR we introduce a decomposition of a tensor product of modules induced by a decomposition of the module on the left side. This is used to produce the canonical "energy" grading on a loop Lie algebra. This will (eventually) give us the "energy" grading on smooth representations of affine algebras.
---
Should I make the tensor decomposition more ring-polymorphic?
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
144/9 |
Mathlib/Algebra/Lie/Loop.lean,Mathlib/LinearAlgebra/DirectSum/TensorProduct.lean,Mathlib/LinearAlgebra/TensorProduct/Decomposition.lean,Mathlib/LinearAlgebra/TensorProduct/Map.lean |
4 |
1 |
['github-actions'] |
ocfnash assignee:ocfnash |
4-31431 4 days ago |
4-66914 4 days ago |
4-66717 4 days |
| 39202 |
FordUniver author:FordUniver |
feat(Analysis/Calculus/Gradient): add `toDual_gradient` and companions |
Add `toDual_gradient`, `toDual_gradientWithin`, and the composed variants `toDual_comp_gradient`, `toDual_comp_gradientWithin` — the natural inverse direction of the gradient's defining equation `∇ f x := (toDual 𝕜 F).symm (fderiv 𝕜 f x)`. These identify `(toDual 𝕜 F) (∇ f x)` with `fderiv 𝕜 f x` (and the `gradientWithin` and composed forms with the corresponding fderiv versions), making the Riesz isomorphism between the two derivative views explicit. The proofs of `DifferentiableAt.hasGradientAt` and `DifferentiableWithinAt.hasGradientWithinAt` in the same file are simplified to use them.
Co-authored-by: Sebastian Pokutta <23001135+pokutta@users.noreply.github.com>
---
Came up while formalizing the descent lemma for Lipschitz-smooth functions, where being able to switch between `LipschitzWith K (fderiv ℝ f)` and `LipschitzWith K (∇ f)` is helpful, which with this PR becomes `toDual_comp_gradient ▸ (toDual ℝ F).isometry.lipschitzWith_iff K`. Also slightly simplifies two call sites in mathlib. |
maintainer-merge |
20/5 |
Mathlib/Analysis/Calculus/Gradient/Basic.lean |
1 |
5 |
['FordUniver', 'Komyyy', 'github-actions'] |
nobody |
4-29163 4 days ago |
21-17444 21 days ago |
21-17390 21 days |
| 31892 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Sphere/PolePolar): poles and polars |
Define poles and polars for spheres in Euclidean affine spaces, and set up some basic API, including in particular La Hire's theorem (`p₁` lies on the polar of `p₂` if and only if `p₂` lies on the polar of `p₁`).
Poles and polars are actually meaningful for any quadric in a projective space over any field, but I think it's reasonable to set up this theory for spheres in the Euclidean context and potentially link it in future to more general projective geometry.
---
- [x] depends on: #31891
- [x] depends on: #32296
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
159/0 |
Mathlib.lean,Mathlib/Geometry/Euclidean/Sphere/PolePolar.lean |
2 |
8 |
['Parcly-Taxel', 'github-actions', 'jsm28', 'kim-em', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
4-25709 4 days ago |
66-3841 66 days ago |
66-4383 66 days |
| 39707 |
sorrachai author:sorrachai |
chore(Data/Tree/Basic): Rename Tree to BinaryTree |
Rename `Tree` to `BinaryTree`.
This frees up the name `Tree` to cover n-ary trees in future.
We only deprecate the `def`s, and move the theorems without deprecation. |
new-contributor
t-data
|
157/62 |
Mathlib/Combinatorics/Enumerative/Catalan/Tree.lean,Mathlib/Combinatorics/Enumerative/DyckWord.lean,Mathlib/Data/Tree/Basic.lean,Mathlib/Data/Tree/Get.lean,Mathlib/Data/Tree/Traversable.lean,Mathlib/Tactic/CancelDenoms/Core.lean,docs/overview.yaml |
7 |
36 |
['b-mehta', 'eric-wieser', 'github-actions', 'sorrachai'] |
nobody |
4-24991 4 days ago |
8-16223 8 days ago |
8-30063 8 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.
- [x] depends on: #37627
- [x] depends on: #38933
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
208/2 |
Mathlib.lean,Mathlib/RingTheory/Ideal/Height.lean,Mathlib/RingTheory/Ideal/Maximal.lean,Mathlib/RingTheory/Ideal/UFD.lean,Mathlib/RingTheory/Localization/Away/Basic.lean,Mathlib/RingTheory/Localization/Away/Lemmas.lean,Mathlib/RingTheory/UniqueFactorizationDomain/Localization.lean |
7 |
28 |
['chrisflav', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mbkybky', 'tb65536'] |
chrisflav assignee:chrisflav |
4-24843 4 days ago |
6-47280 6 days ago |
70-24028 70 days |
| 39975 |
gasparattila author:gasparattila |
chore: tag `(Continuous)LinearEquiv.prodCongr_symm` with `@[simp]` |
This is consistent with the other `prodCongr`s. Note that this also changes the type of `PiLp.sumPiLpEquivProdLpPiLp_symm_apply_ofLp`, which is now fully simplified.
---
[](https://gitpod.io/from-referrer/)
|
|
5/5 |
Mathlib/LinearAlgebra/Prod.lean,Mathlib/MeasureTheory/Measure/Haar/InnerProductSpace.lean,Mathlib/Topology/Algebra/Module/Equiv.lean |
3 |
1 |
['github-actions'] |
nobody |
4-18943 4 days ago |
4-19512 4 days ago |
4-19294 4 days |
| 39973 |
tb65536 author:tb65536 |
chore(Topology/Algebra/Category/ProfiniteGrp/*): to_additivize some declarations |
This PR to_additivizes some declarations relating to profinite groups. There were a few trickier declarations that I left out of this PR for now.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-group-theory
t-topology
label:t-algebra$ |
28/3 |
Mathlib/Topology/Algebra/Category/ProfiniteGrp/Basic.lean,Mathlib/Topology/Algebra/Category/ProfiniteGrp/Completion.lean,Mathlib/Topology/Algebra/Category/ProfiniteGrp/Limits.lean |
3 |
2 |
['github-actions'] |
nobody |
4-18623 4 days ago |
4-18623 4 days ago |
4-18490 4 days |
| 39977 |
tb65536 author:tb65536 |
feat(RingTheory/RamificationInertia/Ramification): positivity of ramification index |
This PR proves positivity of the new definition ramification inertia.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
label:t-algebra$ |
27/1 |
Mathlib/RingTheory/RamificationInertia/Ramification.lean |
1 |
1 |
['github-actions'] |
nobody |
4-16309 4 days ago |
4-16309 4 days ago |
4-16093 4 days |
| 39206 |
FordUniver author:FordUniver |
feat(Analysis/Calculus/AddTorsor/AffineMap): smoothness of `AffineMap.lineMap` |
Add `AffineMap.lineMap_contDiff_uncurry` (joint smoothness in all three arguments), `AffineMap.lineMap_contDiff` (smoothness in the parameter with fixed endpoints), and the composition family `ContDiff.lineMap`, `ContDiffOn.lineMap`, `ContDiffAt.lineMap`, `ContDiffWithinAt.lineMap`, mirroring the corresponding `Continuous` family in `Mathlib.Topology.Algebra.Affine`. The uncurried and `ContDiffWithinAt` forms are tagged `@[fun_prop]` so the rest are automatically derivable. Closes the TODO at `Mathlib.MeasureTheory.Integral.CurveIntegral.Poincare:333` where the proof now reduces to `fun_prop`.
Co-authored-by: Sebastian Pokutta <23001135+pokutta@users.noreply.github.com>
---
Came up while formalizing the descent lemma for Lipschitz-smooth functions, where `Path.segment a b` being smooth on the unit interval is needed to apply FTC along the segment (#39524); `AffineMap.lineMap_contDiff` is the lemma directly used there. Two things I was genuinely not quite sure about:
1. Should the **three convenience variants** `ContDiffAt.lineMap`, `ContDiffOn.lineMap`, and `ContDiff.lineMap` be included? They are not strictly necessary but they exist for users wanting to write `h₁.lineMap h₂ hg` in dot notation by hand, and they mirror the convention of the `Continuous.lineMap` family.
2. Is `Mathlib.Analysis.Calculus.AddTorsor.AffineMap` the **right home**, and is adding `public import Mathlib.Analysis.Calculus.AddTorsor.AffineMap` to `Poincare.lean` to close the TODO reasonable? The placement mirrors the `Continuous.lineMap` family in `Mathlib.Topology.Algebra.Affine`, but hiding a `@[fun_prop]` in a file at the bottom of the hierarchy and needing to import it feels a bit off. |
t-analysis
maintainer-merge
|
57/6 |
Mathlib/Analysis/Calculus/AddTorsor/AffineMap.lean,Mathlib/MeasureTheory/Integral/CurveIntegral/Poincare.lean |
2 |
8 |
['EtienneC30', 'FordUniver', 'github-actions'] |
EtienneC30 assignee:EtienneC30 |
4-13097 4 days ago |
7-43145 7 days ago |
20-25552 20 days |
| 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
|
301/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/CategoryTheory/Map.lean,MathlibTest/CategoryTheory/Map.lean,MathlibTest/CategoryTheory/MapSimp.lean |
5 |
13 |
['adamtopaz', 'dagurtomas', 'github-actions', 'joelriou'] |
kim-em assignee:kim-em |
4-12240 4 days ago |
4-47928 4 days ago |
67-11689 67 days |
| 37344 |
vihdzp author:vihdzp |
feat: monotone function `Cardinal → α` is eventually constant |
---
- [x] depends on: #39797
[](https://gitpod.io/from-referrer/)
|
t-set-theory
t-order
|
89/1 |
Mathlib.lean,Mathlib/Data/Set/Monotone.lean,Mathlib/Logic/Small/Basic.lean,Mathlib/SetTheory/Cardinal/EventuallyConst.lean |
4 |
5 |
['YaelDillies', 'github-actions', 'mathlib-dependent-issues', 'vihdzp', 'wwylele'] |
nobody |
4-7441 4 days ago |
4-8878 4 days ago |
14-59230 14 days |
| 39982 |
riccardobrasca author:riccardobrasca |
feat: add Ideal.IsPrincipal.of_isPrincipal_pow_of_coprime |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
31/0 |
Mathlib/RingTheory/ClassGroup.lean |
1 |
1 |
['github-actions'] |
nobody |
4-4053 4 days ago |
4-3949 4 days ago |
4-4585 4 days |
| 33355 |
0xTerencePrime author:0xTerencePrime |
feat(Combinatorics/SimpleGraph/Connectivity): define vertex connectivity |
**AI Disclosure**: Developed with LLM assistance (Claude). All mathematical design decisions were made by the author.
---
This PR introduces the foundations of vertex connectivity for simple graphs, providing a counterpart to the edge connectivity theory in #32870.
### Main definitions
- `SimpleGraph.IsVertexReachable`: two vertices are `k`-vertex-reachable if they remain reachable after removing any set of strictly fewer than `k` vertices, using `G.induce sᶜ`.
- `SimpleGraph.IsVertexPreconnected`: a graph is `k`-vertex-preconnected if any two vertices are `k`-vertex-reachable.
- `SimpleGraph.IsVertexConnected`: a graph is `k`-vertex-connected if it is `k`-vertex-preconnected and has more than `k` vertices (`k + 1 ≤ ENat.card V`).
### Key lemmas
- `k = 0`: 0-connected ↔ nonempty; 0-preconnected always holds
- `k = 1`: 1-connected ↔ `Nontrivial V ∧ G.Preconnected`
- `anti` / `mono`: antitonic in `k`, monotonic in the graph |
new-contributor
t-combinatorics
LLM-generated
|
169/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/VertexConnectivity.lean |
2 |
165 |
['0xTerencePrime', 'SnirBroshi', 'SproutSeeds', 'YaelDillies', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
b-mehta assignee:b-mehta |
3-86074 3 days ago |
6-51742 6 days ago |
64-80796 64 days |
| 39807 |
vihdzp author:vihdzp |
feat: universe-heterogeneous cardinal equality |
We introduce a predicate `LiftEq a b`, with notation `a =ₗ b`, which states that two cardinals (in different universes) are equal. This serves as a single canonical spelling for `lift.{v} a = lift.{u} b` and similar incantations.
Future PRs will introduce the analogous predicates for `<` and `≤`, and a notation typeclass so the notation can be reused for `Ordinal` and `OrderType`.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
319/152 |
Mathlib/Algebra/FreeAlgebra/Cardinality.lean,Mathlib/CategoryTheory/Abelian/GrothendieckCategory/EnoughInjectives.lean,Mathlib/FieldTheory/IsAlgClosed/Classification.lean,Mathlib/LinearAlgebra/Dimension/Basic.lean,Mathlib/LinearAlgebra/Dimension/Constructions.lean,Mathlib/LinearAlgebra/Dimension/Free.lean,Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean,Mathlib/LinearAlgebra/Dimension/LinearMap.lean,Mathlib/LinearAlgebra/Dimension/StrongRankCondition.lean,Mathlib/ModelTheory/Basic.lean,Mathlib/ModelTheory/Satisfiability.lean,Mathlib/RingTheory/AlgebraicIndependent/Basic.lean,Mathlib/RingTheory/AlgebraicIndependent/RankAndCardinality.lean,Mathlib/RingTheory/AlgebraicIndependent/TranscendenceBasis.lean,Mathlib/RingTheory/LinearDisjoint.lean,Mathlib/RingTheory/Localization/Cardinality.lean,Mathlib/SetTheory/Cardinal/Aleph.lean,Mathlib/SetTheory/Cardinal/Arithmetic.lean,Mathlib/SetTheory/Cardinal/Basic.lean,Mathlib/SetTheory/Cardinal/Defs.lean,Mathlib/SetTheory/Cardinal/ENat.lean,Mathlib/SetTheory/Cardinal/Order.lean,Mathlib/SetTheory/Cardinal/ToNat.lean,Mathlib/SetTheory/Ordinal/Univ.lean,Mathlib/SetTheory/ZFC/Cardinal.lean |
25 |
2 |
['acmepjz', 'github-actions'] |
nobody |
3-81464 3 days ago |
7-3694 7 days ago |
7-3718 7 days |
| 28613 |
espottesmith author:espottesmith |
feat(Combinatorics): define undirected hypergraphs |
This PR defines undirected hypergraphs:
```
@[ext]
structure Hypergraph (α : Type*) where
/-- The vertex set -/
vertexSet : Set α
/-- The hyperedge set -/
hyperedgeSet : Set (Set α)
/-- All hyperedges must be subsets of the vertex set -/
hyperedge_isSubset_vertexSet : ∀ ⦃e⦄, e ∈ hyperedgeSet → e ⊆ vertexSet
```
In addition to the main definition, some additional definitions and related lemmas are provided:
- vertex adjacency
- hyperedge adjacency
- vertex "stars"
- special cases (loops, empty hypergraphs, trivial hypergraphs, complete hypergraphs, simple hypergraphs, k-uniform hypergraphs, and d-regular hypergraphs)
- (some) hypergraph cardinality
- subhypergraphs, induced subhypergraphs, and partial hypergraphs
This implementation is certainly bare-bones. I'm submitting this PR at this point, rather than when my developments are more fleshed out, because there has been some interest in others contributing to hypergraph formalization in mathlib.
In the near future, goals include:
- defining incidence matrices (i.e., conversion from `Hypergraph α` to `Matrix α (Set α) β`
- coersion/generalization of graph as 2-uniform hypergraph
- conversion of a hypergraph into its associated clique graph/two-section graph
- constructing the dual of a hypergraph (note: on first blush, this appears somewhat challenging, given that we define hyperedges as `Set α` rather than some other type `β`)
- rank and co-rank
- walks, paths, cycles, etc. on hypergraphs
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
286/0 |
Mathlib.lean,Mathlib/Combinatorics/Hypergraph/Basic.lean |
2 |
152 |
['SnirBroshi', 'b-mehta', 'espottesmith', 'github-actions', 'jt496', 'lauramonk', 'mathlib4-merge-conflict-bot', 'tb65536'] |
b-mehta assignee:b-mehta |
3-74111 3 days ago |
4-85711 4 days ago |
106-74142 106 days |
| 32294 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Angle/Incenter): distance from second intersection with circumcircle |
Add the following lemma: given a triangle ABC, suppose an angle bisector from A through the incenter or excenter I meets the circumcircle again at X (including the case of an external bisector at A tangent to the circle, in which case X = A). Then XB = XI (= XC, by applying this lemma again). This is a standard configuration: https://en.wikipedia.org/wiki/Incenter%E2%80%93excenter_lemma
---
- [ ] depends on: #30981
- [ ] depends on: #30982
- [ ] depends on: #32019
- [ ] depends on: #32021
- [ ] depends on: #32023
- [ ] depends on: #32270
- [ ] depends on: #32290
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
214/0 |
Mathlib/Geometry/Euclidean/Angle/Incenter.lean |
1 |
5 |
['github-actions', 'jsm28', 'mathlib-dependent-issues', 'mathlib4-merge-conflict-bot', 'peakpoint'] |
nobody |
3-73499 3 days ago |
3-73568 3 days ago |
66-4271 66 days |
| 39997 |
Whysoserioushah author:Whysoserioushah |
feat(LinearAlgebra/Projectivization/Action): More about PSL actions on projective space |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
79/0 |
Mathlib/LinearAlgebra/Projectivization/Action.lean |
1 |
1 |
['github-actions'] |
nobody |
3-68572 3 days ago |
3-68651 3 days ago |
3-68433 3 days |
| 36963 |
seewoo5 author:seewoo5 |
feat(ModularForms): SL2 action and Serre derivative |
---
[](https://gitpod.io/from-referrer/)
Equivariance of Serre derivative under SL2 action. More precisely, $$\partial_k (F|_k \gamma) = (\partial_{k} F)|_{k+2} \gamma$$. From [Sphere Packing Project](https://github.com/thefundamentaltheor3m/Sphere-Packing-Lean). |
t-number-theory
large-import
|
124/24 |
Mathlib/Analysis/Complex/UpperHalfPlane/Manifold.lean,Mathlib/Analysis/Complex/UpperHalfPlane/MoebiusAction.lean,Mathlib/NumberTheory/ModularForms/Derivative.lean |
3 |
12 |
['github-actions', 'loefflerd', 'mathlib-merge-conflicts', 'seewoo5', 'tb65536', 'wwylele'] |
tb65536 assignee:tb65536 |
3-67619 3 days ago |
3-71644 3 days ago |
29-64902 29 days |
| 36103 |
SnkXyx author:SnkXyx |
feat(Algebra/MvPolynomial/CharacteristicSet): add Characteristic Set |
This PR adds some definitions and theorems of Characteristic Set Method (also known as Wu's Method).
Definitions:
* `MvPolynomial.mainDegree`
* `MvPolynomial.initialOf`
* `MvPolynomial.reducedTo`
* `TriangulatedSet`
* `MvPolynomial.pseudo`
* `MvPolynomial.setPseudo`
* `MvPolynomial.isRemainder`
* `MvPolynomial.isSetRemainder`
* `AscendingSetTheory`
* `TriangulatedSet.isAscendingSet`
* `HasBasicSet`
* `TriangulatedSet.isCharacteristicSet`
* `MvPolynomial.List.characteristicSet`
* `MvPolynomial.List.zeroDecomposition`
Main Theorems:
* `MvPolynomial.initialOf_mul_eq`: $init_i(p \cdot q) = init_i(p) \cdot init_i(q)$ if there is no zero divisors in the coefficient ring.
* `TriangulatedSet.instWellFoundedLT`: The set of Triangulated Sets is well-founded under the lexicographic ordering.
* `MvPolynomial.pseudo_remainder_isRemainder`: The remainder $r$ of $g$ by $f$ is reduced with respect to $f$ and satisfies $init(f)^s \cdot g = q \cdot f + r$ for some $s \in \mathbb{N}$ and $q \in R[X_{\sigma}]$.
* `MvPolynomial.setPseudo_remainder_isSetRemainder`: The remainder $r$ of $g$ by a set $S$ is reduced with respect to $S$ and satisfies $(\prod S_i^{e_i}) \cdot g = \sum q_i \cdot S_i + r$ for some sequences $\{e_i\}$ and $\{q_i\}$.
* `MvPolynomial.setPseudo_remainder_eq_zero_of_mem`: The remainder of $p$ by a set $S$ is $0$ if $p \in S$.
* `MvPolynomial.List.basicSet_append_lt_of_exists_reducedToSet`: Appending an element which is reduced w.r.t. the basic set of list strictly decreases the order.
* `MvPolynomial.List.characteristicSet_isCharacteristicSet`: The computed Characteristic Set $CS$ satisfies the key algebraic property (pseudo-remainder of input polynomials is 0) and the geometric property ( $Zero(PS) \subseteq Zero(CS)$ ).
* `MvPolynomial.List.vanishingSet_eq_zeroDecomposition_union`: The zero set of a polynomial system $PS$ can be decomposed into a finite union of "quasi-varieties" defined by triangular sets:
$Zero(PS) = \bigcup_{CS \in \mathcal{ZD}} Zero(CS / \text{InitialProd}(CS))$
The PR is upstreamized from [github.com/WuProver/lean_characteristic_set](https://github.com/WuProver/lean_characteristic_set)
---
[](https://gitpod.io/from-referrer/)
- [x] depends on: #36386
- [x] depends on: #37791
|
t-algebra
new-contributor
label:t-algebra$ |
3860/0 |
Mathlib.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/AscendingSet.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/CharacteristicSet.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/Initial.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/MainDegree.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/Order.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/PseudoDivision.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/Reduce.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/StandardAscendingSet.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/TriangularSet.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/WeakAscendingSet.lean,docs/references.bib |
12 |
21 |
['Hagb', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
dagurtomas assignee:dagurtomas |
3-64720 3 days ago |
6-52956 6 days ago |
29-20459 29 days |
| 37914 |
j-loreaux author:j-loreaux |
feat: transfer `star`-related instances across equivalences |
This also adds `Function.Injective.{InvolutiveStar,...}` and related lemmas.
In addition we rename the existing `Equiv.star` to `Equiv.Perm.star` (without a deprecation) so that the name can be used for the declaration which transfers a `Star` instance across an `Equiv`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
maintainer-merge
label:t-algebra$ |
95/2 |
Mathlib.lean,Mathlib/Algebra/Star/Basic.lean,Mathlib/Algebra/Star/Pointwise.lean,Mathlib/Algebra/Star/TransferInstance.lean |
4 |
15 |
['SnirBroshi', 'github-actions', 'themathqueen'] |
dagurtomas assignee:dagurtomas |
3-64719 3 days ago |
39-5985 39 days ago |
39-7676 39 days |
| 38009 |
CBirkbeck author:CBirkbeck |
feat(RingTheory/Valuation): define the valuation spectrum and its topology |
## Summary
Define the valuation spectrum `Spv A` of a commutative ring and equip it with the topology generated by basic open sets, following Wedhorn's *Adic Spaces*. Also define the pullback (`comap`) of a `ValuativeRel` along a ring homomorphism. This is preparation for later defining adic spaces.
Note the code was generated by claude code, but I have cleaned up and pre-reviewed the work.
|
t-ring-theory
LLM-generated
|
362/0 |
Mathlib.lean,Mathlib/RingTheory/Valuation/ValuationSpectrum.lean,Mathlib/RingTheory/Valuation/ValuativeRel/Comap.lean |
3 |
40 |
['CBirkbeck', 'adamtopaz', 'chrisflav', 'dagurtomas', 'faenuccio', 'github-actions', 'jjdishere', 'riccardobrasca'] |
alreadydone assignee:alreadydone |
3-64718 3 days ago |
48-26658 48 days ago |
48-26593 48 days |
| 38098 |
astrainfinita author:astrainfinita |
chore: make `SMul.comp.smul` `implicit_reducible` |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
2/1 |
Mathlib/Algebra/Group/Action/Defs.lean |
1 |
3 |
['astrainfinita', 'github-actions', 'leanprover-radar'] |
kim-em assignee:kim-em |
3-64717 3 days ago |
46-56052 46 days ago |
46-55834 46 days |
| 38169 |
tb65536 author:tb65536 |
chore(GroupTheory/Finiteness): make `Subgroup.FG` a class |
This PR refactors `Subgroup.FG` to be a class to match `Group.FG`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-group-theory
label:t-algebra$ |
37/20 |
Mathlib/GroupTheory/Commutator/Finite.lean,Mathlib/GroupTheory/Finiteness.lean,Mathlib/GroupTheory/Rank.lean,Mathlib/GroupTheory/Schreier.lean |
4 |
10 |
['JovanGerb', 'github-actions', 'mathlib-bors', 'riccardobrasca', 'tb65536'] |
mattrobball assignee:mattrobball |
3-64716 3 days ago |
31-17397 31 days ago |
45-5338 45 days |
| 38324 |
BryceT233 author:BryceT233 |
chore(RingTheory/AdicCompletion): make `AdicCompletion.map` linear on linear maps |
This PR upgrades `AdicCompletion.map` to be an R-linear map on the space of linear maps `M →ₗ[R] N`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
38/12 |
Mathlib/RingTheory/AdicCompletion/Basic.lean,Mathlib/RingTheory/AdicCompletion/Functoriality.lean |
2 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
alreadydone assignee:alreadydone |
3-64714 3 days ago |
38-68680 38 days ago |
41-51168 41 days |
| 38380 |
linesthatinterlace author:linesthatinterlace |
feat(Data/Set): add Set.diag API |
Introduces `Set.diag (s : Set α) : Set (α × α) = {(a, a) | a ∈ s}` as the set-level companion to `Set.offDiag`, mirroring the existing `Finset.diag` / `Finset.offDiag` pairing. The type-level `Set.diagonal : Type* → Set (α × α)` is retained unchanged; `diag_univ : (univ : Set α).diag = diagonal α` (`@[simp]`) keeps it canonical when the underlying set is `univ`.
Parallels to the existing `offDiag` API (`diag_mono`, `diag_nonempty`, `diag_eq_empty`, `diag_empty`, `diag_singleton`, `diag_subset_prod`, `diag_eq_sep_prod`, `diag_inter`, `diag_union`, `diag_insert`) plus bridges `diag_union_offDiag`, `disjoint_diag_offDiag`, `prod_sdiff_diag`, `prod_sdiff_offDiag`. Also `diag_eq_image`, `image_diag` (matching `Finset.image_diag`), `preimage_coe_coe_diag`, and `Finset.coe_diag`. Note `diag_union` and `diag_insert` are unconditional (no `Disjoint` / `a ∉ s` hypothesis).
To free the `diag_` prefix for the set sense, the existing lemmas about the diagonal *map* `fun x => (x, x)` are renamed with deprecation aliases:
`range_diag` → `range_diagMap`, `diag_preimage_prod` → `diagMap_preimage_prod`, `diag_preimage_prod_self` → `diagMap_preimage_prod_self`. `diag_image` and `preimage_coe_coe_diagonal` are marked `@[deprecated]`.
This PR was prepared with the assistance of Claude Opus. |
t-data
LLM-generated
|
124/15 |
Mathlib/Data/Finset/Prod.lean,Mathlib/Data/Set/Operations.lean,Mathlib/Data/Set/Prod.lean,Mathlib/MeasureTheory/MeasurableSpace/Constructions.lean,Mathlib/Topology/Compactness/Compact.lean,Mathlib/Topology/Compactness/Lindelof.lean,Mathlib/Topology/NhdsSet.lean |
7 |
2 |
['github-actions', 'linesthatinterlace'] |
TwoFX assignee:TwoFX |
3-64713 3 days ago |
39-82811 39 days ago |
39-82593 39 days |
| 38741 |
eric-wieser author:eric-wieser |
feat: Nat.card lemmas for Sym and Sym2 |
These are just translations of the `Fintype` counterparts.
---
[](https://gitpod.io/from-referrer/)
|
t-data
maintainer-merge
|
109/7 |
Mathlib.lean,Mathlib/Data/Sym/Card.lean,Mathlib/Data/Sym/NatCard.lean,Mathlib/Data/Sym/Sym2.lean |
4 |
26 |
['SnirBroshi', 'YaelDillies', 'eric-wieser', 'github-actions', 'mathlib-merge-conflicts'] |
joneugster assignee:joneugster |
3-64712 3 days ago |
6-36898 6 days ago |
28-29882 28 days |
| 38830 |
Jun2M author:Jun2M |
feat(Data/List): Nodup and head & getLast lemmas |
Given a Nodup list:
* If a prefix contains the last element, they are equal
* If a suffix contains the first element, they are equal
* If an infix contains the first element, it is a prefix
* If an infix contains the last element, it is a suffix
* If the first and the last element are the same, it is a singleton
* `countP` is cardinality of the filter of `toFinset`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
29/0 |
Mathlib/Data/Finset/Card.lean,Mathlib/Data/List/Nodup.lean |
2 |
7 |
['SnirBroshi', 'github-actions', 'mathlib-merge-conflicts'] |
joneugster assignee:joneugster |
3-64711 3 days ago |
10-84406 10 days ago |
26-68999 26 days |
| 39347 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): refactor of Pattern and shift-invariance of shape languages for subshifts |
## Summary
This PR refactors Pattern.mulShift in Mathlib/Dynamics/SymbolicDynamics/Basic.lean and uses the cleaner definition to prove shift-invariance of the language of a subshift on a finite shape.
## Changes
Pattern.mulShift now returns a Pattern instead of a configuration (more natural).
- Old type: Pattern.mulShift : Pattern A G → G → (G → A)
- New type: Pattern.mulShift : Pattern A G → G → Pattern A G
- The result carries its support (p.support.image (v * ·)) and the
default-outside-support proof, so callers don't have to re-derive them.
The [IsLeftCancelMul G] hypothesis is moved to the lemmas that actually use it.
- The definition Pattern.mulShift itself no longer needs left-cancellation (it only
chooses a preimage noncomputably).
- The hypothesis is now stated on mulShift_config_apply_mul_left_of_mem and
mulOccursInAt_eq_cylinder directly, instead of being a section-level variable.
Renames following the type change.
- mulShift_apply_mul_left_of_mem → mulShift_config_apply_mul_left_of_mem (because we
now write (p.mulShift v).config instead of p.mulShift v).
New @[simp] and @[ext] lemmas for Pattern.
- Pattern.ext: two patterns are equal iff their supports agree and their
configurations agree on the support.
- Pattern.mulShift_support: the support of p.mulShift v is p.support.image (v * ·).
- Pattern.fromConfig_support: the support of fromConfig x U is U.
- Pattern.fromConfig_config_of_mem: on its support, fromConfig x U agrees with x.
New lemma Pattern.fromConfig_mulShift.
For a left inverse g' * g = 1, shifting the pattern fromConfig x U by g equals
fromConfig (mulShift g' x) (U.image (g * ·)).
New theorem MulSubshift.languageOn_image_mulShift.
For a subshift Y and elements g, g' with g * g' = 1 and g' * g = 1:
(fun p => p.mulShift g) '' Y.languageOn U = Y.languageOn (U.image (g * ·))
i.e. the language on the translated shape is exactly the image of the language on U
under the pattern-shift map. This gives a bijection between Y.languageOn U and
Y.languageOn (U.image (g * ·)), with inverse p ↦ p.mulShift g'. Stated for
left-cancellative monoids with an invertible element.
Updated docstrings for Pattern.mulShift and the renamed lemma to reflect the
bundled-Pattern return type and clarify which results need [IsLeftCancelMul G]. |
t-dynamics
new-contributor
|
142/48 |
Mathlib/Dynamics/SymbolicDynamics/Basic.lean |
1 |
3 |
['github-actions'] |
sgouezel assignee:sgouezel |
3-64709 3 days ago |
18-60001 18 days ago |
18-59783 18 days |
| 39588 |
jvanwinden author:jvanwinden |
feat(MeasureTheory/Measure/ProbabilityMeasure): add toProbabilityMeasure and basic API |
Introduces `Measure.toProbabilityMeasure`, which converts a `Measure` into a `ProbabilityMeasure` in the presence of the typeclass assumption `[IsProbabilityMeasure]`. Some basic API is added for the interaction between `toProbabilityMeasure` and the coercion from `ProbabilityMeasure` to `Measure`. The main convenience is that the new method allows for dot notation on `Measure`.
This PR arose from the following situation: I needed to prove equality of two `Measure` objects, and I wanted to do this by using uniqueness of limits. But the topology of weak convergence is only defined on `ProbabilityMeasure` and not on `Measure`. With the new lemma `toProbabilityMeasure_inj`, an equality of measures can easily be rewritten into an equality of the corresponding probability measures, after which `tendsto_nhds_unique` can be applied.
Aside from this, `toProbabilityMeasure` has the potential to simplify theorem statements about `Measure` objects which use the topology of weak convergence either in the assumptions or the conclusion. For example, now one can simply write `Tendsto μ.toProbabilityMeasure f (nhds μ_lim.toProbabilityMeasure)` when appropriate `[IsProbabilityMeasure]` assumptions are present.
This PR is intended as a starting point for a discussion. I only added some basic API, but perhaps more lemmas should be added (which ones?). Also, a similar definition could be made for `FiniteMeasure`.
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
19/2 |
Mathlib/MeasureTheory/Measure/ProbabilityMeasure.lean |
1 |
1 |
['github-actions'] |
kex-y assignee:kex-y |
3-64708 3 days ago |
13-879 13 days ago |
13-661 13 days |
| 39882 |
chrisflav author:chrisflav |
chore(CategoryTheory): `StructuredArrow.map₂` along equivalences induces an equivalence |
Before that we only had an instance `IsEquivalence`, this provides the full equivalence with good def-eqs for the inverse.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
maintainer-merge
|
126/2 |
Mathlib/CategoryTheory/Comma/StructuredArrow/Basic.lean |
1 |
7 |
['chrisflav', 'github-actions', 'robin-carlier'] |
robin-carlier assignee:robin-carlier |
3-64704 3 days ago |
4-82346 4 days ago |
6-7976 6 days |
| 39959 |
chrisflav author:chrisflav |
chore(CategoryTheory/Sites): make auxiliary declarations for `OneHypercoverDenseData.isSheaf_iff` private |
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
maintainer-merge
|
7/7 |
Mathlib/CategoryTheory/Sites/DenseSubsite/OneHypercoverDense.lean |
1 |
2 |
['github-actions', 'grunweg'] |
robin-carlier assignee:robin-carlier |
3-64699 3 days ago |
4-40046 4 days ago |
4-39828 4 days |
| 36643 |
Thmoas-Guan author:Thmoas-Guan |
feat(Homology): interaction of projective and injective dimension and SES |
In this PR, we directly implemented the relation of `projectiveDimension` and `injectiveDimension` in SES.
---
- [x] depends on: #36817
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
182/0 |
Mathlib/Algebra/Homology/ShortComplex/Exact.lean,Mathlib/CategoryTheory/Abelian/Injective/Dimension.lean,Mathlib/CategoryTheory/Abelian/Projective/Dimension.lean |
3 |
6 |
['dagurtomas', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
adamtopaz assignee:adamtopaz |
3-57128 3 days ago |
3-58075 3 days ago |
48-30799 48 days |
| 32058 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra): Baer criterion for injective dimension |
In this PR, we added the cateory version of Baer criterion stating that `M` is injective iff `Ext^1(R/I, M)` vanish for all ideal `I`. By dimension shifting, we also have `M` has injective dimension not exceeding `n` iff `Ext^{n + 1}(R/I, M)` vanish for all ideal `I`.
---
- [x] depends on: #36980
- [x] depends on: #39305
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-category-theory
label:t-algebra$ |
160/0 |
Mathlib.lean,Mathlib/Algebra/Category/ModuleCat/Ext/Baer.lean |
2 |
79 |
['Thmoas-Guan', 'dagurtomas', 'github-actions', 'joelriou', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib-splicebot', 'mathlib4-merge-conflict-bot'] |
joelriou assignee:joelriou |
3-56468 3 days ago |
3-58181 3 days ago |
69-10362 69 days |
| 38890 |
SnirBroshi author:SnirBroshi |
feat(Order/ConditionallyCompleteLattice/Basic): more `WithTop` instances |
Adds the following instances:
```
CompleteLattice α → CompleteLattice (WithTop α)
CompleteLinearOrder α → CompleteLinearOrder (WithBot α)
ConditionallyCompleteLinearOrder α → ConditionallyCompleteLinearOrder (WithTop α)
ConditionallyCompleteLinearOrder α → ConditionallyCompleteLinearOrderBot (WithBot α)
```
and some simp lemmas to help.
---
These `#synth`s all succeed after this PR:
(code)
```lean
variable {α : Type*} [Preorder α]
#synth Preorder αᵒᵈ
#synth Preorder <| WithTop α
#synth Preorder <| WithBot α
#synth Preorder <| WithTopBot α
#synth Preorder <| WithBotTop α
variable {α : Type*} [PartialOrder α]
#synth PartialOrder αᵒᵈ
#synth PartialOrder <| WithTop α
#synth PartialOrder <| WithBot α
#synth PartialOrder <| WithTopBot α
#synth PartialOrder <| WithBotTop α
variable {α : Type*} [LinearOrder α]
#synth LinearOrder αᵒᵈ
#synth LinearOrder <| WithTop α
#synth LinearOrder <| WithBot α
#synth LinearOrder <| WithTopBot α
#synth LinearOrder <| WithBotTop α
variable {α : Type*} [CompleteLattice α]
#synth CompleteLattice αᵒᵈ
#synth CompleteLattice <| WithTop α -- new
#synth CompleteLattice <| WithBot α
#synth CompleteLattice <| WithTopBot α
#synth CompleteLattice <| WithBotTop α
variable {α : Type*} [CompleteLinearOrder α]
#synth CompleteLinearOrder αᵒᵈ
#synth CompleteLinearOrder <| WithTop α
#synth CompleteLinearOrder <| WithBot α -- new
#synth CompleteLinearOrder <| WithTopBot α
#synth CompleteLinearOrder <| WithBotTop α
variable {α : Type*} [ConditionallyCompleteLattice α]
#synth ConditionallyCompleteLattice αᵒᵈ
#synth ConditionallyCompleteLattice <| WithTop α
#synth ConditionallyCompleteLattice <| WithBot α
#synth CompleteLattice <| WithTopBot α
#synth CompleteLattice <| WithBotTop α
variable {α : Type*} [ConditionallyCompleteLinearOrder α]
#synth ConditionallyCompleteLinearOrder αᵒᵈ
#synth ConditionallyCompleteLinearOrder <| WithTop α -- new
#synth ConditionallyCompleteLinearOrderBot <| WithBot α -- new
#synth CompleteLinearOrder <| WithTopBot α
#synth CompleteLinearOrder <| WithBotTop α
variable {α : Type*} [ConditionallyCompleteLinearOrderBot α]
#synth ConditionallyCompleteLinearOrder αᵒᵈ
#synth CompleteLinearOrder <| WithTop α
#synth ConditionallyCompleteLinearOrderBot <| WithBot α -- new
#synth CompleteLinearOrder <| WithTopBot α
#synth CompleteLinearOrder <| WithBotTop α
```
[](https://gitpod.io/from-referrer/)
|
t-order
maintainer-merge
|
89/69 |
Mathlib/Order/ConditionallyCompleteLattice/Basic.lean |
1 |
5 |
['SnirBroshi', 'YaelDillies', 'github-actions'] |
YaelDillies assignee:YaelDillies |
3-52683 3 days ago |
3-52693 3 days ago |
26-76337 26 days |
| 40005 |
tautschnig author:tautschnig |
feat(Data/ZMod/Basic): isUnit characterisation in prime power moduli |
Add two lemmas characterising units in ZMod (p^n) via divisibility of the canonical lift:
isUnit_iff_not_prime_dvd_val: for prime p and n > 0,
IsUnit x ↔ ¬ p ∣ x.val.
not_isUnit_iff_prime_dvd_val: for prime p and n > 0,
¬ IsUnit x ↔ p ∣ x.val.
These specialise the existing isUnit_iff_coprime to prime power moduli, where the coprimality condition reduces to a simple divisibility check on the unique prime factor.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
15/0 |
Mathlib/Data/ZMod/Basic.lean |
1 |
3 |
['copilot-pull-request-reviewer', 'github-actions'] |
nobody |
3-38846 3 days ago |
3-41164 3 days ago |
3-40946 3 days |
| 40006 |
tautschnig author:tautschnig |
feat(Data/ZMod/Basic): idempotents in ZMod (p^d) are exactly {0, 1} |
Add sq_eq_self_iff_eq_zero_or_one: in ZMod (p^d) for prime p and d > 0, x^2 = x iff x = 0 or x = 1.
This generalises eq_zero_or_one_of_sq_eq_self (which requires CancelMonoidWithZero, i.e., no zero divisors) to the prime-power case. ZMod (p^d) has zero divisors for d >= 2, so the mul_left_injective₀ argument used by the existing lemma does not apply. The proof works by lifting to ℕ, using that if gcd(a, b) = 1 and p^d | a*b then p^d divides one of a or b (by Euclid's lemma), then noting that a = x.val and b = x.val - 1 are consecutive naturals and hence coprime.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
56/0 |
Mathlib/Data/ZMod/Basic.lean |
1 |
2 |
['github-actions'] |
nobody |
3-36243 3 days ago |
3-36313 3 days ago |
3-36790 3 days |
| 35672 |
dennj author:dennj |
feat(RingTheory/Polynomial/Cyclotomic): vanishing sums and fiber equidistribution at primitive roots |
## Summary
Building on `sum_eq_zero_iff_forall_eq` from #34592, this PR adds:
- cyclotomic_dvd_of_aeval_eq_zero, exists_int_smul_cyclotomic_of_natDegree_le_totient — integer polynomials vanishing at a primitive n-th root are divisible by cyclotomic n ℤ, and (for degree ≤ φ(n)) integer multiples of it.
- sum_eq_zero_iff_forall_eq and its ℤ / ZMod p variants — vanishing iff all coefficients equal.
- sum_fiber_eq_sum_fiber_of_sum_weighted_pow_eq_zero, card_fiber_eq_card_div_of_sum_pow_eq_zero — fiber equidistribution.
- cyclotomic_prime_coeff — the formula (cyclotomic p R).coeff i = if i < p then 1 else 0, generalising existing coeff_zero/coeff_one lemmas.
-
References: [deLauneyFlannery2011, Lemma 2.8.5] (underlying ℚ/ℕ fact) and [armario2024, Lemma 7 and Theorem 3] (ℤ statement and the fiber-counting application).
Theorems imported from: https://github.com/Latinum-Agentic-Commerce/AlgebraicDesignTheory
Human made PR with LLM used for documentation and proof golfing |
t-ring-theory
new-contributor
LLM-generated
|
128/2 |
Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean,Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean,docs/references.bib |
3 |
7 |
['dennj', 'github-actions', 'grunweg', 'ocfnash', 'riccardobrasca'] |
riccardobrasca assignee:riccardobrasca |
3-36046 3 days ago |
26-83898 26 days ago |
45-11390 45 days |
| 37008 |
BryceT233 author:BryceT233 |
feat(RingTheory/LocalRing): `IsLocalRing` for pullbacks |
We provide basic lemmas for equalizers and pullbacks of `RingHom` and `AlgHom`, and show they are local rings under suitable condtions.
This is needed in #37940 to construct a residue algebra structure on pullbacks.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
167/0 |
Mathlib.lean,Mathlib/RingTheory/LocalRing/Pullback.lean |
2 |
6 |
['BryceT233', 'github-actions', 'riccardobrasca', 'wwylele'] |
riccardobrasca assignee:riccardobrasca |
3-35511 3 days ago |
35-74419 35 days ago |
70-42554 70 days |
| 38002 |
Raph-DG author:Raph-DG |
feat(Topology): Relating irreducible components of a space to codimension one points in non dense subsets |
In this PR we show that the coheight zero points of a sober space (in the specialization order) correspond to the irreducible components. Furthermore, we show that the coheight one points of any non dense subset p of X (in the specialization order on p) have coheight zero in the specialization order on X.
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-topology
|
113/0 |
Mathlib/Order/Hom/Basic.lean,Mathlib/Order/KrullDimension.lean,Mathlib/Order/Minimal.lean,Mathlib/Topology/Inseparable.lean,Mathlib/Topology/Sober.lean |
5 |
7 |
['ADedecker', 'Raph-DG', 'dagurtomas', 'github-actions', 'mathlib-merge-conflicts'] |
dagurtomas assignee:dagurtomas |
3-35365 3 days ago |
3-35365 3 days ago |
44-7620 44 days |
| 39428 |
harahu author:harahu |
chore: add an empty line after module headers |
This makes the docs easier to read.
---
[](https://gitpod.io/from-referrer/)
|
|
120/4 |
Archive/Imo/Imo1998Q2.lean,Archive/Imo/Imo2001Q6.lean,Archive/Imo/Imo2005Q3.lean,Archive/Imo/Imo2008Q2.lean,Archive/Imo/Imo2008Q3.lean,Archive/Imo/Imo2008Q4.lean,Counterexamples/DiscreteTopologyNonDiscreteUniformity.lean,Counterexamples/PeanoCurve.lean,Counterexamples/Pseudoelement.lean,Mathlib/Algebra/Algebra/Spectrum/Basic.lean,Mathlib/Algebra/Category/Grp/EpiMono.lean,Mathlib/Algebra/Category/ModuleCat/Stalk.lean,Mathlib/Algebra/EuclideanDomain/Field.lean,Mathlib/Algebra/EuclideanDomain/Int.lean,Mathlib/Algebra/Homology/Opposite.lean,Mathlib/Algebra/Lie/Cochain.lean,Mathlib/Algebra/Lie/Extension.lean,Mathlib/Algebra/Lie/Loop.lean,Mathlib/Algebra/MonoidAlgebra/PointwiseSMul.lean,Mathlib/Algebra/Order/AddTorsor.lean,Mathlib/Algebra/Order/Archimedean/IndicatorCard.lean,Mathlib/Algebra/Squarefree/Basic.lean,Mathlib/Algebra/Vertex/HVertexOperator.lean,Mathlib/Algebra/Vertex/VertexOperator.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/Product.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/SimplyConnected.lean,Mathlib/Analysis/Analytic/RadiusLiminf.lean,Mathlib/Analysis/Normed/Affine/Convex.lean,Mathlib/Analysis/Normed/Lp/PiLp.lean,Mathlib/Analysis/Normed/Lp/ProdLp.lean,Mathlib/Analysis/Normed/Unbundled/SeminormFromBounded.lean,Mathlib/Analysis/Normed/Unbundled/SmoothingSeminorm.lean,Mathlib/CategoryTheory/DinatTrans.lean,Mathlib/CategoryTheory/Limits/Preserves/Filtered.lean,Mathlib/CategoryTheory/Limits/Shapes/Pullback/HasPullback.lean,Mathlib/CategoryTheory/PathCategory/Basic.lean,Mathlib/CategoryTheory/Preadditive/Schur.lean,Mathlib/CategoryTheory/Sites/Abelian.lean,Mathlib/CategoryTheory/Sites/LeftExact.lean,Mathlib/CategoryTheory/Thin.lean,Mathlib/Combinatorics/Configuration.lean,Mathlib/Data/Bracket.lean,Mathlib/Data/Bundle.lean,Mathlib/Data/Finsupp/BigOperators.lean,Mathlib/Data/Nat/Squarefree.lean,Mathlib/Data/PSigma/Order.lean,Mathlib/Data/SProd.lean,Mathlib/Data/Set/Enumerate.lean,Mathlib/Data/Set/UnionLift.lean,Mathlib/Dynamics/TopologicalEntropy/CoverEntropy.lean,Mathlib/Dynamics/TopologicalEntropy/NetEntropy.lean,Mathlib/Dynamics/TopologicalEntropy/Semiconj.lean,Mathlib/FieldTheory/RatFunc/AsPolynomial.lean,Mathlib/Geometry/Manifold/Algebra/Monoid.lean,Mathlib/Geometry/Manifold/Diffeomorph.lean,Mathlib/Geometry/Manifold/IsManifold/InteriorBoundary.lean,Mathlib/GroupTheory/CommutingProbability.lean,Mathlib/LinearAlgebra/Multilinear/Curry.lean,Mathlib/LinearAlgebra/RootSystem/Finite/CanonicalBilinear.lean,Mathlib/LinearAlgebra/RootSystem/Hom.lean,Mathlib/LinearAlgebra/RootSystem/OfBilinear.lean,Mathlib/LinearAlgebra/RootSystem/RootPairingCat.lean,Mathlib/LinearAlgebra/RootSystem/WeylGroup.lean,Mathlib/Logic/Lemmas.lean,Mathlib/MeasureTheory/Function/EssSup.lean,Mathlib/MeasureTheory/Group/Prod.lean,Mathlib/ModelTheory/PartialEquiv.lean,Mathlib/NumberTheory/ClassNumber/AdmissibleAbs.lean,Mathlib/NumberTheory/ClassNumber/AdmissibleAbsoluteValue.lean,Mathlib/NumberTheory/ClassNumber/Finite.lean,Mathlib/NumberTheory/Cyclotomic/Discriminant.lean,Mathlib/NumberTheory/Cyclotomic/PrimitiveRoots.lean,Mathlib/NumberTheory/FLT/Four.lean,Mathlib/NumberTheory/FLT/Three.lean,Mathlib/NumberTheory/NumberField/Basic.lean,Mathlib/NumberTheory/NumberField/Completion/FinitePlace.lean,Mathlib/NumberTheory/NumberField/Cyclotomic/Basic.lean,Mathlib/NumberTheory/NumberField/Cyclotomic/Embeddings.lean,Mathlib/NumberTheory/NumberField/Cyclotomic/PID.lean,Mathlib/NumberTheory/NumberField/Cyclotomic/Three.lean,Mathlib/NumberTheory/NumberField/Discriminant/Basic.lean,Mathlib/NumberTheory/NumberField/Discriminant/Defs.lean,Mathlib/NumberTheory/NumberField/EquivReindex.lean,Mathlib/NumberTheory/NumberField/ExistsRamified.lean,Mathlib/NumberTheory/NumberField/House.lean,Mathlib/NumberTheory/NumberField/Norm.lean,Mathlib/NumberTheory/NumberField/Units/DirichletTheorem.lean,Mathlib/Order/Bounded.lean,Mathlib/Probability/Distributions/Uniform.lean,Mathlib/RepresentationTheory/Rep/Res.lean,Mathlib/RingTheory/AdicCompletion/RingHom.lean,Mathlib/RingTheory/Conductor.lean,Mathlib/RingTheory/Coprime/Lemmas.lean,Mathlib/RingTheory/DedekindDomain/AdicValuation.lean,Mathlib/RingTheory/DedekindDomain/FiniteAdeleRing.lean,Mathlib/RingTheory/DedekindDomain/Instances.lean,Mathlib/RingTheory/HahnSeries/Addition.lean,Mathlib/RingTheory/HahnSeries/Binomial.lean,Mathlib/RingTheory/HahnSeries/Multiplication.lean,Mathlib/RingTheory/HahnSeries/PowerSeries.lean |
120 |
3 |
['github-actions', 'grunweg', 'mathlib-merge-conflicts'] |
nobody |
3-32176 3 days ago |
4-42176 4 days ago |
11-9706 11 days |
| 37521 |
jessealama author:jessealama |
feat(Data/Part): add Part.bind_eq_some_iff |
Add `Part.bind_eq_some_iff`, the `Part` analogue of `Option.bind_eq_some_iff`. Noticed this small gap while working on some equivalence proofs with partial functions. |
t-data
maintainer-merge
|
6/0 |
Mathlib/Data/Part.lean |
1 |
7 |
['github-actions', 'jessealama', 'joneugster', 'vihdzp'] |
joneugster assignee:joneugster |
3-29507 3 days ago |
14-60760 14 days ago |
57-17375 57 days |
| 39869 |
grunweg author:grunweg |
doc: clarify the scope of `field_simp` |
The term semi-field is sufficiently non-standard that it has led to confusion whether e.g. `NNReal` is supported by field_simp: it is (as it is a semifield). Let's clarify the doc-string.
Inspired by discussions at the ICERM workshop "Techniques and Tools for the Formalization of Analysis".
---
[](https://gitpod.io/from-referrer/)
|
documentation
easy
t-meta
maintainer-merge
|
4/4 |
Mathlib/Tactic/FieldSimp.lean |
1 |
2 |
['github-actions', 'joneugster'] |
thorimur assignee:thorimur |
3-26166 3 days ago |
6-23139 6 days ago |
6-22921 6 days |
| 39876 |
kim-em author:kim-em |
feat(scripts): dump cross-reference tags to TSV for downstream review |
This PR adds `scripts/dump_crossref_tags.lean`, which walks `Mathlib.CrossRef.tagExt` in the elaborated Mathlib environment and writes one TSV record per tagged declaration. The TSV is consumed by a privileged `workflow_run` job that posts the cross-reference review PR comment; the rest of that machinery lives in https://github.com/leanprover-community/external-tags and https://github.com/leanprover-community/mathlib-ci. Fields are sanitised so tabs/newlines in user-controlled comments can't break the TSV framing, and the output is capped at 2 MB.
Uses `importModules (loadExts := true)` rather than `withImportModules`, because the wrapper passes `loadExts := false` and would leave `tagExt` empty for imported modules.
🤖 Prepared with [Claude Code](https://claude.com/claude-code) |
CI
LLM-generated
|
96/0 |
scripts/README.md,scripts/dump_crossref_tags.lean |
2 |
3 |
['github-actions', 'jcommelin', 'kim-em'] |
nobody |
3-25284 3 days ago |
5-39399 5 days ago |
5-39287 5 days |
| 39353 |
Raph-DG author:Raph-DG |
feat(Topology): Show existence of a neighbourhood around p which avoids all points in the support of a locally finsupp function except those which specialize to p |
In this PR we show a simple lemma proving the existence of a neighbourhood around any point p which avoids every point in the support of a locally finsupp function except those which specialize to p.
AI disclosure: The statements and a sketch with sorries were provided by me, but I had claude fill in the sorries.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
29/0 |
Mathlib/Topology/LocallyFinsupp.lean |
1 |
1 |
['github-actions'] |
nobody |
3-19895 3 days ago |
3-19895 3 days ago |
3-51012 3 days |
| 39891 |
SnirBroshi author:SnirBroshi |
feat: the center of a product/pi is the product/pi of the centers (for subobjects) |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
maintainer-merge
label:t-algebra$ |
77/3 |
Mathlib.lean,Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean,Mathlib/Algebra/Algebra/Subalgebra/Pi.lean,Mathlib/Algebra/Algebra/Subalgebra/Prod.lean,Mathlib/Algebra/Group/Center.lean,Mathlib/Algebra/Ring/Subring/Basic.lean,Mathlib/Algebra/Ring/Subsemiring/Basic.lean,Mathlib/Algebra/Star/NonUnitalSubalgebra.lean,Mathlib/GroupTheory/Subgroup/Center.lean,Mathlib/GroupTheory/Submonoid/Center.lean,Mathlib/GroupTheory/Subsemigroup/Lemmas.lean,Mathlib/RingTheory/NonUnitalSubring/Basic.lean,Mathlib/RingTheory/NonUnitalSubsemiring/Basic.lean |
13 |
27 |
['SnirBroshi', 'github-actions', 'plp127', 'tb65536', 'themathqueen'] |
tb65536 assignee:tb65536 |
3-19065 3 days ago |
4-43208 4 days ago |
4-58763 4 days |
| 39816 |
WenrongZou author:WenrongZou |
chore(MvPolynomial): rename a lemma using prime |
This PR renames a lemma by adding a prime. Many other lemmas in (mv)polynomial theory also use a prime in their names for the same reason — their primed versions should be rewritten in the `xxx_eq_ite` form.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
easy
|
13/10 |
Mathlib/Algebra/MvPolynomial/Basic.lean,Mathlib/RingTheory/MvPolynomial/IrreducibleQuadratic.lean,Mathlib/RingTheory/Smooth/IntegralClosure.lean,Mathlib/RingTheory/Spectrum/Prime/Polynomial.lean,Mathlib/RingTheory/TensorProduct/MvPolynomial.lean,scripts/nolints_prime_decls.txt |
6 |
11 |
['NoahW314', 'WenrongZou', 'github-actions', 'ocfnash'] |
nobody |
3-18861 3 days ago |
3-18912 3 days ago |
6-18781 6 days |
| 39941 |
mkaratarakis author:mkaratarakis |
feat(Data/List): add count lemmas for duplicate detection |
## Summary
Add general list count lemmas used in the Perron–Frobenius quiver-path development:
- `List.mem_tail_of_count_ge_two`
- `List.exists_pos_get_of_dropLast_count_ge_two`
Relocated from the PF-specific file per review feedback. Proofs use upstream `List.Duplicate` API and `grind` where appropriate (per @chenson2018).
Part of the Perron–Frobenius formalization (with @or4nge19).
## Test plan
- [x] `lake build Mathlib.Data.List.Count`
- [x] `lake build Mathlib.Combinatorics.Quiver.Path.PerronFrobenius` (on integration branch)
cc @or4nge19 for review |
t-data |
24/0 |
Mathlib/Data/List/Count.lean |
1 |
3 |
['chenson2018', 'github-actions', 'mkaratarakis'] |
nobody |
3-18788 3 days ago |
5-498 5 days ago |
5-880 5 days |
| 38859 |
SnirBroshi author:SnirBroshi |
feat(Order/CompleteLattice/Basic): tag `iSup_of_empty'` with `@[simp]` |
The theorem says `iSup f = sSup ∅` when the domain of `f` is empty, and dually `iInf f = sInf ∅`.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
31/47 |
Mathlib/Algebra/Order/Archimedean/Real/Basic.lean,Mathlib/Analysis/Normed/Lp/lpSpace.lean,Mathlib/Analysis/Seminorm.lean,Mathlib/Data/ENat/Lattice.lean,Mathlib/Data/NNReal/Basic.lean,Mathlib/Data/Nat/Lattice.lean,Mathlib/Data/Set/Finite/Lattice.lean,Mathlib/LinearAlgebra/Eigenspace/Pi.lean,Mathlib/MeasureTheory/Constructions/BorelSpace/Order.lean,Mathlib/Order/CompleteLattice/Basic.lean,Mathlib/Order/ConditionallyCompleteLattice/Indexed.lean,Mathlib/Order/ConditionallyCompletePartialOrder/Indexed.lean,Mathlib/Order/Filter/Basic.lean,Mathlib/Order/Filter/Lift.lean |
14 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
3-18345 3 days ago |
8-23548 8 days ago |
28-56787 28 days |
| 38856 |
SnirBroshi author:SnirBroshi |
feat(Order/ConditionallyCompleteLattice/Indexed): `iSup_iSup_eq_{left/right}` for `ConditionallyCompleteLinearOrderBot` |
and `≤` versions for `ConditionallyCompleteLattice`.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
32/9 |
Mathlib/Order/CompleteLattice/Basic.lean,Mathlib/Order/ConditionallyCompleteLattice/Indexed.lean |
2 |
1 |
['github-actions'] |
nobody |
3-18262 3 days ago |
29-54744 29 days ago |
29-54526 29 days |
| 39952 |
vihdzp author:vihdzp |
feat: `IsBotOneClass (WithTop α)` |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-order
easy
label:t-algebra$ |
4/0 |
Mathlib/Algebra/Order/Monoid/Unbundled/WithTop.lean |
1 |
1 |
['github-actions', 'plp127'] |
nobody |
3-17814 3 days ago |
4-68165 4 days ago |
4-67947 4 days |
| 38557 |
SnirBroshi author:SnirBroshi |
feat(Order/Monotone/Defs): weaken `Preorder` to `LE`/`LT` |
`Monotone`/`Antitone`/`MonotoneOn`/`AntitoneOn` can use any `LE`,
and `StrictMono`/`StrictAnti`/`StrictMonoOn`/`StrictAntiOn` can use any `LT`.
This makes it necessary to add some explicit type params (e.g. `(α := α)`) in some places that use monotone-related theorems (e.g. `Function.monotone_eval`).
---
Currently `OrderEmbedding` and `OrderIso` can use `LE` but `OrderHom` requires `Preorder` because it's defined using `Monotone`. Generalizing `Monotone` and friends will let us fix this oddity. This follows other basic definitions such as `IsMax`/`CovBy`.
[](https://gitpod.io/from-referrer/)
|
t-order |
21/15 |
Mathlib/Analysis/BoxIntegral/Box/Basic.lean,Mathlib/Data/Finsupp/Lex.lean,Mathlib/Data/Finsupp/MonomialOrder/DegLex.lean,Mathlib/Order/Interval/Lex.lean,Mathlib/Order/Monotone/Defs.lean,Mathlib/RingTheory/MvPowerSeries/Trunc.lean,Mathlib/Topology/Order/MonotoneConvergence.lean |
7 |
2 |
['JovanGerb', 'github-actions'] |
nobody |
3-15067 3 days ago |
35-66928 35 days ago |
35-69541 35 days |
| 39158 |
SnirBroshi author:SnirBroshi |
feat(LinearAlgebra/Matrix/Rank): generalize `Matrix.rank`/`LinearMap.rank` to semirings |
- Generalize `Matrix.rank` from `CommRing` to `CommSemiring`
- Generalize `LinearMap.rank` from `AddCommGroup`s over `Ring`s to `AddCommMonoid`s over `Semiring`s (which are the minimum requirements for `Module`)
- Many `Matrix.rank` theorems now require `StrongRankCondition` explicitly (which `CommRing` used to provide)
- `Matrix.cRank` theorems don't need commutativity
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
58/64 |
Mathlib/LinearAlgebra/Dimension/LinearMap.lean,Mathlib/LinearAlgebra/Matrix/Rank.lean |
2 |
1 |
['github-actions'] |
nobody |
3-14994 3 days ago |
21-75992 21 days ago |
21-75774 21 days |
| 40019 |
grunweg author:grunweg |
chore: golf using fun_prop |
Partially enabled through #35683.
---
[](https://gitpod.io/from-referrer/)
|
|
14/30 |
Mathlib/Analysis/Convex/Contractible.lean,Mathlib/Condensed/Discrete/LocallyConstant.lean,Mathlib/Condensed/Light/Sequence.lean,Mathlib/MeasureTheory/Constructions/Polish/Basic.lean,Mathlib/MeasureTheory/Function/SpecialFunctions/Basic.lean |
5 |
1 |
['github-actions'] |
nobody |
3-12820 3 days ago |
3-12889 3 days ago |
3-12671 3 days |
| 40022 |
chenson2018 author:chenson2018 |
chore(Algebra): refactor proofs where `grind?` fails |
These are sources of technical debt as now reported in the [weekly linting report](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Weekly.20linting.20log/with/544658968). The idea is that a successful grind proof can fail to report the theorems it used via grind?, which means that if these proofs break across toolchains that it becomes significantly harder to repair.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
16/6 |
Mathlib/Algebra/Group/Defs.lean,Mathlib/Algebra/Notation/Support.lean,Mathlib/Algebra/Order/BigOperators/Group/Finset.lean,Mathlib/Algebra/Order/Field/Basic.lean,Mathlib/Algebra/Order/Ring/StandardPart.lean,Mathlib/Algebra/Polynomial/Degree/Lemmas.lean |
6 |
1 |
['github-actions'] |
nobody |
3-11011 3 days ago |
3-11097 3 days ago |
3-10879 3 days |
| 40023 |
chenson2018 author:chenson2018 |
chore(AlgebraicTopology): refactor proofs where `grind?` fails |
These are sources of technical debt as now reported in the [weekly linting report](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Weekly.20linting.20log/with/544658968). The idea is that a successful grind proof can fail to report the theorems it used via grind?, which means that if these proofs break across toolchains that it becomes significantly harder to repair.
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology |
11/5 |
Mathlib/AlgebraicTopology/SimplexCategory/DeltaZeroIter.lean,Mathlib/AlgebraicTopology/SimplexCategory/GeneratorsRelations/NormalForms.lean,Mathlib/AlgebraicTopology/SimplicialSet/NonDegenerateSimplices.lean,Mathlib/AlgebraicTopology/SimplicialSet/NonDegenerateSimplicesSubcomplex.lean |
4 |
1 |
['github-actions'] |
nobody |
3-10560 3 days ago |
3-10657 3 days ago |
3-10439 3 days |
| 40020 |
kbuzzard author:kbuzzard |
wip |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
38/27 |
Mathlib/Algebra/Group/Pi/Basic.lean |
1 |
4 |
['github-actions', 'kbuzzard', 'leanprover-radar'] |
nobody |
3-10411 3 days ago |
3-11255 3 days ago |
3-11037 3 days |
| 39787 |
Hagb author:Hagb |
feat(Order/WellQuasiOrder): `WellQuasiOrdered` if onto homomorphous from a `WellQuasiOrdered` relation |
It is used in #39788 for proof of well foundedness of `MonomialOrder` when the index type is finite.
The hypotheses can be further weaken once #38557 is merged.
---
[](https://gitpod.io/from-referrer/)
|
t-order
easy
|
16/0 |
Mathlib/Order/WellQuasiOrder.lean |
1 |
3 |
['Hagb', 'github-actions', 'plp127'] |
nobody |
3-9590 3 days ago |
7-82066 7 days ago |
7-81848 7 days |
| 39873 |
mkaratarakis author:mkaratarakis |
feat(RingTheory/IntegralClosure): add IsIntegral helpers for casts |
Add `IsIntegral.Cast` and `IsIntegral.Nat`, stating that integer and natural
literals are integral over `ℤ` in a field.
---
[](https://gitpod.io/from-referrer/) |
t-ring-theory |
7/0 |
Mathlib/RingTheory/IntegralClosure/Algebra/Basic.lean |
1 |
8 |
['github-actions', 'mkaratarakis', 'tb65536'] |
nobody |
3-9118 3 days ago |
5-39728 5 days ago |
5-46026 5 days |
| 40025 |
artie2000 author:artie2000 |
chore(Data/SetLike/Basic): generalise instance |
* Generalise the standard `IsConcreteLE` instance from `PartialOrder.ofSetLike` to `LE.ofSetLike`
---
[](https://gitpod.io/from-referrer/)
|
t-data |
8/4 |
Mathlib/Data/SetLike/Basic.lean |
1 |
2 |
['github-actions'] |
nobody |
3-6865 3 days ago |
3-7090 3 days ago |
3-6872 3 days |
| 34908 |
CoolRmal author:CoolRmal |
feat(GroupTheory): a characteristic subgroup of a characteristic subgroup is characteristic |
The main theorem proved in this PR is `characteristic_of_characteristic_of_characteristic`. If says that if `K` is a characteristic subgroup of a characteristic subgroup `H` of `G`, then `K` is a characteristic subgroup of `G`.
Created with the help of Codex.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-group-theory
LLM-generated
label:t-algebra$ |
25/0 |
Mathlib/Algebra/Group/Subgroup/Basic.lean |
1 |
22 |
['CoolRmal', 'github-actions', 'robin-carlier', 'tb65536'] |
mattrobball assignee:mattrobball |
3-5406 3 days ago |
3-5406 3 days ago |
13-54071 13 days |
| 39904 |
wwylele author:wwylele |
refactor(Analysis/Meromorphic): generalize 𝕜 → 𝕜 to 𝕜 → 𝕜' for order lemma when possible |
I don't have a real use for this, but this is the style that Meromorphic/Basic.lean follows, so let's unify them.
---
I unfortunately had to duplicate the proof for `meromorphicOrderAt_mul` from `meromorphicOrderAt_smul`. They are almost the same, but I don't find a good way to unify them.
[](https://gitpod.io/from-referrer/)
|
t-analysis |
38/22 |
Mathlib/Analysis/Meromorphic/Order.lean |
1 |
1 |
['github-actions'] |
nobody |
3-5249 3 days ago |
5-66391 5 days ago |
5-66173 5 days |
| 39831 |
wwylele author:wwylele |
feat(Topology): a preconnected set is discrete iff is subsingleton |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
9/0 |
Mathlib/Topology/Connected/TotallyDisconnected.lean |
1 |
1 |
['github-actions'] |
nobody |
3-5237 3 days ago |
7-16159 7 days ago |
7-15941 7 days |
| 39833 |
wwylele author:wwylele |
feat(Analysis/Meromorphic): const_smul lemma |
This allows more general scalar type than the existing `smul` ones
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
14/0 |
Mathlib/Analysis/Meromorphic/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
3-1457 3 days ago |
3-1535 3 days ago |
7-12971 7 days |
| 37415 |
vasnesterov author:vasnesterov |
feat(Tactic/ComputeAsymptotics/Multiseries): compute limits of `Monomial`s |
Prove
* `UnitMonomial.logToFun_isEquivalent_of_nonzero_head`: `log m.toFun` is asymptotically equivalent
to its first summand - `m[0] • log basis[0]` if `m[0] ≠ 0`. Using this theorem we can prove that
the asymptotic behavior of a monomial is determined by its first non-zero exponent.
* `toFun_tendsto_top_of_FirstNonzeroIsPos` and its variants: used to infer the limit of
`t.toFun` from `FirstNonzeroIsPos`/`FirstNonzeroIsNeg`/`AllZero`.
* `IsLittleO_of_lt_exps` and its variants: used to asymptotically compare two monomials.
---
- [x] depends on: #37411
This is a part of the `compute_asymptotics` tactic (#28291).
[](https://gitpod.io/from-referrer/)
|
t-meta
maintainer-merge
|
378/1 |
Mathlib/Tactic/ComputeAsymptotics/Multiseries/Basis.lean,Mathlib/Tactic/ComputeAsymptotics/Multiseries/Monomial/Basic.lean |
2 |
16 |
['github-actions', 'joneugster', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
joneugster assignee:joneugster |
3-106 3 days ago |
3-29226 3 days ago |
17-14965 17 days |
| 39703 |
YaelDillies author:YaelDillies |
chore: create a `Basic` top folder |
Move a select few folders from `Logic` to a new `Basic` folder.
The goal is to finally move the material misplaced in the `Data` and `Logic` folder and to clarify the various expectations of each folder. Ultimately:
* the `Basic` folder will be about basic predicates on types and basic mathematical types not fitting in any other folder;
* the `Data` folder will be about data structures, instead of the current mix of data structures and basic mathematical types not fitting in any other folder;
* the `Logic` folder will be about advanced logic results not fitting in either `ModelTheory` or `SetTheory`, instead of the current mix of basic predicates on types and advanced logic results.
Many more files (~1000) could be moved, so I will do it in several PRs. Not all files should move to `Basic`. Some files should go to `Algebra.Order` instead (eg `Data.Nat.Lattice`) and some should be straight out deprecated (eg `Data.Analysis`).
[Zulip discussion](https://leanprover.zulipchat.com/#narrow/channel/345428-mathlib-reviewers/topic/Basic.20folder/with/597151406)
---
This PR stems from discussions at the MI retreat 2026.
[](https://gitpod.io/from-referrer/)
|
file-removed
t-data
maintainer-merge
|
148/96 |
Counterexamples/Girard.lean,Mathlib.lean,Mathlib/Algebra/CharZero/Defs.lean,Mathlib/Algebra/Group/Irreducible/Defs.lean,Mathlib/Algebra/Group/Nat/Units.lean,Mathlib/Algebra/Group/Pi/Basic.lean,Mathlib/Algebra/Group/Units/Basic.lean,Mathlib/Algebra/Group/WithOne/Defs.lean,Mathlib/Algebra/GroupWithZero/Basic.lean,Mathlib/Algebra/GroupWithZero/Defs.lean,Mathlib/Algebra/Module/Presentation/Free.lean,Mathlib/Algebra/Module/Projective.lean,Mathlib/Algebra/NeZero.lean,Mathlib/Basic/Denumerable.lean,Mathlib/Basic/ExistsUnique.lean,Mathlib/Basic/IsEmpty.lean,Mathlib/Basic/IsEmpty/Basic.lean,Mathlib/Basic/IsEmpty/Defs.lean,Mathlib/Basic/Logic/Basic.lean,Mathlib/Basic/Logic/Lemmas.lean,Mathlib/Basic/Nonempty.lean,Mathlib/Basic/Nontrivial/Basic.lean,Mathlib/Basic/Nontrivial/Defs.lean,Mathlib/Basic/README.md,Mathlib/Basic/Unique.lean,Mathlib/Basic/UnivLE.lean,Mathlib/CategoryTheory/EssentiallySmall.lean,Mathlib/CategoryTheory/Limits/Types/Colimits.lean,Mathlib/CategoryTheory/Limits/Types/Limits.lean,Mathlib/CategoryTheory/UnivLE.lean,Mathlib/Combinatorics/Quiver/Path.lean,Mathlib/Computability/Primrec/Basic.lean,Mathlib/Data/Bool/Basic.lean,Mathlib/Data/FunLike/Basic.lean,Mathlib/Data/List/Basic.lean,Mathlib/Data/List/GetD.lean,Mathlib/Data/Nat/Basic.lean,Mathlib/Data/Nat/MaxPowDiv.lean,Mathlib/Data/Option/Basic.lean,Mathlib/Data/Quot.lean,Mathlib/Data/README.md,Mathlib/Data/Rat/Denumerable.lean,Mathlib/Data/TwoPointing.lean,Mathlib/Lean/Meta/CongrTheorems.lean,Mathlib/LinearAlgebra/Matrix/Defs.lean,Mathlib/Logic/Equiv/Defs.lean,Mathlib/Logic/Equiv/List.lean,Mathlib/Logic/Function/Basic.lean,Mathlib/Logic/README.md,Mathlib/Order/OrderIsoNat.lean,Mathlib/Order/RelClasses.lean,Mathlib/Order/WithBot.lean,Mathlib/RingTheory/Coprime/Basic.lean,Mathlib/SetTheory/Cardinal/Basic.lean,Mathlib/SetTheory/Cardinal/UnivLE.lean,Mathlib/SetTheory/ZFC/Rank.lean,Mathlib/Tactic/CancelDenoms/Core.lean,Mathlib/Tactic/CongrExclamation.lean,Mathlib/Tactic/ITauto.lean,Mathlib/Tactic/Linter/DirectoryDependency.lean,Mathlib/Tactic/Nontriviality/Core.lean,Mathlib/Tactic/Push.lean,Mathlib/Tactic/Subsingleton.lean,Mathlib/Tactic/Tauto.lean,Mathlib/Testing/Plausible/Testable.lean,Mathlib/Topology/Order/UpperLowerSetTopology.lean,MathlibTest/Linter/PrivateModule/ImportOnly.lean,scripts/autolabel.lean,scripts/noshake.json |
69 |
25 |
['SnirBroshi', 'YaelDillies', 'github-actions', 'grunweg', 'joneugster', 'mathlib-merge-conflicts', 'themathqueen'] |
joneugster assignee:joneugster |
2-86125 2 days ago |
3-1559 3 days ago |
6-25543 6 days |
| 37342 |
vasnesterov author:vasnesterov |
feat(Tactic/ComputeAsymptotics/Multiseries): non-primitive corecursion for Seq: more `FriendlyOperation` API |
This is a continuation of #35072.
This PR adds more API about friendly operations:
* `FriendlyOperation.coind`: a coinductive principle for proving that operation is friendly
* `FriendlyOperationClass.eq_of_bisim`: a generalisation of `Seq.eq_of_bisim'` for proving two sequences are equal.
---
- [x] depends on: #35072
This is a part of the `compute_asymptotics` tactic (#28291).
[](https://gitpod.io/from-referrer/)
|
t-data
t-meta
maintainer-merge
|
160/0 |
Mathlib/Tactic/ComputeAsymptotics/Multiseries/Corecursion.lean |
1 |
7 |
['github-actions', 'joneugster', 'mathlib-dependent-issues'] |
joneugster assignee:joneugster |
2-85992 2 days ago |
3-30331 3 days ago |
32-17956 32 days |
| 39875 |
mkaratarakis author:mkaratarakis |
refactor(NumberField/House): expose Siegel lemma infrastructure |
Expose Siegel's lemma infrastructure in `NumberField.House`: rename the private
basis-matrix bound to `basisMatrixInvSupNorm`, make `house` reducible, and
adjust `exists_ne_zero_int_vec_house_le`.
---
[](https://gitpod.io/from-referrer/) |
|
59/48 |
Mathlib/NumberTheory/NumberField/House.lean |
1 |
4 |
['github-actions', 'mkaratarakis', 'tb65536'] |
nobody |
2-85023 2 days ago |
6-2298 6 days ago |
6-5807 6 days |
| 39872 |
mkaratarakis author:mkaratarakis |
feat(RingTheory/Algebraic): add natDenominator API |
Add `AlgebraicDenominator.denominator` and `AlgebraicDenominator.natDenominator`,
characterizing denominators of algebraic elements as generators of a colon ideal and,
over `ℤ`, their absolute value as a natural-number denominator.
Part of the Gelfond–Schneider formalization; see #39873, #39875, and #39874.
---
[](https://gitpod.io/from-referrer/)
cc @tb65536 |
t-ring-theory |
68/0 |
Mathlib.lean,Mathlib/RingTheory/Algebraic/NatDenominator.lean |
2 |
1 |
['github-actions'] |
nobody |
2-84981 2 days ago |
6-19568 6 days ago |
6-19350 6 days |
| 39996 |
RuthP628 author:RuthP628 |
feat(ModelTheory/Semantics): add simp theorems similar to Sentence.realize_not |
Add simp theorems Sentence.realize_bot, Sentence.realize_top, Sentence.realize_inf, Sentence.realize_sup, Sentence.realize_imp and Sentence.realize_iff in the style of Sentence.realize_not as consequences of the corresponding theorems for formulas. |
t-logic
new-contributor
|
31/1 |
Mathlib/ModelTheory/Semantics.lean |
1 |
10 |
['RuthP628', 'b-mehta', 'github-actions', 'plp127'] |
nobody |
2-81314 2 days ago |
3-21920 3 days ago |
3-28941 3 days |
| 40029 |
vasnesterov author:vasnesterov |
feat(Analysis/Analytic): alternating geometric series |
* Define `geometricAlternatingSeries`: `1 - x + x ^ 2 - ...` as a `FormalMultilinearSeries`.
* Prove the same lemmas as for existing `formalMultilinearSeries_geometric`.
* Move the "Composition with a linear map" section above as it's needed to directly translate the results about `formalMultilinearSeries_geometric` to results about `geometricAlternatingSeries`.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
132/65 |
Mathlib/Analysis/Analytic/Constructions.lean |
1 |
1 |
['github-actions'] |
nobody |
2-80266 2 days ago |
2-80353 2 days ago |
2-80135 2 days |
| 36888 |
CoolRmal author:CoolRmal |
feat: generalize some lemmas by using conditional Jensen |
This PR includes two possible ways of generalizing `integral_abs_condExp_le`:
1. Replace absolute values with norms.
2. Consider absolute values defined on a lattice with a solid norm.
We also prove that if a function is in Lp then its conditional expectation is also in Lp. In order to prove these results, some of the lemmas about essSup are generalized to conditionally complete lattices.
Created with the help of Codex.
---
- [x] depends on: #36877
- [x] depends on: #39104
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
260/140 |
Mathlib/MeasureTheory/Function/ConditionalExpectation/Basic.lean,Mathlib/MeasureTheory/Function/ConditionalExpectation/CondJensen.lean,Mathlib/MeasureTheory/Function/ConditionalExpectation/Real.lean,Mathlib/MeasureTheory/Measure/Trim.lean,Mathlib/Probability/CondVar.lean,Mathlib/Probability/Martingale/BorelCantelli.lean,Mathlib/Probability/Martingale/Centering.lean |
7 |
42 |
['CoolRmal', 'EtienneC30', 'RemyDegenne', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
EtienneC30 assignee:EtienneC30 |
2-66841 2 days ago |
2-68186 2 days ago |
10-85565 10 days |
| 38821 |
Jun2M author:Jun2M |
feat(Data/List): rotation of sublist is sublist of rotation |
This PR proves `(∃ L₁ : List α, L ~r L₁ ∧ L₁ <+ L') ↔ (∃ L₂ : List α, L <+ L₂ ∧ L₂ ~r L')`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
10/0 |
Mathlib/Data/List/Rotate.lean |
1 |
3 |
['SnirBroshi', 'eric-wieser', 'github-actions'] |
nobody |
2-66297 2 days ago |
30-84615 30 days ago |
30-84397 30 days |
| 38223 |
Deicyde author:Deicyde |
feat(Geometry/Manifold): add `MfldCat`, the category of `C^n` manifolds |
We define `MfldCat 𝕜 n`: the category of `C^n` manifolds over a field `𝕜`, following the pattern of `TopCat` in
`Mathlib.Topology.Category.TopCat.Basic`. We also implement `HasForget₂ (MfldCat 𝕜 n) TopCat`—the forgetful functor into the category of topological spaces. For more discussion see the Zulip thread: [#PR reviews > #38223 The Category of C^n Manifolds](https://leanprover.zulipchat.com/#narrow/channel/144837-PR-reviews/topic/.2338223.20The.20Category.20of.20C.5En.20Manifolds/with/587038032)
Also added: `ContMDiffMap.id_apply`, `.coe_id` and `.coe_comp` which are comparable to `ContinuousMap` API.
### Future work
- ✅ Define a Monoidal structure via product manifolds, analogous to `Manifold.Topology.Category.TopCat.Monoidal` #38560
- ✅ Define the tangent functor: `M ↦ TM`, `F ↦ F.tangentMap` from `MfldCat (n+1) 𝕜` to `MfldCat n 𝕜` #38270
- Functor `FGModuleCat 𝕜 ⥤ MfldCat 𝕜 n` sending a finite-dimensional `𝕜`-vector space to the manifold modeled on itself. Left as `TODO`.
- Define `FGModuleCat 𝕜` as an enriched category over `MfldCat n 𝕜`. Then _smooth functors_ can be realized as endofunctors on the enriched category. This is the main motivation for this construction.
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
new-contributor
t-category-theory
|
224/0 |
Mathlib.lean,Mathlib/Geometry/Manifold/Category/MfldCat/Basic.lean,Mathlib/Geometry/Manifold/ContMDiffMap.lean |
3 |
57 |
['Deicyde', 'chrisflav', 'dagurtomas', 'github-actions', 'idontgetoutmuch', 'peabrainiac'] |
nobody |
2-66296 2 days ago |
23-84476 23 days ago |
37-47974 37 days |
| 38785 |
scholzhannah author:scholzhannah |
feat: use `alias_in` attribute for CW complexes |
Using the `alias_in` attribute for classical CW complexes to get rid of the `export` sections.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
103/58 |
Mathlib/Topology/CWComplex/Classical/Basic.lean,Mathlib/Topology/CWComplex/Classical/Finite.lean,Mathlib/Topology/CWComplex/Classical/Subcomplex.lean |
3 |
8 |
['github-actions', 'grunweg', 'scholzhannah'] |
nobody |
2-66292 2 days ago |
24-40566 24 days ago |
31-28710 31 days |
| 39755 |
wwylele author:wwylele |
chore(GroupTheory): remove a defeq abuse |
---
I am not sure if this is the right change to make, so I'd like to start a discussion from this. The issue here seems to be that the simp lemma [MulAction.orbitRel.Quotient.orbit_mk](https://leanprover-community.github.io/mathlib4_docs/Mathlib/GroupTheory/GroupAction/Defs.html#MulAction.orbitRel.Quotient.orbit_mk) fired and changed the underlying type of variables in the expression, which is not defeq at instance transparency, and fails defeq check for `MulAction` ([MulAction.instElemOrbit](https://leanprover-community.github.io/mathlib4_docs/Mathlib/GroupTheory/GroupAction/Defs.html#MulAction.instElemOrbit) vs [MulAction.instElemOrbit_1](https://leanprover-community.github.io/mathlib4_docs/Mathlib/GroupTheory/GroupAction/Defs.html#MulAction.instElemOrbit_1)). The easy change here is to disable the offending simp, but it feels like a common language pitfall. Should we do either of the following instead?
- remove `MulAction.orbitRel.Quotient.orbit_mk` from default simp set
- Make the the orbit definition more transparent
[](https://gitpod.io/from-referrer/)
|
tech debt
t-group-theory
|
1/2 |
Mathlib/GroupTheory/GroupAction/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
2-65744 2 days ago |
9-2002 9 days ago |
9-1784 9 days |
| 38957 |
wwylele author:wwylele |
chore(GroupTheory/DivisibleHull): remove `backward.privateInPublic` |
---
[](https://gitpod.io/from-referrer/)
|
tech debt
t-group-theory
|
5/12 |
Mathlib/GroupTheory/DivisibleHull.lean |
1 |
13 |
['Komyyy', 'github-actions', 'grunweg', 'jcommelin', 'wwylele'] |
jcommelin assignee:jcommelin |
2-65732 2 days ago |
6-65141 6 days ago |
20-56873 20 days |
| 37712 |
eric-wieser author:eric-wieser |
feat: add a `LawfulXor` typeclass |
I've put this in mathlib since it can use `Function.Involutive`; it can of course be upstreamed at a later date.
Having this generalization encourages downstream code in cslib to be expressed in terms of involutive functions, rather than just `^^^` on bitvectors.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
130/0 |
Mathlib.lean,Mathlib/Data/LawfulXor.lean |
2 |
6 |
['eric-wieser', 'github-actions', 'linesthatinterlace'] |
TwoFX assignee:TwoFX |
2-64959 2 days ago |
26-65929 26 days ago |
33-58303 33 days |
| 38527 |
archiebrowne author:archiebrowne |
feat(Analysis/Calculus): continuously differentiable actions |
define the class `ContDiffSMul 𝕜 M X n` which asserts that the map `(c, x) ↦ c • x` is `n` times continuously differentiable on `M × X`.
Many of the results are the C^n analogues of those in the module Mathlib.Topology.Algebra.MulAction.
|
t-differential-geometry
new-contributor
|
317/24 |
Mathlib.lean,Mathlib/Analysis/Calculus/BumpFunction/Basic.lean,Mathlib/Analysis/Calculus/ContDiff/Operations.lean,Mathlib/Analysis/Calculus/IteratedDeriv/Lemmas.lean,Mathlib/Analysis/ContDiffMulAction.lean,Mathlib/Analysis/InnerProductSpace/Calculus.lean |
6 |
11 |
['archiebrowne', 'github-actions', 'grunweg', 'peabrainiac'] |
ocfnash assignee:ocfnash |
2-64957 2 days ago |
24-82157 24 days ago |
32-67848 32 days |
| 38551 |
TTony2019 author:TTony2019 |
feat(Analysis/Convex/Intrinsic): add `affineSpan_prod_eq` and `intrinsicInterior_prod_eq` |
### Summary
We prove that the affine span of a product set equals the product of the affine spans, and that the intrinsic interior of a product set equals the product of the intrinsic interiors.
- `affineSpan_prod_eq`: for `s : Set P₁` and `t : Set P₂`, `affineSpan k (s ×ˢ t) = (affineSpan k s) ×ˢ (affineSpan k t)` as sets.
- `intrinsicInterior_prod_eq`: for `s : Set P` and `t : Set Q`, `intrinsicInterior 𝕜 (s ×ˢ t) = intrinsicInterior 𝕜 s ×ˢ intrinsicInterior 𝕜 t`.
These two theorems are added to `Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Basic.lean` and `Mathlib/Analysis/Convex/Intrinsic.lean`.
### Collaboration
Co-authored-by: @imathwy |
new-contributor
t-analysis
|
144/0 |
Mathlib/Algebra/AddTorsor/Basic.lean,Mathlib/Algebra/Group/Pointwise/Set/Basic.lean,Mathlib/Analysis/Convex/Intrinsic.lean,Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Basic.lean,Mathlib/LinearAlgebra/Prod.lean |
5 |
24 |
['TTony2019', 'github-actions', 'wwylele'] |
themathqueen assignee:themathqueen |
2-64956 2 days ago |
33-60658 33 days ago |
36-4313 36 days |
| 38895 |
emlis42 author:emlis42 |
chore(Algebra/ContinuedFractions): golf |
This PR simplifies some proofs in `Algebra/ContinuedFractions` |
t-algebra
new-contributor
label:t-algebra$ |
39/63 |
Mathlib/Algebra/ContinuedFractions/Computation/ApproximationCorollaries.lean,Mathlib/Algebra/ContinuedFractions/Computation/Approximations.lean,Mathlib/Algebra/ContinuedFractions/Computation/CorrectnessTerminating.lean,Mathlib/Algebra/ContinuedFractions/Computation/TerminatesIffRat.lean,Mathlib/Algebra/ContinuedFractions/Computation/Translations.lean,Mathlib/Algebra/ContinuedFractions/ContinuantsRecurrence.lean,Mathlib/Algebra/ContinuedFractions/ConvergentsEquiv.lean |
7 |
2 |
['github-actions'] |
joelriou assignee:joelriou |
2-64953 2 days ago |
27-69316 27 days ago |
28-57401 28 days |
| 38983 |
kebekus author:kebekus |
feat: Invariance of `meromorphic in normal form` under composition. |
Establish invariance of `meromorphic in normal form` under composition with analytic functions of non-vanishing derivative.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis
maintainer-merge
|
42/0 |
Mathlib/Analysis/Meromorphic/NormalForm.lean |
1 |
12 |
['github-actions', 'kebekus', 'themathqueen'] |
ADedecker assignee:ADedecker |
2-64952 2 days ago |
18-14431 18 days ago |
25-35212 25 days |
| 39655 |
joelriou author:joelriou |
feat(CategoryTheory): the κ-accessible category of κ-directed posets |
Given a regular cardinal `κ : Cardinal.{u}`, we show that the category `CardinalFilteredPoset κ` of `κ`-directed partially ordered types (with order embeddings as morphisms) is a `κ`-accessible category.
---
- [x] depends on: #39669
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
188/2 |
Mathlib/CategoryTheory/Presentable/CardinalDirectedPoset.lean |
1 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
robin-carlier assignee:robin-carlier |
2-64950 2 days ago |
3-21416 3 days ago |
3-34139 3 days |
| 39819 |
mathlib-splicebot author:mathlib-splicebot |
feat: variants of lemmas in CondJensen with a.e. inequalities for the trimmed measure |
This PR was automatically created from PR #35349 by @RemyDegenne via a [review comment](https://github.com/leanprover-community/mathlib4/pull/35349#discussion_r3298163528) by @RemyDegenne. |
t-measure-probability |
34/0 |
Mathlib/MeasureTheory/Function/ConditionalExpectation/CondJensen.lean |
1 |
1 |
['github-actions'] |
EtienneC30 assignee:EtienneC30 |
2-64945 2 days ago |
7-24542 7 days ago |
7-24324 7 days |
| 39136 |
vihdzp author:vihdzp |
feat: more results on `Order.enum` |
Most importantly, we prove that the enumerator function of a (cofinal) set is normal iff the set is closed (under non-empty suprema).
---
- [x] depends on: #38362
- [x] depends on: #39137
[](https://gitpod.io/from-referrer/)
|
t-set-theory
t-order
maintainer-merge
|
90/7 |
Mathlib/Order/Cofinal.lean,Mathlib/SetTheory/Cardinal/Cofinality/Club.lean,Mathlib/SetTheory/Cardinal/Cofinality/Enum.lean,Mathlib/SetTheory/Ordinal/Topology.lean |
4 |
7 |
['YaelDillies', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp'] |
nobody |
2-52698 2 days ago |
3-83916 3 days ago |
4-47612 4 days |
| 38227 |
vihdzp author:vihdzp |
chore(Algebra/Order/Monoid/Unbundled/Basic): golfing + formatting |
We make use of `variable`, fix some weird spacing, and golf many proofs.
The only breaking change is that `mul_lt_iff_lt_one_left'`/`add_lt_iff_neg_left` now takes an explicit argument, matching the theorems surrounding it.
---
Not too fond of the `calc` tactic.
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-order
label:t-algebra$ |
233/501 |
Mathlib/Algebra/Order/Archimedean/Real/Basic.lean,Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean |
2 |
3 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
2-52569 2 days ago |
2-52607 2 days ago |
15-67089 15 days |
| 39637 |
mcdoll author:mcdoll |
feat(Topology/Algebra): use `Is*Apply` for `ContinuousLinearMap` |
This is the first in many PRs that use the new `Is*Apply` classes instead of structure specific `foo_apply` lemmas.
The main bulk of the PR is in Mathlib/Topology/Algebra/Module/ContinuousLinearMap/Basic.lean, everything else is just fixing errors.
For each `foo` in `zero`, `one`, `add`, `sub`, `neg`, smul` we do the following:
- add an instance `IsFooApply`
- rename `coe_foo` to `toLinearMap_foo`
- depreprecate `coe_foo`, `coe_foo'`, and `foo_apply`
We are rather conservative when it comes to the instances, in future PRs this will be used more.
---
Note to maintainers: please don't put multiple PRs regarding `Is*Apply` on the queue, they will most likely create merge conflicts.
[](https://gitpod.io/from-referrer/)
|
t-topology |
279/282 |
Archive/Sensitivity.lean,Mathlib/Algebra/Category/ModuleCat/Topology/Basic.lean,Mathlib/Algebra/Category/ModuleCat/Topology/Homology.lean,Mathlib/Analysis/Analytic/Binomial.lean,Mathlib/Analysis/Analytic/IteratedFDeriv.lean,Mathlib/Analysis/CStarAlgebra/CStarMatrix.lean,Mathlib/Analysis/CStarAlgebra/Multiplier.lean,Mathlib/Analysis/CStarAlgebra/Unitization.lean,Mathlib/Analysis/Calculus/AbsolutelyMonotone.lean,Mathlib/Analysis/Calculus/ContDiff/FaaDiBruno.lean,Mathlib/Analysis/Calculus/ContDiff/Operations.lean,Mathlib/Analysis/Calculus/Darboux.lean,Mathlib/Analysis/Calculus/Deriv/Add.lean,Mathlib/Analysis/Calculus/Deriv/Basic.lean,Mathlib/Analysis/Calculus/Deriv/CompMul.lean,Mathlib/Analysis/Calculus/Deriv/Mul.lean,Mathlib/Analysis/Calculus/FDeriv/Add.lean,Mathlib/Analysis/Calculus/FDeriv/Analytic.lean,Mathlib/Analysis/Calculus/FDeriv/Norm.lean,Mathlib/Analysis/Calculus/FDeriv/Symmetric.lean,Mathlib/Analysis/Calculus/FormalMultilinearSeries.lean,Mathlib/Analysis/Calculus/Implicit.lean,Mathlib/Analysis/Calculus/UniformLimitsDeriv.lean,Mathlib/Analysis/Calculus/VectorField.lean,Mathlib/Analysis/Complex/CauchyIntegral.lean,Mathlib/Analysis/Complex/Harmonic/Analytic.lean,Mathlib/Analysis/Convex/Birkhoff.lean,Mathlib/Analysis/Convex/DoublyStochasticMatrix.lean,Mathlib/Analysis/Convex/Exposed.lean,Mathlib/Analysis/Convolution.lean,Mathlib/Analysis/Distribution/ContDiffMapSupportedIn.lean,Mathlib/Analysis/Fourier/FourierTransform.lean,Mathlib/Analysis/Fourier/FourierTransformDeriv.lean,Mathlib/Analysis/InnerProductSpace/Adjoint.lean,Mathlib/Analysis/InnerProductSpace/ConformalLinearMap.lean,Mathlib/Analysis/InnerProductSpace/Dual.lean,Mathlib/Analysis/InnerProductSpace/LinearMap.lean,Mathlib/Analysis/InnerProductSpace/Projection/Basic.lean,Mathlib/Analysis/InnerProductSpace/Projection/FiniteDimensional.lean,Mathlib/Analysis/InnerProductSpace/Rayleigh.lean,Mathlib/Analysis/InnerProductSpace/Reproducing.lean,Mathlib/Analysis/InnerProductSpace/StarOrder.lean,Mathlib/Analysis/LocallyConvex/Separation.lean,Mathlib/Analysis/Normed/Group/SeparationQuotient.lean,Mathlib/Analysis/Normed/Module/Bases.lean,Mathlib/Analysis/Normed/Module/Multilinear/Basic.lean,Mathlib/Analysis/Normed/Operator/Bilinear.lean,Mathlib/Analysis/Normed/Operator/Compact/Basic.lean,Mathlib/Analysis/Normed/Operator/ContinuousAlgEquiv.lean,Mathlib/Analysis/SpecialFunctions/Exponential.lean,Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean,Mathlib/Geometry/Euclidean/Volume/Measure.lean,Mathlib/Geometry/Manifold/IntegralCurve/Basic.lean,Mathlib/Geometry/Manifold/IntegralCurve/Transform.lean,Mathlib/Geometry/Manifold/VectorField/LieBracket.lean,Mathlib/LinearAlgebra/Eigenspace/ContinuousLinearMap.lean,Mathlib/MeasureTheory/Function/Jacobian.lean,Mathlib/MeasureTheory/Function/JacobianOneDim.lean,Mathlib/MeasureTheory/Group/Prod.lean,Mathlib/MeasureTheory/Integral/Bochner/L1.lean,Mathlib/MeasureTheory/Integral/FinMeasAdditive.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/Basic.lean,Mathlib/MeasureTheory/Integral/Lebesgue/Basic.lean,Mathlib/MeasureTheory/Measure/Haar/DistribChar.lean,Mathlib/MeasureTheory/Measure/Haar/MulEquivHaarChar.lean,Mathlib/MeasureTheory/Measure/Typeclasses/Finite.lean,Mathlib/MeasureTheory/VectorMeasure/Decomposition/Hahn.lean,Mathlib/MeasureTheory/VectorMeasure/Decomposition/Jordan.lean,Mathlib/NumberTheory/Modular.lean,Mathlib/NumberTheory/ModularForms/CongruenceSubgroups.lean,Mathlib/NumberTheory/ModularForms/JacobiTheta/TwoVariable.lean,Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean,Mathlib/NumberTheory/NumberField/CanonicalEmbedding/NormLeOne.lean,Mathlib/NumberTheory/Padics/PadicNumbers.lean,Mathlib/NumberTheory/SiegelsLemma.lean,Mathlib/Probability/Distributions/Gaussian/Basic.lean,Mathlib/Probability/Distributions/Gaussian/Fernique.lean,Mathlib/Probability/Distributions/Uniform.lean,Mathlib/Topology/Algebra/Module/ContinuousLinearMap/Basic.lean,Mathlib/Topology/ContinuousMap/StoneWeierstrass.lean |
80 |
8 |
['github-actions', 'leanprover-radar', 'mathlib-merge-conflicts', 'mcdoll'] |
nobody |
2-51476 2 days ago |
2-51516 2 days ago |
8-12613 8 days |
| 37832 |
YaelDillies author:YaelDillies |
chore(Algebra/Order/GroupWithZero): flatten `Unbundled` folder |
The algebraic order classes are unbundled now.
---
More thought is needed to do the same for `Algebra.Order.Monoid` since filenames conflict.
[](https://gitpod.io/from-referrer/)
|
file-removed
t-algebra
t-order
label:t-algebra$ |
20/20 |
Mathlib.lean,Mathlib/Algebra/Order/BigOperators/GroupWithZero/Finset.lean,Mathlib/Algebra/Order/BigOperators/GroupWithZero/List.lean,Mathlib/Algebra/Order/Field/Basic.lean,Mathlib/Algebra/Order/Field/Pointwise.lean,Mathlib/Algebra/Order/GroupWithZero/Basic.lean,Mathlib/Algebra/Order/GroupWithZero/Bounds.lean,Mathlib/Algebra/Order/GroupWithZero/Canonical.lean,Mathlib/Algebra/Order/GroupWithZero/Defs.lean,Mathlib/Algebra/Order/GroupWithZero/Finset.lean,Mathlib/Algebra/Order/GroupWithZero/OrderIso.lean,Mathlib/Algebra/Order/GroupWithZero/Submonoid.lean,Mathlib/Algebra/Order/GroupWithZero/WithZero.lean,Mathlib/Algebra/Order/Nonneg/Basic.lean,Mathlib/Algebra/Order/Ring/Defs.lean,Mathlib/Algebra/Order/Ring/Unbundled/Basic.lean,Mathlib/Order/Filter/IsBounded.lean,Mathlib/RingTheory/DedekindDomain/Ideal/Lemmas.lean,Mathlib/Tactic/FieldSimp/Lemmas.lean |
19 |
4 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
2-46764 2 days ago |
2-46803 2 days ago |
50-83217 50 days |
| 39969 |
YaelDillies author:YaelDillies |
feat(Analysis): pre/postcomposition by an isometry preserves the operator norm |
From MeanFourier
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
62/19 |
Mathlib/Analysis/Normed/Operator/NormedSpace.lean,Mathlib/MeasureTheory/Function/LpSpace/ContinuousFunctions.lean,Mathlib/Probability/Distributions/Gaussian/Multivariate.lean |
3 |
1 |
['github-actions'] |
nobody |
2-45245 2 days ago |
2-45310 2 days ago |
2-45840 2 days |
| 37381 |
martinwintermath author:martinwintermath |
chore(LinearAlgebra/SesquilinearForm): deprecate `IsOrtho` and associated lemmas |
Next steps in cleaning up bilinearity and orthogonality:
- deprecate `IsOrtho` and accompanying trivial lemmas (this also allows to shorten the proofs in `orthogonalBilin`).
- deprecate `ortho_smul_right` and `ortho_smul_left` since now provable from simp.
- remove uses of deprecated definitions.
- replace `IsOrtho` in undergrad.yaml by `iIsOrtho`.
See discussion at [#mathlib4 > Reorganizing bilinearity and orthogonality?](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Reorganizing.20bilinearity.20and.20orthogonality.3F/with/582426197)
Due to too agressive simplification I had to remove simp from
- `QuadraticMap.associated_apply`
- `QuadraticMap.isOrtho_polarBilin`
---
- [x] depends on: #37389
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
112/94 |
Mathlib/Algebra/Lie/InvariantForm.lean,Mathlib/Algebra/Lie/TraceForm.lean,Mathlib/Algebra/Lie/Weights/Killing.lean,Mathlib/LinearAlgebra/BilinearForm/Orthogonal.lean,Mathlib/LinearAlgebra/QuadraticForm/Basic.lean,Mathlib/LinearAlgebra/QuadraticForm/IsometryEquiv.lean,Mathlib/LinearAlgebra/QuadraticForm/Radical.lean,Mathlib/LinearAlgebra/QuadraticForm/TensorProduct.lean,Mathlib/LinearAlgebra/QuadraticForm/TensorProduct/Isometries.lean,Mathlib/LinearAlgebra/RootSystem/Finite/Nondegenerate.lean,Mathlib/LinearAlgebra/SesquilinearForm/Basic.lean,docs/undergrad.yaml |
12 |
12 |
['github-actions', 'martinwintermath', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mcdoll', 'vihdzp'] |
nobody |
2-43095 2 days ago |
2-43131 2 days ago |
13-23449 13 days |
| 39958 |
BryceT233 author:BryceT233 |
feat(RingTheory/Kaehler/JacobiZariski): exactness at the left of Jacobi-Zariski sequence under flatness assumption |
Given algebras `R → S → T` and `T` flat over `S`, this PR adds the exactness of `T ⊗[S] H₁(L_{S/R}) → H₁(L_{T/R}) → H₁(L_{T/S})` at the left of Jacobi-Zariski sequence. Note that the flatness assumption here is stronger than the Tor-vanishing conditions required in the full statement of [Stacks Project, 00S2](https://stacks.math.columbia.edu/tag/00S2), this should be refactored and generalized once more results on Tor modules are available.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
70/0 |
Mathlib/RingTheory/Kaehler/JacobiZariski.lean |
1 |
1 |
['github-actions'] |
nobody |
2-42419 2 days ago |
4-44332 4 days ago |
4-44114 4 days |
| 37951 |
martinwintermath author:martinwintermath |
chore(Geometry/Convex/Cone): rework `PointedCone.dual` to take a cone as input in place of a set |
Rework `PointedCone.dual` to take as input a cone instead of a set. This is done to untangle the functionality of `PointedCone.dual` from `PointedCone.hull` and to align it with the signature of its submodule analogue `Submodule.orthogonalBilin`. See also the discussion here: [#mathlib4 > Reorganizing bilinearity and orthogonality?](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Reorganizing.20bilinearity.20and.20orthogonality.3F/with/583882414).
Main changes:
* change signature `dual (s : Set M)` to `dual (C : PointedCone R M)`.
* deprecate `dual_hull` since now obsolete in this form, instead add `mem_dual_hull` in addition to `mem_dual`.
* deprecate all of `dual_empty`, `dual_zero` and `dual_singleton_zero` in favor of only `dual_bot`.
* deprecate `dual_univ` in favor of `dual_top`.
* add notation `R ∙₊ x` in analogy to submodule version `R ∙ x`, for use in new lemma `dual_hull_singleton`.
* deprecate `dual_insert` since now obsolete (use `Submodule.span_insert` instead).
* deprecate `dual_union`, `dual_iUnion` and `dual_sUnion` in favor of `dual_sup`, `dual_sSup` and `dual_iSup`.
* remove `dual_sup` since now obsolete and name has been reused (see above).
* add `dual_sup_ker` and `dual_univ_eq_ker` to align with (proposed) submodule analogue for `Submodule.orthogonalBilin`.
* deprecate `dual_image` in favor of `dual_map`
* add `hull_eq` (cone version of `span_eq`) since used in `basis_coord_mem_dual`.
* adjust doc-strings
Numerous changes to other files have been necessary. The dual-variants for proper cones or inner product spaces have not yet been adapted to cone-inputs, though this should happen eventually. The definition of `DualFG` has been changed to "duals of `FG`-cones" instead of "duals of finite sets" (also getting rid of `Finset` as previously requested).
---
- [x] depends on: #37950
- [x] depends on: #37542
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry |
227/128 |
Mathlib/Analysis/Convex/Cone/Dual.lean,Mathlib/Analysis/Convex/Cone/InnerDual.lean,Mathlib/Analysis/Convex/Cone/TensorProduct.lean,Mathlib/Geometry/Convex/Cone/Dual.lean,Mathlib/Geometry/Convex/Cone/DualFinite.lean,Mathlib/Geometry/Convex/Cone/Pointed.lean,Mathlib/Geometry/Convex/Cone/TensorProduct.lean |
7 |
5 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
2-39398 2 days ago |
2-39479 2 days ago |
33-53934 33 days |
| 38198 |
JovanGerb author:JovanGerb |
chore(Data/Real/Basic): `no_expose` the private operations |
This PR puts `no_expose` on all of the operations on `Real` that are defined in terms of quotients. This is a step in the direction of not exposing the definiton of `Real`.
Note that I leave the `irreducible_def`s as is. This is because the `simpNF` linter does not participate in the module system, and it would time out otherwise.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
11/32 |
Mathlib/Analysis/SpecialFunctions/Gaussian/GaussianIntegral.lean,Mathlib/Data/Real/Basic.lean,Mathlib/Topology/Algebra/Valued/NormedValued.lean |
3 |
12 |
['JovanGerb', 'eric-wieser', 'github-actions', 'leanprover-radar', 'mathlib-merge-conflicts'] |
TwoFX assignee:TwoFX |
2-36224 2 days ago |
2-36264 2 days ago |
44-5116 44 days |
| 39988 |
grunweg author:grunweg |
refactor(Tactic/Translate): document name translation a bit more |
I found the code a bit hard to read: the following commits each improve the code slightly.
Also add a test exercising the "name matches the auto-generated name" code path.
#39962 will tweak the naming algorithm slightly.
---
[](https://gitpod.io/from-referrer/)
|
t-meta
maintainer-merge
|
34/20 |
Mathlib/Tactic/Translate/Core.lean,Mathlib/Tactic/Translate/TagUnfoldBoundary.lean,MathlibTest/Attribute/ToAdditive/Basic.lean |
3 |
12 |
['JovanGerb', 'github-actions', 'grunweg', 'joneugster', 'thorimur'] |
joneugster assignee:joneugster |
2-31734 2 days ago |
2-86119 2 days ago |
3-74652 3 days |
| 39951 |
chrisflav author:chrisflav |
refactor(CategoryTheory/Sites): replace `Functor.inducedTopology` |
The current `Functor.inducedTopology` is only defined for a locally fully faithful and locally cover dense functor and in the general situation it does not make the functor continuous. We change the situation in two ways:
- Replace `Functor.inducedTopology` by the induced topology in the sense of SGA, III, 3.1: The finest topology on the domain making a functor continuous.
- Add `Functor.restrictedTopology`: This is the coarsest topology on the domain containing all sieves whose image generates a covering sieve in the codomain. In general, a functor does not preserve covers for this topology and in particular is not necessarily continuous.
The old `Functor.inducedTopology` is equal (but not def-eq) to the new `Functor.restrictedTopology` whenever the old definition applies. In the situation where `Functor.restrictedTopology` makes the functor continuous, for example when `F` is flat, locally fully faithful and locally cover dense, the two topologies agree.
Related Zulip discussion: https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Induced.20topology.20on.20a.20category/with/593098526
From Proetale.
---
- [ ] depends on: #39961
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
294/122 |
Mathlib.lean,Mathlib/AlgebraicGeometry/Sites/Affine.lean,Mathlib/AlgebraicGeometry/Sites/AffineEtale.lean,Mathlib/AlgebraicGeometry/Sites/Proetale.lean,Mathlib/AlgebraicGeometry/Sites/Small.lean,Mathlib/AlgebraicGeometry/Sites/SmallAffineZariski.lean,Mathlib/CategoryTheory/MorphismProperty/CommaSites.lean,Mathlib/CategoryTheory/Sites/Coherent/Equivalence.lean,Mathlib/CategoryTheory/Sites/Coherent/SheafComparison.lean,Mathlib/CategoryTheory/Sites/DenseSubsite/InducedTopology.lean,Mathlib/CategoryTheory/Sites/Equivalence.lean,Mathlib/CategoryTheory/Sites/InducedTopology.lean |
12 |
4 |
['dagurtomas', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
robin-carlier assignee:robin-carlier |
2-30658 2 days ago |
2-30733 2 days ago |
3-48653 3 days |
| 39886 |
grunweg author:grunweg |
chore(Geometry/Manifold): remove some `@[expose] public` section |
Go through a few files and audit the exposed definitions there. Best reviewed commit by commit.
---
I'm happy to give more details on any file where desired.
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
tech debt
|
17/20 |
Mathlib/Geometry/Manifold/Bordism.lean,Mathlib/Geometry/Manifold/VectorField/LieBracket.lean,Mathlib/Geometry/Manifold/WhitneyEmbedding.lean |
3 |
1 |
['github-actions'] |
nobody |
2-28858 2 days ago |
5-82888 5 days ago |
5-82670 5 days |
| 39888 |
adomani author:adomani |
ci(decls-diff): post-build workflow that emits a Lean-aware diff into the step summary |
Adds a `workflow_run` workflow that fires after each PR's `ci` build, downloads the `import-graph` artifact on both sides (PR head + master merge-base), and writes a Lean-aware declarations diff to that run's step summary via leanprover-community/mathlib-ci#43. No PR-comment patching yet — that lands in stage 3. |
CI
LLM-generated
|
122/0 |
.github/workflows/decls-diff.yml |
1 |
5 |
['adomani', 'bryangingechen', 'github-actions'] |
nobody |
2-26264 2 days ago |
5-77879 5 days ago |
5-77661 5 days |
| 39887 |
adomani author:adomani |
ci(build_template): validate dump outputs are regular files before upload |
Follow-up to #39880, adding a check that artifacts produced in CI exist. |
CI |
10/0 |
.github/workflows/build_template.yml |
1 |
3 |
['adomani', 'github-actions', 'joneugster'] |
joneugster assignee:joneugster |
2-25399 2 days ago |
2-25399 2 days ago |
4-79994 4 days |
| 38589 |
vlad902 author:vlad902 |
feat(SimpleGraph): add universal vertex predicate |
Add the predicate `G.IsUniversal v` to indicate that `v` is a universal vertex, i.e. connected to all other vertices in `G`. This matches the recently added `G.IsIsolated v` predicate for isolated vertices.
Co-authored-by: Justin Lai
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
64/10 |
Mathlib/Combinatorics/SimpleGraph/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Finite.lean,Mathlib/Combinatorics/SimpleGraph/Tutte.lean,Mathlib/Combinatorics/SimpleGraph/UniversalVerts.lean |
5 |
16 |
['8e7', 'Rida-Hamadani', 'SnirBroshi', 'github-actions', 'mathlib-merge-conflicts', 'vlad902'] |
nobody |
2-23557 2 days ago |
2-23631 2 days ago |
34-41469 34 days |
| 40040 |
JovanGerb author:JovanGerb |
chore(Order/Bounds/Basic): add missing `to_dual` tags |
This PR adds some `to_dual` tags that weren't added in #35208
---
[](https://gitpod.io/from-referrer/)
|
t-order |
43/68 |
Mathlib/Order/Bounds/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
2-22096 2 days ago |
2-32183 2 days ago |
2-31964 2 days |
| 40046 |
gasparattila author:gasparattila |
feat(Topology/Sets): compositional continuity lemma for `(Nonempty)Compacts.map` |
This can be used to prove the continuity of a function containing `Compacts.map f`, where `f` itself depends on the variable.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
18/3 |
Mathlib/Topology/Sets/VietorisTopology.lean |
1 |
1 |
['github-actions'] |
nobody |
2-18407 2 days ago |
2-18488 2 days ago |
2-18269 2 days |
| 38864 |
xroblot author:xroblot |
feat(IsGaloisGroup): add `restrictHom` |
This PR adds the restriction map for the Galois group for domains.
Given a tower of domains `A ≤ B ≤ C`, `G` a Galois group for `C/A` and `G'` a Galois group for `B/A`, we define:
- `restrictHom`: the restriction of the `G`-action on `C` to the `G'`-action on `B`.
- `quotientMulEquiv`: the isomorphism between the quotient of `G` by the fixing subgroup of `B` and the Galois group of `B/A`.
Supporting lemmas include:
- `fixingSubgroup_range_algebraMap_isFractionRing`: the fixing subgroup of `algebraMap A B` equals the fixing subgroup of the induced map on fraction fields.
- `normal_of_isGaloisGroup`: the fixing subgroup is normal when both `C/A` and `B/A` are Galois.
---
- [x] depends on: #38902
- [x] depends on: #38464
[](https://gitpod.io/from-referrer/)
|
|
198/18 |
Mathlib/Algebra/Group/Subgroup/Basic.lean,Mathlib/FieldTheory/Galois/IsGaloisGroup.lean,Mathlib/FieldTheory/IntermediateField/Basic.lean |
3 |
3 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
2-16598 2 days ago |
2-16598 2 days ago |
2-16391 2 days |
| 40017 |
vasnesterov author:vasnesterov |
feat(Tactic/ComputeAsymptotics/Multiseries): define `Trimmed` |
Define `Trimmed` predicate and prove basic lemmas about it.
---
This is a part of the `compute_asymptotics` tactic (#28291).
[](https://gitpod.io/from-referrer/)
|
t-meta |
170/5 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/ComputeAsymptotics/Multiseries/Basis.lean,Mathlib/Tactic/ComputeAsymptotics/Multiseries/Defs.lean,Mathlib/Tactic/ComputeAsymptotics/Multiseries/Trimming.lean |
5 |
1 |
['github-actions'] |
dwrensha assignee:dwrensha |
2-16525 2 days ago |
3-15455 3 days ago |
3-15236 3 days |
| 37939 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(Order/Completion): embed a linear order into a dense and complete linear order |
The aim of the PR is to prove the following theorem that will be used as an input to [Sion.DMCompletion.exists_isSaddlePointOn](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Topology/Sion.html#Sion.DMCompletion.exists_isSaddlePointOn) :
*If `β` is any linear order, then there exists a complete and dense linear order `γ` together with a continuous embedding `ι : β ↪o γ` (for the order topologies on `β` and `γ`).*
Meanwhile, the PR also records various instances about dense orders and lemmas regarding the Dedekind MacNeille completion and lexicographic orders.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
211/4 |
Mathlib.lean,Mathlib/Data/Prod/Lex.lean,Mathlib/Order/Completion.lean,Mathlib/Topology/Order/Completion.lean,Mathlib/Topology/Sion.lean |
5 |
70 |
['ADedecker', 'AntoineChambert-Loir', 'JovanGerb', 'YaelDillies', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
vihdzp assignee:vihdzp |
2-12987 2 days ago |
7-15332 7 days ago |
42-25950 42 days |
| 39591 |
plp127 author:plp127 |
feat: `Equiv.symm_trans` |
Add theorem `Equiv.symm_trans`, which says `(f.trans g).symm = g.symm.trans f.symm`. See [Zulip](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/.60Equiv.2Esymm_trans.60/near/596266434).
---
[](https://gitpod.io/from-referrer/)
|
easy
t-logic
|
2/0 |
Mathlib/Logic/Equiv/Defs.lean |
1 |
1 |
['Hagb', 'github-actions'] |
nobody |
2-11627 2 days ago |
12-84414 12 days ago |
12-84195 12 days |
| 40049 |
JovanGerb author:JovanGerb |
feat: use `inferInstanceAs` for algebraic `Lex`/`Colex` instances |
This PR uses the new capabilities of `inferInstanceAs` to define the algebraic instances on `Lex` and `Colex` in a less leaky way, which lets us remove some `backward.respectTransparency` options.
---
[](https://gitpod.io/from-referrer/)
|
|
186/229 |
Mathlib/Algebra/Field/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/Lex.lean,Mathlib/Algebra/Order/GroupWithZero/Synonym.lean,Mathlib/Algebra/Order/Module/HahnEmbedding.lean,Mathlib/Algebra/Order/Ring/Cast.lean,Mathlib/Algebra/Order/Ring/Synonym.lean,Mathlib/Data/Nat/Cast/Synonym.lean,Mathlib/Order/Lex.lean,Mathlib/RingTheory/HahnSeries/Lex.lean |
12 |
2 |
['JovanGerb', 'github-actions'] |
nobody |
2-11209 2 days ago |
2-11092 2 days ago |
2-13466 2 days |
| 40041 |
JovanGerb author:JovanGerb |
chore: use `inferInstanceAs` for `OrderDual` instances |
This PR uses the new `inferInstanceAs` to generate the algebraic instances on `OrderDual`.
This is a cleaner version of the more manual fix from #37195
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
102/161 |
Mathlib/Algebra/Field/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/Ring/Synonym.lean |
6 |
4 |
['JovanGerb', 'github-actions', 'leanprover-radar'] |
nobody |
2-10024 2 days ago |
2-24324 2 days ago |
2-24887 2 days |
| 34361 |
grunweg author:grunweg |
chore: rename comp' to fun_comp a few more times; use to_fun to autog… |
…enerate
--------
- [x] depends on: #34257 (then this PR can be done the proper way)
---
[](https://gitpod.io/from-referrer/)
|
t-analysis
maintainer-merge
|
19/42 |
Mathlib/Analysis/Analytic/Composition.lean,Mathlib/Analysis/Calculus/DifferentialForm/Basic.lean,Mathlib/Analysis/Calculus/FDeriv/Comp.lean,Mathlib/Analysis/Calculus/VectorField.lean,Mathlib/Analysis/Meromorphic/Basic.lean |
5 |
12 |
['JovanGerb', 'github-actions', 'grunweg', 'mathlib-dependent-issues'] |
j-loreaux assignee:j-loreaux |
2-9819 2 days ago |
12-79044 12 days ago |
13-37891 13 days |
| 40042 |
kbuzzard author:kbuzzard |
perf(Mathlib/Algebra/DirectSum/Ring.lean): scope GradeZero instances |
When typeclass inference is barking up the wrong tree, it can sometimes take a long time to fail. One common instance of long failures in mathlib is instances like `DirectSum.GradeZero.ring : Ring (A 0)`, which has discrimination tree `Ring _` and applies to any search of the form `Ring (F X)` . This PR scopes `DirectSum.GradeZero.{nonUnitalNonAssocSemiring, commSemiring, nonUnitalNonAssocRing, ring...}` to the DirectSum` namespace. Tellingly, nothing else in mathlib needs to be fixed, meaning that users are already opening the `DirectSum` namespace when they want these to apply.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
44/14 |
Mathlib/Algebra/DirectSum/Ring.lean |
1 |
11 |
['b-mehta', 'github-actions', 'kbuzzard', 'leanprover-radar'] |
nobody |
2-8472 2 days ago |
2-23472 2 days ago |
2-23872 2 days |
| 39990 |
grunweg author:grunweg |
chore: move Data/Nat/Lattice to Order |
This file uses only order theory: that is a much better location
---
[](https://gitpod.io/from-referrer/)
|
tech debt
file-removed
|
19/19 |
Mathlib.lean,Mathlib/Algebra/Polynomial/Div.lean,Mathlib/Combinatorics/SimpleGraph/Clique.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/VertexColoring.lean,Mathlib/Data/ENat/Lattice.lean,Mathlib/Data/List/PeriodicityLemma.lean,Mathlib/Data/Multiset/Interval.lean,Mathlib/Data/NNReal/Basic.lean,Mathlib/Data/Set/Accumulate.lean,Mathlib/Dynamics/PeriodicPts/Lemmas.lean,Mathlib/Dynamics/TopologicalEntropy/DynamicalEntourage.lean,Mathlib/MeasureTheory/SetSemiring.lean,Mathlib/Order/Interval/Set/OrdConnectedLinear.lean,Mathlib/Order/Lattice/Nat.lean,Mathlib/Order/OrderIsoNat.lean,Mathlib/RingTheory/Nilpotent/Basic.lean,Mathlib/RingTheory/Nilpotent/Defs.lean,Mathlib/Topology/Instances/Nat.lean,Mathlib/Topology/Metrizable/Uniformity.lean |
19 |
6 |
['SnirBroshi', 'YaelDillies', 'github-actions', 'grunweg'] |
nobody |
2-6747 2 days ago |
3-82863 3 days ago |
3-82646 3 days |
| 39991 |
Brian-Nugent author:Brian-Nugent |
chore(Topology): refactor TopologicalSpace.Opens.map to use OrderHom.toFunctor |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
27/16 |
Mathlib/Geometry/RingedSpace/OpenImmersion.lean,Mathlib/Geometry/RingedSpace/PresheafedSpace/Gluing.lean,Mathlib/Topology/Category/TopCat/Opens.lean,Mathlib/Topology/Sheaves/Presheaf.lean |
4 |
1 |
['github-actions'] |
nobody |
2-6641 2 days ago |
3-82796 3 days ago |
3-82577 3 days |
| 39992 |
Brian-Nugent author:Brian-Nugent |
feat(CategoryTheory/Order): Lattice Homs preserve limits and colimits |
Provides instances for when [OrderHom.toFunctor](https://leanprover-community.github.io/mathlib4_docs/Mathlib/CategoryTheory/Category/Preorder.html#OrderHom.toFunctor) preserves limits and colimits.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
t-order
|
105/0 |
Mathlib.lean,Mathlib/CategoryTheory/Limits/Preserves/Lattice.lean |
2 |
2 |
['dagurtomas', 'github-actions'] |
nobody |
2-6622 2 days ago |
3-52425 3 days ago |
3-55200 3 days |
| 33640 |
JovanGerb author:JovanGerb |
feat: tool for finding duplicate declarations |
This PR defines a tool for finding duplicate declarations automatically. This can be used to help fix this technical debt.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
213/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/DuplicateDecls.lean,MathlibTest/Tactic/DuplicateDecls.lean,MathlibTest/Tactic/DuplicateDeclsAux.lean |
5 |
1 |
['github-actions'] |
dwrensha assignee:dwrensha |
2-6133 2 days ago |
8-25737 8 days ago |
8-25601 8 days |
| 40054 |
chrisflav author:chrisflav |
feat(Algebra/Category): `Over.mapPullbackAdj` as an adjunction on sheaves of modules |
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
t-algebra
label:t-algebra$ |
73/3 |
Mathlib/Algebra/Category/ModuleCat/Sheaf/PushforwardContinuous.lean |
1 |
1 |
['github-actions'] |
nobody |
2-5740 2 days ago |
2-5823 2 days ago |
2-5604 2 days |
| 40053 |
gasparattila author:gasparattila |
feat(Topology/Sets): disjoint `Compacts` form an open set |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
13/0 |
Mathlib/Topology/Sets/VietorisTopology.lean |
1 |
2 |
['gasparattila', 'github-actions'] |
nobody |
2-5729 2 days ago |
2-9911 2 days ago |
2-9692 2 days |
| 39994 |
Brian-Nugent author:Brian-Nugent |
feat(CategoryTheory): Functors that preserve the terminal object are Final |
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
29/1 |
Mathlib/CategoryTheory/Limits/Final.lean,Mathlib/CategoryTheory/Sites/CoproductSheafCondition.lean |
2 |
1 |
['github-actions'] |
nobody |
2-1411 2 days ago |
2-1486 2 days ago |
3-51270 3 days |
| 40056 |
YaelDillies author:YaelDillies |
feat(RingTheory/Coalgebra/GroupLike): missing simp lemmas for `valEquiv` |
From Toric
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
toric
maintainer-merge
|
3/0 |
Mathlib/RingTheory/Coalgebra/GroupLike.lean |
1 |
2 |
['chrisflav', 'github-actions'] |
nobody |
2-391 2 days ago |
2-3554 2 days ago |
2-3335 2 days |
| 36218 |
Brian-Nugent author:Brian-Nugent |
feat(CategoryTheory): Add exact sequences for Sheaf Cohomology |
In this PR, I add the long exact sequence for sheaf cohomology as well as prove that it is functorial. Since sheaf cohomology is defined in terms of `Ext`, this is done using the covariant sequence for `Ext`.
---
- [x] depends on: #34742
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
231/1 |
Mathlib.lean,Mathlib/Algebra/Homology/SpectralObject/Page.lean,Mathlib/CategoryTheory/ComposableArrows/Basic.lean,Mathlib/CategoryTheory/Sites/SheafCohomology/ExactSequences.lean |
4 |
29 |
['Brian-Nugent', 'dagurtomas', 'github-actions', 'joelriou', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
robin-carlier assignee:robin-carlier |
2-357 2 days ago |
2-433 2 days ago |
19-26494 19 days |
| 40059 |
qawbecrdtey author:qawbecrdtey |
chore(Dynamics): removed imports |
---
Removed several imports from `Dynamics` directory.
[](https://gitpod.io/from-referrer/)
|
t-dynamics |
0/16 |
Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean,Mathlib/Dynamics/Ergodic/Ergodic.lean,Mathlib/Dynamics/Flow.lean,Mathlib/Dynamics/Newton.lean,Mathlib/Dynamics/OmegaLimit.lean,Mathlib/Dynamics/PeriodicPts/Lemmas.lean,Mathlib/Dynamics/SymbolicDynamics/Basic.lean,Mathlib/Dynamics/TopologicalEntropy/CoverEntropy.lean |
8 |
3 |
['github-actions', 'leanprover-radar', 'qawbecrdtey'] |
nobody |
1-85242 1 day ago |
1-86377 1 day ago |
1-86158 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 |
6 |
['SnirBroshi', 'Vierkantor', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
eric-wieser assignee:eric-wieser |
1-84696 1 day ago |
3-29359 3 days ago |
72-55295 72 days |
| 37598 |
IvanRenison author:IvanRenison |
feat(Combinatorics/SimpleGraph/Coloring): add lemmas about coloring and maps |
---
Idea from this Zulip thread: [graph theory>Second Order Monadic Logic for Graph](https://leanprover.zulipchat.com/#narrow/channel/252551-graph-theory/topic/Second.20Order.20Monadic.20Logic.20for.20Graph/with/583013775)
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
maintainer-merge
|
33/11 |
Mathlib/Combinatorics/SimpleGraph/Coloring/VertexColoring.lean,Mathlib/Combinatorics/SimpleGraph/Maps.lean |
2 |
31 |
['IvanRenison', 'SnirBroshi', 'YaelDillies', 'b-mehta', 'github-actions', 'mathlib-bors', 'mathlib-merge-conflicts'] |
nobody |
1-83734 1 day ago |
2-6351 2 days ago |
52-48803 52 days |
| 38600 |
khwilson author:khwilson |
feat(Topology/Semicontinuity): additional definitions for correspondences |
On the way to proving Michael's selection theorem, several extra notions related to hemicontinuity are introduced. Specifically, the notion of a correspondence having lower sections and it having an open graph.
The first construction is what is used in the proof of Michael's theorem to generate approximations to the target selection. The second is used in the iterative step to generate new lower hemicontinuous maps.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
188/0 |
Mathlib/Topology/Semicontinuity/Defs.lean |
1 |
11 |
['eric-wieser', 'github-actions', 'j-loreaux', 'khwilson'] |
j-loreaux assignee:j-loreaux |
1-78734 1 day ago |
1-78807 1 day ago |
13-31207 13 days |
| 36299 |
grunweg author:grunweg |
feat: metric connections |
This file defines what it means for a connection on a Riemannian vector bundle `(V, g)` to be *compatible* with the metric `g`. Namely, the differentiated metric tensor `∇ g` (defined by `(X, σ, τ) ↦ X g(σ, τ) - g(∇_X σ, τ) - g(σ, ∇_X τ)`) should vanish on all differentiable vector fields `X` and differentiable sections `σ`, `τ`.
From the path towards the Levi-Civita connection and Riemannian geometry.
Co-authored-by: Heather Macbeth [25316162+hrmacbeth@users.noreply.github.com](mailto:25316162+hrmacbeth@users.noreply.github.com)
Co-authored-by: Patrick Massot [patrickmassot@free.fr](mailto:patrickmassot@free.fr)
---
- [x] depends on: #36279
- [x] depends on: #34263
- [x] depends on: #39485
- [x] depends on: #39554
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry |
210/3 |
Mathlib.lean,Mathlib/Geometry/Manifold/VectorBundle/CovariantDerivative/Metric.lean,Mathlib/Geometry/Manifold/VectorBundle/MDifferentiable.lean |
3 |
28 |
['github-actions', 'grunweg', 'leanprover-radar', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'or4nge19', 'sgouezel'] |
nobody |
1-77364 1 day ago |
1-77437 1 day ago |
1-77370 1 day |
| 40048 |
vasnesterov author:vasnesterov |
feat(Analysis/SpecialFunctions): Taylor series for `log (1 + z)` |
Prove `hasFPowerSeriesAt_clog_one`: `Complex.log (1 + x) = x - x ^ 2 / 2 + x ^ 3 / 3 - ...` and its `ℝ`-version.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
52/0 |
Mathlib/Analysis/SpecialFunctions/Complex/Analytic.lean,Mathlib/Analysis/SpecialFunctions/Complex/LogDeriv.lean |
2 |
2 |
['github-actions', 'wwylele'] |
nobody |
1-76250 1 day ago |
2-16867 2 days ago |
2-16648 2 days |
| 29315 |
kbuzzard author:kbuzzard |
chore: raise priority of `IsTopologicalSemiring.toIsModuleTopology` |
Instances of the form `SMul A B -> SMul (F A) (F B)` can be problematic for several reasons, one of them being that if `A = B` is a ring and if `F A` is also ring then this can cause a diamond with `Algebra.id`. In mathlib we attempt to coerce typeclass inference away from such problems by raising the priority of `Algebra.id` to 1100; this hack (implemented in #13032) seems to work well, indeed it seems sensible to try this instance early because it should be quick to fail and is always the right idea when it doesn't (the change also made mathlib faster and made a proof better). By the same logic it seems safe to raise the priority of `IsTopologicalSemiring.toIsModuleTopology` by the same amount; in FLT there is a mathematically natural but mathlib-problematic instance `Algebra K L -> Algebra (𝔸 K) (𝔸 L)`
and then another instance `Algebra K L -> IsModuleTopology (𝔸 K) (𝔸 L)` where `𝔸 K` is the adele ring of the number field `K`, and the change in this PR solves timeouts when `K = L`.
Zulip: [#mathlib4 > product of modules over product of rings @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/product.20of.20modules.20over.20product.20of.20rings/near/532799613)
---
[](https://gitpod.io/from-referrer/)
There are other solutions to this problem -- I am certainly not claiming that the FLT project needs this PR to be merged! We can tinker with priorities locally in FLT for example. However when I noticed that `Algebra.id` had a raised priority in mathlib I realised that mathlib might be amenable to this further ~~hack~~change.
|
t-topology |
4/1 |
Mathlib/Algebra/Algebra/Defs.lean,Mathlib/Topology/Algebra/Module/ModuleTopology.lean |
2 |
12 |
['github-actions', 'j-loreaux', 'kbuzzard', 'leanprover-bot', 'leanprover-radar', 'ocfnash'] |
ocfnash assignee:ocfnash |
1-71137 1 day ago |
1-71882 1 day ago |
26-75067 26 days |
| 40062 |
winstonyin author:winstonyin |
refactor(Analysis/ODE): restate existence and uniqueness using integral curve API |
* Restate the Picard-Lindelöf existence theorems and the $C^1$ vector field results using `IsIntegralCurveOn`/`IsIntegralCurveAt` instead of raw `HasDerivWithinAt`/`HasDerivAt`.
* Restate the Grönwall-based uniqueness theorems using `IsIntegralCurveOn` with half-open intervals (`Ico`/`Ioc`) instead of `HasDerivWithinAt … (Ici t)`/`HasDerivWithinAt … (Iic t)`.
* Rename uniqueness theorems to use dot notation on the integral curve types (e.g. `ODE_solution_unique_of_mem_Icc_right` becomes `IsIntegralCurveOn.eqOn_Icc_right`).
* Add `IsIntegralCurveOn.eqOn_inter`: if two integral curves on preconnected sets `I` and `J` agree at a point in both sets, they agree on `I ∩ J`.
* Add deprecation aliases for all renamed lemmas.
- [ ] depends on: #35043
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
t-analysis
|
526/151 |
.claude/agents/lean-proof-optimizer.md,.claude/settings.json,.mcp.json,.vscode/settings.json,Mathlib/Analysis/ODE/ExistUnique.lean,Mathlib/Geometry/Manifold/IntegralCurve/ExistUnique.lean,docs/1000.yaml,docs/undergrad.yaml,notes.md,summary_of_changes.md |
10 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
nobody |
1-68287 1 day ago |
1-68353 1 day ago |
1-75614 1 day |
| 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
t-combinatorics
|
38/0 |
Mathlib/Combinatorics/Enumerative/DoubleCounting.lean,Mathlib/Combinatorics/Pigeonhole.lean |
2 |
16 |
['IvanRenison', 'cjrl', 'ghseeli', 'github-actions', 'j-loreaux', 'vlad902'] |
nobody |
1-66299 1 day ago |
49-85944 49 days ago |
65-56524 65 days |
| 38943 |
felixpernegger author:felixpernegger |
feat(Topology/CWComplex/Classical): discrete spaces are CW complexes |
as well as some useful lemmas
This is partly based on code by @scholzhannah
I think this is notable to include, since it is pretty much the only (easy) "topological" sufficient condition for something being a CW complex there is.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
89/3 |
Mathlib/Topology/CWComplex/Classical/Basic.lean,Mathlib/Topology/DiscreteSubset.lean |
2 |
28 |
['felixpernegger', 'github-actions', 'scholzhannah'] |
nobody |
1-66296 1 day ago |
26-36281 26 days ago |
27-50099 27 days |
| 34271 |
gasparattila author:gasparattila |
feat(Topology/Sets): second-countability of `(Nonempty)Compacts` |
---
- [x] depends on: #34266
- [x] depends on: #34268
[](https://gitpod.io/from-referrer/)
|
t-topology |
17/76 |
Mathlib/Topology/MetricSpace/Closeds.lean,Mathlib/Topology/Sets/VietorisTopology.lean |
2 |
9 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot', 'scholzhannah'] |
PatrickMassot assignee:PatrickMassot |
1-64501 1 day ago |
23-82466 23 days ago |
61-4750 61 days |
| 34759 |
Hagb author:Hagb |
feat(RingTheory/MvPolynomial/MonomialOrder): add degree with `⊥` as degree of `0` |
`withBotDegree` is to distinguish the degree of zero polynomial from the degree of non-zero constant polynomial. `MonomialOrder.degree` of both are 0, while `withBotDegree` is `⊥` for zero polynomial and 0 for non-zero constant polynomial.
`MonomialOrder.withBotDegree` is to `MonomialOrder.degree` as `Polynomial.degree` is to `Polynomial.natDegree`.
It's upstreamized from https://github.com/WuProver/groebner_proj.
---
`MonomialOrder.withBotDegree` is to [`MonomialOrder.degree`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=MonomialOrder.degree#doc) as [`Polynomial.degree`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=Polynomial.degree#doc) is to [`Polynomial.natDegree`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=Polynomial.natDegree#doc).
It's upstreamized from [`Groebner/MonomialOrder.lean` in the repo `WuProver/groebner_proj`](https://github.com/WuProver/groebner_proj/blob/main/Groebner/MonomialOrder.lean).
- [x] ~depends on: #34755~
- [x] depends on: #34756
- [x] depends on: #34758
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
243/2 |
Mathlib/Data/Finsupp/MonomialOrder.lean,Mathlib/RingTheory/MvPolynomial/MonomialOrder.lean |
2 |
17 |
['Hagb', 'github-actions', 'joneugster', 'mariainesdff', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
mattrobball assignee:mattrobball |
1-64500 1 day ago |
24-19303 24 days ago |
59-7155 59 days |
| 38092 |
SnirBroshi author:SnirBroshi |
chore(Order/Defs/Unbundled): deprecate `def Symmetric` in favor of `class Std.Symm` |
---
[Mathlib's `def Symmetric`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Order/Defs/Unbundled.html#Symmetric)
[Core's `class Std.Symm`](https://leanprover-community.github.io/mathlib4_docs/Init/Core.html#Std.Symm)
[Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Relation.20properties.20duplication/near/544638270)
[](https://gitpod.io/from-referrer/)
|
t-order
maintainer-merge
|
465/408 |
Archive/Wiedijk100Theorems/FriendshipGraphs.lean,Archive/Wiedijk100Theorems/Konigsberg.lean,Counterexamples/HeawoodUnitDistance.lean,Mathlib/Algebra/BigOperators/Group/List/Lemmas.lean,Mathlib/Algebra/Divisibility/Units.lean,Mathlib/Algebra/Group/Basic.lean,Mathlib/Analysis/BoxIntegral/Partition/Basic.lean,Mathlib/Analysis/BoxIntegral/Partition/Split.lean,Mathlib/Analysis/InnerProductSpace/Orthogonal.lean,Mathlib/Analysis/Normed/Operator/Compact/FredholmAlternative.lean,Mathlib/CategoryTheory/Abelian/Pseudoelements.lean,Mathlib/CategoryTheory/IsConnected.lean,Mathlib/CategoryTheory/Limits/Final.lean,Mathlib/CategoryTheory/Limits/IsConnected.lean,Mathlib/Combinatorics/Additive/ErdosGinzburgZiv.lean,Mathlib/Combinatorics/Digraph/Orientation.lean,Mathlib/Combinatorics/Graph/Basic.lean,Mathlib/Combinatorics/Graph/Delete.lean,Mathlib/Combinatorics/Graph/Lattice.lean,Mathlib/Combinatorics/Graph/Maps.lean,Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean,Mathlib/Combinatorics/SimpleGraph/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Bipartite.lean,Mathlib/Combinatorics/SimpleGraph/Circulant.lean,Mathlib/Combinatorics/SimpleGraph/Clique.lean,Mathlib/Combinatorics/SimpleGraph/CompleteMultipartite.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Dart.lean,Mathlib/Combinatorics/SimpleGraph/Density.lean,Mathlib/Combinatorics/SimpleGraph/Hall.lean,Mathlib/Combinatorics/SimpleGraph/Hasse.lean,Mathlib/Combinatorics/SimpleGraph/LineGraph.lean,Mathlib/Combinatorics/SimpleGraph/Maps.lean,Mathlib/Combinatorics/SimpleGraph/Operations.lean,Mathlib/Combinatorics/SimpleGraph/Prod.lean,Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean,Mathlib/Combinatorics/SimpleGraph/Subgraph.lean,Mathlib/Combinatorics/SimpleGraph/Sum.lean,Mathlib/Combinatorics/SimpleGraph/Triangle/Tripartite.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Operations.lean,Mathlib/Data/Finset/Pairwise.lean,Mathlib/Data/Finsupp/BigOperators.lean,Mathlib/Data/List/Pairwise.lean,Mathlib/Data/List/Sigma.lean,Mathlib/Data/Multiset/Bind.lean,Mathlib/Data/Multiset/Defs.lean,Mathlib/Data/Multiset/Pairwise.lean,Mathlib/Data/Multiset/Replicate.lean,Mathlib/Data/Nat/GCD/Basic.lean,Mathlib/Data/Rel/Separated.lean,Mathlib/Data/Seq/Computation.lean,Mathlib/Data/Set/Pairwise/Basic.lean,Mathlib/Data/Set/Pairwise/List.lean,Mathlib/Data/Sym/Sym2.lean,Mathlib/Data/WSeq/Relation.lean,Mathlib/GroupTheory/Perm/Cycle/Factors.lean,Mathlib/GroupTheory/Perm/Cycle/Type.lean,Mathlib/GroupTheory/Perm/Support.lean,Mathlib/Logic/Function/Basic.lean,Mathlib/Logic/Relation.lean,Mathlib/MeasureTheory/Measure/AEDisjoint.lean,Mathlib/MeasureTheory/Measure/NullMeasurable.lean,Mathlib/ModelTheory/Graph.lean,Mathlib/ModelTheory/Semantics.lean,Mathlib/NumberTheory/ArithmeticFunction/Defs.lean,Mathlib/Order/Antichain.lean,Mathlib/Order/Defs/Unbundled.lean,Mathlib/Order/Disjoint.lean,Mathlib/Order/Lattice.lean,Mathlib/Order/Preorder/Chain.lean,Mathlib/Order/PropInstances.lean,Mathlib/RingTheory/Coprime/Ideal.lean,Mathlib/RingTheory/Radical/Basic.lean,Mathlib/Topology/CWComplex/Classical/Graph.lean,Mathlib/Topology/CompactOpen.lean,Mathlib/Topology/Connected/Clopen.lean,Mathlib/Topology/MetricSpace/MetricSeparated.lean,Mathlib/Topology/Separation/Basic.lean,Mathlib/Topology/Separation/GDelta.lean |
80 |
8 |
['SnirBroshi', 'dagurtomas', 'github-actions', 'leanprover-radar', 'mathlib-merge-conflicts'] |
bryangingechen assignee:bryangingechen |
1-64498 1 day ago |
13-54751 13 days ago |
45-40661 45 days |
| 38095 |
astrainfinita author:astrainfinita |
perf(Algebra/*/{InjSurj, TransferInstance}): reduce instance `Expr`s |
---
We can not just use `fast_instance%`, because `fast_instance%` reduces instances into constructor applications, but their arguments may still not be reduced.
This PR continues the work from #13795.
Original PR: https://github.com/leanprover-community/mathlib4/pull/13795
[Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/instance.20unfolding.20phenomenon/) |
t-algebra label:t-algebra$ |
401/219 |
Mathlib/Algebra/Field/Basic.lean,Mathlib/Algebra/Field/TransferInstance.lean,Mathlib/Algebra/Group/Action/Defs.lean,Mathlib/Algebra/Group/Action/TransferInstance.lean,Mathlib/Algebra/Group/InjSurj.lean,Mathlib/Algebra/Group/TransferInstance.lean,Mathlib/Algebra/GroupWithZero/Action/Defs.lean,Mathlib/Algebra/GroupWithZero/Action/End.lean,Mathlib/Algebra/GroupWithZero/Action/TransferInstance.lean,Mathlib/Algebra/GroupWithZero/InjSurj.lean,Mathlib/Algebra/Module/Defs.lean,Mathlib/Algebra/Module/RingHom.lean,Mathlib/Algebra/Ring/InjSurj.lean,Mathlib/Algebra/Ring/TransferInstance.lean,Mathlib/Util/TermReduce.lean,scripts/noshake.json |
16 |
7 |
['astrainfinita', 'github-actions', 'leanprover-radar'] |
kim-em assignee:kim-em |
1-64497 1 day ago |
46-55648 46 days ago |
46-57959 46 days |
| 38840 |
peabrainiac author:peabrainiac |
feat(Topology): continuous germs of maps |
Add a predicate `Filter.Germ.Continuous` for continuity of germs between topological spaces, and bundled types `ContinuousGerm x Y` / `PointedContinuousGerm x y` of continuous germs at `x` resp. continuous germs at `x` taking `x` to `y`.
---
See also #10977, which tried to introduce smooth germs between manifolds a while ago, though with a focus on pointwise algebraic operations instead of composability.
[](https://gitpod.io/from-referrer/)
|
t-topology |
171/1 |
Mathlib.lean,Mathlib/Topology/ContinuousGerm.lean,Mathlib/Topology/ContinuousOn.lean,Mathlib/Topology/Germ.lean |
4 |
6 |
['chrisflav', 'github-actions', 'j-loreaux', 'mathlib-merge-conflicts', 'peabrainiac'] |
mcdoll assignee:mcdoll |
1-64496 1 day ago |
13-67930 13 days ago |
26-16077 26 days |
| 38886 |
yuanyi-350 author:yuanyi-350 |
refactor(MeasureTheory): golf `Mathlib/MeasureTheory/Function/SimpleFuncDenseLp` |
- rewrites `measure_preimage_lt_top_of_memLp` via `FinMeasSupp.of_lintegral_ne_top` and `FinMeasSupp.map_iff`, instead of expanding `eLpNorm'` and splitting through `ENNReal.mul_lt_top_iff`
Extracted from #38104
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
t-measure-probability
|
9/21 |
Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
sgouezel assignee:sgouezel |
1-64495 1 day ago |
29-19035 29 days ago |
29-18816 29 days |
| 39214 |
Hagb author:Hagb |
refactor(Data/Finsupp/MonomialOrder): remove `.wf` (well foundedness) field from `MonomialOrder` |
Many properties still hold without the well-foundedness.
Although Gröbner basis theory requires the monomial order to be well founded for the termination of the division algorithm (formalized in `MonomialOrder.div`), many properties that don't relay on the division or remainder still hold without the well-foundedness.
Even the division algorithm can terminate in some cases where the monomial order isn't well founded. For example, if the divisors set is finite, then the algorithm can terminate w.r.t. `MonomialOrder.lex (σ := Nat)` even though it isn't well founded. Such cases cannot be directly stated if the formalization of monomial order requires well-foundedness.
Deletions:
- MonomialOrder.wf
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
21/13 |
Mathlib/Data/Finsupp/MonomialOrder.lean,Mathlib/Data/Finsupp/MonomialOrder/DegLex.lean,Mathlib/RingTheory/MvPolynomial/Groebner.lean,Mathlib/RingTheory/MvPolynomial/MonomialOrder/DegLex.lean |
4 |
5 |
['Hagb', 'github-actions', 'vihdzp'] |
mariainesdff assignee:mariainesdff |
1-64494 1 day ago |
21-7014 21 days ago |
21-6795 21 days |
| 39613 |
sharky564 author:sharky564 |
feat(LinearAlgebra/Projection): add quotientEquivOfIsCompl_comp_mkQ and quotientEquivOfIsTopCompl_comp_mkQ |
Adds the lemmas `Submodule.quotientEquivOfIsCompl_comp_mkQ` and `quotientEquivOfIsTopCompl_comp_mkQ` - the composition of `quotientEquivOfIsCompl`/`quotientEquivOfIsTopCompl` with `mkQ` agrees with the linear projection onto `q` along `p`. Additionally the proof of `IsCompl.isTopCompl_iff_continuous_quotientEquivOfIsCompl` is simplified.
---
This lemma was flagged as missing in the API in the review of #39260 by @themathqueen. Upon review of the lemma, I found it could be further simplified. |
t-algebra
t-topology
label:t-algebra$ |
11/4 |
Mathlib/LinearAlgebra/Projection.lean,Mathlib/Topology/Algebra/Module/Complement.lean |
2 |
9 |
['ADedecker', 'github-actions', 'sharky564', 'themathqueen'] |
jcommelin assignee:jcommelin |
1-64493 1 day ago |
8-60295 8 days ago |
11-65823 11 days |
| 39720 |
vihdzp author:vihdzp |
feat: cofinality within order |
We introduce `Order.cofWithin x = Order.cof (Iio x)` for the cofinality of an element within a preorder. This generalizes `Ordinal.cof`, with the caveat that `cof o : Cardinal.{u}` for `o : Ordinal.{u}`, whereas `cofWithin o : Cardinal.{u + 1}`.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory
maintainer-merge
|
104/14 |
Mathlib/SetTheory/Cardinal/Basic.lean,Mathlib/SetTheory/Cardinal/Cofinality/Basic.lean,Mathlib/SetTheory/Cardinal/Cofinality/Ordinal.lean |
3 |
11 |
['SnirBroshi', 'YaelDillies', 'b-mehta', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
alreadydone assignee:alreadydone |
1-64492 1 day ago |
6-51489 6 days ago |
9-77139 9 days |
| 39753 |
mathlib-splicebot author:mathlib-splicebot |
feat: the sigma-algebra generated by the constant indicator of a set is smaller than the one generated by the set |
This PR was automatically created from PR #37259 by @EtienneC30 via a [review comment](https://github.com/leanprover-community/mathlib4/pull/37259#discussion_r3292960152) by @EtienneC30. |
t-measure-probability |
6/0 |
Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean |
1 |
2 |
['EtienneC30', 'github-actions'] |
sgouezel assignee:sgouezel |
1-64492 1 day ago |
9-16071 9 days ago |
9-16303 9 days |
| 40051 |
grunweg author:grunweg |
fix: correct differential geometry elaborators around the tangent bundle |
The previous logic was simply wrong --- it was just masked in practice because
the `fromBaseInfo` strategy is tried first. (Indeed, just changing the order makes
both the build in `VectorBundle/Tangent` as well as a number of tests fail.)
This bugfix is important as #40047 (another elaborators bug fix) will change things,
so the tangent space strategy is tried first.
---
I don't feel strongly about the second commit, i.e. reordering the strategies now.
It yields slightly nicer output, so why not?
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
t-meta
|
12/23 |
Mathlib/Geometry/Manifold/Notation.lean,MathlibTest/DifferentialGeometry/Notation/Advanced.lean,MathlibTest/DifferentialGeometry/Notation/Delaborators.lean |
3 |
1 |
['github-actions'] |
thorimur assignee:thorimur |
1-64489 1 day ago |
2-13524 2 days ago |
2-13305 2 days |
| 39857 |
plp127 author:plp127 |
chore(Order/CompleteLattice/Basic): `Sort*` polymorphism |
Generalize some theorems from `Type*` to `Sort*`. Also make type-variables explicitly either `Type*` or `Sort*`.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
15/20 |
Mathlib/Order/CompleteLattice/Basic.lean |
1 |
4 |
['SnirBroshi', 'b-mehta', 'github-actions', 'mathlib-merge-conflicts'] |
nobody |
1-60952 1 day ago |
1-60989 1 day ago |
5-61485 5 days |
| 39372 |
yuanyi-350 author:yuanyi-350 |
refactor(NumberTheory): golf `Mathlib/NumberTheory/ModularForms/EisensteinSeries/MDifferentiable` |
- rewrites `eisensteinSeriesSIF_mdifferentiable` to use `UpperHalfPlane.mdifferentiable_iff` directly and conclude from local uniform convergence of the Eisenstein series
Extracted from #38144
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
|
1/6 |
Mathlib/NumberTheory/ModularForms/EisensteinSeries/MDifferentiable.lean |
1 |
3 |
['github-actions', 'mathlib-merge-conflicts', 'yuanyi-350'] |
nobody |
1-52217 1 day ago |
8-67694 8 days ago |
17-75680 17 days |
| 39759 |
plp127 author:plp127 |
chore(FieldTheory/KrullTopology): move lemmas to earlier file |
We move some lemmas unrelated to the Krull topology out of the `KrullTopology` file. They are placed in the earlier file `FieldTheory/IsGalois/Basic` instead.
---
In #23693 it is said that
> The proof of it uses some results in this file, so it can't be put into earlier files.
This is no longer true, so we want move it out of the `KrullTopology` file because the theorems have nothing to do with the Krull topology. I found that they can go in `FieldTheory/IsGalois/Basic` without modifying the proofs. They cannot go any earlier because the statement of the theorems contains `IsGalois`, which is defined in this file.
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
59/68 |
Mathlib/FieldTheory/Galois/Basic.lean,Mathlib/FieldTheory/KrullTopology.lean |
2 |
5 |
['acmepjz', 'github-actions', 'grunweg', 'plp127', 'vihdzp'] |
nobody |
1-50653 1 day ago |
8-80193 8 days ago |
8-79974 8 days |
| 39374 |
yuanyi-350 author:yuanyi-350 |
refactor(NumberTheory): golf `Mathlib/NumberTheory/ModularForms/Derivative` |
- rewrites `normalizedDerivOfComplex_sub` to reuse the additive and negation lemmas instead of reproving the subtraction formula pointwise
Extracted from #38144
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
|
5/10 |
Mathlib/NumberTheory/ModularForms/Derivative.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
1-43984 1 day ago |
1-44047 1 day ago |
18-12620 18 days |
| 39520 |
BryceT233 author:BryceT233 |
feat(RingTheory/Extension): `h1CotangentEquivCotangent` |
Given `Algebra R S` and an extension `P : Extension R S`, this PR adds `extendScalars` (viewing `P` as an extension of `S` over `P.Ring`), `defaultHom` (the canonical extension homomorphism from the universal extension `R[S] → S` to `P`) and some related linear equivalences on cotangent spaces or the first homology of the naive cotangent complexes. We show the commutativity of the following diagram:
Co-authored-by: @chrisflav
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
177/0 |
Mathlib.lean,Mathlib/RingTheory/Extension/Cotangent/Basic.lean,Mathlib/RingTheory/Extension/ExtendScalars.lean |
3 |
6 |
['BryceT233', 'chrisflav', 'github-actions', 'robin-carlier'] |
chrisflav assignee:chrisflav |
1-43117 1 day ago |
1-44423 1 day ago |
11-85192 11 days |
| 40067 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Analytic/Order` |
- refactors `AnalyticOnNhd.preimage_zero_mem_codiscreteWithin` to use `eqOn_zero_or_eventually_ne_zero_of_preconnected` directly
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
3/8 |
Mathlib/Analysis/Analytic/Order.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
1-41164 1 day ago |
1-42006 1 day ago |
1-41787 1 day |
| 40068 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Asymptotics/SpecificAsymptotics` |
- rewrites `Asymptotics.isLittleO_pow_pow_cobounded_of_lt` via `mul_isLittleO` and `isLittleO_const_id_cobounded`, avoiding the explicit cobounded estimate
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
3/12 |
Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
1-41163 1 day ago |
1-42004 1 day ago |
1-41785 1 day |
| 40070 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Complex/Isometry` |
- simplifies `LinearIsometry.im_apply_eq_im` by deriving real-part equality from the squared distance identity
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
6/11 |
Mathlib/Analysis/Complex/Isometry.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
1-41160 1 day ago |
1-42000 1 day ago |
1-41781 1 day |
| 38831 |
kbuzzard author:kbuzzard |
chore(Algebra/HierarchyDesign): tidy up |
We don't have `TopologicalField` any more. I've changed it to a more appropriate example. Also, the TODO in this file was ported from mathlib3 which had `topological_ring` and `ordered_ring`; both of these hierarchies have now been decoupled from the algebra hierarchy now. I changed examples to normed examples as this is still not decoupled (and maybe never will be).
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
maintainer-merge
label:t-algebra$ |
7/5 |
Mathlib/Algebra/HierarchyDesign.lean |
1 |
6 |
['YaelDillies', 'github-actions', 'j-loreaux', 'kbuzzard'] |
nobody |
1-40485 1 day ago |
1-69329 1 day ago |
4-48119 4 days |
| 40069 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Complex/UpperHalfPlane/MoebiusAction` |
- refactors `σ_mul` by simplifying the determinant sign split with `mul_pos_iff`
- rewrites `denom_cocycle'` as a direct consequence of `denom_cocycle`
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
1/7 |
Mathlib/Analysis/Complex/UpperHalfPlane/MoebiusAction.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
nobody |
1-40380 1 day ago |
1-42002 1 day ago |
1-41783 1 day |
| 40015 |
SnirBroshi author:SnirBroshi |
chore: replace some `omega`s |
None of these had any noticable slowdown.
---
Is it time to add `omega` to the technical debt counters? There are ~250 left.
[](https://gitpod.io/from-referrer/)
|
tech debt
maintainer-merge
|
7/7 |
Mathlib/Combinatorics/SimpleGraph/Walk/Subwalks.lean,Mathlib/Data/Finset/Powerset.lean,Mathlib/Data/Int/Interval.lean,Mathlib/Data/List/Defs.lean,Mathlib/Data/List/Infix.lean |
5 |
8 |
['JovanGerb', 'SnirBroshi', 'chenson2018', 'github-actions', 'grunweg'] |
JovanGerb assignee:JovanGerb |
1-39053 1 day ago |
3-7443 3 days ago |
3-11606 3 days |
| 39984 |
grunweg author:grunweg |
chore(Data): move some files to better locations |
Move a number of files in `Data` to clearly better locations.
See individual commit messages for details.
---
- [x] depends on: #39976
[](https://gitpod.io/from-referrer/)
|
file-removed
tech debt
maintainer-merge
|
30/30 |
Counterexamples/HomogeneousPrimeNotPrime.lean,Mathlib.lean,Mathlib/Algebra/Group/ConjFinite.lean,Mathlib/Algebra/Group/Subgroup/Finite.lean,Mathlib/Algebra/GroupWithZero/Units/Fintype.lean,Mathlib/Algebra/Lie/SerreConstruction.lean,Mathlib/Analysis/Calculus/ContDiff/FaaDiBruno.lean,Mathlib/Analysis/Real/Cardinality.lean,Mathlib/CategoryTheory/Galois/Basic.lean,Mathlib/Combinatorics/SimpleGraph/VertexCover.lean,Mathlib/Data/Set/PowersetCard.lean,Mathlib/Data/ZMod/Basic.lean,Mathlib/GroupTheory/Index.lean,Mathlib/GroupTheory/SpecificGroups/Alternating.lean,Mathlib/LinearAlgebra/Matrix/Action.lean,Mathlib/LinearAlgebra/Matrix/Bilinear.lean,Mathlib/LinearAlgebra/Matrix/Cartan.lean,Mathlib/LinearAlgebra/Matrix/DualNumber.lean,Mathlib/LinearAlgebra/Matrix/Invertible.lean,Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean,Mathlib/LinearAlgebra/Matrix/SchurComplement.lean,Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean,Mathlib/LinearAlgebra/Projectivization/Cardinality.lean,Mathlib/NumberTheory/MulChar/Basic.lean,Mathlib/RingTheory/SimpleModule/Basic.lean,Mathlib/SetTheory/Cardinal/Embedding.lean,Mathlib/SetTheory/Cardinal/NatCard.lean,Mathlib/SetTheory/Cardinal/Rat.lean,Mathlib/Topology/Compactification/OnePoint/ProjectiveLine.lean,scripts/noshake.json |
30 |
4 |
['YaelDillies', 'github-actions', 'mathlib-dependent-issues'] |
nobody |
1-38811 1 day ago |
2-86386 2 days ago |
2-86223 2 days |
| 40071 |
yuanyi-350 author:yuanyi-350 |
refactor(Analysis): golf `Mathlib/Analysis/Convex/BetweenList` |
- rewrites `SortedLE.wbtw` using `triplewise_iff_getElem` and sorted getElem inequalities instead of nested list induction
Extracted from #37968
[](https://gitpod.io/from-referrer/) |
codex
t-analysis
LLM-generated
|
3/14 |
Mathlib/Analysis/Convex/BetweenList.lean |
1 |
3 |
['github-actions', 'themathqueen', 'yuanyi-350'] |
nobody |
1-38184 1 day ago |
1-41998 1 day ago |
1-41779 1 day |
| 37073 |
kim-em author:kim-em |
feat: add wrap_instance% using core's wrapInstance |
This PR adds a new `wrap_instance%` term elaborator that delegates to Lean core's
`wrapInstance` (from https://github.com/leanprover/lean4/pull/12897), and replaces ~53
`fast_instance%` call sites where the replacement is safe.
`wrap_instance%` is a thin wrapper (~15 lines) around `Lean.Meta.wrapInstance`. 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/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/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 |
16 |
12 |
['JovanGerb', 'github-actions', 'kim-em', 'leanprover-radar', 'mathlib-merge-conflicts'] |
nobody |
1-33122 1 day ago |
5-2297 5 days ago |
34-78216 34 days |
| 38974 |
Brian-Nugent author:Brian-Nugent |
chore: fix documentation of `LocallyQuasiFinite` |
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry
maintainer-merge
|
5/5 |
Mathlib/AlgebraicGeometry/Morphisms/QuasiFinite.lean |
1 |
6 |
['Brian-Nugent', 'chrisflav', 'github-actions'] |
chrisflav assignee:chrisflav |
1-32862 1 day ago |
1-68037 1 day ago |
26-52717 26 days |
| 40077 |
kim-em author:kim-em |
fix(CI): keep nightly-testing bump and status bots working on non-nightly toolchains |
This PR makes the two `nightly-testing` automation bots tolerate the branch being on a non-nightly toolchain (an rc or stable, e.g. `leanprover/lean4:v4.31.0-rc1`), which had deadlocked the toolchain bump and silenced the status updates.
The bump bot fetches the current toolchain as a tag in `leanprover/lean4-nightly` to compute the lean PR delta. An rc/stable tag only lives in `leanprover/lean4`, so the fetch failed between the bump commit and the push, and `nightly-testing` got stuck. That fetch is now non-fatal: off a nightly we skip adaptation discovery and still push the bump, so the next run advances to the latest nightly.
The reporting bot did the ✅ status post and all the housekeeping (tagging, the `nightly-with-mathlib` merge, bump-branch reminders) in one job, whose tag step `exit 1`d on a non-nightly toolchain before the post — so a green CI went silent. It's now split into `report_success` (always posts, using the tested `head_sha`) and `housekeeping` (skips gracefully off a nightly, and shouts to the status topic if it fails).
Also adds `concurrency` guards to both workflows and stops swallowing a genuine `nightly-with-mathlib` merge failure.
🤖 Prepared with Claude Code |
CI |
140/62 |
.github/workflows/nightly_bump_and_merge.yml,.github/workflows/nightly_detect_failure.yml |
2 |
1 |
['github-actions'] |
nobody |
1-31781 1 day ago |
1-33424 1 day ago |
1-33205 1 day |
| 40014 |
vasnesterov author:vasnesterov |
feat(Tactic/ComputeAsymptotics/Multiseries): basic constructions |
Introduce basic constructions for multiseries: `const`, `monomial`, `monomialRpow`.
---
This is a part of the `compute_asymptotics` tactic (#28291).
[](https://gitpod.io/from-referrer/)
|
t-meta |
330/9 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/ComputeAsymptotics/Multiseries/Basic.lean,Mathlib/Tactic/ComputeAsymptotics/Multiseries/Basis.lean,Mathlib/Tactic/ComputeAsymptotics/Multiseries/Defs.lean |
5 |
1 |
['github-actions'] |
thorimur assignee:thorimur |
1-30312 1 day ago |
3-18328 3 days ago |
3-18261 3 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
|
187/17 |
Mathlib/Tactic/DefEqAbuse.lean,MathlibTest/DefEqAbuse.lean |
2 |
6 |
['github-actions', 'kim-em', 'mathlib-merge-conflicts', 'thorimur'] |
nobody |
1-30133 1 day ago |
34-30738 34 days ago |
51-28730 51 days |
| 40013 |
WilliamCoram author:WilliamCoram |
feat: define bounded sets and power bounded elements |
We define bounded sets, so that we can define power bounded elements in a topological ring. Using this we generalise some notions of topoligcally nilpotent elements and define a residue field.
AI usage: some proofs were initially generated with Claude code before being cleaned and/or rewritten by hand.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
LLM-generated
large-import
|
430/5 |
Mathlib.lean,Mathlib/Topology/Algebra/Bounded.lean,Mathlib/Topology/Algebra/PowerBounded.lean,Mathlib/Topology/Algebra/TopologicallyNilpotent.lean |
4 |
10 |
['ADedecker', 'WilliamCoram', 'github-actions', 'vihdzp', 'wwylele'] |
nobody |
1-23012 1 day ago |
1-27457 1 day ago |
3-19778 3 days |
| 39075 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra/CommRingCat): colimit of local ring via local hom |
In this PR, we deal with filtered colimit of local ring via local homomorphisms, proving it is
again local, with maximal ideal equal to the union of images of maximal ideals.
Co-authored-by: Wang Jingting
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
209/0 |
Mathlib.lean,Mathlib/Algebra/Category/Ring/FilteredColimitsLocal.lean |
2 |
1 |
['github-actions'] |
nobody |
1-22060 1 day ago |
8-42005 8 days ago |
24-24686 24 days |
| 32692 |
WilliamCoram author:WilliamCoram |
feat: define multivariate restricted power series |
We define multivariate restricted power series over a normed ring R, and show the properties that they form a ring when R has the ultrametric property.
This work generalises my previous work in #26089 which will need to be refactored.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-number-theory
new-contributor
|
159/0 |
Mathlib.lean,Mathlib/Algebra/Order/Antidiag/Prod.lean,Mathlib/Algebra/Order/Antidiag/Tendsto.lean,Mathlib/RingTheory/MvPowerSeries/Restricted.lean |
4 |
52 |
['WilliamCoram', 'erdOne', 'github-actions', 'jcommelin', 'mathlib-merge-conflicts', 'mbkybky'] |
jcommelin assignee:jcommelin |
1-21370 1 day ago |
1-21522 1 day ago |
55-76179 55 days |
| 39029 |
felixpernegger author:felixpernegger |
chore: remove redundant `unfold`s |
This PR removed roughly (estimated by files I went through) half of the `unfold`'s in mathlib which can be removed such that the proof still works (found by searching `unfold ` in VSCode in manually going through ~600/1100 occurences).
I originally planned to replace all, but I couldn't find any relevant discussion if this is actually a good practice, so to save potentially wasted time, I make this PR now. (similarly with the `clear` tactic)
---
[](https://gitpod.io/from-referrer/)
|
|
64/109 |
Archive/Imo/Imo1994Q1.lean,Archive/Imo/Imo1998Q2.lean,Archive/Imo/Imo2001Q5.lean,Archive/Wiedijk100Theorems/BuffonsNeedle.lean,Mathlib/Algebra/EuclideanDomain/Basic.lean,Mathlib/Algebra/MvPolynomial/Variables.lean,Mathlib/Algebra/Order/Floor/Ring.lean,Mathlib/AlgebraicGeometry/GammaSpecAdjunction.lean,Mathlib/AlgebraicTopology/SimplexCategory/Basic.lean,Mathlib/AlgebraicTopology/SimplicialSet/Coskeletal.lean,Mathlib/Analysis/Asymptotics/SuperpolynomialDecay.lean,Mathlib/Analysis/Complex/JensenFormula.lean,Mathlib/Analysis/Convex/Strict.lean,Mathlib/Analysis/InnerProductSpace/Calculus.lean,Mathlib/Analysis/InnerProductSpace/GramSchmidtOrtho.lean,Mathlib/Analysis/InnerProductSpace/PiL2.lean,Mathlib/Analysis/SpecialFunctions/ContinuousFunctionalCalculus/Rpow/Basic.lean,Mathlib/Analysis/SpecialFunctions/Trigonometric/Chebyshev/Orthogonality.lean,Mathlib/CategoryTheory/Functor/Flat.lean,Mathlib/CategoryTheory/Functor/FullyFaithful.lean,Mathlib/CategoryTheory/Monoidal/Closed/Functor.lean,Mathlib/Combinatorics/Enumerative/Partition/Basic.lean,Mathlib/Combinatorics/Graph/Delete.lean,Mathlib/Computability/PartrecCode.lean,Mathlib/Computability/RegularExpressions.lean,Mathlib/Computability/TuringMachine/PostTuringMachine.lean,Mathlib/Computability/TuringMachine/StackTuringMachine.lean,Mathlib/Condensed/Light/TopCatAdjunction.lean,Mathlib/Data/Fintype/EquivFin.lean,Mathlib/Data/Fintype/List.lean,Mathlib/Data/Int/GCD.lean,Mathlib/Data/List/Intervals.lean,Mathlib/Data/Matrix/Basis.lean,Mathlib/Data/Nat/BinaryRec.lean,Mathlib/Data/Nat/ChineseRemainder.lean,Mathlib/Data/Nat/Digits/Div.lean,Mathlib/Data/Nat/Dist.lean,Mathlib/Data/Ordmap/Ordset.lean,Mathlib/Data/PNat/Prime.lean,Mathlib/Data/Real/Embedding.lean,Mathlib/Data/Seq/Defs.lean,Mathlib/Data/Stream/Init.lean,Mathlib/Data/WSeq/Basic.lean,Mathlib/Data/ZMod/Basic.lean |
44 |
5 |
['felixpernegger', 'github-actions', 'leanprover-radar', 'mathlib-merge-conflicts'] |
nobody |
1-19203 1 day ago |
1-19245 1 day ago |
23-27317 23 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.
Main additions:
* `PointedCone.toSubmodule` that produces a submodule with the same support given that `-C = C`. Also the corresponding `CanLift`
* `PointedCone.hull_neg_pair_eq_span_singleton` proving `hull R {-x, x} = R ∙ x` (simp lemma)
* `PointedCone.span_eq_hull_neg_sup_hull` proving `span R s = hull R (-s) ⊔ hull R s`
* `PointedCone.mem_span` proving `x ∈ span R C ↔ ∃ p, n ∈ C, x = p - n`
Considerations: there are several ways to express that a convex cone is a submodule:
* `-C = C`
* `-C ≤ C` or `C ≤ -C`
* `C = span R C`
* `C = C.lineal`
The consensus was that the the first option is the most direct way to express this property, which then allows to lift to a submodule.
Co-authored by: Olivia Röhrig, Kilian Rueß, Artie Khovanov
---
- [x] depends on: #37464
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry |
65/0 |
Mathlib/Geometry/Convex/Cone/Pointed.lean |
1 |
66 |
['artie2000', 'github-actions', 'martinwintermath', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp'] |
nobody |
1-17293 1 day ago |
6-83203 6 days ago |
23-83649 23 days |
| 39729 |
grunweg author:grunweg |
chore(Geometry/Manifold): make some doc-strings follow the style guide |
such as, by them beginning with the object they are defining as a subject.
This will yield much better doc-strings for the differential geometry elaborators in #39677.
It also increases conformance with the [documentation style guide](https://github.com/leanprover/lean4/blob/master/doc/style.md).
Inspired by the MI retreat in Lisbon.
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry |
32/22 |
Mathlib/Geometry/Manifold/ContMDiff/Defs.lean,Mathlib/Geometry/Manifold/MFDeriv/Defs.lean,Mathlib/Geometry/Manifold/MFDeriv/NormedSpace.lean |
3 |
3 |
['github-actions', 'grunweg', 'mathlib-merge-conflicts'] |
PatrickMassot assignee:PatrickMassot |
1-13135 1 day ago |
1-13237 1 day ago |
9-67790 9 days |
| 36219 |
gasparattila author:gasparattila |
chore(Order/SupClosed): use `to_dual` |
---
[](https://gitpod.io/from-referrer/)
|
t-order
maintainer-merge
|
68/215 |
Mathlib/Order/ConditionallyCompleteLattice/Finset.lean,Mathlib/Order/SupClosed.lean |
2 |
16 |
['JovanGerb', 'YaelDillies', 'gasparattila', 'github-actions', 'mathlib-merge-conflicts'] |
YaelDillies assignee:YaelDillies |
1-12445 1 day ago |
1-33434 1 day ago |
51-4876 51 days |
| 38582 |
dennj author:dennj |
feat(LinearAlgebra/Matrix): add Hadamard matrices |
Introduce `Matrix.IsHadamard` over a general `Ring R`, with the basic theory:
- `IsHadamard` and `IsComplexHadamard` predicates (Definitions 2.3.1 and 2.7.1
of de Launey–Flannery, *Algebraic Design Theory*).
- `IsHadamard.det_sq`: the Hadamard determinant identity `(det A)² = n^n`.
- `IsHadamard.det_ne_zero`: over an integral domain of characteristic zero.
- `IsHadamard.transpose`: `Aᵀ` is Hadamard whenever `A` is (Theorem 2.3.6),
proved over `[CommRing R] [IsDomain R] [CharZero R]` via the adjugate.
- `IsHadamard.card_eq_sq_of_const_row_sum`: a Hadamard matrix with constant
row sum `s` has order `s²` (slightly stronger than Theorem 2.3.7: the
constant-column-sum hypothesis is implied by orthogonality).
- `IsHadamard.kronecker`: the Sylvester (Kronecker product) construction.
- `IsHadamard.four_dvd_card`: order of a Hadamard matrix of order > 2 is
divisible by 4.
`Matrix.mul_eq_smul_one_symm`: if `M * N = c • 1` and `det M ≠ 0` over an
integral domain, then `N * M = c • 1`. Used here for the transpose proof, but
generally useful, analogous to how `mul_eq_one_comm` works over stably finite
rings, but covers the integral-domain case (e.g. `ℤ`, `ℤ[X]`) where matrix
inverses don't exist.
## References
Adds the de Launey–Flannery bibliography entry, cited from the new file.
Human-made PR with LLM used for proof golfing and documentation |
t-algebra
new-contributor
label:t-algebra$ |
270/0 |
Mathlib.lean,Mathlib/Algebra/Group/Action/Defs.lean,Mathlib/Algebra/Group/Commute/Defs.lean,Mathlib/Algebra/Star/Unitary.lean,Mathlib/LinearAlgebra/Matrix/HadamardMatrix.lean,docs/references.bib |
6 |
56 |
['JJYYY-JJY', 'dennj', 'eric-wieser', 'github-actions', 'themathqueen', 'wwylele'] |
themathqueen assignee:themathqueen |
1-9093 1 day ago |
19-76724 19 days ago |
35-9145 35 days |
| 40033 |
JJYYY-JJY author:JJYYY-JJY |
chore: remove flexible linter suppressions |
This PR removes two local `linter.flexible` suppressions by replacing compact `simp; infer_instance` with explicit proofs.
Changed files:
- `Mathlib/Dynamics/TopologicalEntropy/DynamicalEntourage.lean`
- `Mathlib/Topology/UniformSpace/Ultra/Constructions.lean`
Tested with:
`lake build`
---
[](https://gitpod.io/from-referrer/)
|
new-contributor |
6/8 |
Mathlib/Dynamics/TopologicalEntropy/DynamicalEntourage.lean,Mathlib/Topology/UniformSpace/Ultra/Constructions.lean |
2 |
6 |
['chenson2018', 'github-actions', 'vihdzp'] |
nobody |
1-8308 1 day ago |
2-74892 2 days ago |
2-74673 2 days |
| 38347 |
artie2000 author:artie2000 |
doc(LinearAlgebra/FreeModule/StrongRankCondition): clarify context of `commRing_strongRankCondition` |
* Replace mathematical documentation in `Mathlib.LinearAlgebra.FreeModule.StrongRankCondition`, with explanation that the file comprises a shortcut instance `commRing_strongRankCondition`
* Signpost `commRing_strongRankCondition` at both its parent instances
* Increase priority of shortcut instance `commRing_strongRankCondition` above that of its parent instances
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
28/41 |
Mathlib/LinearAlgebra/FreeModule/StrongRankCondition.lean,Mathlib/LinearAlgebra/InvariantBasisNumber.lean,Mathlib/RingTheory/FiniteType.lean |
3 |
4 |
['artie2000', 'github-actions', 'joneugster', 'mathlib-merge-conflicts'] |
joneugster assignee:joneugster |
0-85172 23 hours ago |
0-85172 23 hours ago |
23-39366 23 days |
| 38778 |
felixpernegger author:felixpernegger |
feat(Topology/EMetricSpace): instances of weak extended metric spaces |
Continuation of #38105.
In particular, this makes `ENNReal` and `EReal` weak extended metric spaces. After this PR one can probably generalise various results/definition which use `(Pseudo)EMetricSpace` to use `Weak(Pseudo)EMetricSpace` (so that they in particular also hold for `ENNReal` and `EReal`) |
t-topology |
287/2 |
Mathlib.lean,Mathlib/Topology/EMetricSpace/Weak.lean,Mathlib/Topology/Order/WithTop.lean |
3 |
7 |
['SnirBroshi', 'felixpernegger', 'github-actions', 'j-loreaux'] |
PatrickMassot assignee:PatrickMassot |
0-83848 23 hours ago |
0-84972 23 hours ago |
15-69967 15 days |
| 40081 |
xroblot author:xroblot |
chore(Algebra/Algebra/Subalgebra): lower priority of Module instance |
Lower the priority of `Subalgebra.instModuleSubtypeMem` from default (1000) to `low` (100).
This instance uses `inferInstance`, which re-triggers typeclass synthesis and can be expensive
to succeed. Lowering the priority makes it a fallback when cheaper paths are available.
Benchmark results show no regressions and meaningful speedups on several files
(up to -23% on `Mathlib.LinearAlgebra.TensorProduct.Subalgebra`).
:robot: Prepared with Claude Code |
t-algebra label:t-algebra$ |
1/1 |
Mathlib/Algebra/Algebra/Subalgebra/Basic.lean |
1 |
7 |
['github-actions', 'leanprover-radar', 'plp127', 'xroblot'] |
nobody |
0-83754 23 hours ago |
0-84993 23 hours ago |
0-84816 23 hours |
| 39629 |
hawkrobe author:hawkrobe |
feat(RingTheory/Coalgebra/Convolution): Algebra on convolution semiring |
This PR completes the algebraic structure on the convolution object.
---
I followed the pattern in [`Matrix/WithConv.lean`](https://github.com/leanprover-community/mathlib4/blob/5e932f97dd25535344f80f9dd8da3aab83df0fe6/Mathlib/LinearAlgebra/Matrix/WithConv.lean#L98) which splits out `IsScalarTower` and `SMulCommClass`. Used in pre-Lie / Oudom–Guin constructions. |
t-ring-theory
new-contributor
|
24/1 |
Mathlib/RingTheory/Coalgebra/Convolution.lean |
1 |
2 |
['github-actions'] |
nobody |
0-76905 21 hours ago |
0-76968 21 hours ago |
11-85672 11 days |
| 33506 |
Rida-Hamadani author:Rida-Hamadani |
feat(SimpleGraph): construct a cycle of two distinct paths with same start and end |
Co-authored-by: Vlad Tsyrklevich
Co-authored-by: Snir Broshi <26556598+SnirBroshi@users.noreply.github.com>
---
- [x] depends on: #33249
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
maintainer-merge
|
119/5 |
Mathlib/Combinatorics/SimpleGraph/Paths.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Decomp.lean,Mathlib/Data/List/Basic.lean,Mathlib/Data/List/Nodup.lean |
5 |
69 |
['Rida-Hamadani', 'SnirBroshi', 'YaelDillies', 'b-mehta', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot', 'vlad902'] |
nobody |
0-72008 20 hours ago |
0-72008 19 hours ago |
37-35568 37 days |
| 39239 |
alainchmt author:alainchmt |
feat(FieldTheory/Finite): irreducible polynomial divides X^q^n - X iff degree divides n |
---
Add the theorem saying that, for an irreducible polynomial `f` over a finite field `K`, the degree of `f` divides `n` if and only if `f` divides `X ^ (Nat.card K) ^ n - X`. Include auxiliary lemmas.
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
34/0 |
Mathlib/FieldTheory/Finite/Extension.lean,Mathlib/FieldTheory/Minpoly/Field.lean |
2 |
2 |
['github-actions'] |
nobody |
0-71724 19 hours ago |
20-34665 20 days ago |
20-34446 20 days |
| 39223 |
BryceT233 author:BryceT233 |
feat(RingTheory/Extension): surjectivity and kernel of `Cotangent.map` |
This PR adds `Cotangent.map_surjective_of_comap_eq` and `Cotangent.map_ker_of_surjective`, which are adaptations of the existing lemmas `Ideal.mapCotangent_surjective_of_comap_eq` and `Ideal.mapCotangent_ker_of_surjective` to the cotangent space of extensions. Because `Algebra.Extension.Cotangent` uses a type synonym to define the cotangent space of an extension, the results for `Ideal.mapCotangent` could not be used directly and needed to be restated in terms of `Algebra.Extension.Cotangent.map`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
32/0 |
Mathlib/RingTheory/Extension/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
0-70045 19 hours ago |
20-77291 20 days ago |
20-77072 20 days |
| 39282 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): add union morphism lemma for LanguageOn |
In symbolic dynamics.
This PR proves that taking the language over a finite shape commutes with unions of configuration sets:
$LanguageOn (X \cup Y) U = LanguageOn X U \cup LanguageOn Y U$
The proof is a direct unfolding of definitions: a pattern in the language of $X \cup Y$ comes from restricting a configuration $x ∈ X \cup Y$, and splitting on whether $x \in X$ or $x \in Y$ yields the corresponding inclusion in either $LanguageOn X U$ or $LanguageOn Y U$. The converse direction rebuilds a witness in $X \cup Y$ from either side of the union.
Related to issue #39252 |
t-dynamics
new-contributor
|
9/1 |
Mathlib/Dynamics/SymbolicDynamics/Basic.lean |
1 |
4 |
['Sfgangloff', 'github-actions', 'sgouezel'] |
sgouezel assignee:sgouezel |
0-67763 18 hours ago |
19-42585 19 days ago |
19-42366 19 days |
| 40088 |
jeangud author:jeangud |
fix(Tactic/Linter/DocString): avoid false positive in syntax quotation patterns |
# Description
Syntax quotations are a key meta-programming feature for Lean 4, but the `linter.style.docString.empty` linter currently does not handle them correctly.
This PR:
- Closes #40087
- Adds a regression test for syntax quotation patterns
- :robot: Implemented and test with **Gemini 3.1 Pro**. This change is pretty targeted so I did not have much to redo except reviewing.
**Example false positive:**
In the [formal-conjectures](https://github.com/google-deepmind/formal-conjectures) repository, the `AMSLinter`:
```lean
/-- Checks if a command has the `AMS` attribute. -/
def toAMS (stx : TSyntax ``Command.declModifiers) :
CommandElabM (Array <| TSyntaxArray `num) := do
match stx with
| `(declModifiers| $(_)? @[$[$atts],*] $(_)? $(_)? $(_)? $(_)?) =>
atts.filterMapM fun att ↦ do
match att with
| `(attrInstance | AMS $nums*) => return some nums
| _ => return none
| _ => return #[]
```
**Proposed Fix:** We can fix this by explicitly checking the kind of the docstring node before processing it. Pattern nodes from syntax quotations use antiquotations for the docstring slot (like `$(_)?`), which have a different syntax kind than actual doc comments. Filtering by `docStx.getKind == ``Parser.Command.docComment` successfully filters out the false positives while keeping the linter working for actual source code:
```lean
if docStx.isMissing then continue -- this is probably superfluous, thanks to `some pos` above.
if docStx.getKind != ``Parser.Command.docComment then continue -- ignore antiquotations from syntax patterns like `$(_)?`
```
# Testing
:white_check_mark: Builds successfully
```shell
$ lake build Mathlib.Tactic.Linter.DocString
Build completed successfully (4 jobs).
```
:white_check_mark: Tests pass
```shell
$ lake build MathlibTest.Linter.DocString
Build completed successfully (6 jobs).
```
**Before :x:**
```shell
$ lake build ./FormalConjectures/Util/Linters/AMSLinter.lean
⚠ [68/68] Built FormalConjectures.Util.Linters.AMSLinter
warning: FormalConjectures/Util/Linters/AMSLinter.lean:48:21: warning: this doc-string is empty
Note: This linter can be disabled with `set_option linter.style.docString.empty false`
warning: FormalConjectures/Util/Linters/AMSLinter.lean:69:27: warning: this doc-string is empty
Note: This linter can be disabled with `set_option linter.style.docString.empty false`
Build completed successfully (68 jobs).
```
**After :white_check_mark:**
```shell
$ lake build ./FormalConjectures/Util/Linters/AMSLinter.lean
Build completed successfully (25 jobs).
```
|
t-linter
new-contributor
|
24/1 |
Mathlib/Tactic/Linter/DocString.lean,MathlibTest/Linter/DocString.lean |
2 |
2 |
['github-actions'] |
nobody |
0-66555 18 hours ago |
0-66696 18 hours ago |
0-66477 18 hours |
| 38587 |
dagurtomas author:dagurtomas |
feat(Tactic/CategoryTheory): concrete category boilerplate |
Adds `mk_concrete_category`, a command for generating the initial boilerplate for concrete categories whose morphisms are given by a bundled function type.
The command creates the wrapper `Hom` type, named category and concrete category instances, `ofHom`, `Hom.hom`, and the basic dsimp lemmas.
It handles parameterized categories such as `ModuleCat`, and has a paired additive/multiplicative form for generating both structures at once (e.g. `MonCat`/`AddMonCat`).
Includes test categories checking the generated declarations.
[](https://gitpod.io/from-referrer/)
|
LLM-generated
t-meta
t-category-theory
|
905/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/CategoryTheory/MkConcreteCategory.lean,MathlibTest/CategoryTheory/MkConcreteCategory.lean |
4 |
8 |
['dagurtomas', 'eric-wieser', 'github-actions'] |
nobody |
0-66301 18 hours ago |
25-55847 25 days ago |
25-56389 25 days |
| 38317 |
WenrongZou author:WenrongZou |
feat(Date/Choose): add some lemmas about choose of prime pow |
In this PR, I add some lemma about choose of prime pow.
1) For primes `p` and positive integer `n`, assume that for all `i ∈ Icc 1 (n - 1)`, `choose n i` congruent to `0` module `p`, then `n = p ^ multiplicity p n`.
2) For a prime power `n`, the greatest common divisor of `choose n 1, ⋯, choose n (n - 1)` is actually the minimal prime factor of `n`.
3) For a natural number `n` greater than `1`, assume that `n` is not a prime power, then the greatest common divisor of `choose n 1, ⋯, choose n (n - 1)` is `1`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
98/0 |
Mathlib/Data/Nat/Choose/Lucas.lean |
1 |
5 |
['WenrongZou', 'github-actions', 'joneugster'] |
nobody |
0-66299 18 hours ago |
16-37958 16 days ago |
41-74827 41 days |
| 37399 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Paths): `IsPath` and `Nil` lemmas |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
10/3 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Paths.lean |
2 |
8 |
['Rida-Hamadani', 'SnirBroshi', 'YaelDillies', 'github-actions'] |
nobody |
0-66298 18 hours ago |
62-58566 62 days ago |
62-58491 62 days |
| 38349 |
SnirBroshi author:SnirBroshi |
chore(Combinatorics/SimpleGraph/Coloring/VertexColoring): rename to `Vertex.lean` |
After #37525 moved `Coloring.lean` to `Coloring/VertexColoring.lean`, a [Zulip](https://leanprover.zulipchat.com/#narrow/channel/252551-graph-theory/topic/Coloring.20module.20names/with/583281500) poll decided to avoid duplicating the word "Coloring", so this renames `Coloring/VertexColoring.lean` to `Coloring/Vertex.lean`.
---
I planned to make this move in #33313 but it isn't moving along, so I think it's best to split the renaming.
#37546 adds module deprecation
[](https://gitpod.io/from-referrer/)
|
file-removed
t-combinatorics
|
6/6 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Bipartite.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/Constructions.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/Vertex.lean,Mathlib/Combinatorics/SimpleGraph/CompleteMultipartite.lean,Mathlib/Combinatorics/SimpleGraph/Partition.lean,Mathlib/Combinatorics/SimpleGraph/Sum.lean |
7 |
4 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
0-65662 18 hours ago |
0-65700 18 hours ago |
39-75178 39 days |
| 32583 |
MJ141592 author:MJ141592 |
refactor(SimpleGraph): change bridges not to require the edge to be present |
Remove the requirement for edges to exist in definition of isBridge, and then change the related lemmas to adjust for this, by renaming, fixing the statements and fixing the proofs, including in Acyclic.
Closes #31690.
---
- [x] depends on: #36802
- [x] depends on: #36804 |
t-combinatorics
new-contributor
|
95/93 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/EdgeConnectivity.lean,Mathlib/Combinatorics/SimpleGraph/DeleteEdges.lean,Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean |
5 |
48 |
['MJ141592', 'Rida-Hamadani', 'SnirBroshi', 'YaelDillies', 'b-mehta', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
b-mehta assignee:b-mehta |
0-64266 17 hours ago |
7-20988 7 days ago |
56-63347 56 days |
| 35197 |
j-loreaux author:j-loreaux |
feat: Hölder framework for `lp` spaces |
---
- [ ] depends on: #35152
- [ ] depends on: #35198
[](https://gitpod.io/from-referrer/)
|
t-analysis |
311/9 |
Mathlib.lean,Mathlib/Analysis/Normed/Lp/LpEquiv.lean,Mathlib/Analysis/Normed/Lp/lpHolder.lean,Mathlib/Analysis/Normed/Lp/lpSpace.lean,Mathlib/Analysis/Normed/Operator/Basic.lean,Mathlib/Tactic/Linter/TextBased.lean |
6 |
13 |
['github-actions', 'j-loreaux', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mcdoll', 'mike1729', 'themathqueen'] |
sgouezel assignee:sgouezel |
0-64265 17 hours ago |
39-8936 39 days ago |
58-11496 58 days |
| 36376 |
jessealama author:jessealama |
feat(SimpleGraph): hamiltonian cycle from cyclic permutation |
This PR provides `IsHamiltonian.of_perm`, a bridge from `Equiv.Perm.IsCycle` to `SimpleGraph.IsHamiltonian`: if σ is a permutation that is a single cycle with full support on at least 3 elements, and each step `v → σ v` is an edge of `G`, then `G` is Hamiltonian.
### New definitions and lemmas
**`Mathlib/Data/List/Chain.lean`**:
- `IsChain.iterate`: `List.iterate f a n` is a chain under `r` whenever `r a (f a)` holds for all `a`
**`Mathlib/Data/List/Iterate.lean`**:
- `getLast_iterate`: the last element of `List.iterate f a n` is `f^[n - 1] a`
**`Mathlib/Combinatorics/SimpleGraph/Walk/Iterate.lean`** (new file):
- `Walk.iterate`: builds a walk of length `n` from `x` to `f^[n] x` for any function `f` with `G.Adj x (f x)` for all `x`, defined via `Walk.ofSupport`
- `Walk.length_iterate`, `Walk.support_iterate`, `Walk.edges_iterate`: basic API
**`Mathlib/GroupTheory/Perm/Cycle/Basic.lean`**:
- `IsCycleOn.injOn_pow_apply`: the map `n ↦ (f ^ n) a` is injective on `Finset.range #s`
**`Mathlib/GroupTheory/Perm/Cycle/Concrete.lean`**:
- `IsCycleOn.injOn_sym2_pow_apply`: the unordered-pair edge map `k ↦ s((f ^ k) a, (f ^ (k + 1)) a)` is injective on `[0, #s)` when `#s ≠ 2`
- `IsCycleOn.sym2_pow_apply_ne`: edge distinctness for cycle-on permutations — `s((f ^ k) a, (f ^ (k + 1)) a) ≠ s(a, f a)` when `k ≠ 0`, `k < #s`, and `#s ≠ 2`
- `Perm.toList_eq_range_map_pow`: expresses `toList` as a range map over powers
**`Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean`**:
- `cons_isHamiltonianCycle_iff`: a Hamiltonian path closed by an edge outside its support is a Hamiltonian cycle, and conversely
- `IsHamiltonian.of_perm`: the main theorem
---
- [x] depends on: #36307 |
t-combinatorics
maintainer-merge
|
182/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean,Mathlib/Combinatorics/SimpleGraph/Hamiltonian/Perm.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Iterate.lean,Mathlib/Data/List/Chain.lean,Mathlib/Data/List/Iterate.lean,Mathlib/GroupTheory/Perm/Cycle/Basic.lean,Mathlib/GroupTheory/Perm/Cycle/Concrete.lean |
8 |
78 |
['SnirBroshi', 'YaelDillies', 'github-actions', 'jessealama', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
b-mehta assignee:b-mehta |
0-64264 17 hours ago |
13-46093 13 days ago |
57-65613 57 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.
### Main definitions
* `GraphLike V D E Gr`: A typeclass parameterized by a vertex type `V`, dart type `D` and a graph type `Gr` (with `V`, `D` & `E` as an `outParam`).
* `GraphLike.verts : Set V`: The set of vertices of the graph.
* `GraphLike.darts : Set D`: The set of darts of the graph.
* `GraphLike.edges : Set E`: The set of edges of the graph.
* `GraphLike.Adj : V → V → Prop`: The adjacency relation, defined by default as `∃ d ∈ darts, fst d = u ∧ snd d = v`.
---
This PR generalises #35776 to also unify `Graph`.
PRs depending on this PR are
#39047 (graphLike with no multi edges) => #39050 (Digraph is graphLike)
||
V
#36829 (undirected graphLike) => #39053 (Graph is graphLike) & #39054 (Simplegraph is graphLike)
||
V
#36756 (def of walk on GraphLike) => #36971 (change Simplegraph to use GraphLike walk)
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
104/0 |
Mathlib.lean,Mathlib/Combinatorics/GraphLike/Basic.lean |
2 |
78 |
['IvanRenison', 'Jun2M', 'SnirBroshi', 'YaelDillies', 'github-actions', 'lauramonk', 'mathlib-merge-conflicts'] |
b-mehta assignee:b-mehta |
0-64263 17 hours ago |
24-10703 24 days ago |
75-8900 75 days |
| 37295 |
wwylele author:wwylele |
feat(Analysis/InnerProductSpace): generalized determinant of a rectangle matrix / linear map |
This is the volume factor of a linear map
---
I have encountered the expression `sqrt(det(T' * T))` a few times in various places but it doesn't look like it has a standard name and entry in mathlib, so this adds it.
Zulip thread [#Is there code for X? > (norm of) "determinant" of map between inner product spaces](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/.28norm.20of.29.20.22determinant.22.20of.20map.20between.20inner.20product.20spaces/with/581776873)
One motivation to define this is to state volume formula under transformations. From *Measure theory and fine properties of functions*:
- Lemma 3.1: for linear map $L : \mathbb{R}^n \to \mathbb{R}^m$, we have $\mathcal{H}^n(L(A)) = [ L ] \mathcal{L}^n(A)$. This is proved in this PR at `euclideanHausdorffMeasure_image_eq_normDet_mul_volume`
- Theorem 3.8, for (not necessarily linear) $f : \mathbb{R}^n \to \mathbb{R}^m$ ($n \le m$) and $\mathcal{L}^n$-measurable set $A \subset \mathbb{R}^n$, we have $\int_A J f dx = \int_{\mathbb{R}^m} \mathcal{H}^0(A \cap f\^{-1}\{y\}) d\mathcal{H}^n(y)$, where $J f$ is the `normDet` of the rectangular Jacobian matrix
AI usage disclosure: AI was used in the following parts
- searching for related literature for an appropriate name
- generate draft proofs for some lemma to verify their correctness, though the final code has been completely rewritten by me.
- [ ] depends on: #37918
[](https://gitpod.io/from-referrer/)
|
t-analysis
maintainer-merge
|
480/0 |
Mathlib.lean,Mathlib/Analysis/InnerProductSpace/Adjoint.lean,Mathlib/Analysis/InnerProductSpace/NormDet.lean,docs/references.bib |
4 |
21 |
['copilot-pull-request-reviewer', 'github-actions', 'j-loreaux', 'mathlib-dependent-issues', 'mathlib-splicebot', 'themathqueen', 'wwylele'] |
faenuccio and sgouezel assignee:sgouezel assignee:faenuccio |
0-64262 17 hours ago |
28-1777 28 days ago |
61-76120 61 days |
| 37534 |
EtienneC30 author:EtienneC30 |
feat: cardinality of subsets of a given cardinality |
Given a finite set `s`, the number of subsets of `s` with cardinality `n` is `s.ncard.choose n`. This is analog to [Finset.card_powersetCard](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Finset/Powerset.html#Finset.card_powersetCard) and [Set.powersetCard.card](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Set/PowersetCard.html#Set.powersetCard.card) but with a set of sets rather than involving finsets.
---
[](https://gitpod.io/from-referrer/)
|
t-data
maintainer-merge
|
22/0 |
Mathlib/Data/Set/Card.lean |
1 |
4 |
['EtienneC30', 'github-actions', 'joneugster'] |
Vierkantor assignee:Vierkantor |
0-64261 17 hours ago |
17-19880 17 days ago |
59-22811 59 days |
| 38309 |
ntapiam author:ntapiam |
feat(Algebra/NonAssoc): dendriform algebras |
Define dendriform semirings and algebras
---
This PR introduces dendriform structures such as dendriform semirings
and algebras, and proves basic facts linking them to their pre-Lie
counterparts.
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
270/0 |
Mathlib.lean,Mathlib/Algebra/NonAssoc/Dendriform/Defs.lean,docs/references.bib |
3 |
5 |
['dagurtomas', 'github-actions', 'ntapiam'] |
themathqueen assignee:themathqueen |
0-64258 17 hours ago |
24-31216 24 days ago |
39-36294 39 days |
| 38339 |
xroblot author:xroblot |
feat(NumberTheory/DirichletCharacter): add conductor_changeLevel and subgroups of characters mapping to one |
This PR main additions are:
- `conductor_changeLevel`: the conductor is invariant under `changeLevel` (lifting to a
multiple level does not change the conductor).
- `primitiveCharacter_changeLevel_apply`: the primitive character of `changeLevel hm χ` equals
that of `χ`.
- `subgroupOfMapToOne`: the subgroup of characters of level `n` sending a fixed integer
`a` (coprime to `n`) to `1`.
- `subgroupOfPrimitiveMapToOne`: the subgroup of characters of level `n` whose primitive
character sends a prime `p` to `1`.
This group is useful for the Galois theory of cyclotomic fields
---
- [x] depends on: #38340
[](https://gitpod.io/from-referrer/)
|
t-number-theory |
109/1 |
Mathlib/Data/ZMod/Coprime.lean,Mathlib/NumberTheory/DirichletCharacter/Basic.lean,Mathlib/NumberTheory/MulChar/Basic.lean |
3 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
loefflerd assignee:loefflerd |
0-64257 17 hours ago |
1-42557 1 day ago |
1-56850 1 day |
| 38373 |
Nicola9Falciola author:Nicola9Falciola |
feat (Algebra/FreeAbelianGroup /Finsupp) : The support of non zero element in a freeabeliangroup is non empty |
Add the lemma that for a nonzero a : FreeAbelianGroup X the support of it is non empty.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
3/0 |
Mathlib/Algebra/FreeAbelianGroup/Finsupp.lean |
1 |
7 |
['Nicola9Falciola', 'SnirBroshi', 'github-actions'] |
themathqueen assignee:themathqueen |
0-64255 17 hours ago |
39-21173 39 days ago |
40-9395 40 days |
| 38489 |
Jun2M author:Jun2M |
feat(Topology/Algebra/InfiniteSum): Generalize ENNReal lemmas |
This PR generalizes many theorems in Topology/Algebra/InfiniteSum/ENNReal.lean from `ENNREal` to any type that satisfies a list of order-related instances, mostly
`[CommMonoid α] [CompleteLattice α] [CanonicallyOrderedMul α] [TopologicalSpace α] [SupConvergenceClass α]`
Deprecation of the original `ENNReal` lemmas are done in the next PR: #38193.
Related Zulip thread: [#Is there code for X? > Summing `ENat`s without topology](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Summing.20.60ENat.60s.20without.20topology/with/588756615)
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
261/3 |
Mathlib/MeasureTheory/Measure/MeasureSpace.lean,Mathlib/MeasureTheory/OuterMeasure/OfFunction.lean,Mathlib/Topology/Algebra/InfiniteSum/Basic.lean,Mathlib/Topology/Algebra/InfiniteSum/Order.lean |
4 |
9 |
['Jun2M', 'SnirBroshi', 'github-actions', 'wwylele'] |
alreadydone assignee:alreadydone |
0-64254 17 hours ago |
21-77729 21 days ago |
37-67555 37 days |
| 38731 |
martinwintermath author:martinwintermath |
feat(LinearAlgebra/AffineSpace/AffineSubspace): using `AffineSubspace.direction` to reinterpret `AffineSubspace` as `Submodule` |
* add `AffineSubspace.vsub_self_of_zero_mem` that states `s -ᵥ s = s ` if `0 ∈ s`
* add `AffineSubspace.direction_eq_self_of_zero_mem` that states that if `0 ∈ s`, then the directions coerce back to the affine subspace.
* add corresponding `CanLift` instance.
* modify doc-string of `AffineSubspace.direction` to state that this can be used for reinterpretation of an affine subspace as a submodule.
* add `Coe` instance based on `Submodule.toAffineSubspace` and adds corresponding @[coe] attribute.
The PR also performs a slight cleanup of the file: statements about `SetLike` or `Submodule.toAffineSubspace` have been moved closer to their respective definitions.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
56/26 |
Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Defs.lean |
1 |
3 |
['github-actions', 'wwylele'] |
joelriou assignee:joelriou |
0-64253 17 hours ago |
33-3818 33 days ago |
33-4750 33 days |
| 39298 |
joelriou author:joelriou |
feat(AlgebraicTopology/SimplicialSet): the pushout-product of a horn inclusion and a boundary inclusion is an anodyne extension |
In this PR, we construct a regular pairing for the union of `Λ[m + 1, l] ⊗ ∂Δ[n]` and ` Δ[m + 1] ⊗ ∂Δ[n]` in `Δ[m + 1] ⊗ Δ[n]`. It follows immediately that the inclusion of this subcomplex is an anodyne extension.
---
- [x] depends on: #39462
- [x] depends on: #39463
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology
large-import
maintainer-merge
|
740/2 |
Mathlib.lean,Mathlib/AlgebraicTopology/SimplicialSet/AnodyneExtensions/PairingCore.lean,Mathlib/AlgebraicTopology/SimplicialSet/AnodyneExtensions/UnionProd.lean,Mathlib/AlgebraicTopology/SimplicialSet/Monoidal.lean,Mathlib/AlgebraicTopology/SimplicialSet/NonDegenerateSimplicesSubcomplex.lean,Mathlib/AlgebraicTopology/SimplicialSet/StdSimplex.lean |
6 |
13 |
['dagurtomas', 'github-actions', 'joelriou', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
mattrobball assignee:mattrobball |
0-64252 17 hours ago |
1-8819 1 day ago |
6-35850 6 days |
| 40011 |
SnirBroshi author:SnirBroshi |
feat(Algebra/Group/Subgroup/Pointwise): iSup of normal subgroups is normal |
This is a generalization of `sup_normal`, which is for the supremum of two subgroups.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-group-theory
maintainer-merge
label:t-algebra$ |
29/0 |
Mathlib/Algebra/Group/Subgroup/Basic.lean,Mathlib/Algebra/Group/Subgroup/Pointwise.lean |
2 |
3 |
['github-actions', 'tb65536'] |
riccardobrasca assignee:riccardobrasca |
0-64251 17 hours ago |
3-23961 3 days ago |
3-23742 3 days |
| 40012 |
SnirBroshi author:SnirBroshi |
feat(GroupTheory/PGroup): iSup of normal p-subgroups is a p-subgroup |
Also shows that the `iSup` of subgroups equals the set-union of all finite `iSup`s.
Co-authored-by: Albert Smith <10266947+ChiCubed@users.noreply.github.com>
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
34/0 |
Mathlib/Algebra/Group/Subgroup/Pointwise.lean,Mathlib/GroupTheory/PGroup.lean |
2 |
1 |
['github-actions'] |
tb65536 assignee:tb65536 |
0-64249 17 hours ago |
3-19248 3 days ago |
3-23182 3 days |
| 40072 |
yuanyi-350 author:yuanyi-350 |
refactor(NumberTheory): golf `Mathlib/NumberTheory/ArithmeticFunction/Defs` |
- golfs `ArithmeticFunction/Defs` by replacing explicit divisor-antidiagonal singleton arguments in the left-identity theorem and `mul_one` with direct `simp_all` calls using divisor map lemmas and `sum_eq_single`
Extracted from #38144
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
t-number-theory
|
2/20 |
Mathlib/NumberTheory/ArithmeticFunction/Defs.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
MichaelStollBayreuth assignee:MichaelStollBayreuth |
0-64248 17 hours ago |
1-41925 1 day ago |
1-41706 1 day |
| 40073 |
yuanyi-350 author:yuanyi-350 |
refactor(NumberTheory): golf `Mathlib/NumberTheory/FLT/Polynomial` |
- refactors `FLT/Polynomial` by using `IsIntegrallyClosed.pow_dvd_pow_iff` to derive the needed divisibility of `c` directly, removing the local normalized-factors proof
Extracted from #38144
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
t-number-theory
large-import
|
2/6 |
Mathlib/NumberTheory/FLT/Polynomial.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
loefflerd assignee:loefflerd |
0-64248 17 hours ago |
1-41923 1 day ago |
1-41704 1 day |
| 40075 |
grunweg author:grunweg |
fix: more complete model finding for a given manifold in context |
When searching for a model with corners on a manifold, also try finding a model which is not just a local assumption, but the trivial model on a normed space or a non-trivially normed field.
Minimised from an elaborator failure in Kevin Buzzard's Jacobian challenge.
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
t-meta
|
54/2 |
Mathlib/Geometry/Manifold/Notation.lean,MathlibTest/DifferentialGeometry/Notation/Basic.lean |
2 |
2 |
['github-actions', 'grunweg'] |
JovanGerb assignee:JovanGerb |
0-64247 17 hours ago |
1-33829 1 day ago |
1-33668 1 day |
| 40080 |
wwylele author:wwylele |
feat(Analysis/Meromorphic): meromorphicOrderAt of derivative |
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
34/0 |
Mathlib/Analysis/Meromorphic/Order.lean |
1 |
5 |
['copilot-pull-request-reviewer', 'github-actions'] |
nobody |
0-62262 17 hours ago |
1-18583 1 day ago |
1-18364 1 day |
| 37562 |
IvanRenison author:IvanRenison |
feat(Combinatorics/SimpleGraph): add several lemmas about when `Walk.bypass` and `Walk.cycleBypass` do nothing |
Co-authored-by: Vlad Tsyrklevich
---
- [ ] depends on: #37577
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
234/113 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean,Mathlib/Combinatorics/SimpleGraph/Metric.lean,Mathlib/Combinatorics/SimpleGraph/Paths.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Decomp.lean,Mathlib/Combinatorics/SimpleGraph/Walk/Operations.lean |
7 |
9 |
['IvanRenison', 'SnirBroshi', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vlad902'] |
nobody |
0-61050 16 hours ago |
0-61052 16 hours ago |
0-61876 17 hours |
| 38027 |
8e7 author:8e7 |
feat(Combinatorics/SimpleGraph/Star): define star graphs |
Add a new definition `starGraph` and several key lemmas. Star graphs are a trivial class of tree, often used in constructive proofs regarding trees. An example use case is shown in #38334.
---
All lemmas are hand written first, then golfed with the help of Claude Code.
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
87/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Star.lean |
2 |
41 |
['8e7', 'IvanRenison', 'JovanGerb', 'SnirBroshi', 'b-mehta', 'github-actions', 'vihdzp', 'vlad902'] |
b-mehta assignee:b-mehta |
0-59458 16 hours ago |
46-57874 46 days ago |
48-55920 48 days |
| 39954 |
jihuang2024 author:jihuang2024 |
feat(Analysis/Polynomial): define Hurwitz stability and prove small-degree characterizations |
Proofs were developed with assistance from Claude Code. I have reviewed and understand all the code and can justify the design decisions.
This PR introduces the predicate Polynomial.IsHurwitzStable for real polynomials and proves the Routh–Hurwitz stability criterion for degrees 1 and 2.
A polynomial p : ℝ[X] is Hurwitz stable if every root of its complexification has strictly negative real part. This notion arises in control theory and the study of linear ODEs, where it characterises asymptotic stability of a system.
New definitions
Polynomial.IsHurwitzStable: ∀ z : ℂ, (p.map (algebraMap ℝ ℂ)).IsRoot z → z.re < 0
New theorems
Polynomial.not_isHurwitzStable_zero: the zero polynomial is not Hurwitz stable
Polynomial.IsHurwitzStable.ne_zero: Hurwitz stable polynomials are nonzero
Polynomial.isHurwitzStable_X_add_C: X + C a is Hurwitz stable ↔ 0 < a
Polynomial.isHurwitzStable_quadratic: X ^ 2 + C b * X + C c is Hurwitz stable ↔ 0 < b ∧ 0 < c
Proof strategy for the quadratic
The quadratic case splits on whether a root z is real (z.im = 0) or complex (z.im ≠ 0, which forces 2 * z.re + b = 0). Existence of a root uses Complex.exists_root (Fundamental Theorem of Algebra). The necessary condition in the real-root case uses the Vieta complementary root -b - z.re.
Future work
The general Routh–Hurwitz theorem (for degree n, stated in terms of the Hurwitz matrix and its leading principal minors) requires infrastructure not yet in Mathlib — in particular a theory of the Cauchy index or the Bezoutian of two polynomials. This PR lays the definitional foundation for that work.
This corresponds to [1000.yaml](https://github.com/leanprover-community/mathlib4/blob/master/docs/1000.yaml#L2697) Q4455015 - Routh–Hurwitz theorem |
t-analysis
new-contributor
LLM-generated
|
131/0 |
Mathlib.lean,Mathlib/Analysis/Polynomial/RouthHurwitz.lean |
2 |
10 |
['SnirBroshi', 'github-actions', 'jihuang2024', 'wwylele'] |
nobody |
0-57930 16 hours ago |
3-23294 3 days ago |
4-28102 4 days |
| 39433 |
JovanGerb author:JovanGerb |
feat(Tactic): `#click_suggestions` |
This is an initial PR for a point&click suggestion tool that can suggest theorems and tactics. This PR only implements theorem suggestions.
This PR adds the `#click_suggestions` command that activates the tool. It could potentially in the future be active by default.
The code is ported from this repository: https://github.com/JovanGerb/infoview_search
TODO: import this feature in Tactic.Common (during development it's easier to not do this to avoid import tangles)
This PR deletes `unfold?` in favour of the `#click_suggestions`. For backwards compatability, I have left `rw??` in place, but I plan to deprecate it in the future.
---
[](https://gitpod.io/from-referrer/)
|
file-removed
t-meta
|
2302/124 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/ClickSuggestions.lean,Mathlib/Tactic/ClickSuggestions/Apply.lean,Mathlib/Tactic/ClickSuggestions/ApplyAt.lean,Mathlib/Tactic/ClickSuggestions/FindPremises.lean,Mathlib/Tactic/ClickSuggestions/GRewrite.lean,Mathlib/Tactic/ClickSuggestions/Rewrite.lean,Mathlib/Tactic/ClickSuggestions/SectionState.lean,Mathlib/Tactic/ClickSuggestions/TryPremises.lean,Mathlib/Tactic/ClickSuggestions/Unfold.lean,Mathlib/Tactic/ClickSuggestions/Util.lean,Mathlib/Tactic/Widget/LibraryRewrite.lean,MathlibTest/ClickSuggestions/Benchmark.lean,MathlibTest/ClickSuggestions/Test.lean,MathlibTest/ClickSuggestions/TestImpl.lean,MathlibTest/ClickSuggestions/Unfold.lean |
17 |
20 |
['JovanGerb', 'fpvandoorn', 'github-actions', 'mathlib-merge-conflicts'] |
fpvandoorn assignee:fpvandoorn |
0-55342 15 hours ago |
2-38572 2 days ago |
3-53981 3 days |
| 40010 |
Hagb author:Hagb |
feat(Algebra/MvPolynomial/SupDegree): port `AddMonoidAlgebra.supDegree` to `MvPolynomial` |
This PR ports `AddMonoidAlgebra.{supDegree,leadingCoeff,Monic}` to `MvPolynomial.{supDegree,leadingCoeff,Monic}`, adopts some definitions about MvPolynomial to `supDegree`, and simplify some proofs with lemmas of `supDegree`.
Given `p : MvPolynomial σ R` and `D` (in a type as is required by `{MvPolynomial,AddMonoidAlgebra}.supDegree`), `MvPolynomial.supDegree D f` is def-eq to `AddMonoidAlgebra.supDegree D f`, while `MvPolynomial.supDegree` is stated directly on `MvPolynomial` and makes using it on `MvPolynomial` easier. Most of theorems about `MvPolynomial.supDegree` are also just specialized variants of their `AddMonoidAlgebra.supDegree` versions, and proved directly by the latter. (Note: some theorems of `MvPolynomial`, such as [`MvPolynomial.degrees_monomial_eq`](https://github.com/leanprover-community/mathlib4/blob/29c689a82e2f78fa770f8c6dd70cb9a21b7e4d05/Mathlib/Algebra/MvPolynomial/Degrees.lean#L94-L97), have used `AddMonoidAlgebra.supDegree` before this PR.)
The following definitions are reworded with `supDegree`, whose original definitions are def-eq to the new definitions:
- [`MvPolynomial.totalDegree`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=MvPolynomial.totalDegree#doc)
- [`MvPolynomial.degrees`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=MvPolynomial.degrees#doc)
- [`MvPolynomial.weightedTotalDegree`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=MvPolynomial.weightedTotalDegree#doc)
- [`MvPolynomial.weightedTotalDegree'`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=MvPolynomial.weightedTotalDegree'#doc)
- [`MonomialOrder.degree`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=MonomialOrder.degree#doc)
The following definitions are not changed directly, while provided lemmas that express them with `supDegree`, `MvPolynomial.leadingCoeff` or `MvPolynomial.Monic`, since their original definitions are not def-eq to their `supDegree` versions.
- [`MvPolynomial.degreeOf`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=MvPolynomial.degreeOf#doc)
- [`MonomialOrder.leadingCoeff`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=MonomialOrder.leadingCoeff#doc)
- [`MonomialOrder.Monic`](https://leanprover-community.github.io/mathlib4_docs/find/?pattern=MonomialOrder.Monic#doc)
Further works (probably not in this PR):
- abstract general and reusable theorems in `supDegree` from some theorems about those specialized declarations;
- simplify proofs of more theorems about those specialized declarations with theorems in `supDegree`;
- add `D.Injective` as a hypothesis of `AddMonoidAlgebra.leadingCoeff` (#40084) or add another definition natural for cases where `D` is not injective.
---
This PR overlaps #40084, Once one gets merged, another should be updated.
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
415/188 |
Mathlib.lean,Mathlib/Algebra/MvPolynomial/CommRing.lean,Mathlib/Algebra/MvPolynomial/Degrees.lean,Mathlib/Algebra/MvPolynomial/Equiv.lean,Mathlib/Algebra/MvPolynomial/SchwartzZippel.lean,Mathlib/Algebra/MvPolynomial/SupDegree.lean,Mathlib/Algebra/MvPolynomial/Variables.lean,Mathlib/RingTheory/MvPolynomial/Homogeneous.lean,Mathlib/RingTheory/MvPolynomial/MonomialOrder.lean,Mathlib/RingTheory/MvPolynomial/Symmetric/Defs.lean,Mathlib/RingTheory/MvPolynomial/Symmetric/FundamentalTheorem.lean,Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean,Mathlib/RingTheory/NoetherNormalization.lean |
13 |
3 |
['Hagb', 'github-actions'] |
faenuccio assignee:faenuccio |
0-54583 15 hours ago |
0-54583 15 hours ago |
0-54364 15 hours |
| 38331 |
Thmoas-Guan author:Thmoas-Guan |
feat(RingTheory/AdicCompletion): AdicCompletion of Noetherian ring is Noetherian |
For `I` an ideal of `R`, if `R/I` is Noetherian and `I` is finitely generated, the the completion of `R` wrt `I` is Noetherian.
---
- [ ] depends on: #37975
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
large-import
|
267/2 |
Mathlib/RingTheory/AdicCompletion/Noetherian.lean |
1 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
nobody |
0-52265 14 hours ago |
1-2535 1 day ago |
1-2812 1 day |
| 40092 |
korbonits author:korbonits |
feat(Topology/Connected): path-connectedness of products and pi types |
# Disclaimer
Following https://leanprover-community.github.io/contribute/index.html, I wanted to make a simple contribution to point set topology given some of the very welcoming Zulip mathematicians. I used Claude Code to plan, review, and test some example definitions before raising this PR. I'm using this as a way to make meaningful contributions to mathlib4 as I learn Lean. Background: mathematics and a decade+ in ML engineering/applied science.
# Description
Add path-connectedness of binary products and dependent products (pi types):
- `JoinedIn.prod`, `IsPathConnected.prod`, and `instance Prod.instPathConnectedSpace : PathConnectedSpace (X × Y)`
- `JoinedIn.pi`, `IsPathConnected.pi`, and `instance Pi.instPathConnectedSpace : PathConnectedSpace (∀ i, Z i)`
These instances were previously missing — `inferInstance` failed for both `PathConnectedSpace (X × Y)` and `PathConnectedSpace ((i : ι) → Z i)`. They were suggested as good first contributions on Zulip.
The analogous `LocPathConnectedSpace` / `LocallyConnectedSpace` product and pi instances (and further `connectedComponent` / `pathComponent` product lemmas) are left for follow-up PRs.
|
t-topology
LLM-generated
new-contributor
|
59/0 |
Mathlib/Topology/Connected/PathConnected.lean |
1 |
3 |
['github-actions', 'korbonits'] |
nobody |
0-51378 14 hours ago |
0-51184 14 hours ago |
0-52013 14 hours |
| 38698 |
Thmoas-Guan author:Thmoas-Guan |
feat(RingTheory/Regular): freeness of `QuotSMulTop` |
For finitely generated module `M` over Noetherian local ring `(R, m)`, if `x ∈ m` is `M`-regular, `M/xM` is free over `R/(x)` iff `M` is free over `R`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
112/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Finsupp/Pi.lean,Mathlib/RingTheory/Nakayama.lean,Mathlib/RingTheory/Regular/Free.lean |
4 |
18 |
['Thmoas-Guan', 'chrisflav', 'github-actions'] |
chrisflav assignee:chrisflav |
0-50569 14 hours ago |
0-50569 13 hours ago |
32-60167 32 days |
| 37934 |
Thmoas-Guan author:Thmoas-Guan |
feat(FieldTheory): definition of transcendental separable field extension |
In this PR, we introduce the concept of separably generated field extension and transcendental separable field extension.
Further properties will be in #37838
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
102/0 |
Mathlib.lean,Mathlib/FieldTheory/TranscendentalSeparable.lean |
2 |
14 |
['Thmoas-Guan', 'github-actions', 'robin-carlier'] |
nobody |
0-49545 13 hours ago |
22-17316 22 days ago |
30-35274 30 days |
| 39740 |
Thmoas-Guan author:Thmoas-Guan |
feat(FieldTheory): the field of adjoining all `p`th roots |
In this PR, we define the field extension of adjoining all `p`th roots to a field of characteristic `p`.
The definition is via defining it as the field itself with algebra map equal to frobenious. Thanks to @erdOne for this idea.
Co-authored by:@dleijnse
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
68/0 |
Mathlib.lean,Mathlib/FieldTheory/PurelyInseparable/AdjoinPthRoots.lean |
2 |
54 |
['Thmoas-Guan', 'chrisflav', 'erdOne', 'github-actions', 'plp127', 'vihdzp'] |
chrisflav assignee:chrisflav |
0-47424 13 hours ago |
0-47505 13 hours ago |
8-72188 8 days |
| 40094 |
mcdoll author:mcdoll |
chore(Analysis/TemperedDistribution): add coercion and fix existing one |
Adds a missing coercion from Schwartz functions to `Lp` functions and changes the
current coercion from `Lp` functions to tempered distributions from `CoeDep` to `CoeHead`.
The second coercion can only appear at the head of a coercion chain, because `𝓢'(E, F)` can't infer the value of `p` or `μ`.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
8/4 |
Mathlib/Analysis/Distribution/SchwartzSpace/Basic.lean,Mathlib/Analysis/Distribution/TemperedDistribution.lean |
2 |
1 |
['github-actions'] |
nobody |
0-46029 12 hours ago |
0-46115 12 hours ago |
0-45896 12 hours |
| 40078 |
mathlib-splicebot author:mathlib-splicebot |
feat: alias for extensionality of measures through singleton with Measure.real |
Add an alias for the backward direction of [MeasureTheory.ext_iff_measureReal_singleton](https://leanprover-community.github.io/mathlib4_docs/Mathlib/MeasureTheory/Measure/Dirac.html#MeasureTheory.ext_iff_measureReal_singleton): if two sigma-finite measures coincide on every singleton with `Measure.real` on a countable space, then they are equal. |
t-measure-probability |
2/0 |
Mathlib/MeasureTheory/Measure/Dirac.lean |
1 |
1 |
['github-actions'] |
nobody |
0-44927 12 hours ago |
1-26259 1 day ago |
1-26040 1 day |
| 38534 |
AlexeyMilovanov author:AlexeyMilovanov |
refactor(Computability): bundle PFun into a structure with FunLike instance |
This PR refactors `PFun` from `def PFun α β := α → Part β` to a structure with a `FunLike` instance.
[Discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Fix.20for.20fun_prop.20on.20PFun.20.28context.3A.20Computability.20Theory.29)
### Main changes
* `PFun` is now a structure with a single field `toFun : α → Part β`.
* Added the `FunLike (α →. β) α (Part β)` instance and `initialize_simps_projections`.
* Added the basic projection/application simp lemmas needed for the structure wrapper.
* Definitions which used to return raw lambdas as partial functions now explicitly use `PFun.mk` or `PFun.lift`.
* Equality proofs for partial functions now use `PFun.ext` / `DFunLike.ext` where `funext` no longer applies directly.
### Downstream impact
The refactor mainly impacts Computability Theory and Category Theory (`Category/PartialFun.lean`). Since `PFun` is no longer definitionally equal to `α → Part β`, tactics such as `rfl`, `simp`, and `funext` can no longer always see through the old raw-function representation.
As a result, several proofs (e.g. `fix_aux`, `ppred`, `mem_eval`, and `unitIso`) grew in size, requiring explicit `ext` + `simp` breakdowns. I tried to keep these proof changes minimal; further golfing suggestions are very welcome. It seems that fully recovering the old brevity in some places may require additional `PFun`-specific API/congruence support, which I avoided adding in this PR to keep the diff minimal.
### Affected files
* **Core:** `Mathlib/Data/PFun.lean`
* **Computability:** `Partrec`, `PartrecBasis`, `PartrecCode`, `RE`, `RecursiveIn`, `Ackermann`, `Halting`, `StateTransition`, `TuringDegree`, `TuringMachine/Config`
* **Category Theory:** `Category/PartialFun.lean`
* **Other:** `Data/Finset/PImage.lean`, `NumberTheory/Dioph.lean`
This also removes the previous `set_option linter.flexible false` workaround and the local transparency workaround in `TuringMachine/Config.lean`, as well as the local transparency workarounds in `Category/PartialFun.lean`.
### Note on LLM usage
The core `PFun` change caused numerous downstream errors. I initially used an LLM to help draft fixes for these files. Afterwards, I spent a significant amount of time manually correcting and modifying all of the generated changes.
|
new-contributor
t-computability
|
611/528 |
Mathlib/CategoryTheory/Category/PartialFun.lean,Mathlib/Computability/Ackermann.lean,Mathlib/Computability/Partrec.lean,Mathlib/Computability/PartrecBasis.lean,Mathlib/Computability/PartrecCode.lean,Mathlib/Computability/RE.lean,Mathlib/Computability/RecursiveIn.lean,Mathlib/Computability/StateTransition.lean,Mathlib/Computability/TuringDegree.lean,Mathlib/Computability/TuringMachine/Config.lean,Mathlib/Data/Finset/PImage.lean,Mathlib/Data/PFun.lean,Mathlib/NumberTheory/Dioph.lean |
13 |
9 |
['AlexeyMilovanov', 'dagurtomas', 'github-actions', 'j-loreaux', 'mathlib-bors', 'mathlib-merge-conflicts'] |
nobody |
0-44428 12 hours ago |
6-78964 6 days ago |
15-20088 15 days |
| 39203 |
FordUniver author:FordUniver |
refactor(Analysis/Calculus/Gradient): ungate `inner_gradient` lemmas |
Removes superfluous differentiability hypotheses (plus `UniqueDiffWithinAt` for the `Within` versions) from the four `inner_gradient[Within]_[left|right]` lemmas: `gradient` is defined as `(toDual 𝕜 F).symm (fderiv 𝕜 f x)`, so `⟪∇ f x, y⟫ = fderiv 𝕜 f x y` holds unconditionally since both sides are zero when `f` is not differentiable at `x`.
Co-authored-by: Sebastian Pokutta <23001135+pokutta@users.noreply.github.com>
---
Genuinely unsure about this one because the only call I currently have in my code itself has the differentiability hypothesis. But including unused (or unnecessary) assumptions seems not intentional? My best guess is that the hypotheses were included by analogy with `HasGradientAt.fderiv_apply`, which genuinely needs them. This PR drops the hypotheses and rewrites the proofs through the isomorphism directly; no existing mathlib callers pass the now-redundant arguments. |
t-analysis
maintainer-merge
|
17/10 |
Mathlib/Analysis/Calculus/Gradient/Basic.lean |
1 |
7 |
['FordUniver', 'Komyyy', 'github-actions', 'grunweg'] |
urkud assignee:urkud |
0-43867 12 hours ago |
21-17971 21 days ago |
21-17752 21 days |
| 38875 |
yuanyi-350 author:yuanyi-350 |
refactor(MeasureTheory): golf `Mathlib/MeasureTheory/Covering/Besicovitch` |
- shortens the proof of `r_t0` in `exists_closedBall_covering_tsum_measure_le` by turning the contradiction argument into a direct lambda
- replaces the manual `simp only` proof with `mem_iUnion₂` and a final `simp [r, this]`
Extracted from #38104
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
t-measure-probability
|
3/8 |
Mathlib/MeasureTheory/Covering/Besicovitch.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
kex-y assignee:kex-y |
0-43226 12 hours ago |
29-22506 29 days ago |
29-22287 29 days |
| 38883 |
yuanyi-350 author:yuanyi-350 |
refactor(MeasureTheory): golf `Mathlib/MeasureTheory/Function/AEMeasurableSequence` |
- rewrites `iSup` by filtering directly along `aeSeq_eq_fun_ae hf hp`, instead of proving a subset statement about `aeSeqSet` and then using `measure_mono_null`
Extracted from #38104
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
t-measure-probability
|
2/6 |
Mathlib/MeasureTheory/Function/AEMeasurableSequence.lean |
1 |
2 |
['github-actions', 'yuanyi-350'] |
RemyDegenne assignee:RemyDegenne |
0-43194 11 hours ago |
29-19676 29 days ago |
29-19457 29 days |
| 38873 |
yuanyi-350 author:yuanyi-350 |
refactor(MeasureTheory): golf `Mathlib/MeasureTheory/Constructions/BorelSpace/Real` |
- rewrites `measurable_const_mul` by splitting off the `c = 0` case and proving the nonzero case via `measurable_of_continuousOn_compl_singleton`
- replaces the ad hoc case analysis on `⊥`, `⊤`, and real coefficients with a direct continuity argument for multiplication on `EReal`
Extracted from #38104
[](https://gitpod.io/from-referrer/) |
codex
LLM-generated
t-measure-probability
|
5/19 |
Mathlib/MeasureTheory/Constructions/BorelSpace/Real.lean |
1 |
4 |
['LorenzoLuccioli', 'RemyDegenne', 'github-actions', 'yuanyi-350'] |
RemyDegenne assignee:RemyDegenne |
0-43053 11 hours ago |
25-68816 25 days ago |
28-79706 28 days |
| 40095 |
jvanwinden author:jvanwinden |
feat(Probability/Independence/InfinitePi): evaluation of two components |
Introduce `MeasureTheory.Measure.infinitePi_map_eval_prod`, which is like [`MeasureTheory.Measure.infinitePi_map_eval`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Probability/ProductMeasure.html#MeasureTheory.Measure.infinitePi_map_eval) but evaluates two (different) coordinates at the same time.
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
9/0 |
Mathlib/Probability/Independence/InfinitePi.lean |
1 |
1 |
['github-actions'] |
nobody |
0-43009 11 hours ago |
0-43090 11 hours ago |
0-42871 11 hours |
| 38938 |
lua-vr author:lua-vr |
chore(ConditionallyCompleteLattice/Indexed): dualize |
---
[](https://gitpod.io/from-referrer/)
|
t-order |
94/260 |
Mathlib/Order/ConditionallyCompleteLattice/Basic.lean,Mathlib/Order/ConditionallyCompleteLattice/Defs.lean,Mathlib/Order/ConditionallyCompleteLattice/Indexed.lean |
3 |
14 |
['JovanGerb', 'github-actions', 'lua-vr', 'mathlib-bors', 'mathlib-merge-conflicts'] |
nobody |
0-41933 11 hours ago |
1-27155 1 day ago |
1-26936 1 day |
| 39913 |
mkaratarakis author:mkaratarakis |
feat(Combinatorics/Quiver): periodicity and aperiodicity |
cycle lengths, index of imprimitivity, and cyclic partitions for strongly connected quivers.
Part of the Perron–Frobenius formalization (with @or4nge19).
---
[](https://gitpod.io/from-referrer/)
cc @or4nge19 for review |
t-combinatorics |
194/0 |
Mathlib.lean,Mathlib/Combinatorics/Quiver/Cyclic.lean |
2 |
2 |
['github-actions', 'or4nge19'] |
nobody |
0-39677 11 hours ago |
4-30639 4 days ago |
5-31816 5 days |
| 40098 |
grunweg author:grunweg |
chore: use differential geometry elaborators more |
Extracted from #40047: all these changes are already possible today.
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
easy
|
10/10 |
Mathlib/Geometry/Manifold/IsManifold/InteriorBoundary.lean,Mathlib/Geometry/Manifold/MFDeriv/SpecificFunctions.lean,Mathlib/Geometry/Manifold/VectorBundle/LocalFrame.lean,Mathlib/Geometry/Manifold/VectorBundle/Riemannian.lean,Mathlib/Geometry/Manifold/VectorBundle/Tangent.lean |
5 |
1 |
['github-actions'] |
nobody |
0-39182 10 hours ago |
0-39266 10 hours ago |
0-39047 10 hours |
| 40101 |
sgouezel author:sgouezel |
feat: the smul on measures is ordered |
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
19/5 |
Mathlib/Algebra/Order/AddTorsor.lean,Mathlib/Data/ENNReal/Action.lean,Mathlib/MeasureTheory/Measure/MeasureSpace.lean |
3 |
1 |
['github-actions'] |
nobody |
0-37354 10 hours ago |
0-37439 10 hours ago |
0-37220 10 hours |
| 40103 |
sgouezel author:sgouezel |
feat: the integral of the enorm of the conditional expectation of an indicator is the measure of the set |
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
55/0 |
Mathlib/MeasureTheory/Function/ConditionalExpectation/LebesgueBochner.lean |
1 |
1 |
['github-actions'] |
nobody |
0-36909 10 hours ago |
0-37003 10 hours ago |
0-36784 10 hours |
| 39311 |
felixpernegger author:felixpernegger |
refactor: redefine `eLpNorm` at `p = 0` |
For Zulip discussion see https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/eLpNorm.20junk.20value/with/576356442. In partuclar this change is suggestion 2 in [#mathlib4 > eLpNorm junk value @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/eLpNorm.20junk.20value/near/576340531)
This redefined [MeasureTheory.eLpNorm](https://leanprover-community.github.io/mathlib4_docs/Mathlib/MeasureTheory/Function/LpSeminorm/Defs.html#MeasureTheory.eLpNorm) at `p = 0`. Previously it was always `0` but now it is the measure of the support of the function (technical detail: In order to avoid having to add additional arguments to `eLpNorm`, we define it as the measure of the support of the norm of the function, but this is almost always the same)
The motivation for this comes from the counting measure, in particular this then unifies with https://leanprover-community.github.io/mathlib4_docs/Mathlib/Analysis/Normed/Lp/lpSpace.html#Mem%E2%84%93p. In any case, it is "closer" to the actual mathematical definition
Unfortunately, since `eLpNorm` is widely used, the diff is very large and a lot of theorems break (i.e. now require `p != 0`). Oftentimes `p != 0` is still not required (sometimes with nontrivial arguments), I tried to avoid adding extra hypothesis whenever I could but I almost certainly missed some.
There now may also be places where we dont need `p != 0` as a hypothesis anymore (i.e. for `[Memℓp](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Analysis/Normed/Lp/lpSpace.html#Mem%E2%84%93p)`), but this is not included in this PR.
---
[](https://gitpod.io/from-referrer/)
|
|
934/600 |
Mathlib/Analysis/Distribution/ContDiffMapSupportedIn.lean,Mathlib/Analysis/Distribution/SchwartzSpace/Basic.lean,Mathlib/Analysis/Distribution/SchwartzSpace/Fourier.lean,Mathlib/Analysis/Distribution/TemperateGrowth.lean,Mathlib/Analysis/Distribution/TemperedDistribution.lean,Mathlib/Analysis/Distribution/TestFunction.lean,Mathlib/Analysis/Fourier/LpSpace.lean,Mathlib/Analysis/FunctionalSpaces/SobolevInequality.lean,Mathlib/Analysis/Normed/Lp/SmoothApprox.lean,Mathlib/Data/ENNReal/Holder.lean,Mathlib/MeasureTheory/Function/ContinuousMapDense.lean,Mathlib/MeasureTheory/Function/ConvergenceInMeasure.lean,Mathlib/MeasureTheory/Function/Holder.lean,Mathlib/MeasureTheory/Function/L1Space/Integrable.lean,Mathlib/MeasureTheory/Function/L2Space.lean,Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean,Mathlib/MeasureTheory/Function/LpSeminorm/CompareExp.lean,Mathlib/MeasureTheory/Function/LpSeminorm/Defs.lean,Mathlib/MeasureTheory/Function/LpSeminorm/Indicator.lean,Mathlib/MeasureTheory/Function/LpSeminorm/LpNorm.lean,Mathlib/MeasureTheory/Function/LpSeminorm/Monotonicity.lean,Mathlib/MeasureTheory/Function/LpSeminorm/SMul.lean,Mathlib/MeasureTheory/Function/LpSeminorm/TriangleInequality.lean,Mathlib/MeasureTheory/Function/LpSeminorm/Trim.lean,Mathlib/MeasureTheory/Function/LpSpace/Basic.lean,Mathlib/MeasureTheory/Function/LpSpace/Complete.lean,Mathlib/MeasureTheory/Function/LpSpace/CompleteOfCompleteLp.lean,Mathlib/MeasureTheory/Function/LpSpace/ContinuousFunctions.lean,Mathlib/MeasureTheory/Function/LpSpace/Indicator.lean,Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean,Mathlib/MeasureTheory/Function/UniformIntegrable.lean,Mathlib/MeasureTheory/Integral/SetToL1.lean,Mathlib/Probability/CentralLimitTheorem.lean,Mathlib/Probability/Distributions/Gaussian/Basic.lean,Mathlib/Probability/Distributions/Gaussian/Fernique.lean,Mathlib/Probability/Distributions/Gaussian/HasGaussianLaw/Basic.lean,Mathlib/Probability/Distributions/Gaussian/Real.lean,Mathlib/Probability/IdentDistrib.lean,Mathlib/Probability/Kernel/Disintegration/CDFToKernel.lean,Mathlib/Probability/Kernel/Disintegration/Density.lean,Mathlib/Probability/Martingale/Convergence.lean,Mathlib/Probability/Moments/CovarianceBilinDual.lean,Mathlib/Probability/Moments/IntegrableExpMul.lean,Mathlib/Probability/Moments/SubGaussian.lean,Mathlib/Probability/Process/Filtration.lean,MathlibTest/congr.lean |
46 |
27 |
['felixpernegger', 'github-actions', 'mathlib-merge-conflicts', 'sgouezel'] |
nobody |
0-36581 10 hours ago |
0-36652 10 hours ago |
2-3346 2 days |
| 34278 |
gasparattila author:gasparattila |
feat(Topology/Sets): connectedness of `NonemptyCompacts` |
---
- [x] depends on: #34268
- [x] depends on: #34273
[](https://gitpod.io/from-referrer/)
|
t-topology |
108/0 |
Mathlib/Topology/Sets/VietorisTopology.lean |
1 |
6 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
nobody |
0-35914 9 hours ago |
0-36057 9 hours ago |
0-37032 10 hours |
| 40109 |
gasparattila author:gasparattila |
feat(Topology/Sets): separability of `(Nonempty)Compacts` |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
31/71 |
Mathlib/Topology/MetricSpace/Closeds.lean,Mathlib/Topology/Sets/VietorisTopology.lean |
2 |
1 |
['github-actions'] |
nobody |
0-34442 9 hours ago |
0-34526 9 hours ago |
0-34307 9 hours |
| 40050 |
ReemMelamed author:ReemMelamed |
feat(Algebra/Group/GreensRelations): add definitions for Green's relations |
This PR introduces the foundational definitions for Green's relations (L, R, H, D, and J) on semigroups.
This is the first in a series of PRs aimed at formalizing Green's relations for semigroups.
---
Zulip discussion: [Formalization of Green's Relations for semigroups](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Formalization.20of.20Green.27s.20Relations.20for.20semigroups/with/598557876) |
t-algebra
new-contributor
label:t-algebra$ |
348/0 |
Mathlib.lean,Mathlib/Algebra/Group/GreensRelations/Basic.lean,Mathlib/Algebra/Group/GreensRelations/Defs.lean |
3 |
11 |
['YaelDillies', 'YanYablonovskiy', 'github-actions', 'mathlib-bors'] |
nobody |
0-34340 9 hours ago |
1-23824 1 day ago |
2-5338 2 days |
| 40061 |
gasparattila author:gasparattila |
chore(MeasureTheory/SetSemiring): deprecate `disjointOfUnion` |
This definition was only used in the proof of `AddContent.addContent_sUnion_le_sum`. Since it is defined using choice with very specific properties, it is unlikely to be reusable elsewhere.
---
- [x] depends on: #40060
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
10/0 |
Mathlib/MeasureTheory/SetSemiring.lean |
1 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
nobody |
0-34073 9 hours ago |
0-36502 10 hours ago |
0-36423 10 hours |
| 40058 |
mathlib-splicebot author:mathlib-splicebot |
chore(Analysis/InnerProductSpace/Adjoint): `A.toLinearMap.adjoint = A.adjoint.toLinearMap` |
---
This PR was automatically created from PR #37295 by @wwylele via a [review comment](https://github.com/leanprover-community/mathlib4/pull/37295#discussion_r3329171118) by @themathqueen. |
maintainer-merge
t-analysis
easy
|
6/0 |
Mathlib/Analysis/InnerProductSpace/Adjoint.lean |
1 |
3 |
['github-actions', 'themathqueen'] |
faenuccio assignee:faenuccio |
0-33375 9 hours ago |
2-1158 2 days ago |
2-939 2 days |
| 40104 |
sgouezel author:sgouezel |
chore: move dominated convergence to general versions for setToFun |
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
84/47 |
Mathlib/MeasureTheory/Integral/DominatedConvergence.lean,Mathlib/MeasureTheory/Integral/SetToL1.lean |
2 |
1 |
['github-actions'] |
nobody |
0-32673 9 hours ago |
0-32755 9 hours ago |
0-32682 9 hours |
| 40083 |
EtienneC30 author:EtienneC30 |
feat: a random variable whose law is a dirac is ae constant |
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
32/0 |
Mathlib/Probability/HasLaw.lean |
1 |
3 |
['DavidLedvinka', 'github-actions'] |
nobody |
0-32407 9 hours ago |
1-6035 1 day ago |
1-5816 1 day |
| 40055 |
YaelDillies author:YaelDillies |
refactor(RingTheory/Coalgebra): make the indexing type of `Repr` an argument |
... rather than a field.
Since fields are semireducible, having a type as a field is incompatible with the new stringence of tactics to rewrite only up to defeq.
For `Repr`, this issue shows up as soon as the indexing type isn't arbitrary anymore, usually because it is derived from one or more existing indexing types.
From Toric
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
toric
maintainer-merge
|
27/24 |
Mathlib/RingTheory/Coalgebra/Basic.lean,Mathlib/RingTheory/Coalgebra/Convolution.lean,Mathlib/RingTheory/Coalgebra/Hom.lean,Mathlib/RingTheory/HopfAlgebra/Basic.lean |
4 |
9 |
['YaelDillies', 'chrisflav', 'github-actions', 'leanprover-radar'] |
nobody |
0-27482 7 hours ago |
0-27483 7 hours ago |
0-32851 9 hours |
| 38848 |
jcreinhold author:jcreinhold |
feat(AlgebraicTopology/SimplicialSet): exists_isPushout_of_ne_top |
Every proper subcomplex of a simplicial set extends by attaching a single cell along its boundary, exhibited as a pushout of `∂Δ[n] ↪ Δ[n]`. This is the per-cell input for cell-by-cell filtrations of monomorphisms in `SSet`.
Adapted from @joelriou 's [proof](https://github.com/joelriou/topcat-model-category/blob/813338a8c88cfe0096deed7e3ba7daf92d4a1c71/TopCatModelCategory/SSet/Boundary.lean#L187). I also added the supporting lemma `Types.isPullback_of_eq_setPreimage` (set-preimage square is a pullback in `Type u`).
AI use: Claude helped locate `subtype_val_mono` and the `backward.isDefEq.respectTransparency` option.
|
t-algebraic-topology
new-contributor
|
119/3 |
Mathlib/AlgebraicTopology/SimplicialSet/Boundary.lean,Mathlib/CategoryTheory/Limits/Types/Pullbacks.lean |
2 |
26 |
['github-actions', 'jcreinhold', 'joelriou', 'mckoen'] |
nobody |
0-26701 7 hours ago |
0-29654 8 hours ago |
28-70039 28 days |
| 29701 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra/RingTheory): polynomial over regular ring |
In this PR, we proved that polynomial over regular ring is regular.
---
- [x] depends on: #37627
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
137/0 |
Mathlib.lean,Mathlib/RingTheory/RegularLocalRing/Polynomial.lean |
2 |
12 |
['Thmoas-Guan', 'github-actions', 'joneugster', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
joneugster assignee:joneugster |
0-26161 7 hours ago |
0-27209 7 hours ago |
31-71435 31 days |
| 38318 |
JovanGerb author:JovanGerb |
feat(GRewrite): new `grw` implementation |
This PR adds a new implementation of the `grewrite` tactic. It replaces `grw` with the new implementation. The old implementation can be used with `grw +useKAbstract`.
New features:
- The new `grw` can rewrite terms with bound variables.
- The new `grw` will only rewrite in places where this is valid. Previously, if there were both valid and non-valid positions, it would try rewriting everywhere and then complain.
Future features that will build on the new implementation:
- I'd like to add support for strict rewrites that can change the strictness of parts of the goal. This would require the concept of asymmetric `gcongr` lemmas, something like `le_imp_lt_of_lt_left` and `le_imp_lt_of_lt_right`. An example of such a lemma that already exists in mathlib is `Ico_subset_Ioo_left`.
- I'd like to improve the support for rewriting with symmetric relations such as `=ᵥ`. The following doesn't work very well yet:
```
variable {R : Type*} [CommRing R] [ValuativeRel R] {x y z : R}
example (h : x =ᵥ y) : x <ᵥ z ↔ y <ᵥ z := by
grw [h]
```
Limitations:
- The new implementation does not support occurrences. So, `nth_grw` still uses the old `kabstract`-based implementation. The reason is that there are often multiple `gcongr` lemmas for rewriting in the same place (e.g. `add_le_add` and `add_le_add_left`), and it's tricky to keep track of exactly what is "the same" subexpression.
- The new implementation tries `gcongr` lemmas one by one, and commits to the first `gcongr` lemma that lets us do a rewrite. This means that we need to lower the priority of `add_le_add_left`, so that `add_le_add` is preferred, so that we can rewrite on both sides of `+` at the same time. However, `mul_le_mul_of_nonneg_left` and `mul_le_mul_of_nonneg_right` are still tried before `mul_le_mul`, to avoid getting unnecessary side goals.
- Because the new term is constructed from `gcongr` lemmas, rather than by instantiating the result of `kabstract`, it may be that metadata gets lost, or that some implicit arguments change. For example, rewriting inside `a ≤ b` for `a b : Nat` will change the instance argument from `Nat.instLE` to `Nat.instPreorder.toLE`. This is not really a problem.
- Some problems arise when implementing a rewriting tactic that can rewrite under binders, because metavariables have a fixed local context of free variables that they are allowed to depend on. This issue also affects the new `rw` tactic that the FRO is currenlty working on. This PR works around this by "illegally" changing the local context of metavariabes, so as to allow them to depend on bound variables. This has the unfortunate side effect that the "Expected Type" view can get messed up when rewriting bound variables, because the expression is being delaborated with the wrong local context. But I think this is only a minor problem. We coould reconsider this design when the new `rw` tactic is done.
Changes to `gcongr`:
- The `@[goncgr]` attribute now checks more thoroughly whether the given lemma is of the right form. Some lemmas are not suitable for use in `grw`, but they still "feel" like a `gcongr` lemma, so we still allow them to be used in `gcongr`. For such cases I've added a linter warning that can be turned off.
- I've refactored how `gcongr` lemmas are applied, in order to share this code between `gcongr` and `grw`. Now, binder names are taken from the goal when possible, rather than not giving any name to new free variables. This improves `gcongr` (as it means you don't anymore need to write `gcongr with ...` to give the variable a name), and allows `grw` to preserve binder names in the goal.
The grewrite test file now tests the new `grw` implementation. Should I make a copy of the test file to also test the old implementation?
I have put myself as the copyright holder, instead of Sebastian Zimmer, as I think this more accurately reflect code ownership. The original `grw` PR was by Sebastian in 2023, but it was majorly rewritten by me in 2025. Sebastian is still in the list of authors.
---
- [x] depends on: #38558
- [x] depends on: #38556
[](https://gitpod.io/from-referrer/)
|
t-meta |
690/255 |
Mathlib/Algebra/BigOperators/Finsupp/Basic.lean,Mathlib/Algebra/Order/Group/Indicator.lean,Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean,Mathlib/Algebra/Order/Sub/Defs.lean,Mathlib/Analysis/CStarAlgebra/Extreme.lean,Mathlib/Analysis/Convex/StrictCombination.lean,Mathlib/Analysis/Distribution/Support.lean,Mathlib/Combinatorics/Graph/Maps.lean,Mathlib/Combinatorics/SimpleGraph/Clique.lean,Mathlib/Data/DFinsupp/BigOperators.lean,Mathlib/Data/Finsupp/Order.lean,Mathlib/MeasureTheory/Function/SimpleFunc.lean,Mathlib/MeasureTheory/Integral/Average.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/AbsolutelyContinuousFun.lean,Mathlib/Order/Basic.lean,Mathlib/Probability/Distributions/Gaussian/HasGaussianLaw/Independence.lean,Mathlib/Tactic/GCongr/Core.lean,Mathlib/Tactic/GRewrite/Core.lean,Mathlib/Tactic/GRewrite/Elab.lean,Mathlib/Topology/MetricSpace/ThickenedIndicator.lean,MathlibTest/Tactic/GCongr/Implications.lean,MathlibTest/Tactic/GRewrite.lean |
22 |
43 |
['JovanGerb', 'PatrickMassot', 'Vierkantor', 'github-actions', 'leanprover-radar', 'mathlib-bors', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
dwrensha assignee:dwrensha |
0-25773 7 hours ago |
2-36124 2 days ago |
21-60826 21 days |
| 39868 |
JuanCoRo author:JuanCoRo |
feat(Algebra/Polynomial): linearity of `divByMonic` and adjacent results |
---
This PR adds the `R`-linearity of the monic polynomial division map `_ /ₘ q`. It also adds adjacent results that stem from this work.
#### Refactors:
- Reuses the proofs from `add_modByMonic` and `smul_modByMonic` to generalize these results to `add_div_modByMonic` and `smul_div_modByMonic` respectively.
- Replaces the proofs of `add_modByMonic` and `smul_modByMonic` as specializations of the more general theorems `add_div_modByMonic` and `smul_div_modByMonic` respectively.
#### Additions:
- Adds the necessary results for `_ /ₘ q` linearity:
- `add_divByMonic : (p₁ + p₂) /ₘ q = p₁ /ₘ q + p₂ /ₘ q`
- `smul_divByMonic : c • p /ₘ q = c • (p /ₘ q)`
- Adds `_ /ₘ q` as an `R`-linear map:
- `divByMonicHom`: definition of `_ /ₘ q` as a linear map
- `mem_ker_divByMonic`: kernel characterization for `_ /ₘ q`.
- In `Div.lean` adds dual results for `/ₘ` that were already present for `%ₘ`
- `neg_divByMonic : (-p) /ₘ q = -(p /ₘ q)`
- `sub_divByMonic : (p₁ - p₂) /ₘ q = p₁ /ₘ q - p₂ /ₘ q`
- `mul_divByMonic_assoc (hd : q ∣ p₂) : (p₁ * p₂) /ₘ q = p₁ * (p₂ /ₘ q)`
While `mul_divByMonic_assoc` is not exactly the dual of `mul_modByMonic`, I thought it wouldn't hurt to add it.
[](https://gitpod.io/from-referrer/) |
new-contributor
t-algebra
label:t-algebra$ |
54/17 |
Mathlib/Algebra/Polynomial/Div.lean,Mathlib/Algebra/Polynomial/RingDivision.lean |
2 |
6 |
['JuanCoRo', 'github-actions', 'wwylele'] |
nobody |
0-25687 7 hours ago |
3-29560 3 days ago |
3-29420 3 days |
| 40091 |
mcdoll author:mcdoll |
chore(Analysis/InnerProductSpace): make `adjointAux` private |
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
7/3 |
Mathlib/Analysis/InnerProductSpace/Adjoint.lean |
1 |
3 |
['github-actions', 'leanprover-radar', 'mcdoll'] |
nobody |
0-24266 6 hours ago |
0-24266 6 hours ago |
0-24047 6 hours |
| 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: #37355
- [x] depends on: #38613
- [x] depends on: #38466
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
218/26 |
Mathlib.lean,Mathlib/RingTheory/Depth/Rees.lean,Mathlib/RingTheory/Regular/LinearMap.lean,docs/references.bib |
4 |
61 |
['Thmoas-Guan', 'alreadydone', 'chrisflav', 'dagurtomas', 'erdOne', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
chrisflav assignee:chrisflav |
0-23476 6 hours ago |
7-28299 7 days ago |
102-22296 102 days |
| 40110 |
kim-em author:kim-em |
perf(Tactic/Linarith): syntactic cache for atom lookup |
This PR adds a hashed syntactic-equality fast path to `linarith`'s atomization so atom recognition scales linearly rather than quadratically in the number of distinct atoms.
`linearFormOfAtom` in `Mathlib/Tactic/Linarith/Parsing.lean` recorded seen atoms in `ExprMap := List (Expr × ℕ)` and looked each new occurrence up via `List.findDefeq` — a linear scan with `isDefEq` against every previously-seen atom. For a goal with `k` distinct atoms across `n` hypotheses this is up to `O(n × k)` `isDefEq` calls.
This PR promotes `ExprMap` from a `List` abbreviation to a small struct carrying both the original `list` (still authoritative — used for the `isDefEq` fallback scan) and a `Std.HashMap Expr ℕ` `cache` populated through a new `push`. The new `ExprMap.findDefeq` tries the cache first (syntactic equality, O(1)); on miss it falls back to the existing defeq scan. The cache can only succeed on a syntactic match against an already-stored key, and `HashMap.insert` overwrites on syntactic match, so a cache hit always returns what the defeq scan would have returned for the same input.
## Benchmark
Reproducer: https://gist.github.com/kim-em/196a969cd4cdf3e57885796861bd85c8
```
python3 gen-bench.py
lake env lean Bench80.lean | grep 'tactic execution'
lake env lean Bench160.lean | grep 'tactic execution'
```
The fixture is the standard dense rational LP `0 ≤ xᵢ`, `xᵢ ≤ 1`, `Σxᵢ ≤ n`. Apple Silicon M-series, `lean-toolchain` `v4.31.0-rc1`, median of 5 fresh runs each (rebuild between measurements):
| benchmark | before | after | speedup |
|-------------------|---------:|---------:|--------:|
| n = 80 (5 calls) | 338 ms | 216 ms | **1.56×** |
| n = 160 (3 calls) | 513 ms | 292 ms | **1.76×** |
Speedup grows with atom count because the old cost was quadratic in atom count.
I did not add a `maxHeartbeats`-based regression test: `isDefEq` on two `FVar`s is heartbeat-cheap, so the quadratic walk costs wall-clock without consuming heartbeats — pre-PR code still passes a 200M-heartbeat budget at n=80. A regression test would have to be wall-clock-based and thus machine-dependent.
## Correctness
`MathlibTest/Tactic/Linarith/{Basic,NNReal}.lean` pass. Codex-reviewed; the only structural feedback (encapsulate the cache inside `ExprMap` rather than as an arg to the generic `List.findDefeq`) is incorporated.
🤖 Prepared with Claude Code |
t-meta |
30/7 |
Mathlib/Tactic/Linarith/Parsing.lean |
1 |
1 |
['github-actions'] |
nobody |
0-23250 6 hours ago |
0-23952 6 hours ago |
0-25609 7 hours |
| 37501 |
xgenereux author:xgenereux |
feat(DedekindDomain/AdicValuation): `intValuation` on uniformizers is `exp (-1)` |
This PR adds the lemma `intValuation_uniformizer` which is an application of #37497.
Note that I've had to reorganize the files a little bit:
1. I wanted to import `Valuation.Discrete.Basic` in `AdicValuation` but this was not possible since there was a dependency in the other direction (`Valuation.Discrete.Basic` depended on `AdicValuation`). I don't think this makes sense - we want to have access to basic definitions on general valuation in an application file like `AdicValuation`.
~~The reorganization consist of moving the `IsDiscreteValuationRing` of `Valuation.Discrete.Basic` to `AdicValuation`.~~
The reorganization consist of moving the `IsDiscreteValuationRing` section to a new file.
2. I moved some lemmas out of `Mathlib.RingTheory.Valuation.Discrete.RankOne` to the parent file `Mathlib.RingTheory.Valuation.Discrete.Basic.`. These lemmas do not need the richer imports from `RankOne` and are needed in my application.
AI disclaimer : I used Claude to give me some feedback on the PR.
Co-authored-by: María Inés de Frutos Fernández <[mariaines.dff@gmail.com](mailto:mariaines.dff@gmail.com)>
---
- [x] depends on: #37497
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
218/175 |
Mathlib.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Reduction.lean,Mathlib/NumberTheory/NumberField/Completion/FinitePlace.lean,Mathlib/NumberTheory/RamificationInertia/Valuation.lean,Mathlib/RingTheory/DedekindDomain/AdicValuation.lean,Mathlib/RingTheory/OrderOfVanishing/Noetherian.lean,Mathlib/RingTheory/Valuation/Discrete/Basic.lean,Mathlib/RingTheory/Valuation/Discrete/IsDiscreteValuationRing.lean,Mathlib/RingTheory/Valuation/Discrete/RankOne.lean |
9 |
7 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'riccardobrasca'] |
riccardobrasca assignee:riccardobrasca |
0-23147 6 hours ago |
0-23023 6 hours ago |
49-75773 49 days |
| 39785 |
hawkrobe author:hawkrobe |
refactor(RingTheory/HopfAlgebra): `ofConvInverse` constructor |
The antipode of a Hopf algebra is [generally](https://arxiv.org/pdf/1409.8356) the two-sided inverse of the identity in the convolution algebra `End(A)`. When `A` is commutative, algebra homs are closed under convolution and this lifts to AlgHom equality. See [this comment](https://github.com/leanprover-community/mathlib4/pull/31898#issuecomment-3566663278) on #31898.
---
Sadly the AlgHom-equality formulation is unavailable in the noncommutative case.
|
t-ring-theory
new-contributor
|
41/20 |
Mathlib/RingTheory/HopfAlgebra/Basic.lean,Mathlib/RingTheory/HopfAlgebra/TensorProduct.lean |
2 |
30 |
['YaelDillies', 'eric-wieser', 'faenuccio', 'github-actions', 'hawkrobe', 'themathqueen'] |
YaelDillies assignee:YaelDillies |
0-22685 6 hours ago |
0-22685 6 hours ago |
7-30432 7 days |
| 40111 |
JovanGerb author:JovanGerb |
chore: remove most `warning.simp.varHead` |
This pr removes most exceptions to the new simpVar linter.
---
[](https://gitpod.io/from-referrer/)
|
tech debt
maintainer-merge
|
3/19 |
Archive/Examples/IfNormalization/Result.lean,Archive/Imo/Imo2024Q6.lean,Mathlib/Algebra/CharP/Two.lean,Mathlib/MeasureTheory/Measure/MeasureSpace.lean,Mathlib/MeasureTheory/VectorMeasure/Basic.lean,Mathlib/Probability/Kernel/Defs.lean |
6 |
8 |
['JovanGerb', 'github-actions', 'grunweg'] |
nobody |
0-21783 6 hours ago |
0-25217 6 hours ago |
0-29969 8 hours |
| 39892 |
SnirBroshi author:SnirBroshi |
feat(GroupTheory/Commutator/Basic): more commutator identities |
From [Wikipedia](https://en.wikipedia.org/wiki/Commutator#Identities_(group_theory))
---
The last two aren't on Wikipedia but they're similar to Hall-Witt.
[](https://gitpod.io/from-referrer/)
|
t-group-theory
maintainer-merge
|
44/0 |
Mathlib/GroupTheory/Commutator/Basic.lean |
1 |
6 |
['SnirBroshi', 'github-actions', 'tb65536'] |
tb65536 assignee:tb65536 |
0-19374 5 hours ago |
5-68121 5 days ago |
5-67902 5 days |
| 39960 |
SnirBroshi author:SnirBroshi |
feat(GroupTheory/IsPGroup): p-groups with coprime p are disjoint |
The same is true for finite groups with coprime `Nat.card`.
Additionally show that the commutator of disjoint normal subgroups is trivial.
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory
maintainer-merge
|
29/14 |
Mathlib/GroupTheory/Commutator/Basic.lean,Mathlib/GroupTheory/Complement.lean,Mathlib/GroupTheory/Index.lean,Mathlib/GroupTheory/PGroup.lean |
4 |
8 |
['SnirBroshi', 'github-actions', 'tb65536'] |
tb65536 assignee:tb65536 |
0-18960 5 hours ago |
0-60354 16 hours ago |
2-14021 2 days |
| 38431 |
joelriou author:joelriou |
refactor(Topology): redefine Delta-generated spaces |
Delta-generated spaces are made particular cases of `X`-generated spaces, where `X` is the family of spaces `Fin n → ℝ`.
---
- [x] depends on: #38080
- [x] depends on: #37799
[](https://gitpod.io/from-referrer/)
|
t-topology
large-import
|
144/211 |
Mathlib/Topology/Category/DeltaGenerated.lean,Mathlib/Topology/Compactness/DeltaGeneratedSpace.lean,Mathlib/Topology/Convenient/Category.lean,Mathlib/Topology/Convenient/GeneratedBy.lean |
4 |
4 |
['github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
PatrickMassot assignee:PatrickMassot |
0-18103 5 hours ago |
0-18180 4 hours ago |
24-24419 24 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.
---
- [x] depends on: #30436
- [x] depends on: #38179
[](https://gitpod.io/from-referrer/)
|
t-algebra
large-import
label:t-algebra$ |
361/6 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Pentagonal.lean,Mathlib/RingTheory/PowerSeries/Pentagonal.lean,Mathlib/Topology/Algebra/InfiniteSum/Pentagonal.lean,docs/1000.yaml |
5 |
61 |
['copilot-pull-request-reviewer', 'github-actions', 'jcommelin', 'mathlib-dependent-issues', 'tb65536', 'urkud', 'vihdzp', 'wwylele'] |
mattrobball assignee:mattrobball |
0-17009 4 hours ago |
30-67724 30 days ago |
140-79362 140 days |
| 40106 |
sgouezel author:sgouezel |
feat: missing small lemmas in measure theory, cleanup |
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
71/15 |
Mathlib/MeasureTheory/Function/AEEqFun.lean,Mathlib/MeasureTheory/Function/L1Space/HasFiniteIntegral.lean,Mathlib/MeasureTheory/Function/L1Space/Integrable.lean,Mathlib/MeasureTheory/Function/LpSpace/Basic.lean,Mathlib/MeasureTheory/Function/StronglyMeasurable/AEStronglyMeasurable.lean,Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean,Mathlib/MeasureTheory/Integral/Bochner/Basic.lean,Mathlib/MeasureTheory/Integral/Lebesgue/Basic.lean,Mathlib/MeasureTheory/Integral/SetToL1.lean,Mathlib/MeasureTheory/VectorMeasure/WithDensity.lean |
10 |
1 |
['github-actions'] |
nobody |
0-16276 4 hours ago |
0-16349 4 hours ago |
0-29630 8 hours |
| 39495 |
hawkrobe author:hawkrobe |
feat(Data/Multiset/Antidiagonal): two structural lemmas |
Adds `map_swap_antidiagonal` and `antidiagonal_add`.
---
Fills out the API parallel to `Multiset.Nat.map_swap_antidiagonal` and `Finset.map_swap_antidiagonal`. (And adds `@[congr]` to `bind_congr`.)
Used for shuffle-coproduct constructions.
(#7486, I found this old [Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/144837-PR-reviews/topic/antidiagonals.20having.20multiplicity.20.237595/near/238573473))
I used Claude Code to audit and polish. |
t-data
new-contributor
LLM-generated
|
20/0 |
Mathlib/Data/Multiset/Antidiagonal.lean,Mathlib/Data/Multiset/Bind.lean |
2 |
6 |
['github-actions', 'hawkrobe', 'j-loreaux'] |
nobody |
0-13956 3 hours ago |
12-23884 12 days ago |
15-4657 15 days |
| 38621 |
mariainesdff author:mariainesdff |
feat(Algebra/SkewPolynomial/Basic): add more API |
We add API for SkewPolynomial, including the definitions erase and update and results about coefficients and supports.
Co-authored by: @xgenereux.
---
- [ ] depends on: #38619
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
629/24 |
Mathlib/Algebra/SkewPolynomial/Basic.lean |
1 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
nobody |
0-13621 3 hours ago |
0-13624 3 hours ago |
0-15120 4 hours |
| 39399 |
Brian-Nugent author:Brian-Nugent |
feat(Algebra/CategoryTheory/ModuleCat): Locally Free Sheaves |
This PR gives a definition of locally free sheaves in terms of first defining a predicate IsLocallyFree for [SheafOfModules.LocalGeneratorsData](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Category/ModuleCat/Sheaf/Generators.html#SheafOfModules.LocalGeneratorsData).
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-category-theory
label:t-algebra$ |
216/6 |
Mathlib.lean,Mathlib/Algebra/Category/ModuleCat/Sheaf/Generators.lean,Mathlib/Algebra/Category/ModuleCat/Sheaf/LocallyFree.lean,Mathlib/Algebra/Category/ModuleCat/Sheaf/Quasicoherent.lean,Mathlib/CategoryTheory/Sites/Sieves.lean |
5 |
30 |
['Brian-Nugent', 'chrisflav', 'dagurtomas', 'github-actions', 'mathlib-merge-conflicts', 'robin-carlier'] |
chrisflav and dagurtomas assignee:dagurtomas assignee:chrisflav |
0-11560 3 hours ago |
0-11560 3 hours ago |
7-67046 7 days |
| 39404 |
metakunt author:metakunt |
feat(NumberTheory/AKSPrimality): Introspective definition |
This defines the introspective relation and proves the key property for the AKS theorem.
From #34507 |
t-number-theory |
127/0 |
Mathlib.lean,Mathlib/NumberTheory/AKSPrimality/Introspective.lean |
2 |
4 |
['github-actions', 'metakunt', 'tb65536'] |
tb65536 assignee:tb65536 |
0-11430 3 hours ago |
2-5852 2 days ago |
3-4648 3 days |
| 40118 |
bryangingechen author:bryangingechen |
chore: add 2 week expiration for delegations |
Per discussion in maintainer channel.
This will take effect after https://github.com/leanprover-community/bors-ng/pull/48 is merged. See there for the details, however here are the main points:
- Delegations will get a warning comment about 24h before they expire.
- Delegations from before the bors change is deployed will get an initial warning comment and have their expirations set to 2 weeks in the future.
- The default delegation period can be overridden with the `for=` syntax:
- `bors d+ user for=10d` (10 days)
- `bors d+ user for=2h` (2 hours)
- `bors d+ for=1w` (1 week)
- Delegations cannot be set to expire further than 90 days in the future
---
[](https://gitpod.io/from-referrer/)
|
|
2/0 |
bors.toml |
1 |
3 |
['bryangingechen', 'github-actions', 'mathlib-bors'] |
nobody |
0-9831 2 hours ago |
0-11070 3 hours ago |
0-10851 3 hours |
| 36018 |
wwylele author:wwylele |
feat(LinearAlgebra/AffineSpace): parallel cross-section of a simplex |
This shows that the intersection of `AffineSubspace.shift` of the base of a simplex and the interior of the simplex is a smaller simplex. This is preparing to calculate the volume of a simplex by integrating this cross-section. Part of #37910.
---
- [ ] depends on: #38220
[](https://gitpod.io/from-referrer/)
|
t-algebra
large-import
label:t-algebra$ |
155/1 |
Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Shift.lean,Mathlib/LinearAlgebra/AffineSpace/Simplex/Basic.lean |
2 |
12 |
['alreadydone', 'copilot-pull-request-reviewer', 'github-actions', 'mathlib-bors', 'mathlib-dependent-issues', 'wwylele'] |
dagurtomas assignee:dagurtomas |
0-9115 2 hours ago |
0-14815 4 hours ago |
42-61868 42 days |
| 39966 |
chrisflav author:chrisflav |
chore(Algebra/Exact): relate surjectivity / injectivity and exactness |
This came up while reviewing #39520, but ended up unnecessary.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
8/0 |
Mathlib/Algebra/Exact/Basic.lean |
1 |
2 |
['github-actions', 'mathlib-merge-conflicts'] |
nobody |
0-8104 2 hours ago |
0-8144 2 hours ago |
1-62703 1 day |
| 40123 |
tb65536 author:tb65536 |
chore(FieldTheory/Galois/IsGaloisGroup): remove `FaithfulSMul` from `IsGaloisGroup.finite` |
This PR removes the `FaithfulSMul` assumption from `IsGaloisGroup.finite`
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
label:t-algebra$ |
24/7 |
Mathlib/FieldTheory/Galois/IsGaloisGroup.lean |
1 |
1 |
['github-actions'] |
nobody |
0-6711 1 hour ago |
0-6711 1 hour ago |
0-6493 1 hour |
| 39189 |
tb65536 author:tb65536 |
feat(RingTheory/RamificationInertia/Basic): ramification-inertia formula for finite flat extensions |
This PR proves the ramification-inertia formula for finite flat extensions.
---
- [x] depends on: #38825
- [x] depends on: #39094
- [x] depends on: #39196
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
label:t-algebra$ |
116/3 |
Mathlib.lean,Mathlib/FieldTheory/Galois/IsGaloisGroup.lean,Mathlib/RingTheory/LocalRing/ResidueField/Fiber.lean,Mathlib/RingTheory/RamificationInertia/Basic.lean |
4 |
2 |
['github-actions', 'mathlib-dependent-issues'] |
nobody |
0-6458 1 hour ago |
3-7393 3 days ago |
4-5126 4 days |
| 35136 |
joelriou author:joelriou |
feat(AlgebraicGeometry): points of the small étale site |
The main definition in this PR is `Scheme.pointSmallEtale`. Given a morphism `Spec (.of Ω) ⟶ S` where `Ω` is
a separably closed field, we define the corresponding point of the small étale site of `S`. We show that these points form a conservative family.
(This PR also removes the definition `Scheme.geometricFiber` which was not correct.)
Co-authored-by: Christian Merten
---
- [x] depends on: #35141
- [x] depends on: #35175
- [x] depends on: #35240
- [x] depends on: #34976
- [x] depends on: #33958
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry
large-import
|
303/7 |
Mathlib.lean,Mathlib/AlgebraicGeometry/Fiber.lean,Mathlib/AlgebraicGeometry/Morphisms/Etale.lean,Mathlib/AlgebraicGeometry/Sites/Etale.lean,Mathlib/AlgebraicGeometry/Sites/EtalePoint.lean,Mathlib/CategoryTheory/Elements.lean,Mathlib/CategoryTheory/EssentialImage.lean,Mathlib/CategoryTheory/Limits/FinallySmall.lean,Mathlib/CategoryTheory/Limits/MorphismProperty.lean,Mathlib/CategoryTheory/MorphismProperty/Comma.lean,Mathlib/CategoryTheory/ObjectProperty/Small.lean |
11 |
6 |
['github-actions', 'joelriou', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
nobody |
0-4865 1 hour ago |
0-17450 4 hours ago |
9-29179 9 days |
| 37682 |
SabrinaJewson author:SabrinaJewson |
refactor(Order/OrdContinuous): redefine left and right order continuity to not require preserving ⊥/⊤ |
`LeftOrdContinuous` currently requires that `f ⊥ = ⊥`, but this means that many functions that are perhaps intuitively left-continuous (like `f x = x + 1` on `ℝ≥0`) are not. In particular, this change means that functions between conditionally complete lattices are `LeftOrdContinuous` iff they are monotone and topologically left continuous (see `MonotoneOn.map_csSup_of_continuousWithinAt` for the reverse direction).
If one wants the concept that existed before, one can either accept the `f ⊥ = ⊥` hypothesis separately or, if the function is between complete lattices, use the left side of a `GaloisConnection` (which is equivalent, although I think this is not yet in Mathlib).
This removes the definitional equality of the type in favour of a structure. Since most of the time users will be working with the `sSup` versions and not with `IsLUB`, I think this is justified. As a consequence, this removes the definitional equality between `LeftOrdContinuous` and `RightOrdContinuous` of the dual – the latter could be redefined to re-add this, but we do have conversion functions.
`LeftOrdContinuous.continuousWithinAt_Iic` is rewritten to accomodate these changes; the superfluous `DenselyOrdered` assumption is also removed.
[Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/LeftOrdContinuous.20requires.20f.28.E2.8A.A5.29.20.3D.20.E2.8A.A5/near/582932491)
---
- [x] depends on: #37735
- [x] depends on: #37772
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-order
|
52/38 |
Mathlib/Order/OrdContinuous.lean,Mathlib/Order/SemiconjSup.lean,Mathlib/Topology/Order/Basic.lean |
3 |
11 |
['SabrinaJewson', 'astrainfinita', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp'] |
Komyyy assignee:Komyyy |
0-4678 1 hour ago |
0-4719 1 hour ago |
52-7043 52 days |
| 39744 |
MichaelStollBayreuth author:MichaelStollBayreuth |
feat(NumberTheory/Height/NumberField): Northcott property |
This PR finally adds a proof of the *Northcott property* for heights on number fields:
```lean
theorem NumberField.finite_setOf_mulHeight₁_le (B : ℝ) : {x : K | mulHeight₁ x ≤ B}.Finite
```
---
- [x] depends on: #39127
(The branch was split off the one for the PR this depends on.)
[](https://gitpod.io/from-referrer/)
|
t-number-theory |
225/2 |
Mathlib/NumberTheory/Height/NumberField.lean |
1 |
4 |
['MichaelStollBayreuth', 'github-actions', 'mathlib-dependent-issues', 'tb65536'] |
nobody |
0-4501 1 hour ago |
0-6375 1 hour ago |
0-7518 2 hours |
| 39714 |
tb65536 author:tb65536 |
feat(RingTheory/Localization/AtPrime/Basic): add variants of `localAlgHom` and `localAlgEquiv` |
This PR adds variants of `localAlgHom` and `localAlgEquiv` where the base ring is also localized.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
label:t-algebra$ |
39/7 |
Mathlib/RingTheory/Localization/AtPrime/Basic.lean,Mathlib/RingTheory/Localization/Basic.lean |
2 |
2 |
['github-actions', 'tb65536'] |
nobody |
0-480 8 minutes ago |
10-10843 10 days ago |
10-10626 10 days |
| 39867 |
JovanGerb author:JovanGerb |
feat: `to_dual` for `Adjunction` |
This PR uses the new capability of `to_dual` to deal with universe reorderings to tag `Adjunction`.
`Adjunction.ext_counit` is added as the dual of `Adjunction.ext`.
This PR introduces 4 uses of `erw` to deal with defeq abuse. See https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/.5Bto_app.5D.20and.20associators.2Funitors/near/597924260
Note: there is a bug in the implementation that stops me from being able to tag `Adjunction.comp`. I'll fix that in a future PR.
---
[](https://gitpod.io/from-referrer/)
|
|
45/47 |
Mathlib/CategoryTheory/Adjunction/Basic.lean,Mathlib/CategoryTheory/Adjunction/FullyFaithful.lean,Mathlib/CategoryTheory/Sites/Sheafification.lean |
3 |
3 |
['github-actions', 'mathlib-merge-conflicts', 'robin-carlier'] |
nobody |
0-305 5 minutes ago |
2-41419 2 days ago |
5-84193 5 days |
| 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 |
| 38344 |
robo7179 author:robo7179 |
feat(SimpleGraph/Coloring/VertexColoring): Matching is 2 colorable |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
51/0 |
Mathlib/Combinatorics/SimpleGraph/Coloring/VertexColoring.lean |
1 |
5 |
['SnirBroshi', 'github-actions', 'vlad902'] |
nobody |
37-29935 1 month ago |
40-83879 40 days ago |
40-84046 40 days |
| 38364 |
openendings author:openendings |
feat: create Order/DirectedCompletePartialOrder/Defs.lean |
Define DirectedCompletePartialOrder and its interaction with iSup and sSup.
---
A DirectedCompletePartialOrder is equivalently:
- a partial order with LUBs of nonempty directed sets;
- what happens when you remove ⊥ from a CompletePartialOrder; or
- a ConditionallyCompletePartialOrder in which every directed set is BddAbove.
Like CPOs, DCPOs are commonly studied in denotational semantics.
Potential applications:
- [#Is there code for X? > Summing `ENat`s without topology](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Summing.20.60ENat.60s.20without.20topology/with/590070848) -- defining infinite sums in an DCPO-enriched `AddCommMonoidWithTop` such as `ENat` or `ENNReal`.
- [#Is there code for X? > Scott Induction](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Scott.20Induction/with/590112858) -- fixpoint theorems similar to `OmegaCompletePartialOrder`, generalised to arbitrary cardinalities.
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
123/0 |
Mathlib.lean,Mathlib/Order/DirectedCompletePartialOrder/Defs.lean,docs/references.bib |
3 |
4 |
['SnirBroshi', 'github-actions', 'openendings'] |
nobody |
33-74191 1 month ago |
39-64311 39 days ago |
40-38918 40 days |
| 38316 |
tannerduve author:tannerduve |
feat(Order/OmegaCompletePartialOrder): least fixed point and Scott induction |
Adds `ContinuousHom.lfp` for endomorphisms on an ωCPO with `⊥`, as the `ωSup` of the iterate chain from `⊥`, together with `map_lfp`, `isFixedPt_lfp`, `lfp_le_fixed`, `isLeast_lfp`, and the Scott induction theorem `lfp_induction` (specialized from a more general seed-based `ωSup_iterate_induction`).
For `Part.fix`, adds:
* `Part.exists_mem_approx_of_mem_fix`: if `y ∈ Part.fix g x`, some finite approximation of `g` already contains `y`.
* `Part.Fix.approx_eq_iterate_bot` and `Part.Fix.approxChain_eq_iterateChain`: bridges between `Fix.approx`/`approxChain` and `f^[n] ⊥`/`iterateChain`.
* `Part.fix_eq_lfp`: `Part.fix g = ContinuousHom.lfp (.ofFun g hc)` when `g` is ω-Scott continuous.
* `Part.fix_scott_induction`: Scott induction specialized to `Part.fix`.
* `Part.fix_induction_mem`: membership induction on `Part.fix`, derived from `fix_scott_induction`. |
new-contributor |
114/0 |
Mathlib/Control/LawfulFix.lean,Mathlib/Order/OmegaCompletePartialOrder.lean,docs/references.bib |
3 |
2 |
['github-actions'] |
nobody |
30-4271 30 days ago |
41-66773 41 days ago |
41-67080 41 days |
| 38871 |
0xTerencePrime author:0xTerencePrime |
feat(Combinatorics/SimpleGraph): add parity lemmas for outer and inner vertices |
Adds three lemmas to `SimpleGraph.DegreeSum`:
- `sum_degrees_option_zmod_two`: the handshaking lemma for `Option I` over ZMod 2
- `degree_none_zmod_two_eq_sum`: simp-normal form of the above
- `card_degree_one_option_eq_outer_zmod_two`: under degree bound ≤ 2, count of degree-1 inner vertices equals outer vertex degree mod 2 |
t-combinatorics
new-contributor
|
65/3 |
Mathlib/Combinatorics/SimpleGraph/DegreeSum.lean |
1 |
6 |
['0xTerencePrime', 'SnirBroshi', 'github-actions'] |
nobody |
28-53756 28 days ago |
29-23984 29 days ago |
29-23765 29 days |
| 38897 |
0xTerencePrime author:0xTerencePrime |
feat(Combinatorics/SetFamily): formalize 1D Sperner's Lemma parity |
Formalizes the 1-dimensional Sperner's Lemma (parity version): given a coloring of
the `n + 1` vertices of a subdivided line segment with two colors (`ZMod 2`), if the
two endpoints have different colors, then the number of color-changing edges is odd.
This is **distinct** from `IsAntichain.sperner` in `SetFamily.LYM`, which concerns
antichains in a power set. This file formalizes the topological/combinatorial parity
statement used as the base case in higher-dimensional Sperner arguments.
## Key declarations
- `SpernerColoring`: type-safe coloring via `Fin (n + 1) → ZMod 2`
- `edgeDiff`: color difference on adjacent vertices, computed in `ZMod 2`
- `totalDiff`: telescoping sum of all edge differences
- `diffEdges`: the `Finset` of bichromatic (color-changing) edges
- `sperner_1d`: main theorem — `Odd (diffEdges c).card`
## Design notes
- Using `Fin (n + 1) → ZMod 2` instead of `ℕ → ZMod 2` makes boundary conditions
unrepresentable at the type level, eliminating out-of-bounds cases entirely.
- The proof reduces to a telescoping sum in `ZMod 2`, using `CharTwo.add_self_eq_zero`
to cancel all interior vertices, avoiding parity case splits.
This is intended as the 1D base case, the approach generalizes to higher-dimensional
Sperner's Lemma in future work.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
133/0 |
Mathlib.lean,Mathlib/Combinatorics/SetFamily/Sperner1D.lean |
2 |
3 |
['github-actions', 'grunweg'] |
nobody |
28-44990 28 days ago |
28-55140 28 days ago |
28-54921 28 days |
| 38951 |
thomaskwaring author:thomaskwaring |
feat(Order/PrimeSeparator): remove unnecessary hypotheses |
In `mem_ideal_sup_principal`, boundedness and distributivity were unused, and in `prime_ideal_of_disjoint_filter_ideal`, boundedness was only used to produce an element of the filter `F`, which is already nonempty by definition.
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
9/19 |
Mathlib/Order/PrimeSeparator.lean |
1 |
2 |
['github-actions'] |
nobody |
27-37681 27 days ago |
27-37768 27 days ago |
27-37549 27 days |
| 38310 |
ZRTMRH author:ZRTMRH |
feat(Combinatorics/Quiver/Schreier): word evaluation and reachability |
Adds word evaluation and reachability results to the Schreier graph API.
* `SchreierGraph.evalWord` : evaluates a word `List (S × Bool)` as an element of the ambient group, where `(s, true)` contributes `ι s` and `(s, false)` contributes `(ι s)⁻¹`.
* `SchreierGraph.evalWord_eq_lift` : agreement with `FreeGroup.lift`.
* `SchreierGraph.evalWord_mem_closure` : every word evaluates into the subgroup generated by `ι`.
* `SchreierGraph.pathFromWord` : a Bool-tagged word yields a path in `Symmetrify (SchreierGraph V ι)` from `x` to `evalWord ι w • x`.
* `SchreierGraph.reachable_iff` : two vertices are connected by a path in the symmetrification iff some element of the subgroup closure carries one to the other.
Follow-up to #36320.
This PR was written with AI assistance (Claude). The code has been reviewed by the author.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
large-import
LLM-generated
|
157/0 |
Mathlib/Combinatorics/Quiver/Schreier.lean |
1 |
2 |
['github-actions'] |
nobody |
25-51696 25 days ago |
41-85170 41 days ago |
41-84951 41 days |
| 39023 |
TBUGTB author:TBUGTB |
feat(Algebra/Order): API lemmas on floor and abs |
Co-authored-by: Etienne Marion @EtienneC30
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
brownian
new-contributor
label:t-algebra$ |
9/0 |
Mathlib/Algebra/Order/Floor/Semiring.lean,Mathlib/Algebra/Order/Ring/Abs.lean |
2 |
3 |
['TBUGTB', 'github-actions'] |
nobody |
25-33422 25 days ago |
25-36611 25 days ago |
25-36392 25 days |
| 39162 |
anovickis author:anovickis |
feat(Topology/PartitionOfUnity): add pointwise_decomposition_finsum + companions |
Add three short lemmas to `Mathlib/Topology/PartitionOfUnity.lean` extending the existing `PartitionOfUnity` API:
- `pointwise_decomposition_finsum` — for `f : X → ℝ` and `x ∈ s`, `f x = ∑ᶠ i, ρ i x · f x`. This is the pointwise step that lifts to integral linearity in measure-theoretic PoU integration: `∫_s f dμ = ∑ᶠ i, ∫_s (ρ i · f) dμ`.
- `one_minus_sum_nonneg` — `0 ≤ 1 - ∑ᶠ i, ρ i x`. Direct rearrangement of the existing `sum_le_one` field; useful as a complement-mass remainder bound in chart-by-chart estimates.
- `abs_le_one` — `|ρ i x| ≤ 1`. Combines the existing `nonneg` and `le_one`; convenience for absolute-value bounds.
All three are short proofs using existing structure fields (`sum_eq_one`, `sum_le_one`, `nonneg`, `le_one`).
These came up while writing chart-by-chart Stokes-on-manifold estimates where one wants to decompose `∫_M f` into chart-supported pieces using a partition of unity. The pointwise identity is the obvious first step; the other two are complementary algebraic bounds that show up in remainder estimates.
---
🤖 Generated with [Claude Code](https://claude.com/claude-code) |
t-topology
new-contributor
LLM-generated
|
27/0 |
Mathlib/Topology/PartitionOfUnity.lean |
1 |
2 |
['github-actions'] |
urkud assignee:urkud |
20-65403 20 days ago |
21-61324 21 days ago |
21-61105 21 days |
| 39279 |
jayscambler author:jayscambler |
feat(Cryptography/Sigma): Schnorr sigma protocol and signature scheme |
Adds `Mathlib/Cryptography/Sigma/Schnorr.lean`. New file in a new top-level directory; mathlib currently has no `Mathlib/Cryptography/`, so I've taken `Mathlib/Cryptography/Sigma/` as the natural home for sigma-protocol formalizations.
The file proves the three defining properties of Schnorr's identification scheme as a sigma protocol:
- `Schnorr.correct`: completeness. Honest verifier accepts honest signer's transcript.
- `Schnorr.specialSoundness`: from two accepting transcripts sharing the commitment but using different challenges `c, c'`, the witness `x = (s - s') / (c - c')` is recovered. Needs `q` prime so `c - c'` is invertible in `ZMod q`.
- `Schnorr.hvzkAccepts`: the HVZK simulator `g^s · (y^c)⁻¹` always yields accepting transcripts. This is the structural-correctness half of HVZK only; the distributional indistinguishability statement is a separate result and not in this PR.
On top of the sigma protocol there's `Schnorr.Signature.{keyGen, sign, verify, correct}` wrapping it as a Fiat-Shamir signature scheme; `Schnorr.Signature.correct` is a one-line corollary of `Schnorr.correct`.
Two auxiliary lemmas, `Schnorr.gpow_sub` and `Schnorr.gpow_mul`, bridge `ZMod q` arithmetic and group exponentiation under `Fintype.card G = q`. They're local to this file for now because the surrounding `gpow` API is itself cryptography-specific; if a general `ZMod q`-graded group action framework lands in mathlib later, both lemmas would become instances of it.
There's also a small `example` instantiating everything on `Multiplicative (ZMod q)` for `Fact q.Prime` to show the API typechecks. That instantiation is a toy (DLOG is trivial in that group), but it confirms the abstraction is usable.
**AI disclosure**: this PR was a collaboration between myself, Grey Haven's autocontext and Claude Opus 4.7 (Anthropic). I read each line and built locally on current master. (strawberry has three r's) |
new-contributor
LLM-generated
|
352/0 |
Mathlib.lean,Mathlib/Cryptography/Sigma/Schnorr.lean |
2 |
2 |
['github-actions'] |
nobody |
19-12018 19 days ago |
19-12097 19 days ago |
19-12368 19 days |
| 38114 |
javgomzar author:javgomzar |
feat(FinitelyPresentedGroup): add finite groups instance |
Add IsFinitelyPresented instance for finite groups.
Co-authored-by: Hang Lu Su , Thomas Browning
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory
new-contributor
large-import
|
31/2 |
Mathlib/GroupTheory/FinitelyPresentedGroup.lean,Mathlib/GroupTheory/FreeGroup/Basic.lean |
2 |
33 |
['github-actions', 'javgomzar', 'kbuzzard', 'mathlib-merge-conflicts', 'plp127', 'tb65536', 'vihdzp'] |
mattrobball assignee:mattrobball |
19-3628 19 days ago |
19-3664 19 days ago |
42-1182 42 days |
| 37928 |
AlexeyMilovanov author:AlexeyMilovanov |
refactor(Computability.Encoding): unbundle Γ and remove FinEncoding |
This PR unbundles the alphabet `Γ` from the `Encoding` structure and completely removes `FinEncoding`.
`Encoding`: The alphabet `Γ` is now an explicit parameter: `structure Encoding (α : Type u) (Γ : Type v)`.
`FinEncoding`: Removed. Finiteness is now handled via standard typeclasses (e.g., `[Fintype Γ] (e : Encoding α Γ)`).
Combinators: Functions like `finEncodingPair` are simplified to `encodingPair`, dropping the `fin` prefix and `[Fintype]` requirements where no longer needed.
Downstream: Mechanically updated `Mathlib.Computability` and `Mathlib.ModelTheory` to pass the explicit `Γ` and use `[Fintype Γ]` where `FinEncoding` was previously required.
|
new-contributor
maintainer-merge
|
87/67 |
Mathlib/Computability/Encoding.lean,Mathlib/ModelTheory/Encoding.lean |
2 |
9 |
['AlexeyMilovanov', 'dagurtomas', 'github-actions', 'vihdzp'] |
nobody |
18-69889 18 days ago |
25-34467 25 days ago |
51-14104 51 days |
| 39341 |
drocta author:drocta |
feat(Algebra/Colimit/DirectLimit): add DirectLimit.(NonUnital)StarAlgebra.(lift/of) maps and associated lemmas |
add the `of` and `lift` maps for `DirectLimit.StarAlgebra` and `DirectLimit.NonUnitalStarAlgebra`, as well as the associated lemmas, `of_f`, `lift_comp_of`, `lift_of`, and `hom_ext` for each. Also make `DirectLimit.NonUnitalAlgebra` only require `[Monoid R]` rather than `[CommSemiring R]`.
---
Use of AI: I again asked ChatGPT for some advice about some things about this code. I can personally vouch for all of the code I'm submitting, and that I understand all of it.
This is the third part of my project towards supporting direct limits of $C^∗$ -algebras (as I described [on Zulip](https://leanprover.zulipchat.com/#narrow/channel/113489-new-members/topic/Early.20feedback.20on.20approach.20towards.20formalizing.20UHF.20algebras.3F) ).
This PR adds an import of `Mathlib.Algebra.Star.StarAlgHom` (because it needs `StarAlgHom` and `NonUnitalStarAlgHom`) replacing/encompassing the previously added imports of `Mathlib.Algebra.Star.StarRingHom` and `Mathlib.Algebra.Algebra.NonUnitalHom` (added in PR #38308 and #38672 respectively). |
t-algebra
new-contributor
label:t-algebra$ |
100/3 |
Mathlib/Algebra/Colimit/DirectLimit.lean |
1 |
2 |
['github-actions'] |
nobody |
18-64441 18 days ago |
18-67133 18 days ago |
18-66914 18 days |
| 39392 |
jayscambler author:jayscambler |
feat(Cryptography): one-time pad and Shannon perfect secrecy |
Adds `Mathlib/Cryptography/OTP.lean`. One-time pad over an arbitrary
finite abelian group `G`:
- `OTP.encrypt k m := m + k`, `OTP.decrypt k c := c - k`.
- `OTP.correct`: `decrypt k (encrypt k m) = m`, by `abel`.
- `OTP.perfect_secrecy`: for any `m₀, m₁`, the distributions of
`encrypt k m₀` and `encrypt k m₁` over uniform `k` are equal;
both reduce to `PMF.uniformOfFintype G`. Proof goes via
`Equiv.addLeft`.
Independent of the Schnorr PR (#39279); no shared definitions. Unlike
everything else likely to live under `Mathlib/Cryptography/`, the
security guarantee here is information-theoretic, not computational.
**AI disclosure**: this PR was a collaboration between myself, Grey
Haven's autocontext and Claude Opus 4.7 (Anthropic). I read each
line and built locally on current master. (strawberry has three r's) |
new-contributor
LLM-generated
|
76/0 |
Mathlib.lean,Mathlib/Cryptography/OTP.lean |
2 |
3 |
['MrBrain295', 'github-actions'] |
nobody |
17-60970 17 days ago |
17-83444 17 days ago |
17-83225 17 days |
| 37707 |
MavenRain author:MavenRain |
feat(Combinatorics/SimpleGraph): add IsMaximalClique/IsMaximalIndepSet, refactor IsMaximum* to MaximalFor |
Addresses #34962
|
new-contributor
t-combinatorics
|
63/31 |
Mathlib/Combinatorics/SimpleGraph/Clique.lean |
1 |
6 |
['MavenRain', 'SnirBroshi', 'eric-wieser', 'github-actions'] |
nobody |
16-44693 16 days ago |
16-44765 16 days ago |
16-46186 16 days |
| 37720 |
cjrl author:cjrl |
feat(Data/Fintype/Card): existsUnique_notMem_image_of_injective_of_card_succ |
This pull requests adds a small theorem `existsUnique_notMem_image_of_injective_of_card_succ` to `Mathlib/Data/Fintype/Card` that says given an injective map f : α → β such that β has cardinality one more than α, there exists a unique element of β not in the image of f.
This can be viewed as going in the opposite direction of `card_lt_of_injective_of_notMem`.
This little fact is needed for our Latin Square PR #36698.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
t-set-theory
|
19/0 |
Mathlib/Data/Finset/Card.lean,Mathlib/Data/Fintype/Card.lean |
2 |
10 |
['IvanRenison', 'cjrl', 'dagurtomas', 'ghseeli', 'github-actions'] |
nobody |
15-61673 15 days ago |
15-61673 15 days ago |
53-32310 53 days |
| 26479 |
thefundamentaltheor3m author:thefundamentaltheor3m |
feat(Analysis/Complex/CauchyIntegral): Cauchy–Goursat for Unbounded Rectangles |
In this PR, we prove versions of the Cauchy-Goursat theorem where the contours in question are rectangular and unbounded (ie, where the contours look like the $\bigsqcup$ symbol). I am not sure if I have formalised these in the best way, or if `Analysis.Complex.CauchyIntegral` is the best place for them (it might be prudent to reorganise the file into multiple files at some point), but I believe this is a useful result. Suggestions welcome.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-analysis
sphere-packing
|
219/0 |
Mathlib/Analysis/Complex/CauchyIntegral.lean |
1 |
7 |
['github-actions', 'j-loreaux', 'loefflerd', 'mathlib4-merge-conflict-bot', 'thefundamentaltheor3m', 'wwylele'] |
urkud assignee:urkud |
14-52508 14 days ago |
14-52508 14 days ago |
48-63511 48 days |
| 35122 |
Marygold-Dusk author:Marygold-Dusk |
feat: define C^n submersions |
This PR defines submersions between C^n manifolds. In the infinite-dimensional setting, submersions are defined via local normal forms rather than surjectivity of the mfderiv. A map f is a submersion at x if, in suitable charts around x and f x, it has the form (u, v) ↦ u after identifying the model space with a product.
We prove a few basic properties:
- being a submersion is a local property,
- products of submersions are submersions,
- the set of submersed points is open
Future PRs will prove that submersions are C^n and deduce equivalence with the standard definition in finite dimensions. From the path towards the regular value theorem.
This file was developed under the supervision of Michael Rothgang.
Co-authored-by: Michael Rothgang
---
Most of the design is analogues to immersions.
|
t-differential-geometry
new-contributor
|
642/0 |
Mathlib.lean,Mathlib/Geometry/Manifold/Submersion.lean,docs/references.bib |
3 |
54 |
['Marygold-Dusk', 'chrisflav', 'github-actions', 'grunweg'] |
PatrickMassot and grunweg assignee:grunweg assignee:PatrickMassot |
14-40696 14 days ago |
14-40696 14 days ago |
58-61011 58 days |
| 39269 |
godofecht author:godofecht |
feat(Algebra/Spectrum): add the second resolvent identity |
Adds `spectrum.resolvent_sub_resolvent`:
For `a b : A` in an `R`-algebra and `r` in the resolvent set of both,
`resolvent a r - resolvent b r = resolvent a r * (a - b) * resolvent b r`.
Companion to `spectrum.resolvent_eq`. |
t-algebra
new-contributor
label:t-algebra$ |
15/0 |
Mathlib/Algebra/Algebra/Spectrum/Basic.lean |
1 |
3 |
['github-actions', 'wwylele'] |
nobody |
14-10490 14 days ago |
19-85055 19 days ago |
19-84836 19 days |
| 39366 |
akiezun author:akiezun |
feat(Data/Nat): add prime divisibility for ascFactorial and choose |
Adds two prime-divisibility lemmas for natural-number factorial/binomial APIs.
The first characterizes when a prime divides an ascending factorial:
`Nat.Prime.dvd_ascFactorial_iff`.
The second applies this to binomial coefficients:
`Nat.Prime.dvd_choose_add_sub_one_iff`, using
`Nat.ascFactorial_eq_factorial_mul_choose'` and cancellation of the `n!` factor
when `n < p`.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
large-import
|
46/0 |
Mathlib.lean,Mathlib/Data/Nat/Choose/Consecutive.lean,Mathlib/Data/Nat/Factorial/BigOperators.lean |
3 |
9 |
['SnirBroshi', 'akiezun', 'github-actions', 'wwylele'] |
nobody |
14-3037 14 days ago |
14-5078 14 days ago |
18-15238 18 days |
| 29744 |
espottesmith author:espottesmith |
feat(Combinatorics): define directed hypergraphs |
This PR defines directed hypergraphs:
```
@[ext]
structure DiHypergraph (α : Type*) where
/-- The vertex set -/
vertexSet : Set α
/-- The edge set -/
edgeSet : Set ((Set α) × (Set α))
/-- Each edge is a pair (s, d), where s ⊆ vertexSet and d ⊆ vertexSet -/
edge_src_dst_isSubset_vertexSet' : ∀ ⦃e⦄, e ∈ edgeSet → e.1 ⊆ vertexSet ∧ e.2 ⊆ vertexSet
```
Additional definitions:
- tail/head stars and negative/positive stars
- some special cases (B-Graph, F-Graph, BF-Graph, and what I'm calling a "non-endless" dihypergraph, where neither the source/tail nor the destination/head are empty)
- Vertex and (hyper)edge adjacency
- isolated vertices
- empty and nonempty dihypergraphs
The design employed here is based off of #28613, but this PR does not depend on that one.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
398/0 |
Mathlib.lean,Mathlib/Combinatorics/DiHypergraph/Basic.lean |
2 |
4 |
['b-mehta', 'espottesmith', 'github-actions', 'mathlib4-merge-conflict-bot'] |
nobody |
13-66300 13 days ago |
59-35685 59 days ago |
117-18933 117 days |
| 39567 |
AlexBrodbelt author:AlexBrodbelt |
feat(Mathlib/Data/Finite/Option): option type is finite iff type is finite |
Option type is finite if and only if the type is finite.
This is an intermediate result to proving that if the `GroupWithZero` is (in)finite then the `Units` are (in)finite.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
25/0 |
Mathlib.lean,Mathlib/Data/Finite/Option.lean |
2 |
11 |
['AlexBrodbelt', 'github-actions', 'plp127', 'themathqueen'] |
nobody |
13-17572 13 days ago |
13-33623 13 days ago |
13-34018 13 days |
| 37350 |
aditya-ramabadran author:aditya-ramabadran |
feat(Analysis/Distribution): define canonical maps between Schwartz/test functions, distributions/tempered distributions |
Defines these canonical maps: (1) continuous linear map from $\mathcal D$ to $\mathcal S$, and (2) induced (linear) restriction map from $\mathcal S'$ to $\mathcal D'$, as assigned by @ADedecker.
---
Put in a separate file since Distribution.lean only imports TestFunction right now and I thought it was cleaner to do in a new bridge file with both the maps. Open to changing this though.
* Made use of #36445 (proved first map locally on fixed support spaces first by local seminorm estimates, then used limitCLM)
* Needed a real to complex bridge `TestFunction.ToComplexSchwartzMap` since distributions are defined on real-valued test functions but tempered distributions in mathlib are defined on complex-valued Schwartz functions
* Induced map $\mathcal S'(E,F) \to \mathcal D'(Ω,F)$ is $\mathbb C$-linear
The main important defs are `ContDiffMapSupportedIn.toSchwartzMapCLM` which is the local fixed-support part, then `TestFunction.toSchwartzMapCLM` (where the continuity uses limitCLM to glue the local continuous linear maps on each $\mathcal D_K$), and `TemperedDistribution.toDistributionLM` which is the linear map from tempered distributions to ordinary distributions.
Tested with `lake env lean Mathlib/Analysis/Distribution/TestFunctionSchwartz.lean`
[](https://gitpod.io/from-referrer/)
|
t-analysis
new-contributor
|
225/0 |
Mathlib.lean,Mathlib/Analysis/Distribution/TestFunctionSchwartz.lean |
2 |
24 |
['aditya-ramabadran', 'github-actions', 'j-loreaux'] |
ADedecker and mcdoll assignee:mcdoll assignee:ADedecker |
13-9531 13 days ago |
22-14705 22 days ago |
54-14782 54 days |
| 34713 |
dennj author:dennj |
feat(Probability/Markov): stationary distributions for stochastic matrices |
This PR proves that every row-stochastic matrix on a finite nonempty
state space has a stationary distribution in the standard simplex.
Main additions to `Mathlib/Probability/Markov/Stationary.lean`:
- `IsStationary`: A distribution μ is stationary for matrix P if μ ᵥ* P = μ
- `cesaroAverage`: Cesàro average of iterates of a vector under a matrix
- `Matrix.rowStochastic.exists_stationary_distribution`: existence theorem
The proof uses Cesàro averaging: start with uniform distribution, form
averages, extract convergent subsequence by compactness, show limit is
stationary via L¹ non-expansiveness.
Also adds `vecMul_mem_stdSimplex` to `Stochastic.lean`: multiplying a
probability vector by a row-stochastic matrix preserves simplex membership.
This is human-made PR with AI help in golfing proof and documenting the code. |
new-contributor
t-measure-probability
|
166/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/Stochastic.lean,Mathlib/Probability/Markov/Stationary.lean |
3 |
17 |
['EtienneC30', 'dennj', 'dupuisf', 'github-actions', 'grunweg', 'j-loreaux', 'mathlib-merge-conflicts', 'riccardobrasca'] |
kex-y assignee:kex-y |
12-64765 12 days ago |
35-73219 35 days ago |
46-19613 46 days |
| 38014 |
cduenasnavarro author:cduenasnavarro |
feat(InformationTheory): linear codes over finite fields and minimum distance properties |
Define linear codes over a finite field `F` as finite-dimensional subspaces of `Fin n → F`,
together with their minimum Hamming distance.
Main definitions:
* `LinearCode`
* `minDist`
* `LinearCodeWithDist`
* `hammingSphere`
Main results:
* `minDist_eq_sInf_pairwiseDist`: characterisation of the minimum distance via pairwise distances
* `disjoint_spheres`: Hamming spheres of radius `t` around distinct codewords are disjoint
if `2 * t < d`
Pending:
* Choosing an adequate book reference
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
new-contributor
|
181/0 |
Mathlib.lean,Mathlib/InformationTheory/Coding/LinearCode.lean |
2 |
37 |
['cduenasnavarro', 'github-actions', 'linesthatinterlace', 'rkirov', 'vihdzp', 'wwylele'] |
kex-y assignee:kex-y |
12-64761 12 days ago |
48-84242 48 days ago |
48-84786 48 days |
| 39384 |
EngelsVon author:EngelsVon |
feat(Analysis/Calculus/DifferentialForm): Stokes' theorem on rectangular boxes |
## Summary
This PR proves the generalized Stokes theorem for differential forms on rectangular boxes $[a, b] \subset \mathbb{R}^{m+1}$.
The proof strategy is:
1. Extract the `i`-th signed face component `boxFaceComponent ω i` from an `m`-form `ω` — a scalar function whose divergence equals the top-form density of the exterior derivative `dω`.
2. Apply Mathlib's existing divergence theorem for boxes (`integral_divergence_of_hasFDerivAt_off_countable'`).
This gives a genuine proved Stokes formula in the Euclidean setting, complementing the existing infrastructure for differential forms.
## Main definitions
- `DifferentialForm.topFormDensity`: density function of a top-form field
- `DifferentialForm.boxFaceComponent`: the `i`-th signed face component of an `m`-form on `ℝ^(m+1)`
- `DifferentialForm.boxBoundaryIntegral`: the signed boundary integral over `∂[a,b]`
## Main results
- `box_stokes_of_hasFDerivAt`: Stokes' theorem on boxes with pointwise differentiability hypotheses
- `box_stokes_of_contDiff`: a convenient `C¹` formulation
|
t-analysis
new-contributor
|
314/0 |
Mathlib.lean,Mathlib/Analysis/Calculus/DifferentialForm/BoxStokes.lean |
2 |
2 |
['github-actions'] |
j-loreaux assignee:j-loreaux |
12-64752 12 days ago |
18-5417 18 days ago |
18-5198 18 days |
| 39389 |
i-love-lean author:i-love-lean |
feat(Analysis/SpecialFunctions): homeomorphism for spherical coordinates |
A few months ago, I noticed that mathlib was missing change of variables to spherical coordinates, which is taught in undergraduate calculus and useful for many 3D integrals. So far, I used `PolarCoord.lean` as reference and implemented a similar homeomorphism for spherical coordinates. There's still a lot of work left to prove an analog of `integral_comp_polarCoord_symm` but for spherical coordinates, so I'm splitting up the work into several PRs. I also fixed a typo in `PolarCoord.lean`. |
t-analysis
new-contributor
|
133/2 |
Mathlib.lean,Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean,Mathlib/Analysis/SpecialFunctions/PolarCoord.lean,Mathlib/Analysis/SpecialFunctions/SphericalCoord.lean |
4 |
4 |
['github-actions', 'i-love-lean', 'wwylele'] |
j-loreaux assignee:j-loreaux |
12-64751 12 days ago |
17-82952 17 days ago |
17-83553 17 days |
| 39406 |
roos-j author:roos-j |
feat(Analysis): van der Corput's lemma |
Adds van der Corput's lemma on one-dimensional oscillatory integrals, a standard tool in harmonic analysis.
Co-authored-by: Manasa Praveen
---
From https://github.com/roos-j/lean-oscillatory, see there for future plans
Zulip discussion [#mathlib4 > Oscillatory integrals in Lean](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Oscillatory.20integrals.20in.20Lean/with/584786060)
AI disclosure: The code in this PR was predominantly human-written. gpt-5.5 has helped in the later stages with shortening proofs, golfing and general advice.
|
t-analysis
new-contributor
|
551/0 |
Mathlib.lean,Mathlib/Analysis/OscillatoryIntegrals/VanDerCorput.lean |
2 |
2 |
['github-actions'] |
j-loreaux assignee:j-loreaux |
12-64749 12 days ago |
17-42411 17 days ago |
17-43256 17 days |
| 39605 |
Qinghev author:Qinghev |
Add docstrings for reversed range telescoping lemmas |
This PR adds docstrings for two existing Finset telescoping lemmas and their additive versions generated by `to_additive`:
* `Finset.prod_range_div'` / `Finset.sum_range_sub'`
* `Finset.eq_prod_range_div` / `Finset.eq_sum_range_sub`
The goal is a small documentation-only contribution that makes the reversed range telescoping API easier to discover from search and hover docs.
Local checks:
* `git diff --check -- Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean`
* Attempted `lake env lean Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean`, but local validation is currently blocked by downloading the `leanprover/lean4:v4.30.0-rc2` toolchain from GitHub timing out/connection-resetting on this machine.
Opened as draft until the toolchain/network check can be completed or CI confirms the documentation-only change.
|
t-algebra
new-contributor
label:t-algebra$ |
8/2 |
Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean |
1 |
2 |
['github-actions'] |
nobody |
12-27854 12 days ago |
12-27854 12 days ago |
12-27635 12 days |
| 39332 |
Michaillus author:Michaillus |
chore(Topology/Spectral): Added two small lemmas |
chore(Topology/Spectral): Added two lemmas
`IsCompact.isClosed_constructibleTopology_of_isOpen`
`IsCompact.isClosed_constructibleTopology_of_isClosed`
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
12/0 |
Mathlib/Topology/Spectral/ConstructibleTopology.lean |
1 |
7 |
['Michaillus', 'github-actions', 'plp127', 'qawbecrdtey'] |
PatrickMassot assignee:PatrickMassot |
12-24348 12 days ago |
18-78824 18 days ago |
18-78605 18 days |
| 39225 |
junodeveloper author:junodeveloper |
feat(SimpleGraph): add no-bridge theorem for even degree graphs |
This PR proves that a finite graph in which every vertex has even degree has no bridge.
It adds:
* `SimpleGraph.not_isBridge_of_even_degree`
The proof argues by contradiction: if an edge is a bridge, delete it and look at the connected component containing one endpoint. In that component, the endpoint has odd degree, while any other odd-degree vertex would contradict the bridge assumption and the even-degree hypothesis. This contradicts the handshaking lemma via the existing odd-degree API.
Local checks:
```bash
lake build Mathlib.Combinatorics.SimpleGraph.Connectivity.EdgeConnectivity
lake exe lint-style Mathlib.Combinatorics.SimpleGraph.Connectivity.EdgeConnectivity
lake exe runLinter Mathlib.Combinatorics.SimpleGraph.Connectivity.EdgeConnectivity
```
## AI usage disclosure
I used OpenClaw/Codex while developing this PR. Much of the Lean proof of `not_isBridge_of_even_degree` was drafted with AI assistance, including API search and proof refactoring. I reviewed the generated code, made edits, ran the local checks above, and understand and take responsibility for the final statement and proof. |
t-combinatorics
new-contributor
large-import
LLM-generated
|
122/0 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/EdgeConnectivity.lean |
1 |
12 |
['Rida-Hamadani', 'SnirBroshi', 'github-actions', 'junodeveloper', 'linesthatinterlace'] |
nobody |
12-19119 12 days ago |
20-75094 20 days ago |
20-74875 20 days |
| 39607 |
TentativeConvert author:TentativeConvert |
feat(Algebra/DirectSum): equivalence between direct sum indexed by ι₁ and double sum indexed by ι₂ and fibres of f : ι₁ → ι₂ |
1. Add variant `equivCongrLeft'` of `equivCongrLeft`, and corresponding `…_apply` lemma.
2. Add `…_of lemmas` for both `equivCongrLeft` and `equivCongrLeft'`.
3. Add `…of lemma` for `sigmaCurry`, i.e. `sigmaCurry_of`.
4. Add `sigmaFiberAddEquiv`: the equivalence between a direct sum indexed by a type `ι₁` and the double sum indexed by a type `ι₂` and the fibres of a map `f : ι₁ → ι₂`. Add two `…_apply` lemmas and an `…_of` lemma.
---
This is supposed to be a first step towards merging the draft PR #39356.
re 1: Mathematically, I don't see why one version should be preferred over the other, but I found the existing `equivCongrLeft` more difficult to work with when the equivalence `h : ι ≃ κ` is naturally given in the opposite direction. (I could not avoid explicit type casts through the equality `h.symm.symm = h` when defining `sigmaFiberAddEquiv` in terms of `equivCongrLeft`.)
Very unsure about the name of `equivCongrLeft'`. (I see that the name `equivCongrLeft` was chosen in analogy with `Equiv.piCongrLeft`. `Equiv.piCongrRight` looks very different, so presumably `equivCongrLeft'` should *not* be called `equivCongrRight`.)
re 4: Very unsure about the naming of the two different `…_apply` lemmas; called them `…_apply` and `…_apply'` for now. The second (`…_apply'`) cannot be a `simp` lemma as it would prevent the first (`…_apply`) from firing.
I've used Claude Opus for understanding error messages and git interaction, but everything is hand coded.
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
66/1 |
Mathlib/Algebra/DirectSum/Basic.lean |
1 |
3 |
['github-actions'] |
nobody |
12-18389 12 days ago |
12-30942 12 days ago |
12-32353 12 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
|
723/0 |
Mathlib.lean,Mathlib/Algebra/BigOperators/Finprod.lean,Mathlib/Geometry/Manifold/ExistsRiemannianMetric.lean,Mathlib/Geometry/Manifold/PartitionOfUnity.lean |
4 |
200 |
['Rida-Hamadani', 'github-actions', 'grunweg', 'idontgetoutmuch'] |
nobody |
11-66298 11 days ago |
43-19449 43 days ago |
88-26213 88 days |
| 39474 |
emlis42 author:emlis42 |
feat(Topology/Separation/Hausdorff): add `Filter.limUnder_congr` |
This PR adds `Filter.limUnder_congr` and some lemmas about `limUnder`.
`Filter.limUnder_congr` allows rewriting `limUnder` expressions using equivalences of convergence behavior, without proving the filters actually converge, allowing convergence proofs to be carried out on more convenient expressions latter. |
t-topology
new-contributor
large-import
|
24/1 |
Mathlib/Order/Filter/AtTopBot/Archimedean.lean,Mathlib/Topology/Separation/Hausdorff.lean |
2 |
2 |
['github-actions'] |
PatrickMassot assignee:PatrickMassot |
11-64710 11 days ago |
15-86140 15 days ago |
15-85921 15 days |
| 38319 |
Zetetic-Dhruv author:Zetetic-Dhruv |
feat(Combinatorics/SetFamily): Assouad's dual VC bound |
Adds the Finset-level form of Assouad's 1983 dual VC bound: if a family
`𝒜 : Finset (Finset α)` has VC dimension at most `d`, then for any
ground set `X : Finset α` the dual family
`{𝒜.filter (· ∋ x) : x ∈ X}` has VC dimension at most `2 ^ (d + 1) - 1`.
New declarations (in `Finset` namespace):
- `dualFamily 𝒜 X`: for each `x ∈ X`, the subfamily `{A ∈ 𝒜 | x ∈ A}`
- `mem_dualFamily` (`@[simp]`): membership characterisation
- `exists_shatters_of_dualFamily_shatters`: Assouad's bitstring-coding lemma
- `vcDim_dualFamily_le`: the headline VC bound
Proof by Assouad's classical bitstring-coding argument. Sits on top of `Finset.shatterer` / `Finset.vcDim` from
`Mathlib.Combinatorics.SetFamily.Shatter`.
References:
- P. Assouad, Densite et dimension, Ann. Inst. Fourier 33(3) (1983), Thm 2.13
- J. Matousek, Lectures on Discrete Geometry, GTM 212, Springer, 2002, Section 10.3 Lemma 10.3.3
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
199/0 |
Mathlib.lean,Mathlib/Combinatorics/SetFamily/DualVC.lean,docs/references.bib |
3 |
37 |
['Shreyas4991', 'YaelDillies', 'Zetetic-Dhruv', 'github-actions'] |
nobody |
11-10285 11 days ago |
22-78918 22 days ago |
39-39348 39 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'] |
nobody |
10-66297 10 days ago |
78-50518 78 days ago |
78-50299 78 days |
| 39687 |
TentativeConvert author:TentativeConvert |
feat(Algebra/Group/Submonoid): type class to indicate that supremum in a SubmonoidClass agrees with supremum of submonoids |
Add a type class `SubmonoidClass.IsConcreteSSup` to indicate that the canonical map `.ofClass` from a class `S` of submonoids of `M` to `Submonoid M` preserves suprema.
---
This PR implements the minimal type class assumption needed to make „pushfoward of gradings along maps of indexing sets“ – see draft PR #39356 – work in some `SetLike` generality.
Given `{S M : Type*} [SetLike S M] [Monoid M] [SubmonoidClass S M]`, we have canonical maps
```
S → Submonoid M → Set M
```
The first is `Submonoid.ofClass`, the second and the composition are `coe` maps coming from the `SetLike` structures. Depending on `S`, these maps may or may not satisfy various properties with respect the lattice structures on `Submonoid M` and `Set M`. Mathlib so far includes the type class `[IsConcreteLE S M]`, which asserts that the composition `S → Set M` is order-preserving and order-reflecting. The type class defined here asserts that the first map, `S → Submonoid M`, preserves suprema.
In examples such as `S = Subgroup M`, `S = Submodule R M`, much more is true – in these cases, `S` is a complete sublattice of `Submonoid M`. But there are also examples where only the weaker property defined here holds, e.g. `S = OpenSubgroup M` for a topological group `M`.
Note on `outParam`: I did *not* write `(M : outParam Type*)` in the assumptions of `SubmonoidClass.IsConcreteSSup` in accordance with the [DocString of `Setlike`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/SetLike/Basic.html#SetLike). However, we do have `(B : outParam Type*)` in the definition of `IsConcreteLE`, so perhaps I'm misinterpreting the DocString.
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-algebra
label:t-algebra$ |
56/0 |
Mathlib.lean,Mathlib/Algebra/Group/Submonoid/SSup.lean |
2 |
2 |
['github-actions'] |
nobody |
10-34691 10 days ago |
10-34760 10 days ago |
10-35141 10 days |
| 37718 |
SabrinaJewson author:SabrinaJewson |
feat(Order): add conversions from `Std` order typeclasses to Mathlib ones |
`{Preorder, PartialOrder, LinearOrder}.ofStd` exist to facilitate convenient translation from `Std` order typeclasses to Mathlib ones.
The design is modelled closely after [`Init.Data.Order.PackageFactories`](https://leanprover-community.github.io/mathlib4_docs/Init/Data/Order/PackageFactories.html) (`Std.PreorderPackage` is equivalent-ish to Mathlib’s `Preorder`, and same for partial and linear orders). The `OfStdArgs` types allow conveniently bundling a whole bunch of default arguments together in a way that allows one default argument set to `extends` another.
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
maintainer-merge
|
391/0 |
Mathlib.lean,Mathlib/Order/Std.lean,MathlibTest/OrderOfStd.lean |
3 |
9 |
['SabrinaJewson', 'YaelDillies', 'github-actions'] |
YaelDillies assignee:YaelDillies |
9-81408 9 days ago |
10-73204 10 days ago |
55-67327 55 days |
| 39697 |
sorrachai author:sorrachai |
feat(Data/Tree/Basic): add Membership instance, new notation, rename Tree |
Summary:
1. [Rename]([#CSLib > Splay tree PR: BinaryTree vs Tree @ 💬](https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Splay.20tree.20PR.3A.20BinaryTree.20vs.20Tree/near/596482765)) from Tree to BinaryTree, which propagates the changes to other files that use it.
2. Add membership instance, prove decidability of membership.
3. Add toListInOrder, toListPreOrder, toListPostOrder
Suggestion based on the discussion in the cslib [thread](https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Splay.20tree.20PR/near/596568391)[#CSLib > Splay tree PR @ 💬](https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Splay.20tree.20PR/near/596568391).
---
* depends on: #39707 |
new-contributor |
187/75 |
Mathlib/Combinatorics/Enumerative/Catalan/Tree.lean,Mathlib/Combinatorics/Enumerative/DyckWord.lean,Mathlib/Data/Tree/Basic.lean,Mathlib/Data/Tree/Get.lean,Mathlib/Data/Tree/Traversable.lean,Mathlib/Tactic/CancelDenoms/Core.lean,docs/overview.yaml |
7 |
4 |
['eric-wieser', 'github-actions', 'sorrachai'] |
nobody |
9-74423 9 days ago |
10-19583 10 days ago |
10-21419 10 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 |
30 |
['A-M-Berns', 'eric-wieser', 'github-actions', 'joneugster', 'jsm28', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp', 'wwylele'] |
nobody |
9-66300 9 days ago |
96-5755 96 days ago |
98-39822 98 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
|
14/0 |
Mathlib/Dynamics/BirkhoffSum/Average.lean |
1 |
26 |
['Maldooor', 'github-actions', 'lua-vr', 'mcdoll', 'samueloettl'] |
sgouezel assignee:sgouezel |
9-65126 9 days ago |
33-19249 33 days ago |
99-17843 99 days |
| 39518 |
abeldonate author:abeldonate |
feat(RingTheory/LocalProperties/Projective): Projective Module theorem |
Theorem: R Noetherian, M finitely generated R-Mod. Then:
M projective iff M_m free for all m maximal
|
t-ring-theory
new-contributor
large-import
|
21/0 |
Mathlib/RingTheory/LocalProperties/Projective.lean |
1 |
9 |
['abeldonate', 'github-actions', 'mbkybky', 'vlad902'] |
nobody |
9-40815 9 days ago |
13-18434 13 days ago |
13-60470 13 days |
| 39530 |
RaggedR author:RaggedR |
feat(Combinatorics/SimpleGraph): group actions on simple graphs |
This adds the first connection between Mathlib's MulAction and SimpleGraph libraries. The GraphAction class asserts that a group action on the vertex type preserves the adjacency relation, and builds on it to define vertex-transitivity and arc-transitivity for graphs.
The GraphAction typeclass gives adj_smul_iff (the biconditional for group actions) and toIso (each group element induces a graph automorphism). The IsVertexTransitive class combines GraphAction with IsPretransitive, and IsArcTransitive requires transitivity on ordered adjacent pairs (arcs).
The main theorem is the standard characterization: a graph is arc-transitive if and only if it is vertex-transitive and locally transitive (the stabilizer of each vertex acts transitively on its neighbors). The forward direction is proved directly by composing a vertex-transporting element with a neighbor-transporting stabilizer element. The reverse direction shows that an arc-transitive graph with no isolated vertices is vertex-transitive.
These definitions are the algebraic graph theory prerequisites for formalizing coset graphs (Sabidussi's construction) and the characterization of symmetric graphs via double cosets and involutions (Lorimer's theorem).
---
LLM tools were used to assist with Lean formalization. The mathematical content is the author's own work. |
t-combinatorics
new-contributor
LLM-generated
|
130/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Action.lean |
2 |
7 |
['RaggedR', 'b-mehta', 'github-actions', 'mathlib-bors'] |
nobody |
9-30183 9 days ago |
9-30183 9 days ago |
13-84814 13 days |
| 38194 |
ryanncode author:ryanncode |
feat(LinearAlgebra/BilinearForm): add indefinite metrics |
Add the `IndefiniteMetric` structure to support vector spaces equipped with a non-degenerate, symmetric, indefinite bilinear form.
Provide the algebraic foundation for indefinite inner product spaces by formalizing the metric via `LinearMap.BilinForm` and extracting its associated quadratic form without enforcing the `IsPosSemidef` typeclass.
Previously, mathlib required strictly positive-definite metrics to instantiate inner product spaces (`InnerProductSpace`), which prevented the formalization of indefinite geometries without causing typeclass inference failures. Bridge this gap by isolating the symmetric bilinear form from topological and positivity constraints, allowing the library to handle generalized indefinite metric spaces safely.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
47/0 |
Mathlib.lean,Mathlib/LinearAlgebra/BilinearForm/IndefiniteMetric.lean |
2 |
5 |
['dagurtomas', 'github-actions', 'mathlib-merge-conflicts', 'ryanncode'] |
nobody |
9-22383 9 days ago |
9-24128 9 days ago |
24-80078 24 days |
| 39212 |
emlis42 author:emlis42 |
feat(Algebra/ContinuedFractions): add `partNums!` and `partDens!` |
This PR adds `partNums!` and `partDens!`, which provide infinite stream representations for the sequences of partial numerators and denominators of a generalized continued fraction. |
t-algebra
new-contributor
label:t-algebra$ |
8/0 |
Mathlib/Algebra/ContinuedFractions/Basic.lean |
1 |
4 |
['emlis42', 'github-actions', 'grunweg'] |
nobody |
9-6923 9 days ago |
21-8683 21 days ago |
21-8464 21 days |
| 37716 |
slavanaprienko author:slavanaprienko |
feat(LinearAlgebra/Matrix/Determinant): Desnanot-Jacobi identity |
This PR adds the Desnanot-Jacobi identity (also known as the Lewis Carroll identity or Dodgson condensation): for any (n+2)×(n+2) matrix M over a commutative ring,
$$\det(M) \cdot \det(M_{1,n}^{1,n}) = \det(M_1^1) \cdot \det(M_n^n) - \det(M_1^n) \cdot \det(M_n^1)$$
The proof follows Bressoud's *Proofs and Confirmations* (Cambridge University Press, 1999): multiply M by an auxiliary matrix built from columns of the adjugate, then compare determinants. This yields the identity premultiplied by det(M). To cancel, we pass to a universal polynomial ring (an integral domain with nonzero determinant), then specialize back to arbitrary commutative rings.
It seems there's some interest in adding this:
https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Determinantal.20identity.20and.20the.20Cauchy.20matrix.20determinant/with/582946873
--- |
t-algebra
new-contributor
label:t-algebra$ |
217/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/Determinant/DesnanotJacobi.lean |
2 |
13 |
['SnirBroshi', 'github-actions', 'grunweg', 'kim-em', 'slavanaprienko'] |
nobody |
8-73832 8 days ago |
20-83789 20 days ago |
22-35400 22 days |
| 35753 |
Vilin97 author:Vilin97 |
feat(Topology/Algebra/Order): regular grid helpers and piecewise linear interpolation |
Make API for piecewise linear interpolation on regular grids. I need these to for ODE time-stepping methods, like forward Euler, and later Runge–Kutta methods.
Follow-up PR: #35755 (forward Euler method convergence).
I don't know if these numerical analysis ODE-solving methods even belong in mathlib. If someone could advise me on it, I would appreciate it.
---
The initial proof was produced by [Aristotle](https://aristotle.harmonic.fun). The code was iteratively refined (factoring out lemmas, golfing, simplifying proofs) using Claude Code.
- [ ] depends on: #38091 |
t-topology
new-contributor
LLM-generated
maintainer-merge
|
201/0 |
Mathlib.lean,Mathlib/Topology/Algebra/Order/PiecewiseLinear.lean |
2 |
59 |
['Vilin97', 'YanYablonovskiy', 'adomani', 'botbaki-review', 'copilot-pull-request-reviewer', 'dagurtomas', 'eric-wieser', 'github-actions', 'grunweg', 'j-loreaux', 'mathlib-dependent-issues', 'wwylele'] |
ADedecker assignee:ADedecker |
8-64793 8 days ago |
30-77020 30 days ago |
63-39481 63 days |
| 39436 |
dtumad author:dtumad |
chore: Add `seqLeft` and `seqRight` unfolding to monad_norm simp set |
This PR adds `seqLeft_eq_bind` and `seqRight_eq_bind` to `monad_norm`, so that `<*` and `*>` get unfolded in the same way as `<*>` already does when using the `simp` set.
---
[](https://gitpod.io/from-referrer/)
|
t-meta
new-contributor
|
1/1 |
Mathlib/Tactic/Attr/Core.lean |
1 |
2 |
['github-actions'] |
dwrensha assignee:dwrensha |
7-65842 7 days ago |
16-79045 16 days ago |
16-78826 16 days |
| 38214 |
emlis42 author:emlis42 |
feat(Algebra/ContinuedFractions): add Euler's continued fraction |
This PR formalizes Euler’s continued fractions by providing `Euler` which construct one by giving head term and coefficients with some basic property.
We also introduce a transformation `GenContFract.toEuler` that maps a generalized continued fraction `g : GenContFract K` to an equivalent Euler-form continued fraction. |
new-contributor
t-algebra
label:t-algebra$ |
262/0 |
Mathlib.lean,Mathlib/Algebra/ContinuedFractions/Euler.lean |
2 |
15 |
['github-actions', 'mathlib-bors', 'wwylele'] |
alreadydone assignee:alreadydone |
7-64681 7 days ago |
39-6416 39 days ago |
39-9949 39 days |
| 39256 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): add monotonicity lemma for LanguageOn |
In Symbolic dynamics.
Proof that the language of a set of configurations is monotone with respect to inclusion of configuration sets:
X ⊆ Y → LanguageOn X U ⊆ LanguageOn Y U
The proof is a direct unfolding of definitions: a pattern in the language of X comes from restricting some configuration x ∈ X, and inclusion X ⊆ Y allows the same witness to be used for Y.
Related to issue #39252 |
t-dynamics
new-contributor
|
9/1 |
Mathlib/Dynamics/SymbolicDynamics/Basic.lean |
1 |
3 |
['github-actions'] |
ADedecker assignee:ADedecker |
7-64680 7 days ago |
20-17530 20 days ago |
20-17311 20 days |
| 38669 |
dannyply author:dannyply |
feat(Topology/Algebra/PontryaginDual): prove compact monoids have discrete duals |
Proves that the Pontryagin dual of a compact monoid is discrete. As a consequence, it also adds the corresponding finite-type instances for compact discrete monoids.
This upstreams a result first added downstream in [`YaelDillies/APAP`](https://github.com/YaelDillies/APAP), where this fact was needed to close a `sorry`. The proof separates the trivial character from all the others using the right half of the circle and adds a few reusable `Circle` helper lemmas near the existing related API.
The original APAP proof was AI-assisted and then reviewed/rewritten during downstream review. For this PR, I used Codex to help adapt the APAP proof to mathlib and to refactor the supporting lemmas.
---
[](https://gitpod.io/from-referrer/) |
t-topology
new-contributor
|
130/16 |
Mathlib/Analysis/SpecialFunctions/Complex/Circle.lean,Mathlib/Topology/Algebra/PontryaginDual.lean,Mathlib/Topology/MetricSpace/Pseudo/Defs.lean |
3 |
30 |
['dannyply', 'github-actions', 'j-loreaux', 'tb65536'] |
j-loreaux assignee:j-loreaux |
7-24414 7 days ago |
7-24414 7 days ago |
8-12874 8 days |
| 39820 |
samuelchassot author:samuelchassot |
Add proof of the existence of an Eulerian walk if all vertices have even degree or if exactly vertices have odd degree |
As per the TODO open in `Trails.lean`.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
671/3 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Eulerian.lean,Mathlib/Combinatorics/SimpleGraph/Trails.lean |
3 |
8 |
['SnirBroshi', 'copilot-pull-request-reviewer', 'github-actions'] |
nobody |
7-23256 7 days ago |
7-24487 7 days ago |
7-24268 7 days |
| 39505 |
dannyhe652 author:dannyhe652 |
feat(SimpleGraph): add Vizing's theorem for edge coloring |
Hi! I'm a high school student interested in formulization of mathematics in Lean. Recently, I have worked on a project to formulize Vizing Theorem with Daniel Raggi from Cambridge University with AI assistance. In particular, we first drafted an outline for the proof, and built the proof using Claude Opus 4.5 and 4.6. The proof is optimized using Aristotle and finally reviewed by ourselves. We rewrote some parts of the code and some comments. The code now builds cleanly and we wish this code to be reviewed by Lean Community. I am aware that there are previous attempts, some being successful, on formulizing Vizing Theorem, including this one by Arohee https://github.com/aroheebhoja/vizing. However, I believe that no PR have been made. Our proof is not based on his proof, but it could be helpful for the community to review that project as well. I sincerely thank everyone who has time to verify and review our code. A summary of the project is as follows. Please contact me if there are any questions or problems.
## Summary
This PR completes the proof of **Vizing's theorem** for edge coloring in simple graphs, proving that the chromatic index of any graph is either Δ (the maximum degree) or Δ + 1.
## Changes
### New files
- **`Mathlib/Combinatorics/SimpleGraph/Coloring/EdgeColoring.lean`** — Core definitions
- `edgeColoring`: Type for line graph colorings
- `edgeColorable`: Graph is edge-colorable with n colors
- `chromaticIndex`: Chromatic index as ℕ
- **`Mathlib/Combinatorics/SimpleGraph/Coloring/KempeChain.lean`** — Kempe Chain
- Coloring observables: `incidentEdges`, `incidentColors`, `missingColors`
- Kempe subgraph structure with bounded degree
- `swapKempe`: Recolor edges in a connected component via color-swapping
- **`Mathlib/Combinatorics/SimpleGraph/Coloring/VizingFan.lean`** — Vizing Fan Rotation
- `IsFan`: Vizing fan structure with special color properties
- Fan maximality and dichotomy on terminal vertices
- `rotate_termA`: Extend coloring when a free color exists at both endpoints
- `vizingAdjacencyLemma`: Main adjacency lemma for both cases
- **`Mathlib/Combinatorics/SimpleGraph/Coloring/VizingTheorem.lean`** — Main theorems
- `edge_eq_of_color_eq`: Proper edge colorings assign different colors to distinct edges sharing a vertex
- `maxDegree_le_chromaticIndex`: χ'(G) ≥ Δ(G)
- `chromaticIndex_bot`: Empty graph has chromatic index 0
- `vizingUpperBound_aux`: Inductive proof of upper bound on number of edge
- `vizingTheorem`: χ'(G) ∈ {Δ(G), Δ(G) + 1}
### Modified files
- `Mathlib.lean` — Added imports for the four new coloring modules
## Technical Approach
**Lower bound** (χ'(G) ≥ Δ):
- Edges incident to a max-degree vertex form a clique in the line graph
- Clique number lower-bounds chromatic number
**Upper bound** (χ'(G) ≤ Δ + 1):
- Induction on the number of edges
- Base case: empty graph colored with 0 colors
- Inductive step:
- If a free color exists at both endpoints of an edge, then extend directly
- Otherwise:
- Build a maximal fan from one endpoint
- Apply dichotomy: either extend via Term-A (free color at both endpoints) or Term-B (Kempe swap)
- Term-B uses a three-vertex connectivity argument to derive a contradiction, forcing the fan to extend
## Key Lemmas
- `incidentEdges`, `incidentColors`, `missingColors`: Coloring observables at vertices
- `kempeSubgraph`: Restricted subgraph of edges with two specific colors
- `swapKempe`: Recolor via Kempe chain swapping
- `IsFan.singleton`: Trivial fan always valid
- `IsFan.length_le_card`: Fan length is bounded by vertex count
- `IsFan.dichotomy`: Maximal fan satisfies Term-A or Term-B
- `IsFan.rotate_termA`: Term-A case extends the coloring inductively
- `vizingAdjacencyLemma`: Handles both cases for extending one edge
- `vizingUpperBound_aux`: Framework for full inductive proof
- `edge_eq_of_color_eq`: Distinctness of edges with same color
## Testing
All four modules compile with no `sorry` nor errors or warnings.
## References
* V. G. Vizing, *On an estimate of the chromatic class of a p-graph*,
Diskret. Analiz. 3 (1964), 25–30.
## Co-authors
Co-authored-by: Daniel Raggi
Co-authored-by: Aristotle (Harmonic)
Co-authored-by: Claude Opus 4.5 & 4.6
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
LLM-generated
|
1915/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/EdgeColoring.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/KempeChain.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/VizingFan.lean,Mathlib/Combinatorics/SimpleGraph/Coloring/VizingTheorem.lean |
5 |
3 |
['github-actions'] |
nobody |
6-68801 6 days ago |
14-70562 14 days ago |
14-71722 14 days |
| 39722 |
kg583 author:kg583 |
feat(Combinatorics): Link `Nat.Partition` to `YoungDiagram` |
---
AI disclosure: Claude was used to source some proof sketches.
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
large-import
|
120/4 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Partition/Basic.lean,Mathlib/Combinatorics/Enumerative/Partition/Conjugate.lean,Mathlib/Combinatorics/Young/YoungDiagram.lean |
4 |
36 |
['NoahW314', 'github-actions', 'kg583', 'wwylele'] |
nobody |
6-58282 6 days ago |
8-85491 8 days ago |
9-82847 9 days |
| 38275 |
TTony2019 author:TTony2019 |
feat: Add `AffineEquiv.image_intrinsicInterior` |
## Summary
This PR generalizes the existing lemma `AffineIsometry.image_intrinsicInterior` to the setting of affine equivalences, yielding the corresponding result `AffineEquiv.image_intrinsicInterior`.
Since affine equivalences are more general than affine isometries, the proof requires an additional finite-dimensionality assumption. The key extra input is that in finite-dimensional spaces, an affine equivalence induces a homeomorphism via `AffineEquiv.toHomeomorphOfFiniteDimensional`, so the assumptions are adjusted accordingly.
Apart from these extra assumptions, the argument is essentially the same as for `AffineIsometry.image_intrinsicInterior`.
## Collaboration
This PR was developed together with @imathwy.
|
t-analysis
new-contributor
|
283/41 |
Mathlib/Analysis/Convex/Intrinsic.lean,Mathlib/Analysis/Normed/Module/FiniteDimension.lean,Mathlib/LinearAlgebra/AffineSpace/Restrict.lean,Mathlib/Topology/Algebra/AffineSubspace.lean,Mathlib/Topology/Homeomorph/Defs.lean |
5 |
29 |
['TTony2019', 'github-actions', 'imathwy', 'j-loreaux', 'themathqueen'] |
j-loreaux assignee:j-loreaux |
6-39708 6 days ago |
6-39708 6 days ago |
23-30172 23 days |
| 39491 |
Yu-Misaka author:Yu-Misaka |
feat(Mathlib/LinearAlgebra/RootSystem/CartanMatrix): a Cartan matrix of a reduced crystallographic root system cannot have eigenvalue 4 |
This proves the TODO that a Cartan matrix of a reduced crystallographic root system cannot have eigenvalue 4.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-algebra
codex
LLM-generated
label:t-algebra$ |
125/8 |
Mathlib/Data/Matrix/Mul.lean,Mathlib/LinearAlgebra/RootSystem/CartanMatrix.lean,Mathlib/LinearAlgebra/RootSystem/GeckConstruction/Basis.lean,Mathlib/LinearAlgebra/RootSystem/GeckConstruction/Semisimple.lean |
4 |
6 |
['Yu-Misaka', 'copilot-pull-request-reviewer', 'github-actions', 'mathlib-bors', 'ocfnash'] |
ocfnash assignee:ocfnash |
6-36792 6 days ago |
6-36881 6 days ago |
6-36672 6 days |
| 39864 |
8e7 author:8e7 |
feat(Combinatorics/SimpleGraph/Acyclic): helly property on subtrees |
This PR adds several lemmas regarding connected subsets of vertices in trees (subtrees). The main result is the Helly property for subtrees: For a finite set of subtrees, if any pair of subtrees intersect, then there is a common vertex in all subtrees.
This lemma is part of an effort to formalize tree decompositions (see #38334), and will be used in a future PR to prove `G.cliqueNum - 1 <= G.treeWidth`.
AI Usage: The proofs were developed with the help of Claude Code. I vouch for all the code written and understand the content fully.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
LLM-generated
|
114/0 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean |
2 |
2 |
['github-actions'] |
nobody |
6-14776 6 days ago |
6-36289 6 days ago |
6-36184 6 days |
| 39863 |
thomaskwaring author:thomaskwaring |
feat(Topology/Sets/Opens): Heyting-algebra operations on open sets |
Add expressions for the Heyting-algebra operations on the frame of opens subsets of a topological space.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
22/0 |
Mathlib/Topology/Sets/Opens.lean |
1 |
9 |
['eric-wieser', 'github-actions', 'thomaskwaring'] |
nobody |
5-73231 5 days ago |
6-32448 6 days ago |
6-39780 6 days |
| 37062 |
tannerduve author:tannerduve |
feat(Computability): Turing join and semilattice structure on Turing degrees |
## Summary
- Add `Partrec.kronecker` (equality test) and `Partrec.join` (disjoint union by parity) in `Partrec.lean`
- Prove `Nat.RecursiveIn` is closed under computable conditionals (`cond_const`, `cond`)
- Show each component reduces to the join (`left_le_join`, `right_le_join`) and the join is the least upper bound (`join_le`)
- Establish `SemilatticeSup` instance on `TuringDegree` |
t-computability
new-contributor
large-import
|
311/15 |
Mathlib/Computability/Partrec.lean,Mathlib/Computability/RecursiveIn.lean,Mathlib/Computability/TuringDegree.lean |
3 |
7 |
['Komyyy', 'github-actions', 'mathlib-merge-conflicts', 'tannerduve'] |
Komyyy assignee:Komyyy |
5-66124 5 days ago |
49-14802 49 days ago |
49-76877 49 days |
| 39369 |
pd4st8hb95-hub author:pd4st8hb95-hub |
feat: add basic fuzzy set definitions |
This PR adds a minimal `FuzzySet` API in `Mathlib/Order/FuzzySet`.
A fuzzy set is represented as an abbreviation:
`FuzzySet α L := α → L`
The file provides basic definitions and lemmas:
- `degree`
- `support`
- `core`
- `weakCut`
- `strongCut`
- membership simp lemmas
- extensionality
- basic monotonicity lemmas for weak and strong cuts
This PR intentionally does not add complement, union/intersection-specific API, normal or convex fuzzy sets, fuzzy relations, or advanced fuzzy set theory.
Validation:
- `lake build Mathlib.Order.FuzzySet`
- `#lint only docBlame docBlameThm`
Feedback on whether `Mathlib/Order/FuzzySet.lean` is the right location for this minimal API would be appreciated.
---
[](https://gitpod.io/from-referrer/)
|
t-order
new-contributor
|
169/0 |
Mathlib.lean,Mathlib/Order/FuzzySet.lean |
2 |
6 |
['github-actions', 'grunweg', 'pd4st8hb95-hub', 'wwylele'] |
nobody |
5-22429 5 days ago |
16-20030 16 days ago |
16-20171 16 days |
| 37071 |
ericluap author:ericluap |
feat: Dedekind completion of rationals is isomorphic to EReal |
|
t-order
new-contributor
|
128/4 |
Mathlib.lean,Mathlib/Data/EReal/Basic.lean,Mathlib/Data/EReal/DedekindCut.lean,Mathlib/Order/Completion.lean |
4 |
59 |
['ericluap', 'github-actions', 'plp127', 'vihdzp', 'wwylele'] |
vihdzp assignee:vihdzp |
5-572 5 days ago |
21-11730 21 days ago |
44-6699 44 days |
| 39865 |
eliasjudin author:eliasjudin |
feat(Algebra): add eval API parity lemmas |
Adds two eval API parity lemmas from #23044: `MvPolynomial.hom_eval₂`, parallel to `Polynomial.hom_eval₂`, and `Polynomial.eval₂RingHom_comp_C`, parallel to `MvPolynomial.eval₂Hom_comp_C`.
This addresses the eval portion of #23044; the degree-name discussion there is left for separate work.
|
t-algebra
new-contributor
label:t-algebra$ |
10/0 |
Mathlib/Algebra/MvPolynomial/Eval.lean,Mathlib/Algebra/Polynomial/Eval/Defs.lean |
2 |
2 |
['github-actions'] |
nobody |
4-82042 4 days ago |
6-39349 6 days ago |
6-39130 6 days |
| 37714 |
mortarsanjaya author:mortarsanjaya |
feat(Algebra/Order/Floor/Defs): `Nat.cast` is strictly monotone in `FloorSemiring` and `FloorRing` |
As title says, and without the `IsOrderedRing` assumption.
Other than that, I removed the `IsOrderedRing` assumption from pretty much all the lemmas in `Algebra/Order/Floor/Defs` that could possibly have this assumption removed, and reduced some `IsStrictOrderedRing` assumptions to `IsOrderedRing` + `Nontrivial`.
Due to strict monotonicity, we can also provide `CharZero` instance on `FloorSemiring` and `FloorRing`. Thus we can remove the `NeZero` and `Nontrivial` instances on them.
The changes on `/Ring` and `/Semiring` are trivial changes due to some lemmas not requiring an `IsOrderedRing` instance anymore.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
96/39 |
Mathlib/Algebra/ContinuedFractions/Computation/Approximations.lean,Mathlib/Algebra/ContinuedFractions/Computation/TerminatesIffRat.lean,Mathlib/Algebra/Order/Floor/Defs.lean,Mathlib/Algebra/Order/Floor/Ring.lean,Mathlib/Algebra/Order/Floor/Semiring.lean |
5 |
24 |
['dagurtomas', 'eric-wieser', 'github-actions', 'mathlib-bors', 'mortarsanjaya'] |
riccardobrasca assignee:riccardobrasca |
4-65151 4 days ago |
31-25671 31 days ago |
55-24942 55 days |
| 38049 |
WilliamCoram author:WilliamCoram |
feat: lemmas towards showing gaussNorm on MvPowerSeries is an absolute value |
We prove lemmas: ``gaussNorm_mul_le`` and ``gaussNorm_le_mul`` which will allow us to show it is an absolute value on Mv restricted power series.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
144/1 |
Mathlib/RingTheory/MvPowerSeries/GaussNorm.lean |
1 |
4 |
['WilliamCoram', 'github-actions'] |
riccardobrasca assignee:riccardobrasca |
4-65149 4 days ago |
48-8540 48 days ago |
48-8321 48 days |
| 39294 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): prove LanguageOn monotonicity under intersection |
In symbolic dynamics.
This PR proves that taking the language over a finite shape is monotone with respect to intersections of configuration sets:
```math
\mathrm{LanguageOn}(X \cap Y)\, U
\subseteq
\mathrm{LanguageOn}\, X\, U \cap \mathrm{LanguageOn}\, Y\, U
```
The proof is a direct unfolding of definitions: a pattern in the language of `X ∩ Y` comes from restricting a configuration `x ∈ X ∩ Y`. Since such an `x` belongs simultaneously to `X` and `Y`, the same restriction witness gives membership both in `LanguageOn X U` and in `LanguageOn Y U`, yielding membership in their intersection.
Related to issue #39252 |
t-dynamics
new-contributor
|
9/1 |
Mathlib/Dynamics/SymbolicDynamics/Basic.lean |
1 |
2 |
['github-actions'] |
ADedecker assignee:ADedecker |
4-65143 4 days ago |
19-33789 19 days ago |
19-33570 19 days |
| 39903 |
akiezun author:akiezun |
feat(NumberTheory): add almost prime numbers |
Adds Nat.IsAlmostPrime k n for natural numbers with exactly k prime factors counted with multiplicity, plus
Nat.IsAtMostAlmostPrime and Nat.IsSemiprime. The definitions reuse the existing arithmetic function Ω, and the initial
API proves the basic zero/one cases, prime examples, and closure under multiplication.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-number-theory
|
87/0 |
Mathlib.lean,Mathlib/NumberTheory/AlmostPrime.lean |
2 |
5 |
['SnirBroshi', 'akiezun', 'github-actions', 'vihdzp'] |
loefflerd assignee:loefflerd |
4-65136 4 days ago |
5-67208 5 days ago |
5-66989 5 days |
| 37374 |
NoneMore author:NoneMore |
feat(Topology/DerivedSet): add relative derived set lemmas |
Add `relDerivedSet`, `relDerivedSet_subset`, and `IsClosed.relDerivedSet_eq`.
---
[](https://gitpod.io/from-referrer/)
|
t-topology
new-contributor
|
17/0 |
Mathlib/Topology/DerivedSet.lean |
1 |
7 |
['NoneMore', 'github-actions', 'plp127', 'vihdzp'] |
fpvandoorn assignee:fpvandoorn |
4-45857 4 days ago |
4-45925 4 days ago |
62-10411 62 days |
| 38596 |
JJYYY-JJY author:JJYYY-JJY |
Add basic row-equivalence and echelon-form API for matrices |
This PR adds the first foundational slice of `Mathlib.LinearAlgebra.Matrix.Echelon`, a theorem-oriented API for elementary row operations, row-equivalence, and echelon-form predicates for matrices.
The main additions are:
* elementary row-scaling matrices and their `GL` versions;
* `Matrix.RowEquivalent` for the left action of `GL m R` on rectangular matrices;
* row-zero, pivot, echelon, and reduced-echelon predicates;
* semantic representative predicates `Matrix.IsEchelonFormOf` and `Matrix.IsReducedEchelonFormOf`.
This intentionally stops before row-space characterizations, existence and uniqueness of reduced echelon representatives, and the noncomputable canonical representative `Matrix.rref`; those are planned for later PRs.
Co-authored-by: Joseph Qian
Co-authored-by: Veer Shukla
Co-authored-by: Dhruv Bhatia
Co-authored-by: Zheng Wu <1036819072@qq.com>
---
This update trims the original full row-reduction API in response to reviewer feedback that the PR was too large. It keeps only the foundation needed by later row-reduction and `rref` PRs. |
t-algebra
new-contributor
label:t-algebra$ |
312/6 |
Mathlib.lean,Mathlib/LinearAlgebra/Matrix/Echelon.lean,Mathlib/LinearAlgebra/Matrix/Transvection.lean |
3 |
10 |
['JJYYY-JJY', 'SnirBroshi', 'copilot-pull-request-reviewer', 'dagurtomas', 'github-actions', 'wwylele'] |
nobody |
4-45320 4 days ago |
18-71246 18 days ago |
26-46450 26 days |
| 39841 |
hawkrobe author:hawkrobe |
feat(RingTheory/HopfAlgebra): Construction on primitive elements |
Adds `HopfAlgebra.ofPrimitives` which builds a Hopf algebra structure on a bialgebra generated by primitive elements, given a candidate anti-algebra hom that sends each generator to its negation.
---
The commutative case with `.ofAlgHom` gets this for free via `ext` but the non-commutative case needs extra work.
* [ ] depends on: #39785 |
t-ring-theory
new-contributor
|
314/20 |
Mathlib.lean,Mathlib/RingTheory/Bialgebra/Primitive.lean,Mathlib/RingTheory/HopfAlgebra/Basic.lean,Mathlib/RingTheory/HopfAlgebra/Generators.lean,Mathlib/RingTheory/HopfAlgebra/Primitive.lean,Mathlib/RingTheory/HopfAlgebra/TensorProduct.lean |
6 |
2 |
['github-actions'] |
nobody |
4-42455 4 days ago |
5-4413 5 days ago |
7-1610 7 days |
| 39707 |
sorrachai author:sorrachai |
chore(Data/Tree/Basic): Rename Tree to BinaryTree |
Rename `Tree` to `BinaryTree`.
This frees up the name `Tree` to cover n-ary trees in future.
We only deprecate the `def`s, and move the theorems without deprecation. |
new-contributor
t-data
|
157/62 |
Mathlib/Combinatorics/Enumerative/Catalan/Tree.lean,Mathlib/Combinatorics/Enumerative/DyckWord.lean,Mathlib/Data/Tree/Basic.lean,Mathlib/Data/Tree/Get.lean,Mathlib/Data/Tree/Traversable.lean,Mathlib/Tactic/CancelDenoms/Core.lean,docs/overview.yaml |
7 |
36 |
['b-mehta', 'eric-wieser', 'github-actions', 'sorrachai'] |
nobody |
4-24992 4 days ago |
8-16224 8 days ago |
8-30063 8 days |
| 33355 |
0xTerencePrime author:0xTerencePrime |
feat(Combinatorics/SimpleGraph/Connectivity): define vertex connectivity |
**AI Disclosure**: Developed with LLM assistance (Claude). All mathematical design decisions were made by the author.
---
This PR introduces the foundations of vertex connectivity for simple graphs, providing a counterpart to the edge connectivity theory in #32870.
### Main definitions
- `SimpleGraph.IsVertexReachable`: two vertices are `k`-vertex-reachable if they remain reachable after removing any set of strictly fewer than `k` vertices, using `G.induce sᶜ`.
- `SimpleGraph.IsVertexPreconnected`: a graph is `k`-vertex-preconnected if any two vertices are `k`-vertex-reachable.
- `SimpleGraph.IsVertexConnected`: a graph is `k`-vertex-connected if it is `k`-vertex-preconnected and has more than `k` vertices (`k + 1 ≤ ENat.card V`).
### Key lemmas
- `k = 0`: 0-connected ↔ nonempty; 0-preconnected always holds
- `k = 1`: 1-connected ↔ `Nontrivial V ∧ G.Preconnected`
- `anti` / `mono`: antitonic in `k`, monotonic in the graph |
new-contributor
t-combinatorics
LLM-generated
|
169/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/VertexConnectivity.lean |
2 |
165 |
['0xTerencePrime', 'SnirBroshi', 'SproutSeeds', 'YaelDillies', 'github-actions', 'mathlib-merge-conflicts', 'vihdzp'] |
b-mehta assignee:b-mehta |
3-86075 3 days ago |
6-51743 6 days ago |
64-80796 64 days |
| 28613 |
espottesmith author:espottesmith |
feat(Combinatorics): define undirected hypergraphs |
This PR defines undirected hypergraphs:
```
@[ext]
structure Hypergraph (α : Type*) where
/-- The vertex set -/
vertexSet : Set α
/-- The hyperedge set -/
hyperedgeSet : Set (Set α)
/-- All hyperedges must be subsets of the vertex set -/
hyperedge_isSubset_vertexSet : ∀ ⦃e⦄, e ∈ hyperedgeSet → e ⊆ vertexSet
```
In addition to the main definition, some additional definitions and related lemmas are provided:
- vertex adjacency
- hyperedge adjacency
- vertex "stars"
- special cases (loops, empty hypergraphs, trivial hypergraphs, complete hypergraphs, simple hypergraphs, k-uniform hypergraphs, and d-regular hypergraphs)
- (some) hypergraph cardinality
- subhypergraphs, induced subhypergraphs, and partial hypergraphs
This implementation is certainly bare-bones. I'm submitting this PR at this point, rather than when my developments are more fleshed out, because there has been some interest in others contributing to hypergraph formalization in mathlib.
In the near future, goals include:
- defining incidence matrices (i.e., conversion from `Hypergraph α` to `Matrix α (Set α) β`
- coersion/generalization of graph as 2-uniform hypergraph
- conversion of a hypergraph into its associated clique graph/two-section graph
- constructing the dual of a hypergraph (note: on first blush, this appears somewhat challenging, given that we define hyperedges as `Set α` rather than some other type `β`)
- rank and co-rank
- walks, paths, cycles, etc. on hypergraphs
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
286/0 |
Mathlib.lean,Mathlib/Combinatorics/Hypergraph/Basic.lean |
2 |
152 |
['SnirBroshi', 'b-mehta', 'espottesmith', 'github-actions', 'jt496', 'lauramonk', 'mathlib4-merge-conflict-bot', 'tb65536'] |
b-mehta assignee:b-mehta |
3-74112 3 days ago |
4-85712 4 days ago |
106-74142 106 days |
| 36103 |
SnkXyx author:SnkXyx |
feat(Algebra/MvPolynomial/CharacteristicSet): add Characteristic Set |
This PR adds some definitions and theorems of Characteristic Set Method (also known as Wu's Method).
Definitions:
* `MvPolynomial.mainDegree`
* `MvPolynomial.initialOf`
* `MvPolynomial.reducedTo`
* `TriangulatedSet`
* `MvPolynomial.pseudo`
* `MvPolynomial.setPseudo`
* `MvPolynomial.isRemainder`
* `MvPolynomial.isSetRemainder`
* `AscendingSetTheory`
* `TriangulatedSet.isAscendingSet`
* `HasBasicSet`
* `TriangulatedSet.isCharacteristicSet`
* `MvPolynomial.List.characteristicSet`
* `MvPolynomial.List.zeroDecomposition`
Main Theorems:
* `MvPolynomial.initialOf_mul_eq`: $init_i(p \cdot q) = init_i(p) \cdot init_i(q)$ if there is no zero divisors in the coefficient ring.
* `TriangulatedSet.instWellFoundedLT`: The set of Triangulated Sets is well-founded under the lexicographic ordering.
* `MvPolynomial.pseudo_remainder_isRemainder`: The remainder $r$ of $g$ by $f$ is reduced with respect to $f$ and satisfies $init(f)^s \cdot g = q \cdot f + r$ for some $s \in \mathbb{N}$ and $q \in R[X_{\sigma}]$.
* `MvPolynomial.setPseudo_remainder_isSetRemainder`: The remainder $r$ of $g$ by a set $S$ is reduced with respect to $S$ and satisfies $(\prod S_i^{e_i}) \cdot g = \sum q_i \cdot S_i + r$ for some sequences $\{e_i\}$ and $\{q_i\}$.
* `MvPolynomial.setPseudo_remainder_eq_zero_of_mem`: The remainder of $p$ by a set $S$ is $0$ if $p \in S$.
* `MvPolynomial.List.basicSet_append_lt_of_exists_reducedToSet`: Appending an element which is reduced w.r.t. the basic set of list strictly decreases the order.
* `MvPolynomial.List.characteristicSet_isCharacteristicSet`: The computed Characteristic Set $CS$ satisfies the key algebraic property (pseudo-remainder of input polynomials is 0) and the geometric property ( $Zero(PS) \subseteq Zero(CS)$ ).
* `MvPolynomial.List.vanishingSet_eq_zeroDecomposition_union`: The zero set of a polynomial system $PS$ can be decomposed into a finite union of "quasi-varieties" defined by triangular sets:
$Zero(PS) = \bigcup_{CS \in \mathcal{ZD}} Zero(CS / \text{InitialProd}(CS))$
The PR is upstreamized from [github.com/WuProver/lean_characteristic_set](https://github.com/WuProver/lean_characteristic_set)
---
[](https://gitpod.io/from-referrer/)
- [x] depends on: #36386
- [x] depends on: #37791
|
t-algebra
new-contributor
label:t-algebra$ |
3860/0 |
Mathlib.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/AscendingSet.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/CharacteristicSet.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/Initial.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/MainDegree.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/Order.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/PseudoDivision.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/Reduce.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/StandardAscendingSet.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/TriangularSet.lean,Mathlib/Algebra/MvPolynomial/CharacteristicSet/WeakAscendingSet.lean,docs/references.bib |
12 |
21 |
['Hagb', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts'] |
dagurtomas assignee:dagurtomas |
3-64721 3 days ago |
6-52957 6 days ago |
29-20459 29 days |
| 39347 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): refactor of Pattern and shift-invariance of shape languages for subshifts |
## Summary
This PR refactors Pattern.mulShift in Mathlib/Dynamics/SymbolicDynamics/Basic.lean and uses the cleaner definition to prove shift-invariance of the language of a subshift on a finite shape.
## Changes
Pattern.mulShift now returns a Pattern instead of a configuration (more natural).
- Old type: Pattern.mulShift : Pattern A G → G → (G → A)
- New type: Pattern.mulShift : Pattern A G → G → Pattern A G
- The result carries its support (p.support.image (v * ·)) and the
default-outside-support proof, so callers don't have to re-derive them.
The [IsLeftCancelMul G] hypothesis is moved to the lemmas that actually use it.
- The definition Pattern.mulShift itself no longer needs left-cancellation (it only
chooses a preimage noncomputably).
- The hypothesis is now stated on mulShift_config_apply_mul_left_of_mem and
mulOccursInAt_eq_cylinder directly, instead of being a section-level variable.
Renames following the type change.
- mulShift_apply_mul_left_of_mem → mulShift_config_apply_mul_left_of_mem (because we
now write (p.mulShift v).config instead of p.mulShift v).
New @[simp] and @[ext] lemmas for Pattern.
- Pattern.ext: two patterns are equal iff their supports agree and their
configurations agree on the support.
- Pattern.mulShift_support: the support of p.mulShift v is p.support.image (v * ·).
- Pattern.fromConfig_support: the support of fromConfig x U is U.
- Pattern.fromConfig_config_of_mem: on its support, fromConfig x U agrees with x.
New lemma Pattern.fromConfig_mulShift.
For a left inverse g' * g = 1, shifting the pattern fromConfig x U by g equals
fromConfig (mulShift g' x) (U.image (g * ·)).
New theorem MulSubshift.languageOn_image_mulShift.
For a subshift Y and elements g, g' with g * g' = 1 and g' * g = 1:
(fun p => p.mulShift g) '' Y.languageOn U = Y.languageOn (U.image (g * ·))
i.e. the language on the translated shape is exactly the image of the language on U
under the pattern-shift map. This gives a bijection between Y.languageOn U and
Y.languageOn (U.image (g * ·)), with inverse p ↦ p.mulShift g'. Stated for
left-cancellative monoids with an invertible element.
Updated docstrings for Pattern.mulShift and the renamed lemma to reflect the
bundled-Pattern return type and clarify which results need [IsLeftCancelMul G]. |
t-dynamics
new-contributor
|
142/48 |
Mathlib/Dynamics/SymbolicDynamics/Basic.lean |
1 |
3 |
['github-actions'] |
sgouezel assignee:sgouezel |
3-64710 3 days ago |
18-60002 18 days ago |
18-59783 18 days |
| 40005 |
tautschnig author:tautschnig |
feat(Data/ZMod/Basic): isUnit characterisation in prime power moduli |
Add two lemmas characterising units in ZMod (p^n) via divisibility of the canonical lift:
isUnit_iff_not_prime_dvd_val: for prime p and n > 0,
IsUnit x ↔ ¬ p ∣ x.val.
not_isUnit_iff_prime_dvd_val: for prime p and n > 0,
¬ IsUnit x ↔ p ∣ x.val.
These specialise the existing isUnit_iff_coprime to prime power moduli, where the coprimality condition reduces to a simple divisibility check on the unique prime factor.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
15/0 |
Mathlib/Data/ZMod/Basic.lean |
1 |
3 |
['copilot-pull-request-reviewer', 'github-actions'] |
nobody |
3-38847 3 days ago |
3-41165 3 days ago |
3-40946 3 days |
| 40006 |
tautschnig author:tautschnig |
feat(Data/ZMod/Basic): idempotents in ZMod (p^d) are exactly {0, 1} |
Add sq_eq_self_iff_eq_zero_or_one: in ZMod (p^d) for prime p and d > 0, x^2 = x iff x = 0 or x = 1.
This generalises eq_zero_or_one_of_sq_eq_self (which requires CancelMonoidWithZero, i.e., no zero divisors) to the prime-power case. ZMod (p^d) has zero divisors for d >= 2, so the mul_left_injective₀ argument used by the existing lemma does not apply. The proof works by lifting to ℕ, using that if gcd(a, b) = 1 and p^d | a*b then p^d divides one of a or b (by Euclid's lemma), then noting that a = x.val and b = x.val - 1 are consecutive naturals and hence coprime.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
56/0 |
Mathlib/Data/ZMod/Basic.lean |
1 |
2 |
['github-actions'] |
nobody |
3-36244 3 days ago |
3-36314 3 days ago |
3-36790 3 days |
| 35672 |
dennj author:dennj |
feat(RingTheory/Polynomial/Cyclotomic): vanishing sums and fiber equidistribution at primitive roots |
## Summary
Building on `sum_eq_zero_iff_forall_eq` from #34592, this PR adds:
- cyclotomic_dvd_of_aeval_eq_zero, exists_int_smul_cyclotomic_of_natDegree_le_totient — integer polynomials vanishing at a primitive n-th root are divisible by cyclotomic n ℤ, and (for degree ≤ φ(n)) integer multiples of it.
- sum_eq_zero_iff_forall_eq and its ℤ / ZMod p variants — vanishing iff all coefficients equal.
- sum_fiber_eq_sum_fiber_of_sum_weighted_pow_eq_zero, card_fiber_eq_card_div_of_sum_pow_eq_zero — fiber equidistribution.
- cyclotomic_prime_coeff — the formula (cyclotomic p R).coeff i = if i < p then 1 else 0, generalising existing coeff_zero/coeff_one lemmas.
-
References: [deLauneyFlannery2011, Lemma 2.8.5] (underlying ℚ/ℕ fact) and [armario2024, Lemma 7 and Theorem 3] (ℤ statement and the fiber-counting application).
Theorems imported from: https://github.com/Latinum-Agentic-Commerce/AlgebraicDesignTheory
Human made PR with LLM used for documentation and proof golfing |
t-ring-theory
new-contributor
LLM-generated
|
128/2 |
Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean,Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean,docs/references.bib |
3 |
7 |
['dennj', 'github-actions', 'grunweg', 'ocfnash', 'riccardobrasca'] |
riccardobrasca assignee:riccardobrasca |
3-36047 3 days ago |
26-83899 26 days ago |
45-11390 45 days |
| 39996 |
RuthP628 author:RuthP628 |
feat(ModelTheory/Semantics): add simp theorems similar to Sentence.realize_not |
Add simp theorems Sentence.realize_bot, Sentence.realize_top, Sentence.realize_inf, Sentence.realize_sup, Sentence.realize_imp and Sentence.realize_iff in the style of Sentence.realize_not as consequences of the corresponding theorems for formulas. |
t-logic
new-contributor
|
31/1 |
Mathlib/ModelTheory/Semantics.lean |
1 |
10 |
['RuthP628', 'b-mehta', 'github-actions', 'plp127'] |
nobody |
2-81315 2 days ago |
3-21921 3 days ago |
3-28941 3 days |
| 38223 |
Deicyde author:Deicyde |
feat(Geometry/Manifold): add `MfldCat`, the category of `C^n` manifolds |
We define `MfldCat 𝕜 n`: the category of `C^n` manifolds over a field `𝕜`, following the pattern of `TopCat` in
`Mathlib.Topology.Category.TopCat.Basic`. We also implement `HasForget₂ (MfldCat 𝕜 n) TopCat`—the forgetful functor into the category of topological spaces. For more discussion see the Zulip thread: [#PR reviews > #38223 The Category of C^n Manifolds](https://leanprover.zulipchat.com/#narrow/channel/144837-PR-reviews/topic/.2338223.20The.20Category.20of.20C.5En.20Manifolds/with/587038032)
Also added: `ContMDiffMap.id_apply`, `.coe_id` and `.coe_comp` which are comparable to `ContinuousMap` API.
### Future work
- ✅ Define a Monoidal structure via product manifolds, analogous to `Manifold.Topology.Category.TopCat.Monoidal` #38560
- ✅ Define the tangent functor: `M ↦ TM`, `F ↦ F.tangentMap` from `MfldCat (n+1) 𝕜` to `MfldCat n 𝕜` #38270
- Functor `FGModuleCat 𝕜 ⥤ MfldCat 𝕜 n` sending a finite-dimensional `𝕜`-vector space to the manifold modeled on itself. Left as `TODO`.
- Define `FGModuleCat 𝕜` as an enriched category over `MfldCat n 𝕜`. Then _smooth functors_ can be realized as endofunctors on the enriched category. This is the main motivation for this construction.
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
new-contributor
t-category-theory
|
224/0 |
Mathlib.lean,Mathlib/Geometry/Manifold/Category/MfldCat/Basic.lean,Mathlib/Geometry/Manifold/ContMDiffMap.lean |
3 |
57 |
['Deicyde', 'chrisflav', 'dagurtomas', 'github-actions', 'idontgetoutmuch', 'peabrainiac'] |
nobody |
2-66297 2 days ago |
23-84477 23 days ago |
37-47974 37 days |
| 38527 |
archiebrowne author:archiebrowne |
feat(Analysis/Calculus): continuously differentiable actions |
define the class `ContDiffSMul 𝕜 M X n` which asserts that the map `(c, x) ↦ c • x` is `n` times continuously differentiable on `M × X`.
Many of the results are the C^n analogues of those in the module Mathlib.Topology.Algebra.MulAction.
|
t-differential-geometry
new-contributor
|
317/24 |
Mathlib.lean,Mathlib/Analysis/Calculus/BumpFunction/Basic.lean,Mathlib/Analysis/Calculus/ContDiff/Operations.lean,Mathlib/Analysis/Calculus/IteratedDeriv/Lemmas.lean,Mathlib/Analysis/ContDiffMulAction.lean,Mathlib/Analysis/InnerProductSpace/Calculus.lean |
6 |
11 |
['archiebrowne', 'github-actions', 'grunweg', 'peabrainiac'] |
ocfnash assignee:ocfnash |
2-64958 2 days ago |
24-82158 24 days ago |
32-67848 32 days |
| 38551 |
TTony2019 author:TTony2019 |
feat(Analysis/Convex/Intrinsic): add `affineSpan_prod_eq` and `intrinsicInterior_prod_eq` |
### Summary
We prove that the affine span of a product set equals the product of the affine spans, and that the intrinsic interior of a product set equals the product of the intrinsic interiors.
- `affineSpan_prod_eq`: for `s : Set P₁` and `t : Set P₂`, `affineSpan k (s ×ˢ t) = (affineSpan k s) ×ˢ (affineSpan k t)` as sets.
- `intrinsicInterior_prod_eq`: for `s : Set P` and `t : Set Q`, `intrinsicInterior 𝕜 (s ×ˢ t) = intrinsicInterior 𝕜 s ×ˢ intrinsicInterior 𝕜 t`.
These two theorems are added to `Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Basic.lean` and `Mathlib/Analysis/Convex/Intrinsic.lean`.
### Collaboration
Co-authored-by: @imathwy |
new-contributor
t-analysis
|
144/0 |
Mathlib/Algebra/AddTorsor/Basic.lean,Mathlib/Algebra/Group/Pointwise/Set/Basic.lean,Mathlib/Analysis/Convex/Intrinsic.lean,Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Basic.lean,Mathlib/LinearAlgebra/Prod.lean |
5 |
24 |
['TTony2019', 'github-actions', 'wwylele'] |
themathqueen assignee:themathqueen |
2-64957 2 days ago |
33-60659 33 days ago |
36-4313 36 days |
| 38895 |
emlis42 author:emlis42 |
chore(Algebra/ContinuedFractions): golf |
This PR simplifies some proofs in `Algebra/ContinuedFractions` |
t-algebra
new-contributor
label:t-algebra$ |
39/63 |
Mathlib/Algebra/ContinuedFractions/Computation/ApproximationCorollaries.lean,Mathlib/Algebra/ContinuedFractions/Computation/Approximations.lean,Mathlib/Algebra/ContinuedFractions/Computation/CorrectnessTerminating.lean,Mathlib/Algebra/ContinuedFractions/Computation/TerminatesIffRat.lean,Mathlib/Algebra/ContinuedFractions/Computation/Translations.lean,Mathlib/Algebra/ContinuedFractions/ContinuantsRecurrence.lean,Mathlib/Algebra/ContinuedFractions/ConvergentsEquiv.lean |
7 |
2 |
['github-actions'] |
joelriou assignee:joelriou |
2-64954 2 days ago |
27-69317 27 days ago |
28-57401 28 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
t-combinatorics
|
38/0 |
Mathlib/Combinatorics/Enumerative/DoubleCounting.lean,Mathlib/Combinatorics/Pigeonhole.lean |
2 |
16 |
['IvanRenison', 'cjrl', 'ghseeli', 'github-actions', 'j-loreaux', 'vlad902'] |
nobody |
1-66299 1 day ago |
49-85944 49 days ago |
65-56524 65 days |
| 32692 |
WilliamCoram author:WilliamCoram |
feat: define multivariate restricted power series |
We define multivariate restricted power series over a normed ring R, and show the properties that they form a ring when R has the ultrametric property.
This work generalises my previous work in #26089 which will need to be refactored.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-number-theory
new-contributor
|
159/0 |
Mathlib.lean,Mathlib/Algebra/Order/Antidiag/Prod.lean,Mathlib/Algebra/Order/Antidiag/Tendsto.lean,Mathlib/RingTheory/MvPowerSeries/Restricted.lean |
4 |
52 |
['WilliamCoram', 'erdOne', 'github-actions', 'jcommelin', 'mathlib-merge-conflicts', 'mbkybky'] |
jcommelin assignee:jcommelin |
1-21370 1 day ago |
1-21522 1 day ago |
55-76179 55 days |
| 38582 |
dennj author:dennj |
feat(LinearAlgebra/Matrix): add Hadamard matrices |
Introduce `Matrix.IsHadamard` over a general `Ring R`, with the basic theory:
- `IsHadamard` and `IsComplexHadamard` predicates (Definitions 2.3.1 and 2.7.1
of de Launey–Flannery, *Algebraic Design Theory*).
- `IsHadamard.det_sq`: the Hadamard determinant identity `(det A)² = n^n`.
- `IsHadamard.det_ne_zero`: over an integral domain of characteristic zero.
- `IsHadamard.transpose`: `Aᵀ` is Hadamard whenever `A` is (Theorem 2.3.6),
proved over `[CommRing R] [IsDomain R] [CharZero R]` via the adjugate.
- `IsHadamard.card_eq_sq_of_const_row_sum`: a Hadamard matrix with constant
row sum `s` has order `s²` (slightly stronger than Theorem 2.3.7: the
constant-column-sum hypothesis is implied by orthogonality).
- `IsHadamard.kronecker`: the Sylvester (Kronecker product) construction.
- `IsHadamard.four_dvd_card`: order of a Hadamard matrix of order > 2 is
divisible by 4.
`Matrix.mul_eq_smul_one_symm`: if `M * N = c • 1` and `det M ≠ 0` over an
integral domain, then `N * M = c • 1`. Used here for the transpose proof, but
generally useful, analogous to how `mul_eq_one_comm` works over stably finite
rings, but covers the integral-domain case (e.g. `ℤ`, `ℤ[X]`) where matrix
inverses don't exist.
## References
Adds the de Launey–Flannery bibliography entry, cited from the new file.
Human-made PR with LLM used for proof golfing and documentation |
t-algebra
new-contributor
label:t-algebra$ |
270/0 |
Mathlib.lean,Mathlib/Algebra/Group/Action/Defs.lean,Mathlib/Algebra/Group/Commute/Defs.lean,Mathlib/Algebra/Star/Unitary.lean,Mathlib/LinearAlgebra/Matrix/HadamardMatrix.lean,docs/references.bib |
6 |
56 |
['JJYYY-JJY', 'dennj', 'eric-wieser', 'github-actions', 'themathqueen', 'wwylele'] |
themathqueen assignee:themathqueen |
1-9093 1 day ago |
19-76724 19 days ago |
35-9145 35 days |
| 40033 |
JJYYY-JJY author:JJYYY-JJY |
chore: remove flexible linter suppressions |
This PR removes two local `linter.flexible` suppressions by replacing compact `simp; infer_instance` with explicit proofs.
Changed files:
- `Mathlib/Dynamics/TopologicalEntropy/DynamicalEntourage.lean`
- `Mathlib/Topology/UniformSpace/Ultra/Constructions.lean`
Tested with:
`lake build`
---
[](https://gitpod.io/from-referrer/)
|
new-contributor |
6/8 |
Mathlib/Dynamics/TopologicalEntropy/DynamicalEntourage.lean,Mathlib/Topology/UniformSpace/Ultra/Constructions.lean |
2 |
6 |
['chenson2018', 'github-actions', 'vihdzp'] |
nobody |
1-8308 1 day ago |
2-74892 2 days ago |
2-74673 2 days |
| 39629 |
hawkrobe author:hawkrobe |
feat(RingTheory/Coalgebra/Convolution): Algebra on convolution semiring |
This PR completes the algebraic structure on the convolution object.
---
I followed the pattern in [`Matrix/WithConv.lean`](https://github.com/leanprover-community/mathlib4/blob/5e932f97dd25535344f80f9dd8da3aab83df0fe6/Mathlib/LinearAlgebra/Matrix/WithConv.lean#L98) which splits out `IsScalarTower` and `SMulCommClass`. Used in pre-Lie / Oudom–Guin constructions. |
t-ring-theory
new-contributor
|
24/1 |
Mathlib/RingTheory/Coalgebra/Convolution.lean |
1 |
2 |
['github-actions'] |
nobody |
0-76905 21 hours ago |
0-76968 21 hours ago |
11-85672 11 days |
| 39239 |
alainchmt author:alainchmt |
feat(FieldTheory/Finite): irreducible polynomial divides X^q^n - X iff degree divides n |
---
Add the theorem saying that, for an irreducible polynomial `f` over a finite field `K`, the degree of `f` divides `n` if and only if `f` divides `X ^ (Nat.card K) ^ n - X`. Include auxiliary lemmas.
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
34/0 |
Mathlib/FieldTheory/Finite/Extension.lean,Mathlib/FieldTheory/Minpoly/Field.lean |
2 |
2 |
['github-actions'] |
nobody |
0-71724 19 hours ago |
20-34665 20 days ago |
20-34446 20 days |
| 39282 |
Sfgangloff author:Sfgangloff |
feat(SymbolicDynamics): add union morphism lemma for LanguageOn |
In symbolic dynamics.
This PR proves that taking the language over a finite shape commutes with unions of configuration sets:
$LanguageOn (X \cup Y) U = LanguageOn X U \cup LanguageOn Y U$
The proof is a direct unfolding of definitions: a pattern in the language of $X \cup Y$ comes from restricting a configuration $x ∈ X \cup Y$, and splitting on whether $x \in X$ or $x \in Y$ yields the corresponding inclusion in either $LanguageOn X U$ or $LanguageOn Y U$. The converse direction rebuilds a witness in $X \cup Y$ from either side of the union.
Related to issue #39252 |
t-dynamics
new-contributor
|
9/1 |
Mathlib/Dynamics/SymbolicDynamics/Basic.lean |
1 |
4 |
['Sfgangloff', 'github-actions', 'sgouezel'] |
sgouezel assignee:sgouezel |
0-67763 18 hours ago |
19-42585 19 days ago |
19-42366 19 days |
| 40088 |
jeangud author:jeangud |
fix(Tactic/Linter/DocString): avoid false positive in syntax quotation patterns |
# Description
Syntax quotations are a key meta-programming feature for Lean 4, but the `linter.style.docString.empty` linter currently does not handle them correctly.
This PR:
- Closes #40087
- Adds a regression test for syntax quotation patterns
- :robot: Implemented and test with **Gemini 3.1 Pro**. This change is pretty targeted so I did not have much to redo except reviewing.
**Example false positive:**
In the [formal-conjectures](https://github.com/google-deepmind/formal-conjectures) repository, the `AMSLinter`:
```lean
/-- Checks if a command has the `AMS` attribute. -/
def toAMS (stx : TSyntax ``Command.declModifiers) :
CommandElabM (Array <| TSyntaxArray `num) := do
match stx with
| `(declModifiers| $(_)? @[$[$atts],*] $(_)? $(_)? $(_)? $(_)?) =>
atts.filterMapM fun att ↦ do
match att with
| `(attrInstance | AMS $nums*) => return some nums
| _ => return none
| _ => return #[]
```
**Proposed Fix:** We can fix this by explicitly checking the kind of the docstring node before processing it. Pattern nodes from syntax quotations use antiquotations for the docstring slot (like `$(_)?`), which have a different syntax kind than actual doc comments. Filtering by `docStx.getKind == ``Parser.Command.docComment` successfully filters out the false positives while keeping the linter working for actual source code:
```lean
if docStx.isMissing then continue -- this is probably superfluous, thanks to `some pos` above.
if docStx.getKind != ``Parser.Command.docComment then continue -- ignore antiquotations from syntax patterns like `$(_)?`
```
# Testing
:white_check_mark: Builds successfully
```shell
$ lake build Mathlib.Tactic.Linter.DocString
Build completed successfully (4 jobs).
```
:white_check_mark: Tests pass
```shell
$ lake build MathlibTest.Linter.DocString
Build completed successfully (6 jobs).
```
**Before :x:**
```shell
$ lake build ./FormalConjectures/Util/Linters/AMSLinter.lean
⚠ [68/68] Built FormalConjectures.Util.Linters.AMSLinter
warning: FormalConjectures/Util/Linters/AMSLinter.lean:48:21: warning: this doc-string is empty
Note: This linter can be disabled with `set_option linter.style.docString.empty false`
warning: FormalConjectures/Util/Linters/AMSLinter.lean:69:27: warning: this doc-string is empty
Note: This linter can be disabled with `set_option linter.style.docString.empty false`
Build completed successfully (68 jobs).
```
**After :white_check_mark:**
```shell
$ lake build ./FormalConjectures/Util/Linters/AMSLinter.lean
Build completed successfully (25 jobs).
```
|
t-linter
new-contributor
|
24/1 |
Mathlib/Tactic/Linter/DocString.lean,MathlibTest/Linter/DocString.lean |
2 |
2 |
['github-actions'] |
nobody |
0-66555 18 hours ago |
0-66696 18 hours ago |
0-66477 18 hours |
| 32583 |
MJ141592 author:MJ141592 |
refactor(SimpleGraph): change bridges not to require the edge to be present |
Remove the requirement for edges to exist in definition of isBridge, and then change the related lemmas to adjust for this, by renaming, fixing the statements and fixing the proofs, including in Acyclic.
Closes #31690.
---
- [x] depends on: #36802
- [x] depends on: #36804 |
t-combinatorics
new-contributor
|
95/93 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/EdgeConnectivity.lean,Mathlib/Combinatorics/SimpleGraph/DeleteEdges.lean,Mathlib/Combinatorics/SimpleGraph/Hamiltonian.lean |
5 |
48 |
['MJ141592', 'Rida-Hamadani', 'SnirBroshi', 'YaelDillies', 'b-mehta', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'mathlib4-merge-conflict-bot'] |
b-mehta assignee:b-mehta |
0-64266 17 hours ago |
7-20988 7 days ago |
56-63347 56 days |
| 38309 |
ntapiam author:ntapiam |
feat(Algebra/NonAssoc): dendriform algebras |
Define dendriform semirings and algebras
---
This PR introduces dendriform structures such as dendriform semirings
and algebras, and proves basic facts linking them to their pre-Lie
counterparts.
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
270/0 |
Mathlib.lean,Mathlib/Algebra/NonAssoc/Dendriform/Defs.lean,docs/references.bib |
3 |
5 |
['dagurtomas', 'github-actions', 'ntapiam'] |
themathqueen assignee:themathqueen |
0-64258 17 hours ago |
24-31216 24 days ago |
39-36294 39 days |
| 38373 |
Nicola9Falciola author:Nicola9Falciola |
feat (Algebra/FreeAbelianGroup /Finsupp) : The support of non zero element in a freeabeliangroup is non empty |
Add the lemma that for a nonzero a : FreeAbelianGroup X the support of it is non empty.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
new-contributor
label:t-algebra$ |
3/0 |
Mathlib/Algebra/FreeAbelianGroup/Finsupp.lean |
1 |
7 |
['Nicola9Falciola', 'SnirBroshi', 'github-actions'] |
themathqueen assignee:themathqueen |
0-64255 17 hours ago |
39-21173 39 days ago |
40-9395 40 days |
| 38027 |
8e7 author:8e7 |
feat(Combinatorics/SimpleGraph/Star): define star graphs |
Add a new definition `starGraph` and several key lemmas. Star graphs are a trivial class of tree, often used in constructive proofs regarding trees. An example use case is shown in #38334.
---
All lemmas are hand written first, then golfed with the help of Claude Code.
[](https://gitpod.io/from-referrer/)
|
t-combinatorics
new-contributor
|
87/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Star.lean |
2 |
41 |
['8e7', 'IvanRenison', 'JovanGerb', 'SnirBroshi', 'b-mehta', 'github-actions', 'vihdzp', 'vlad902'] |
b-mehta assignee:b-mehta |
0-59458 16 hours ago |
46-57874 46 days ago |
48-55920 48 days |
| 39954 |
jihuang2024 author:jihuang2024 |
feat(Analysis/Polynomial): define Hurwitz stability and prove small-degree characterizations |
Proofs were developed with assistance from Claude Code. I have reviewed and understand all the code and can justify the design decisions.
This PR introduces the predicate Polynomial.IsHurwitzStable for real polynomials and proves the Routh–Hurwitz stability criterion for degrees 1 and 2.
A polynomial p : ℝ[X] is Hurwitz stable if every root of its complexification has strictly negative real part. This notion arises in control theory and the study of linear ODEs, where it characterises asymptotic stability of a system.
New definitions
Polynomial.IsHurwitzStable: ∀ z : ℂ, (p.map (algebraMap ℝ ℂ)).IsRoot z → z.re < 0
New theorems
Polynomial.not_isHurwitzStable_zero: the zero polynomial is not Hurwitz stable
Polynomial.IsHurwitzStable.ne_zero: Hurwitz stable polynomials are nonzero
Polynomial.isHurwitzStable_X_add_C: X + C a is Hurwitz stable ↔ 0 < a
Polynomial.isHurwitzStable_quadratic: X ^ 2 + C b * X + C c is Hurwitz stable ↔ 0 < b ∧ 0 < c
Proof strategy for the quadratic
The quadratic case splits on whether a root z is real (z.im = 0) or complex (z.im ≠ 0, which forces 2 * z.re + b = 0). Existence of a root uses Complex.exists_root (Fundamental Theorem of Algebra). The necessary condition in the real-root case uses the Vieta complementary root -b - z.re.
Future work
The general Routh–Hurwitz theorem (for degree n, stated in terms of the Hurwitz matrix and its leading principal minors) requires infrastructure not yet in Mathlib — in particular a theory of the Cauchy index or the Bezoutian of two polynomials. This PR lays the definitional foundation for that work.
This corresponds to [1000.yaml](https://github.com/leanprover-community/mathlib4/blob/master/docs/1000.yaml#L2697) Q4455015 - Routh–Hurwitz theorem |
t-analysis
new-contributor
LLM-generated
|
131/0 |
Mathlib.lean,Mathlib/Analysis/Polynomial/RouthHurwitz.lean |
2 |
10 |
['SnirBroshi', 'github-actions', 'jihuang2024', 'wwylele'] |
nobody |
0-57930 16 hours ago |
3-23294 3 days ago |
4-28102 4 days |
| 40092 |
korbonits author:korbonits |
feat(Topology/Connected): path-connectedness of products and pi types |
# Disclaimer
Following https://leanprover-community.github.io/contribute/index.html, I wanted to make a simple contribution to point set topology given some of the very welcoming Zulip mathematicians. I used Claude Code to plan, review, and test some example definitions before raising this PR. I'm using this as a way to make meaningful contributions to mathlib4 as I learn Lean. Background: mathematics and a decade+ in ML engineering/applied science.
# Description
Add path-connectedness of binary products and dependent products (pi types):
- `JoinedIn.prod`, `IsPathConnected.prod`, and `instance Prod.instPathConnectedSpace : PathConnectedSpace (X × Y)`
- `JoinedIn.pi`, `IsPathConnected.pi`, and `instance Pi.instPathConnectedSpace : PathConnectedSpace (∀ i, Z i)`
These instances were previously missing — `inferInstance` failed for both `PathConnectedSpace (X × Y)` and `PathConnectedSpace ((i : ι) → Z i)`. They were suggested as good first contributions on Zulip.
The analogous `LocPathConnectedSpace` / `LocallyConnectedSpace` product and pi instances (and further `connectedComponent` / `pathComponent` product lemmas) are left for follow-up PRs.
|
t-topology
LLM-generated
new-contributor
|
59/0 |
Mathlib/Topology/Connected/PathConnected.lean |
1 |
3 |
['github-actions', 'korbonits'] |
nobody |
0-51378 14 hours ago |
0-51184 14 hours ago |
0-52013 14 hours |
| 38534 |
AlexeyMilovanov author:AlexeyMilovanov |
refactor(Computability): bundle PFun into a structure with FunLike instance |
This PR refactors `PFun` from `def PFun α β := α → Part β` to a structure with a `FunLike` instance.
[Discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Fix.20for.20fun_prop.20on.20PFun.20.28context.3A.20Computability.20Theory.29)
### Main changes
* `PFun` is now a structure with a single field `toFun : α → Part β`.
* Added the `FunLike (α →. β) α (Part β)` instance and `initialize_simps_projections`.
* Added the basic projection/application simp lemmas needed for the structure wrapper.
* Definitions which used to return raw lambdas as partial functions now explicitly use `PFun.mk` or `PFun.lift`.
* Equality proofs for partial functions now use `PFun.ext` / `DFunLike.ext` where `funext` no longer applies directly.
### Downstream impact
The refactor mainly impacts Computability Theory and Category Theory (`Category/PartialFun.lean`). Since `PFun` is no longer definitionally equal to `α → Part β`, tactics such as `rfl`, `simp`, and `funext` can no longer always see through the old raw-function representation.
As a result, several proofs (e.g. `fix_aux`, `ppred`, `mem_eval`, and `unitIso`) grew in size, requiring explicit `ext` + `simp` breakdowns. I tried to keep these proof changes minimal; further golfing suggestions are very welcome. It seems that fully recovering the old brevity in some places may require additional `PFun`-specific API/congruence support, which I avoided adding in this PR to keep the diff minimal.
### Affected files
* **Core:** `Mathlib/Data/PFun.lean`
* **Computability:** `Partrec`, `PartrecBasis`, `PartrecCode`, `RE`, `RecursiveIn`, `Ackermann`, `Halting`, `StateTransition`, `TuringDegree`, `TuringMachine/Config`
* **Category Theory:** `Category/PartialFun.lean`
* **Other:** `Data/Finset/PImage.lean`, `NumberTheory/Dioph.lean`
This also removes the previous `set_option linter.flexible false` workaround and the local transparency workaround in `TuringMachine/Config.lean`, as well as the local transparency workarounds in `Category/PartialFun.lean`.
### Note on LLM usage
The core `PFun` change caused numerous downstream errors. I initially used an LLM to help draft fixes for these files. Afterwards, I spent a significant amount of time manually correcting and modifying all of the generated changes.
|
new-contributor
t-computability
|
611/528 |
Mathlib/CategoryTheory/Category/PartialFun.lean,Mathlib/Computability/Ackermann.lean,Mathlib/Computability/Partrec.lean,Mathlib/Computability/PartrecBasis.lean,Mathlib/Computability/PartrecCode.lean,Mathlib/Computability/RE.lean,Mathlib/Computability/RecursiveIn.lean,Mathlib/Computability/StateTransition.lean,Mathlib/Computability/TuringDegree.lean,Mathlib/Computability/TuringMachine/Config.lean,Mathlib/Data/Finset/PImage.lean,Mathlib/Data/PFun.lean,Mathlib/NumberTheory/Dioph.lean |
13 |
9 |
['AlexeyMilovanov', 'dagurtomas', 'github-actions', 'j-loreaux', 'mathlib-bors', 'mathlib-merge-conflicts'] |
nobody |
0-44428 12 hours ago |
6-78964 6 days ago |
15-20088 15 days |
| 40050 |
ReemMelamed author:ReemMelamed |
feat(Algebra/Group/GreensRelations): add definitions for Green's relations |
This PR introduces the foundational definitions for Green's relations (L, R, H, D, and J) on semigroups.
This is the first in a series of PRs aimed at formalizing Green's relations for semigroups.
---
Zulip discussion: [Formalization of Green's Relations for semigroups](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Formalization.20of.20Green.27s.20Relations.20for.20semigroups/with/598557876) |
t-algebra
new-contributor
label:t-algebra$ |
348/0 |
Mathlib.lean,Mathlib/Algebra/Group/GreensRelations/Basic.lean,Mathlib/Algebra/Group/GreensRelations/Defs.lean |
3 |
11 |
['YaelDillies', 'YanYablonovskiy', 'github-actions', 'mathlib-bors'] |
nobody |
0-34340 9 hours ago |
1-23824 1 day ago |
2-5338 2 days |
| 38848 |
jcreinhold author:jcreinhold |
feat(AlgebraicTopology/SimplicialSet): exists_isPushout_of_ne_top |
Every proper subcomplex of a simplicial set extends by attaching a single cell along its boundary, exhibited as a pushout of `∂Δ[n] ↪ Δ[n]`. This is the per-cell input for cell-by-cell filtrations of monomorphisms in `SSet`.
Adapted from @joelriou 's [proof](https://github.com/joelriou/topcat-model-category/blob/813338a8c88cfe0096deed7e3ba7daf92d4a1c71/TopCatModelCategory/SSet/Boundary.lean#L187). I also added the supporting lemma `Types.isPullback_of_eq_setPreimage` (set-preimage square is a pullback in `Type u`).
AI use: Claude helped locate `subtype_val_mono` and the `backward.isDefEq.respectTransparency` option.
|
t-algebraic-topology
new-contributor
|
119/3 |
Mathlib/AlgebraicTopology/SimplicialSet/Boundary.lean,Mathlib/CategoryTheory/Limits/Types/Pullbacks.lean |
2 |
26 |
['github-actions', 'jcreinhold', 'joelriou', 'mckoen'] |
nobody |
0-26701 7 hours ago |
0-29654 8 hours ago |
28-70039 28 days |
| 39868 |
JuanCoRo author:JuanCoRo |
feat(Algebra/Polynomial): linearity of `divByMonic` and adjacent results |
---
This PR adds the `R`-linearity of the monic polynomial division map `_ /ₘ q`. It also adds adjacent results that stem from this work.
#### Refactors:
- Reuses the proofs from `add_modByMonic` and `smul_modByMonic` to generalize these results to `add_div_modByMonic` and `smul_div_modByMonic` respectively.
- Replaces the proofs of `add_modByMonic` and `smul_modByMonic` as specializations of the more general theorems `add_div_modByMonic` and `smul_div_modByMonic` respectively.
#### Additions:
- Adds the necessary results for `_ /ₘ q` linearity:
- `add_divByMonic : (p₁ + p₂) /ₘ q = p₁ /ₘ q + p₂ /ₘ q`
- `smul_divByMonic : c • p /ₘ q = c • (p /ₘ q)`
- Adds `_ /ₘ q` as an `R`-linear map:
- `divByMonicHom`: definition of `_ /ₘ q` as a linear map
- `mem_ker_divByMonic`: kernel characterization for `_ /ₘ q`.
- In `Div.lean` adds dual results for `/ₘ` that were already present for `%ₘ`
- `neg_divByMonic : (-p) /ₘ q = -(p /ₘ q)`
- `sub_divByMonic : (p₁ - p₂) /ₘ q = p₁ /ₘ q - p₂ /ₘ q`
- `mul_divByMonic_assoc (hd : q ∣ p₂) : (p₁ * p₂) /ₘ q = p₁ * (p₂ /ₘ q)`
While `mul_divByMonic_assoc` is not exactly the dual of `mul_modByMonic`, I thought it wouldn't hurt to add it.
[](https://gitpod.io/from-referrer/) |
new-contributor
t-algebra
label:t-algebra$ |
54/17 |
Mathlib/Algebra/Polynomial/Div.lean,Mathlib/Algebra/Polynomial/RingDivision.lean |
2 |
6 |
['JuanCoRo', 'github-actions', 'wwylele'] |
nobody |
0-25687 7 hours ago |
3-29560 3 days ago |
3-29420 3 days |
| 39785 |
hawkrobe author:hawkrobe |
refactor(RingTheory/HopfAlgebra): `ofConvInverse` constructor |
The antipode of a Hopf algebra is [generally](https://arxiv.org/pdf/1409.8356) the two-sided inverse of the identity in the convolution algebra `End(A)`. When `A` is commutative, algebra homs are closed under convolution and this lifts to AlgHom equality. See [this comment](https://github.com/leanprover-community/mathlib4/pull/31898#issuecomment-3566663278) on #31898.
---
Sadly the AlgHom-equality formulation is unavailable in the noncommutative case.
|
t-ring-theory
new-contributor
|
41/20 |
Mathlib/RingTheory/HopfAlgebra/Basic.lean,Mathlib/RingTheory/HopfAlgebra/TensorProduct.lean |
2 |
30 |
['YaelDillies', 'eric-wieser', 'faenuccio', 'github-actions', 'hawkrobe', 'themathqueen'] |
YaelDillies assignee:YaelDillies |
0-22685 6 hours ago |
0-22685 6 hours ago |
7-30432 7 days |
| 39495 |
hawkrobe author:hawkrobe |
feat(Data/Multiset/Antidiagonal): two structural lemmas |
Adds `map_swap_antidiagonal` and `antidiagonal_add`.
---
Fills out the API parallel to `Multiset.Nat.map_swap_antidiagonal` and `Finset.map_swap_antidiagonal`. (And adds `@[congr]` to `bind_congr`.)
Used for shuffle-coproduct constructions.
(#7486, I found this old [Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/144837-PR-reviews/topic/antidiagonals.20having.20multiplicity.20.237595/near/238573473))
I used Claude Code to audit and polish. |
t-data
new-contributor
LLM-generated
|
20/0 |
Mathlib/Data/Multiset/Antidiagonal.lean,Mathlib/Data/Multiset/Bind.lean |
2 |
6 |
['github-actions', 'hawkrobe', 'j-loreaux'] |
nobody |
0-13956 3 hours ago |
12-23884 12 days ago |
15-4657 15 days |
| 37682 |
SabrinaJewson author:SabrinaJewson |
refactor(Order/OrdContinuous): redefine left and right order continuity to not require preserving ⊥/⊤ |
`LeftOrdContinuous` currently requires that `f ⊥ = ⊥`, but this means that many functions that are perhaps intuitively left-continuous (like `f x = x + 1` on `ℝ≥0`) are not. In particular, this change means that functions between conditionally complete lattices are `LeftOrdContinuous` iff they are monotone and topologically left continuous (see `MonotoneOn.map_csSup_of_continuousWithinAt` for the reverse direction).
If one wants the concept that existed before, one can either accept the `f ⊥ = ⊥` hypothesis separately or, if the function is between complete lattices, use the left side of a `GaloisConnection` (which is equivalent, although I think this is not yet in Mathlib).
This removes the definitional equality of the type in favour of a structure. Since most of the time users will be working with the `sSup` versions and not with `IsLUB`, I think this is justified. As a consequence, this removes the definitional equality between `LeftOrdContinuous` and `RightOrdContinuous` of the dual – the latter could be redefined to re-add this, but we do have conversion functions.
`LeftOrdContinuous.continuousWithinAt_Iic` is rewritten to accomodate these changes; the superfluous `DenselyOrdered` assumption is also removed.
[Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/LeftOrdContinuous.20requires.20f.28.E2.8A.A5.29.20.3D.20.E2.8A.A5/near/582932491)
---
- [x] depends on: #37735
- [x] depends on: #37772
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-order
|
52/38 |
Mathlib/Order/OrdContinuous.lean,Mathlib/Order/SemiconjSup.lean,Mathlib/Topology/Order/Basic.lean |
3 |
11 |
['SabrinaJewson', 'astrainfinita', 'github-actions', 'mathlib-dependent-issues', 'mathlib-merge-conflicts', 'vihdzp'] |
Komyyy assignee:Komyyy |
0-4678 1 hour ago |
0-4719 1 hour ago |
52-7043 52 days |