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 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 |
| 26765 |
KiringYJ author:KiringYJ |
feat(MeasureTheory/PiSystem): add π-λ theorem and SetLike instance |
Add two small features to `MeasureTheory/PiSystem`:
1. SetLike instance
`instance : SetLike (DynkinSystem α) (Set α)`
This lets us write `s ⊆ d` and `t ∈ d` for a DynkinSystem `d`, matching usual mathlib style.
2. `DynkinSystem.pi_lambda` lemma
Classical π‑λ theorem: if a π‑system `s` is contained in a Dynkin system `d`, every set measurable for `σ(s)` is also in `d`.
Currently, mathlib exposes this result only indirectly (e.g. via `generateFrom_eq`). Although logically equivalent, it is not obvious at first glance that those lemmas are the π‑λ theorem. The new lemma states the result in its familiar textbook form, so users can recognise and cite it immediately.
Both pieces are under 10 lines, term‑mode only, and do not modify existing APIs.
No breaking changes.
No dependencies.
|
new-contributor
t-measure-probability
|
13/0 |
Mathlib/MeasureTheory/PiSystem.lean |
1 |
13 |
['EtienneC30', 'KiringYJ', 'github-actions', 'ocfnash'] |
RemyDegenne assignee:RemyDegenne |
98-33614 3 months ago |
105-69663 3 months ago |
132-57498 132 days |
| 27534 |
PierreQuinton author:PierreQuinton |
feat: a typeclass for `sSup`/`sInf` to be lawful |
Adds lawful infima and suprema type classes.
A preorder with lawful suprema: whenever a set has a least upper bound, `sSup` returns a least upper bound for that set.
A preorder with lawful infima: whenever a set has a greatest lower bound, `sInf` returns a greastest lower bound for that set.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
121/8 |
Mathlib.lean,Mathlib/Order/CompleteLattice/Defs.lean,Mathlib/Order/LawfulSupInf.lean |
3 |
25 |
['PierreQuinton', 'YaelDillies', 'github-actions', 'plp127', 'vihdzp'] |
YaelDillies assignee:YaelDillies |
97-83791 3 months ago |
109-67088 3 months ago |
109-67113 109 days |
| 24850 |
pechersky author:pechersky |
feat(Topology/UniformSpace/Ultra): uniform spaces induced by pseudometrics are ultra if system is ultra |
Any uniform space has a natural system of pseudometrics definable on it,
comprised of those pseudometrics constructed from a descending chain of
equivalence relation entourages. In a nonarchimedean uniformity, this pseudometric system
induces the uniformity.
---
[](https://gitpod.io/from-referrer/)
- [x] depends on: #23111 |
t-topology |
509/1 |
Mathlib.lean,Mathlib/Topology/MetricSpace/BundledFun.lean,Mathlib/Topology/UniformSpace/Ultra/Pseudometrizable.lean |
3 |
8 |
['ADedecker', 'fpvandoorn', 'github-actions', 'mathlib4-dependent-issues-bot', 'pechersky'] |
urkud assignee:urkud |
94-33631 3 months ago |
157-20941 5 months ago |
172-52867 172 days |
| 28072 |
kckennylau author:kckennylau |
feat(RingTheory/Valuation): make tactic rw_val_equiv |
Co-authored by Aaron Liu and Bhavik Mehta.
A tactic to rewrite relations such as `max (v₁ x) (v₁ y) * v₁ z < 1` into `max (v₂ x) (v₂ y) * v₂ z < 1` , given `h : v₁.IsEquiv v₂`.
Allowed relations are `≤`, `<`, `=`, `≠`.
Allowed operations are: `0`, `1`, `v₁ r`, `⁻¹`, `^` (both `ℕ` and `ℤ`), `*`, `/`, `min`, `max`.
Examples:
```lean
example {R Γ₁ Γ₂ : Type} [Ring R]
[LinearOrderedCommMonoidWithZero Γ₁] [LinearOrderedCommMonoidWithZero Γ₂]
{v₁ : Valuation R Γ₁} {v₂ : Valuation R Γ₂}
(h : v₁.IsEquiv v₂) {y z : R} :
{x | v₁ x ^ 2 * min (v₁ y) (v₁ z) ≤ 1} = {x | v₂ x ^ 2 * min (v₂ y) (v₂ z) ≤ 1} := by
rw_val_equiv h
```
It is also possible to use `←` to rewrite in the opposite direction, and to use `at h1 h3 ⊢` to specify which hypotheses (and/or goal) to rewrite, similar to the syntax of `rw`. There is also `rwa_val_equiv` to work like `rwa`.
---
Zulip: [#Is there code for X? > Tactics for comparing equivalent valuations](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Tactics.20for.20comparing.20equivalent.20valuations)
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
455/13 |
Mathlib/RingTheory/Valuation/Basic.lean,MathlibTest/Simproc/ValEquiv.lean |
2 |
34 |
['b-mehta', 'eric-wieser', 'github-actions', 'kckennylau', 'pechersky', 'plp127'] |
erdOne assignee:erdOne |
87-33621 2 months ago |
97-55313 3 months ago |
98-29809 98 days |
| 28125 |
nonisomorphiclinearmap author:nonisomorphiclinearmap |
feat(Combinatorics): basic definition of simplicial complexes |
This PR introduces the basic definition of a finite (abstract) simplicial complex, located in Mathlib/Combinatorics/SimplicialComplex/Basic.lean.
---
This is our first contribution to mathlib. This work was done as part of the Fields Institute Summer Undergraduate Program on formalization in topological combinatorics. Eventually, we aim to formalize Lovasz's proof of the Kneser Conjecture and this is a small stepping stone in that direction. Some other commits will shortly depend on this one.
We would like to acknowledge the Fields Institute for Research in Mathematical Sciences for their sponsorship. We would also like to thank our supervisors, Professor Chris Kapulkin and Mr. Daniel Carranza, for their guidance and support throughout this project. We would also like to thank our group members Tom Lindquist and Quang Minh Nguyen for our fruitful discussions. |
new-contributor
t-combinatorics
|
374/0 |
Mathlib.lean,Mathlib/Combinatorics/SimplicialComplex/Basic.lean,Mathlib/Combinatorics/SimplicialComplex/Category.lean,Mathlib/Combinatorics/SimplicialComplex/FacePoset.lean,Mathlib/Combinatorics/SimplicialComplex/Hom.lean |
5 |
1 |
['github-actions'] |
awainverse assignee:awainverse |
86-33629 2 months ago |
97-52098 3 months ago |
97-52134 97 days |
| 28186 |
Sebi-Kumar author:Sebi-Kumar |
feat(Topology/Homotopy/Path): Add IsEquiv instance for Path.Homotopic |
Add `instance : IsEquiv (Path x₀ x₁) Homotopic` to the library. Allow use of lemmas like `of_eq` when proving two paths are homotopic.
---
To provide additional context, I am relatively new to contributing to Mathlib, and I am doing so as a part of the Fields Undergraduate Summer Research Program hosted at the University of Western Ontario and supervised by Chris Kapulkin and Daniel Carranza. My goal is to prove that the `n`-sphere is simply connected for `n > 1`.
Also, I am not super familiar with `IsEquiv` and when it should/shouldn't be used. I just wanted to use a lemma like `Path.Homotopic.of_eq` at one point while working on my code, and thought this was the best way to add such a result to the library.
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-topology
|
5/0 |
Mathlib/Topology/Homotopy/Path.lean |
1 |
4 |
['Sebi-Kumar', 'github-actions', 'kckennylau'] |
PatrickMassot assignee:PatrickMassot |
86-33626 2 months ago |
95-64956 3 months ago |
95-64995 95 days |
| 28325 |
pechersky author:pechersky |
feat(WithZeroTopology): `locallyCompactSpace_iff_locallyFiniteOrder_units` |
On the way to golf/generalize the proof that
locally compact valued fields have locally finite valuation groups as embodied in
`Valued.integer.locallyFiniteOrder_units_mrange_of_isCompact_integer` ]
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-order
t-topology
|
160/2 |
Mathlib/Topology/Algebra/GroupWithZero.lean,Mathlib/Topology/Algebra/WithZeroTopology.lean,Mathlib/Topology/Compactness/Compact.lean |
3 |
1 |
['github-actions'] |
PatrickMassot assignee:PatrickMassot |
81-33603 2 months ago |
93-15819 3 months ago |
93-18520 93 days |
| 26914 |
quangvdao author:quangvdao |
feat(Data/PFunctor/Univariate): more definitions for univariate `PFunctor` |
This PR defines several basic definitions of `PFunctor`, including zero, one, constants, monomials, coproduct (sum), product, sigma, pi, tensor product, universe lifting, and equivalence.
We also add: (1) simple lemmas connecting the basic definitions, (2) an automatically derived ext lemma for `PFunctor` via `@[ext]` attribute
Some things I'm not clear on:
- I define `HAdd` and `HMul` instances for coproduct and product of poly functors having different universe levels. Should I also define `Add` and `Mul` instances for poly functors having the same universe level?
- Is it ok to define notation for tensor product, i.e. `@[inherit_doc] scoped infixr:80 " ⊗ " => tensor`? I'm worried it might clash with other notation.
- Need a double-check on the priority of notation.
Some future definitions to add:
- Various equivalences arising from arithmetic identities, e.g., `P + 0 ≃ₚ P`.
- Definitions of Lenses and Charts (each of them will be a file or even a folder)
- Exponential objects (corresponding to both `prod` and `tensor`)
---
[](https://gitpod.io/from-referrer/)
|
t-data |
144/5 |
Mathlib/Data/PFunctor/Univariate/Basic.lean |
1 |
19 |
['alexkeizer', 'eric-wieser', 'github-actions', 'quangvdao'] |
eric-wieser assignee:eric-wieser |
78-66986 2 months ago |
128-34693 4 months ago |
128-34729 128 days |
| 23238 |
YaelDillies author:YaelDillies |
feat: extended floor and ceil |
My motivation for this is to prove `ENat.toENNReal (⨆ i, f i) = ⨆ i, ENat.toENNReal (f i)` and `ENat.toENNReal (⨅ i, f i) = ⨅ i, ENat.toENNReal (f i)`. Kalle Kytölä independently needs this for his formalisation of statistical physics.
From MiscYD
---
- [x] depends on: #24781
- [x] depends on: #24782
See #15269 for a past attempt.
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
235/0 |
Mathlib.lean,Mathlib/Algebra/Order/Floor/Extended.lean |
2 |
25 |
['YaelDillies', 'b-mehta', 'eric-wieser', 'github-actions', 'grunweg', 'kkytola', 'mathlib4-dependent-issues-bot', 'urkud'] |
alreadydone assignee:alreadydone |
78-61262 2 months ago |
186-58627 6 months ago |
234-24435 234 days |
| 26240 |
grunweg author:grunweg |
perf(CommandLinterLinter): use Substring more |
Probably, these changes make little difference, but let's find out.
---
[](https://gitpod.io/from-referrer/)
|
t-linter
RFC
|
14/15 |
Mathlib/Tactic/Linter/CommandStart.lean |
1 |
5 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
joneugster assignee:joneugster |
77-5010 2 months ago |
146-42573 4 months ago |
146-47175 146 days |
| 25920 |
BoltonBailey author:BoltonBailey |
feat(Data/Finsupp/Basic): `Finsupp.optionElim'` |
Similar to how Finsupp.cons constructs a map Fin (n + 1) →₀ M from a map Fin n →₀ M,
we define Finsupp.optionElim' to construct a map Option α →₀ M from a map α →₀ M, given an additional value for none. We base this on the new optionEquiv definition. As a function, it behaves as Option.elim', hence the name.
We prove a variety of API lemmas, based on those for Finsupp.cons, to bring the definitions more in line with the contents of Data/Finsupp/Fin.
We also refactor to a new file to help avoid a too-long file and make this more analogous to Finsupp.cons
Original PR: https://github.com/leanprover-community/mathlib4/pull/13861
- [x] depends on: #26309 |
migrated-from-branch
t-data
|
114/23 |
Mathlib/Algebra/Category/MonCat/Adjunctions.lean,Mathlib/Data/Finsupp/Option.lean |
2 |
15 |
['BoltonBailey', 'eric-wieser', 'github-actions', 'leanprover-community-bot-assistant', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
eric-wieser assignee:eric-wieser |
74-13253 2 months ago |
74-18299 2 months ago |
138-75178 138 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/)
|
new-contributor
t-combinatorics
|
375/0 |
Mathlib.lean,Mathlib/Combinatorics/Hypergraph/Basic.lean |
2 |
52 |
['b-mehta', 'espottesmith', 'github-actions', 'jt496', 'lauramonk', 'mathlib4-merge-conflict-bot'] |
b-mehta assignee:b-mehta |
69-86079 2 months ago |
69-86079 2 months ago |
75-72260 75 days |
| 28511 |
YaelDillies author:YaelDillies |
feat(Finsupp): `congr!`-compatible version of `prod_congr` |
`congr!` doesn't like the `g1 x (f x)` appearing in the hypothesis of `Finsupp.prod_congr`: `f x` isn't a free variable.
Note: A few proofs broke due to `simp` using `congr` lemmas internally.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
17/11 |
Mathlib/Algebra/BigOperators/Finsupp/Basic.lean,Mathlib/Algebra/Category/MonCat/Adjunctions.lean,Mathlib/Data/Finsupp/Multiset.lean,Mathlib/Data/Nat/Choose/Multinomial.lean,Mathlib/RepresentationTheory/Homological/GroupHomology/LowDegree.lean |
5 |
12 |
['JovanGerb', 'YaelDillies', 'eric-wieser', 'github-actions', 'kmill'] |
kmill assignee:kmill |
67-84713 2 months ago |
90-4768 2 months ago |
90-4800 90 days |
| 24184 |
YaelDillies author:YaelDillies |
feat: `[G : H]` notation for the index of `H : Subgroup G` |
This is a cute notation which I wrote for FLT. Not sure whether we want it in mathlib nor how to include `relindex` in the picture.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
RFC
label:t-algebra$ |
5/0 |
Mathlib/GroupTheory/Index.lean |
1 |
8 |
['YaelDillies', 'erdOne', 'github-actions', 'j-loreaux', 'kbuzzard', 'mathlib4-merge-conflict-bot'] |
eric-wieser assignee:eric-wieser |
61-54925 2 months ago |
61-54950 2 months ago |
209-42663 209 days |
| 22043 |
YaelDillies author:YaelDillies |
chore: shortcut instance for `Neg ℤˣ` |
This lets us avoid importing `Ring` in downstream files (most of the effect is to come).
---
[](https://gitpod.io/from-referrer/)
|
file-removed
t-algebra
label:t-algebra$ |
20/47 |
Mathlib.lean,Mathlib/Algebra/GCDMonoid/Nat.lean,Mathlib/Algebra/Group/Int/Units.lean,Mathlib/Algebra/Order/Ring/Abs.lean,Mathlib/Algebra/Ring/Int/Units.lean,Mathlib/Algebra/Ring/NegOnePow.lean,Mathlib/Data/Fintype/Units.lean,Mathlib/Data/Int/AbsoluteValue.lean,Mathlib/Data/Int/Associated.lean,Mathlib/GroupTheory/HNNExtension.lean,Mathlib/NumberTheory/NumberField/Basic.lean,MathlibTest/Zify.lean |
12 |
17 |
['YaelDillies', 'erdOne', 'eric-wieser', 'github-actions', 'j-loreaux', 'leanprover-community-bot-assistant', 'mathlib-bors'] |
eric-wieser assignee:eric-wieser |
60-6020 1 month ago |
183-75457 5 months ago |
268-48480 268 days |
| 26110 |
YaelDillies author:YaelDillies |
feat: sharp monoids |
Define sharp monoids, which are the monoids whose only unit is `1`. This concept is useful in log geometry and in particular shows up in the theory of affine monoids.
This concept already existed in the guise of `Subsingleton Mˣ`, but giving it a name makes it easier to refer to and uncovers some missing instances.
From Toric
---
[](https://gitpod.io/from-referrer/)
|
toric
t-algebra
label:t-algebra$ |
51/30 |
Mathlib/Algebra/BigOperators/Associated.lean,Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean,Mathlib/Algebra/GCDMonoid/Basic.lean,Mathlib/Algebra/Group/Irreducible/Defs.lean,Mathlib/Algebra/Group/Pi/Units.lean,Mathlib/Algebra/Group/Prod.lean,Mathlib/Algebra/Group/Submonoid/Units.lean,Mathlib/Algebra/Group/Units/Basic.lean,Mathlib/Algebra/Group/Units/Defs.lean,Mathlib/Algebra/GroupWithZero/Associated.lean,Mathlib/Algebra/GroupWithZero/Divisibility.lean,Mathlib/Data/List/Prime.lean,Mathlib/Data/ZMod/Basic.lean,Mathlib/NumberTheory/DirichletCharacter/Basic.lean,Mathlib/RingTheory/ChainOfDivisors.lean,Mathlib/RingTheory/IntegralDomain.lean,Mathlib/RingTheory/UniqueFactorizationDomain/NormalizedFactors.lean,Mathlib/RingTheory/Valuation/Integers.lean |
18 |
7 |
['YaelDillies', 'b-mehta', 'github-actions', 'leanprover-community-bot-assistant', 'mathlib4-merge-conflict-bot', 'vihdzp'] |
adomani assignee:adomani |
59-66558 1 month ago |
63-60989 2 months ago |
147-61030 147 days |
| 29530 |
ShreckYe author:ShreckYe |
feat(Dynamics/PeriodicPts): some theorems for `Pi.map` in `Dynamics/PeriodicPts` analogous to those for `Prod.map` |
Split from #29204. Some namespace prefixes are added in `GroupTheory/OrderOfElement.lean` to distinguish the extra imports introduced.
- [ ] depends on: #29528
|
large-import |
77/8 |
Mathlib/Dynamics/PeriodicPts/Defs.lean,Mathlib/Dynamics/PeriodicPts/Lemmas.lean,Mathlib/GroupTheory/OrderOfElement.lean |
3 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
dupuisf assignee:dupuisf |
56-33615 1 month ago |
63-59448 2 months ago |
63-60099 63 days |
| 29400 |
ShreckYe author:ShreckYe |
feat(`Algebra/BigOperators`): products of the results of insertion and removal on tuples and lists, and some needed lemmas |
|
large-import |
102/0 |
Mathlib.lean,Mathlib/Algebra/BigOperators/Fin.lean,Mathlib/Algebra/BigOperators/Group/List/Basic.lean,Mathlib/Algebra/BigOperators/Group/List/Defs.lean,Mathlib/Algebra/BigOperators/Group/Vector/Basic.lean,Mathlib/Data/Fin/Tuple/Basic.lean |
6 |
6 |
['ShreckYe', 'bryangingechen', 'eric-wieser', 'github-actions'] |
bryangingechen assignee:bryangingechen |
55-45459 1 month ago |
67-81411 2 months ago |
67-81453 67 days |
| 29235 |
yoh-tanimoto author:yoh-tanimoto |
feat(Topology/Algebra/Module/ClosedSubmodule): add `mapEquiv`, a variation of `ClosedSubmodule.map` for CLE |
add `ClosedSubmodule.mapEquiv` for continuous linear equivalence. In this case, a closed submodule is mapped to a closed submodule, so the definitions are easier and behave nicely with `closure` and `⊔`.
motivation: needed to define standard subspaces in a Hilbert space (scalar multiplication by `Complex.I`) #29251
https://ems.press/content/serial-article-files/48171
- [x] depends on: #29230 for `Lattice` `CompleteLattice` |
t-topology |
69/1 |
Mathlib/Topology/Algebra/Module/ClosedSubmodule.lean |
1 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
fpvandoorn assignee:fpvandoorn |
54-43361 1 month ago |
62-63175 2 months ago |
62-65460 62 days |
| 29688 |
tb65536 author:tb65536 |
feat(FieldTheory/IsGaloisGroup): prove the Galois correspondence for `IsGaloisGroup` |
This PR reproves the Galois correspondence for `IsGaloisGroup`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
89/0 |
Mathlib/FieldTheory/Galois/IsGaloisGroup.lean |
1 |
1 |
['github-actions'] |
joneugster assignee:joneugster |
52-33621 1 month ago |
59-48337 1 month ago |
59-48313 59 days |
| 29624 |
mcdoll author:mcdoll |
feat(LinearAlgebra/LinearPMap): add definition of resolvent and first resolvent identity |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
180/2 |
Mathlib/LinearAlgebra/LinearPMap.lean |
1 |
2 |
['github-actions', 'mcdoll'] |
kim-em assignee:kim-em |
51-47389 1 month ago |
59-58340 1 month ago |
59-58316 59 days |
| 28871 |
JaafarTanoukhi author:JaafarTanoukhi |
feat(Combinatorics/Digraph): Tournaments |
Define orientations and tournaments. Related to #26771.
Co-authored-by: Rida Hamadani
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
|
62/0 |
Mathlib.lean,Mathlib/Combinatorics/Digraph/Orientation.lean,Mathlib/Combinatorics/Digraph/Tournament.lean |
3 |
5 |
['JaafarTanoukhi', 'NotWearingPants', 'Rida-Hamadani', 'github-actions'] |
kmill assignee:kmill |
50-63276 1 month ago |
81-53513 2 months ago |
81-53546 81 days |
| 29596 |
alreadydone author:alreadydone |
chore(Algebra): extract `Submonoid.IsLocalizationMap` |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
282/119 |
Mathlib.lean,Mathlib/Algebra/Module/LocalizedModule/IsLocalization.lean,Mathlib/GroupTheory/MonoidLocalization/Basic.lean,Mathlib/GroupTheory/MonoidLocalization/Lemmas.lean,Mathlib/GroupTheory/MonoidLocalization/MonoidWithZero.lean,Mathlib/RingTheory/Extension/Presentation/Submersive.lean,Mathlib/RingTheory/Localization/Defs.lean |
7 |
3 |
['github-actions', 'mathlib4-merge-conflict-bot'] |
kim-em assignee:kim-em |
50-33619 1 month ago |
57-73576 1 month ago |
62-96 62 days |
| 25974 |
scholzhannah author:scholzhannah |
feat(Topology/Compactness/CompactlyCoherentSpace): compact coherentification (k-ification) |
This PR defines the notion of turning an arbitrary topological space into a compactly coherent space. Compactly coherent spaces are commonly referred to as "compactly generated spaces" or "k-spaces" in the literature while the operation of turning a space into such as space is called the "k-ification". There are however three different notions that are described with this name. To disambiguate we use the names "compactly coherent space" and "compactcoherentification" here. See [this wikipedia page](https://en.wikipedia.org/wiki/Compactly_generated_space) for an explanation of these notions.
This PR continues the work from #25318.
Original PR: https://github.com/leanprover-community/mathlib4/pull/25318
Co-authored-by: Floris van Doorn |
large-import
t-topology
|
174/5 |
Mathlib/Topology/Compactness/CompactlyCoherentSpace.lean |
1 |
4 |
['github-actions', 'joelriou', 'scholzhannah'] |
ADedecker assignee:ADedecker |
44-3855 1 month ago |
44-75977 1 month ago |
143-56387 143 days |
| 26287 |
mbkybky author:mbkybky |
feat(Data/ENat/Lattice): coercion to `WithBot ℕ∞` commutes with `biSup` |
The coercion from `ℕ∞` to `WithBot ℕ∞` commutes with `biSup` and `biInf`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
24/0 |
Mathlib/Data/ENat/Lattice.lean |
1 |
5 |
['github-actions', 'kckennylau', 'mbkybky'] |
ericrbg assignee:ericrbg |
43-70348 1 month ago |
43-70348 1 month ago |
123-71570 123 days |
| 26923 |
oliver-butterley author:oliver-butterley |
feat(Dynamics/BirkhoffSum): add the pointwise ergodic theorem (Birkhoff's) |
The Pointwise Ergodic Theorem, also known as Birkhoff's Ergodic Theorem.
Co-authored-by: Lua Viana Reis
- [x] depends on: #26074
- [x] depends on: #26807
- [x] depends on: #26810
- [x] depends on: #26840
- [x] depends on: #26842
- [x] depends on: #26848
- [x] depends on: #26851
- [x] depends on: #26852
- [x] depends on: #26853
- [x] depends on: #27008
- [x] depends on: #28901
Zulip: [PR thread](https://leanprover.zulipchat.com/#narrow/channel/144837-PR-reviews/topic/.2326923.20The.20pointwise.20ergodic.20theorem.20.28Birkhoff's.29/with/527835158)
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-dynamics
|
401/0 |
Mathlib.lean,Mathlib/Dynamics/BirkhoffSum/Pointwise.lean |
2 |
13 |
['D-Thomine', 'github-actions', 'leanprover-community-bot-assistant', 'lua-vr', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
urkud assignee:urkud |
43-1132 1 month ago |
80-19975 2 months ago |
86-75842 86 days |
| 29734 |
bwangpj author:bwangpj |
feat(Probability/Kernel): \phi-irreducibility of kernels |
Define powers of kernels, the Chapman-Kolmogorov equations, as well as \phi-irreducibility of kernels, following Robert-Casella, "Monte Carlo Statistical Methods", Definition 6.13.
Co-authored-by: Matteo Cipollina @or4nge19
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
160/8 |
Mathlib.lean,Mathlib/Probability/Kernel/Composition/Comp.lean,Mathlib/Probability/Kernel/Composition/CompMap.lean,Mathlib/Probability/Kernel/Irreducible.lean,docs/references.bib |
5 |
6 |
['RemyDegenne', 'bwangpj', 'github-actions'] |
RemyDegenne assignee:RemyDegenne |
41-79559 1 month ago |
51-68717 1 month ago |
58-21354 58 days |
| 29376 |
vlad902 author:vlad902 |
feat(SimpleGraph): helper lemmas for `Walk.IsSubwalk` |
|
t-combinatorics |
29/0 |
Mathlib/Combinatorics/SimpleGraph/Walk.lean |
1 |
1 |
['github-actions'] |
awainverse assignee:awainverse |
41-3404 1 month ago |
69-11321 2 months ago |
69-11354 69 days |
| 25814 |
vlad902 author:vlad902 |
feat(SimpleGraph): weaker condition for paths in acyclic graphs |
`IsAcyclic.isPath_iff_chain'` defines a weaker condition for proving that a walk is a path, in particular it shows that rather than proving that all vertices in the support of a walk are distinct, one must only show that consecutive edges are distinct (e.g. every other vertex must be distinct.) This leads to a simple corollary that trails are also paths in acyclic graphs.
I had a need for this when formalizing Cayley graphs, since this condition maps cleanly onto words in free groups being reduced.
---
*This PR continues the work from #25630.*
*Original PR: https://github.com/leanprover-community/mathlib4/pull/25630* |
t-combinatorics |
38/0 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Paths.lean |
2 |
2 |
['github-actions', 'vlad902'] |
kmill assignee:kmill |
41-2400 1 month ago |
154-72213 5 months ago |
154-72186 154 days |
| 26347 |
mans0954 author:mans0954 |
feat(Data/Finset/RangeDistance): abs_sub_lt_of_mem_finset_range |
This PR continues the work from #23161.
Original PR: https://github.com/leanprover-community/mathlib4/pull/23161 |
t-data |
30/0 |
Mathlib.lean,Mathlib/Algebra/Order/Group/Unbundled/Abs.lean,Mathlib/Data/Finset/RangeDistance.lean |
3 |
2 |
['github-actions', 'mans0954'] |
alreadydone assignee:alreadydone |
39-60371 1 month ago |
102-603 3 months ago |
143-10007 143 days |
| 26885 |
pechersky author:pechersky |
feat(Topology/ValuativeRel): ValuativeTopology 𝒪[K] |
and even when not a field, `ValuativeRel 𝒪[K]`
This is an example of something achievable with the new declarations that wasn't possible with Valued
Such that we can discuss the valuations on the subring without always using coercions
But to achieve this, one needs some juggling of the value groups
---
[](https://gitpod.io/from-referrer/)
- [x] depends on: #26834
- [ ] depends on : #30135
|
t-algebra
t-topology
t-number-theory
label:t-algebra$ |
73/0 |
Mathlib/RingTheory/Valuation/ValuativeRel/Basic.lean,Mathlib/Topology/Algebra/Valued/ValuativeRel.lean |
2 |
9 |
['erdOne', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'pechersky'] |
alreadydone assignee:alreadydone |
39-51224 1 month ago |
78-53967 2 months ago |
128-38973 128 days |
| 26985 |
agjftucker author:agjftucker |
feat(Analysis/Calculus/Implicit): define implicitFunOfProdDomain |
This PR continues the work from #16743.
Original PR: https://github.com/leanprover-community/mathlib4/pull/16743
---
- [x] depends on: #28352
[](https://gitpod.io/from-referrer/) |
new-contributor
t-analysis
|
107/4 |
Mathlib/Analysis/Calculus/Implicit.lean |
1 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
hrmacbeth assignee:hrmacbeth |
38-33627 1 month ago |
46-7715 1 month ago |
46-9293 46 days |
| 29361 |
FlAmmmmING author:FlAmmmmING |
feat: Catalan generating function as a formal power series |
We introduce the Catalan generating function as a formal power series over `ℕ`.
## Main Definitions
* `PowerSeries.catalanSeries`: The Catalan generating function as a power series.
## Main Results
* `PowerSeries.sum_coeff_X_catalanSeries`: When `n` is a natural number,
each term in the sum `coeff i X * catalan (n - i)` is 0 except for `i = 1`.
* `PowerSeries.coeff_X_mul_catalanSeries`: The coefficient of `X * catalanSeries` at `X^n` is
`catalan (n - 1)` when `n > 0`.
* `PowerSeries.catalanSeries_one_add_X_mul_self_sq`: The Catalan generating function satisfies the
equation `catalanSeries = 1 + X * catalanSeries ^ 2`.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
71/0 |
Mathlib.lean,Mathlib/RingTheory/PowerSeries/Catalan.lean |
2 |
4 |
['Ruben-VandeVelde', 'github-actions', 'wwylele'] |
kbuzzard assignee:kbuzzard |
37-10224 1 month ago |
70-6299 2 months ago |
70-6328 70 days |
| 30116 |
FormulaRabbit81 author:FormulaRabbit81 |
feat(Measure): proof that a relatively compact set of measures is tight |
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-measure-probability
|
196/2 |
Mathlib/MeasureTheory/Measure/Tight.lean |
1 |
1 |
['github-actions'] |
kex-y assignee:kex-y |
36-33618 1 month ago |
43-43874 1 month ago |
43-43907 43 days |
| 30107 |
grunweg author:grunweg |
chore: track occurrences of 'nonrec' as technical debt |
Matches leanprover-community/leanprover-community.github.io#689: only merge when that is deemed a good idea.
--------
TODO: make the count more robust, for instance count all occurrences of "^nonrec " plus those of "^[private|protected] nonrec ".
---
[](https://gitpod.io/from-referrer/)
|
tech debt
CI
|
1/0 |
scripts/technical-debt-metrics.sh |
1 |
1 |
['github-actions'] |
robertylewis assignee:robertylewis |
36-33618 1 month ago |
44-6506 1 month ago |
44-6484 44 days |
| 30355 |
kckennylau author:kckennylau |
feat(Logic): graded functions |
This PR defines a class of graded functions, called `GradedFunLike`. It is intended to be used in #30312 to characterise a class of graded ring homomorphisms, where it is invoked as `[GradedFunLike F 𝒜 ℬ] [RingHomClass F A B]`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
41/0 |
Mathlib.lean,Mathlib/Data/FunLike/Graded.lean |
2 |
1 |
['github-actions'] |
nobody |
35-79363 1 month ago |
36-33434 1 month ago |
36-33471 36 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/)
|
new-contributor
t-combinatorics
|
391/0 |
Mathlib.lean,Mathlib/Combinatorics/DiHypergraph/Basic.lean |
2 |
1 |
['github-actions'] |
b-mehta assignee:b-mehta |
35-33625 1 month ago |
57-82625 1 month ago |
57-82669 57 days |
| 29347 |
themathqueen author:themathqueen |
refactor(Algebra/Star/StarAlgHom): let `StarAlgEquiv` extend `StarRingEquiv` instead of `RingEquiv` |
Instead of having `StarAlgEquiv` extend `RingEquiv` and have properties `map_star'` and `map_smul'`, it now extends `StarRingEquiv` with only `map_smul'`.
---
Will add more API in the next PR.
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
29/36 |
Mathlib/Algebra/Star/StarAlgHom.lean,Mathlib/Analysis/CStarAlgebra/CStarMatrix.lean |
2 |
5 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'themathqueen'] |
dupuisf and kbuzzard assignee:dupuisf assignee:kbuzzard |
35-26706 1 month ago |
68-46542 2 months ago |
70-69495 70 days |
| 29947 |
JaafarTanoukhi author:JaafarTanoukhi |
feat(Combinatorics/Digraph): Maps |
Ported `SimpleGraph/Maps.lean` to `Digraph/Maps.lean` for future PRs related to issue #[26771](https://github.com/leanprover-community/mathlib4/issues/26771)
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
|
476/0 |
Mathlib.lean,Mathlib/Combinatorics/Digraph/Maps.lean |
2 |
1 |
['github-actions'] |
awainverse assignee:awainverse |
34-33635 1 month ago |
50-63558 1 month ago |
50-63597 50 days |
| 27254 |
yuanyi-350 author:yuanyi-350 |
2025 imo problem3 |
- [x] depends on: #28788
- [x] depends on: #28790
- [x] depends on: #28829
---
[](https://gitpod.io/from-referrer/)
|
IMO |
231/0 |
Archive.lean,Archive/Imo/Imo2025Q3.lean,Mathlib/NumberTheory/Padics/PadicVal/Basic.lean |
3 |
28 |
['github-actions', 'jsm28', 'kbuzzard', 'leanprover-community-bot-assistant', 'madvorak', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'themathqueen', 'wwylele', 'yuanyi-350'] |
jsm28 assignee:jsm28 |
31-4775 1 month ago |
72-35717 2 months ago |
106-10579 106 days |
| 26961 |
mariainesdff author:mariainesdff |
feat(RingTheory/PowerSeries/Substitution): add API |
Co-authored-by: @AntoineChambert-Loir
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
57/5 |
Mathlib/RingTheory/PowerSeries/Basic.lean,Mathlib/RingTheory/PowerSeries/Substitution.lean |
2 |
13 |
['Ruben-VandeVelde', 'github-actions', 'mariainesdff', 'mattrobball'] |
mattrobball assignee:mattrobball |
31-1437 1 month ago |
56-82497 1 month ago |
104-16117 104 days |
| 30233 |
Komyyy author:Komyyy |
refactor(Topology/Sequences): generalize seq-compactness lemmas to metrizable space |
* [`IsSeqCompact.isCompact`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Topology/Sequences.html#IsSeqCompact.isCompact)
* [`UniformSpace.isCompact_iff_isSeqCompact`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Topology/Sequences.html#UniformSpace.isCompact_iff_isSeqCompact)
* [`UniformSpace.compactSpace_iff_seqCompactSpace`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Topology/Sequences.html#UniformSpace.compactSpace_iff_seqCompactSpace)
These are lemmas on uniform spaces which has countable uniformity, so can be generalized to pseudo-metrizable space.
From [CLT](https://github.com/RemyDegenne/CLT)
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-topology
|
20/7 |
Mathlib/Topology/Sequences.lean,docs/overview.yaml,docs/undergrad.yaml |
3 |
1 |
['github-actions'] |
grunweg assignee:grunweg |
29-33614 29 days ago |
37-1668 1 month ago |
37-2143 37 days |
| 30003 |
vlad902 author:vlad902 |
feat(Order): helper lemmas for `IsChain`/`IsAntichain` |
These were useful in formalizing Dilworth's theorem.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
23/2 |
Mathlib/Order/Antichain.lean,Mathlib/Order/Preorder/Chain.lean |
2 |
23 |
['YaelDillies', 'github-actions', 'mathlib4-merge-conflict-bot', 'plp127', 'vlad902'] |
YaelDillies assignee:YaelDillies |
28-46887 28 days ago |
30-58315 30 days ago |
48-25305 48 days |
| 28604 |
alreadydone author:alreadydone |
chore(Algebra/Ring/Defs): add two classes (minimally invasive version) |
Add the missing `NonAssocComm(Semi)ring` classes and add some missing instances between existing classes. Contrary to #28532, the approach here doesn't add any new `extends`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
59/17 |
Mathlib/Algebra/Colimit/DirectLimit.lean,Mathlib/Algebra/Ring/Defs.lean,Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean |
3 |
21 |
['alreadydone', 'github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'riccardobrasca'] |
riccardobrasca assignee:riccardobrasca |
27-66879 27 days ago |
43-37821 1 month ago |
44-10437 44 days |
| 30037 |
linesthatinterlace author:linesthatinterlace |
feat: Fin.find update |
We currently define `Fin.find` in a way that is redundant (in the sense that it is just equivalent to `Fin.find?` in batteries). This PR replaces it with a definition that works closer to `Nat.find`, and links the new definition of `Fin.find` to `Fin.find?` in the natural way.
---
[](https://gitpod.io/from-referrer/)
|
|
159/104 |
Mathlib/Data/Fin/Tuple/Basic.lean |
1 |
7 |
['github-actions', 'linesthatinterlace', 'llllvvuu', 'mathlib4-merge-conflict-bot'] |
adamtopaz assignee:adamtopaz |
27-64026 27 days ago |
45-60867 1 month ago |
47-30372 47 days |
| 28141 |
YaelDillies author:YaelDillies |
chore: deprecate `BialgHom.coe_toLinearMap` |
`BialgHom.toLinearMap` is a fake projection.
From Toric
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
toric
|
5/11 |
Mathlib/RingTheory/Bialgebra/Hom.lean |
1 |
8 |
['YaelDillies', 'eric-wieser', 'github-actions'] |
alreadydone assignee:alreadydone |
27-44710 27 days ago |
27-44710 27 days ago |
97-10724 97 days |
| 29980 |
mans0954 author:mans0954 |
refactor(RingTheory/Polynomial/Resultant/Quadratic): Re-implement QuadraticDiscriminant for R[X] |
Re-implement `Algebra/QuadraticDiscriminant` for polynomials.
[Zulip discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/discriminants.20of.20low.20degree.20polynomials/with/538010519)
---
- [ ] depends on: #29981
[](https://gitpod.io/from-referrer/)
|
|
208/0 |
Mathlib.lean,Mathlib/RingTheory/Polynomial/Resultant/Quadratic.lean |
2 |
3 |
['JovanGerb', 'github-actions', 'mathlib4-dependent-issues-bot'] |
JovanGerb assignee:JovanGerb |
26-81758 26 days ago |
36-53299 1 month ago |
36-57182 36 days |
| 22771 |
alreadydone author:alreadydone |
feat(Homotopy/Lifting): monodromy of covering maps and lifting criterion |
Define the monodromy of a covering map: given a path in the base space, lifting it through the covering map induces a bijection between the fibers at the two endpoints of the path. Definition 2.1 in https://ncatlab.org/nlab/show/monodromy.
---
- [ ] depends on: #28234
- [x] depends on: #22649
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology |
193/146 |
Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/FundamentalGroup.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/InducedMaps.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/SimplyConnected.lean,Mathlib/CategoryTheory/Groupoid.lean,Mathlib/Topology/Covering.lean,Mathlib/Topology/Homotopy/HomotopyGroup.lean,Mathlib/Topology/Homotopy/Lifting.lean,Mathlib/Topology/Homotopy/Product.lean |
9 |
5 |
['github-actions', 'leanprover-community-bot-assistant', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
PatrickMassot assignee:PatrickMassot |
26-49679 26 days ago |
82-82340 2 months ago |
144-35711 144 days |
| 30432 |
kckennylau author:kckennylau |
feat(AlgebraicGeometry): define the non-vanishing locus of a set in Proj |
Given a subset `s : Set A`, the non-vanishing locus of `s` is the set of points whose corresponding prime ideal does not fully contain `s`. In other words, where not all elements of `s` vanish.
I could not find a name for this in the literature.
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry |
66/0 |
Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Basic.lean |
1 |
1 |
['github-actions'] |
alexjbest assignee:alexjbest |
26-33583 26 days ago |
34-6128 1 month ago |
34-6161 34 days |
| 29706 |
kim-em author:kim-em |
feat: add piCongrSigmaFiber and piCongrFiberwise equivalences |
## Summary
Add two new equivalence functions for working with fibers and sigma types:
- `Equiv.piCongrSigmaFiber`: transforms between functions on sigma fibers and regular pi types
- `Equiv.piCongrFiberwise`: lifts fiber-wise equivalences to product equivalences
These functions are from the FLT (Fermat's Last Theorem) project and are useful for manipulating dependent function types indexed by fibers of a function.
## Details
The new definitions allow for elegant transformations between:
1. Functions defined on sigma types representing fibers of a function
2. Regular dependent functions
These are particularly useful in algebraic contexts where one needs to work with products indexed by fibers.
## Context
This PR was prepared by Claude (Claude Code) based on the following prompt:
> "Please read FLT/Mathlib/Logic/Equiv/Basic.lean, and also the corresponding file in the Mathlib repository. Please prepare a PR to Mathlib containing this content, putting it at an appropriate point in the corresponding Mathlib file. Make sure the PR is label FLT, and write in the PR comment an explanation that the PR was prepared by Claude, including quoting the prompting."
The content is sourced from `/Users/kim/projects/lean/FLT/FLT/Mathlib/Logic/Equiv/Basic.lean` in the FLT project repository.
🤖 Generated with [Claude Code](https://claude.ai/code) |
FLT
t-logic
|
39/0 |
Mathlib/Logic/Equiv/Basic.lean |
1 |
5 |
['Ruben-VandeVelde', 'github-actions', 'kim-em'] |
fpvandoorn assignee:fpvandoorn |
25-38377 25 days ago |
58-75356 1 month ago |
59-5162 59 days |
| 29969 |
smmercuri author:smmercuri |
refactor: use isometry extensions for completions at infinite places of number fields |
The API for `InfinitePlace.Completion` currently makes use of abstract results defined on absolute values, which all depend on the hypothesis of the form `∀ x, ‖f x‖ = v x`. This is equivalent to `f` being an isometry, and so many of these results can be bypassed and deprecated by using `Isometry.completion_extension`
---
[](https://gitpod.io/from-referrer/)
|
|
73/48 |
Mathlib/Analysis/Normed/Field/WithAbs.lean,Mathlib/NumberTheory/NumberField/AdeleRing.lean,Mathlib/NumberTheory/NumberField/InfinitePlace/Completion.lean,Mathlib/Topology/MetricSpace/Completion.lean |
4 |
2 |
['github-actions', 'mathlib4-merge-conflict-bot'] |
TwoFX assignee:TwoFX |
25-9389 25 days ago |
25-9651 25 days ago |
48-32516 48 days |
| 29362 |
stepanholub author:stepanholub |
feat:(Data/List) add the notion of period of List and prove the Periodicity Lemma |
Add the concept of the period of a List (word, sequence) which is missing, and prove its basic nontrivial property describing under which conditions list can have two periods known as the Periodicity Lemma (aka Fine-Wilf Theorem).
---
|
t-data
new-contributor
|
227/0 |
Mathlib.lean,Mathlib/Data/List/PeriodicityLemma.lean |
2 |
125 |
['Ruben-VandeVelde', 'Timeroot', 'fpvandoorn', 'github-actions', 'madvorak', 'plp127', 'stepanholub', 'wwylele'] |
pechersky assignee:pechersky |
24-33614 24 days ago |
50-55070 1 month ago |
68-51266 68 days |
| 30344 |
Deep0Thinking author:Deep0Thinking |
feat(MeasureTheory/Integral): add versions of `exists_eq_interval_average` and first mean value theorem for integrals |
Add the First mean value theorem for (unordered) interval integrals on ℝ.
- `exists_eq_const_mul_interval_integral_of_continuous_on_of_ae_nonneg`
- `exists_eq_const_mul_interval_integral_of_continuous_on_of_nonneg`
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-measure-probability
|
290/41 |
Mathlib.lean,Mathlib/MeasureTheory/Integral/IntervalAverage.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/MeanValue.lean |
3 |
9 |
['Deep0Thinking', 'github-actions', 'plp127'] |
RemyDegenne assignee:RemyDegenne |
24-29555 24 days ago |
36-50980 1 month ago |
36-51012 36 days |
| 27307 |
xyzw12345 author:xyzw12345 |
feat(RingTheory/GradedAlgebra): homogeneous relation |
This PR continues the work from #22279.
Original PR: https://github.com/leanprover-community/mathlib4/pull/22279 |
t-ring-theory |
391/0 |
Mathlib.lean,Mathlib/Algebra/Algebra/Equiv.lean,Mathlib/Algebra/DirectSum/Basic.lean,Mathlib/Algebra/DirectSum/Module.lean,Mathlib/Algebra/Module/LinearMap/Defs.lean,Mathlib/Algebra/Ring/Equiv.lean,Mathlib/Algebra/RingQuot.lean,Mathlib/RingTheory/GradedAlgebra/Basic.lean,Mathlib/RingTheory/GradedAlgebra/HomogeneousRelation.lean |
9 |
9 |
['chrisflav', 'eric-wieser', 'github-actions', 'ocfnash', 'xyzw12345'] |
mattrobball assignee:mattrobball |
23-8487 23 days ago |
101-60010 3 months ago |
116-71324 116 days |
| 30750 |
SnirBroshi author:SnirBroshi |
feat(Data/Quot): `toSet` and `equivClassOf` |
Define `toSet` which gets the set corresponding to an element of a quotient, and `equivClassOf` which gets the equivalence class of an element under a quotient.
---
I found these definitions helpful when working with quotients, specifically `ConnectedComponents` of a `TopologicalSpace`.
Additionally, I need `equivSigmaToSet` (in `Data/Setoid/Basic`) to prove things about `SimpleGraph.ConnectedComponent`.
[](https://gitpod.io/from-referrer/)
|
t-data |
179/0 |
Mathlib/Data/Quot.lean,Mathlib/Data/Set/Image.lean,Mathlib/Data/SetLike/Basic.lean,Mathlib/Data/Setoid/Basic.lean |
4 |
2 |
['eric-wieser', 'github-actions'] |
nobody |
23-2157 23 days ago |
23-78050 23 days ago |
23-78093 23 days |
| 30259 |
erdOne author:erdOne |
feat(Valuation): uniformizer of discrete valuation |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
31/0 |
Mathlib/RingTheory/Valuation/ValuativeRel/Basic.lean |
1 |
2 |
['github-actions', 'pechersky'] |
alreadydone assignee:alreadydone |
22-33608 22 days ago |
39-36312 1 month ago |
39-36350 39 days |
| 30336 |
kckennylau author:kckennylau |
feat(RingTheory): some lemmas about the irrelevant ideal |
This PR adds some lemmas about the irrelevant ideal of a graded ring, such as the fact that it is the iSup of each positively graded component.
---
Split from #26061.
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
49/5 |
Mathlib/RingTheory/GradedAlgebra/Homogeneous/Ideal.lean |
1 |
1 |
['github-actions'] |
mattrobball assignee:mattrobball |
22-33606 22 days ago |
36-65907 1 month ago |
36-65943 36 days |
| 30582 |
RemyDegenne author:RemyDegenne |
feat: extension of a function to the closure of a submodule |
- define the closure of a set in a complete space as an `AbstractCompletion`
- add instances about submodules
- add a coercion from a submodule to its topological closure
- add induction lemmas on topological closures of submodules
- define the extension of a function on a submodule to the closure of a submodule
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
138/1 |
Mathlib/Topology/Algebra/Module/Basic.lean,Mathlib/Topology/UniformSpace/AbstractCompletion.lean |
2 |
1 |
['github-actions'] |
PatrickMassot assignee:PatrickMassot |
22-33601 22 days ago |
29-73010 29 days ago |
29-73050 29 days |
| 30547 |
mariainesdff author:mariainesdff |
feat(Algebra/Polynomial/AlgebraMap): add Polynomial.mapAlgHom lemmas |
Co-authored by: @AntoineChambert-Loir
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
35/0 |
Mathlib/Algebra/Polynomial/AlgebraMap.lean |
1 |
n/a |
['erdOne', 'github-actions', 'mariainesdff'] |
nobody |
22-1499 22 days ago |
unknown |
unknown |
| 26332 |
Timeroot author:Timeroot |
feat(ModelTheory/Definability): TermDefinable functions |
This PR continues the work from #23506.
Original PR: https://github.com/leanprover-community/mathlib4/pull/23506 |
t-logic |
145/0 |
Mathlib/Data/Rel.lean,Mathlib/ModelTheory/Definability.lean,scripts/noshake.json |
3 |
29 |
['Timeroot', 'github-actions', 'mathlib4-merge-conflict-bot', 'staroperator'] |
fpvandoorn assignee:fpvandoorn |
22-678 22 days ago |
22-678 22 days ago |
141-3412 141 days |
| 26129 |
LessnessRandomness author:LessnessRandomness |
feat(Geometry/Euclidean/Angle/Unoriented): triangle inequality for angles |
This PR continues the work from #24206.
Original PR: https://github.com/leanprover-community/mathlib4/pull/24206 |
new-contributor
t-euclidean-geometry
|
202/15 |
Mathlib.lean,Mathlib/Analysis/Fourier/FiniteAbelian/Orthogonality.lean,Mathlib/Analysis/InnerProductSpace/Basic.lean,Mathlib/Analysis/InnerProductSpace/PiL2.lean,Mathlib/Geometry/Euclidean/Angle/Unoriented/Affine.lean,Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean,Mathlib/Geometry/Euclidean/Angle/Unoriented/TriangleInequality.lean,Mathlib/Geometry/Manifold/Instances/Sphere.lean |
8 |
85 |
['JovanGerb', 'LessnessRandomness', 'Timeroot', 'github-actions', 'jsm28', 'mathlib4-merge-conflict-bot', 'themathqueen'] |
jsm28 assignee:jsm28 |
21-76353 21 days ago |
24-62602 24 days ago |
145-45177 145 days |
| 30821 |
chriseth author:chriseth |
fix(Computability/Tape): introduce write-simplification theorem that uses `ListBlank.mk` |
Add a simplification theorem which is a version of `Tape.write_mk'` that solves a simplification dead-end:
If we have an expression of the form
`(Tape.mk' L (ListBlank.cons a (ListBlank.mk R))).write b`,
the theorem `Tape.write_mk'` would be applicable, but lean instead uses `ListBlank.cons_mk`, which turns it into
`(Tape.mk' L (ListBlank.mk (a :: R))).write b`
and makes `Tape.write_mk` no longer applicable because it requires `ListBlank.cons a R`, reaching a dead-end.
This PR adds an equivalent theorem whose LHS allows `ListBlank.mk (a :: R)`.
---
[](https://gitpod.io/from-referrer/)
|
t-computability
new-contributor
|
7/0 |
Mathlib/Computability/Tape.lean |
1 |
1 |
['github-actions'] |
nobody |
21-70383 21 days ago |
21-70392 21 days ago |
21-70435 21 days |
| 29422 |
jsm28 author:jsm28 |
fix(Data/Finset/Max): Use `DecidableEq` for `insert` lemmas |
These `insert` in these lemma statements uses a `DecidableEq` instance derived from `LinearOrder`; make them syntactically more general by passing in a `DecidableEq` instance separately. (Some `insert` lemmas in this file already take `DecidableEq` hypotheses.)
---
[](https://gitpod.io/from-referrer/)
|
t-data |
8/8 |
Mathlib/Data/Finset/Max.lean |
1 |
2 |
['eric-wieser', 'github-actions'] |
pechersky assignee:pechersky |
21-33631 21 days ago |
67-31576 2 months ago |
67-31552 67 days |
| 29437 |
SnirBroshi author:SnirBroshi |
feat(Data/Seq): add Seq.subsequence and prove basic theorems about it |
I added `Seq.subsequence` to compose a sequence with a monotone function, creating a subsequence. Aliased to `Seq.comp` since it's a composition.
I also added `Nat.le_induction_step_iff` which is needed to prove a subsequence is a sequence. This proves the comment at the top of `Defs.lean` that says "if `f n = none`, then `f m = none` for all `m ≥ n`" while `IsSeq` only talks about `n+1`.
For completion I added the same statement for `Int`.
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-data
new-contributor
|
104/0 |
Mathlib/Data/Int/Init.lean,Mathlib/Data/Nat/Init.lean,Mathlib/Data/Seq/Basic.lean,Mathlib/Data/Seq/Defs.lean |
4 |
2 |
['github-actions', 'mathlib4-merge-conflict-bot'] |
pechersky assignee:pechersky |
21-33631 21 days ago |
57-80834 1 month ago |
66-68322 66 days |
| 29526 |
llllvvuu author:llllvvuu |
feat: `Multiset.map f` identifies `f` up to permutation |
Motivation: Reason about `Fintype`-indexed families via `Multiset` equality.
Example use case 1:
```lean
theorem Matrix.IsHermitian.cfc_eigenvalues {d : Type*} [Fintype d] [DecidableEq d]
{M : Matrix d d 𝕜} (hM : M.IsHermitian) (f : ℝ → ℝ)
(hcfc : Matrix.IsHermitian (cfc f M) := cfc_predicate f M) :
∃ (e : d ≃ d), hcfc.eigenvalues = f ∘ hM.eigenvalues ∘ e := by
have := hcfc.roots_charpoly_eq_eigenvalues.symm
rw [hM.charpoly_cfc_eq f, Polynomial.roots_prod] at this; swap
· simp [Finset.prod_ne_zero_iff, Polynomial.X_sub_C_ne_zero]
simp_rw [Polynomial.roots_X_sub_C, Multiset.bind_singleton] at this
have he := (Multiset.compTriple_equivOfMapUnivEq this).comp_eq
simp_rw [← Function.comp_def RCLike.ofReal, ← Function.comp_def f, Function.comp_assoc] at he
exact ⟨_, RCLike.ofReal_injective.comp_left he.symm⟩
```
Example use case 2 (on top of https://github.com/leanprover-community/mathlib4/pull/29610):
```lean
theorem LinearMap.Eigenbasis.μ_equiv {ι ι' R G : Type*} [Fintype ι] [Fintype ι']
[CommRing R] [IsDomain R] [AddCommGroup G] [Module R G] [Module.Free R G] [Module.Finite R G]
{f : Module.End R G} (B₁ : f.Eigenbasis ι) (B₂ : f.Eigenbasis ι') :
∃ e : ι ≃ ι', B₁.μ = B₂.μ ∘ e := by
classical
have := congr(Polynomial.roots $(B₁.charpoly_eq.symm.trans B₂.charpoly_eq))
rw [Polynomial.roots_prod, Polynomial.roots_prod] at this; rotate_left
· simp [Finset.prod_ne_zero_iff, Polynomial.X_sub_C_ne_zero]
· simp [Finset.prod_ne_zero_iff, Polynomial.X_sub_C_ne_zero]
simp_rw [Polynomial.roots_X_sub_C, Multiset.bind_singleton] at this
exact ⟨Multiset.equivOfMapUnivEq this, (Multiset.compTriple_equivOfMapUnivEq this).comp_eq.symm⟩
```
Co-authored-by: Aristotle Harmonic
---
[](https://gitpod.io/from-referrer/)
|
t-data |
35/0 |
Mathlib/Data/Multiset/Fintype.lean |
1 |
8 |
['Ruben-VandeVelde', 'github-actions', 'llllvvuu', 'vihdzp', 'wwylele'] |
pechersky assignee:pechersky |
20-33622 20 days ago |
64-32028 2 months ago |
64-32020 64 days |
| 29982 |
hrmacbeth author:hrmacbeth |
feat: new `isolate` tactic |
This PR adds a new tactic, `isolate`, which "solves for x" in an equation or relation. For example:
```lean
example (a b : ℝ) (f : ℝ → ℝ) : 5 * f a - 3 < b := by
isolate f a
-- new goal: `⊢ f a < (b + 3) / 5`
```
The `isolate` tactic may generate side goals, if these are necessary to justify the transformation. The tactic will attempt to justify such side goals using `positivity` (as in the above example), unification, or type class inference, but if unsuccessful will present them to the user. For example:
```lean
example (a b c : ℝ) (f : ℝ → ℝ) : c * f a - 3 < b := by
isolate f a
-- new goal: `⊢ f a < (b + 3) / c`
-- second (side) new goal: `⊢ 0 < c`
```
The `isolate` tactic is extensible. Coverage may be extended to new relations and new operations-to-be-undone by tagging appropriate lemmas with the new `@[isolate]` attribute.
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-meta
|
863/3 |
Mathlib.lean,Mathlib/Analysis/SpecialFunctions/Log/Basic.lean,Mathlib/Analysis/SpecialFunctions/Pow/Real.lean,Mathlib/Data/Real/Sqrt.lean,Mathlib/Tactic.lean,Mathlib/Tactic/Isolate.lean,Mathlib/Tactic/Isolate/Core.lean,Mathlib/Tactic/Isolate/Tagging.lean,Mathlib/Tactic/Relation/Symm.lean,MathlibTest/Isolate/Heavyweight.lean,MathlibTest/Isolate/Lightweight.lean,scripts/noshake.json |
12 |
24 |
['JovanGerb', 'PatrickMassot', 'github-actions', 'hrmacbeth', 'kim-em'] |
JovanGerb assignee:JovanGerb |
20-17687 20 days ago |
48-45772 1 month ago |
48-45755 48 days |
| 30882 |
themathqueen author:themathqueen |
feat(Data/Nat/Fib): the Cassini and Catalan identities |
The [Cassini and Catalan identities](https://en.wikipedia.org/wiki/Cassini_and_Catalan_identities) are identities for the Fibonacci numbers.
* Cassini's identity: `fib (n + 1) * fib (n - 1) - fib n ^ 2 = (-1) ^ n` for nonzero `n`.
* Catalan's identity: `fib (x + a) ^ 2 - fib (x + 2 * a) * fib x = fib a ^ 2 * (-1) ^ x` for nonzero `x` and `a`.
---
[](https://gitpod.io/from-referrer/)
|
t-data
t-algebra
label:t-algebra$ |
93/0 |
Mathlib.lean,Mathlib/Data/Matrix/Mul.lean,Mathlib/Data/Nat/Fib/Lemmas.lean |
3 |
13 |
['github-actions', 'themathqueen', 'vihdzp'] |
nobody |
19-39793 19 days ago |
19-43198 19 days ago |
19-43922 19 days |
| 30436 |
wwylele author:wwylele |
feat(Topology/InfiniteSum): tprod_one_{add/sub}_ordered |
This extends the existing `Finset.prod_one_sub_ordered` to infinite sum/product, and also adds the more natural `add` version.
Together with some previous PRs about infinite sum/prod and powerseries, this is part of my effort of upstreaming useful stuff from https://github.com/wwylele/PentagonalNumberTheorem. It starts getting into niche lemma, so suggestions such that not wanting this in mathlib, or it should be stated in a different form, are all welcomed.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
44/0 |
Mathlib/Algebra/BigOperators/Ring/Finset.lean,Mathlib/Topology/Algebra/InfiniteSum/Ring.lean |
2 |
1 |
['github-actions'] |
grunweg assignee:grunweg |
19-33611 19 days ago |
26-58660 26 days ago |
33-78384 33 days |
| 27946 |
plp127 author:plp127 |
refactor: have `MetrizableSpace` not depend on `MetricSpace` |
Some theorems for uniform spaces with a countably generated uniformity do not mention their uniformity in any of the hypotheses or the conclusion (for example `UniformSpace.isCompact_iff_isSeqCompact`). This PR allows those theorems to be stated for (pseudo)metrizable spaces without importing the real numbers.
- Use `TopologicalSpace.pseudoMetrizableSpaceUniformity` to endow a pseudometrizable space with a compatible uniformity,
and use `TopologicalSpace.pseudoMetrizableSpaceUniformity_countably_generated` to show that this is countably generated.
- `TopologicalSpace.pseudoMetrizableSpacePseudoMetric` and `TopologicalSpace.metrizableSpaceMetric` have been moved to `Mathlib/Topology/Metrizable/Uniformity.lean`.
See also #2032
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
128/102 |
Mathlib/Analysis/Fourier/RiemannLebesgueLemma.lean,Mathlib/Topology/Compactness/PseudometrizableLindelof.lean,Mathlib/Topology/GDelta/MetrizableSpace.lean,Mathlib/Topology/Metrizable/Basic.lean,Mathlib/Topology/Metrizable/ContinuousMap.lean,Mathlib/Topology/Metrizable/Real.lean,Mathlib/Topology/Metrizable/Uniformity.lean |
7 |
15 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'plp127', 'urkud', 'vihdzp'] |
urkud assignee:urkud |
17-67507 17 days ago |
32-66737 1 month ago |
101-53759 101 days |
| 30293 |
vlad902 author:vlad902 |
feat(SimpleGraph): there exists a maximal path/trail in a graph with finite edges |
Inspired by [this Zulip thread](https://leanprover.zulipchat.com/#narrow/channel/252551-graph-theory/topic/Help.20me.20learn.20good.20style.3A.20IsTree/near/543395218)
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
27/1 |
Mathlib/Combinatorics/SimpleGraph/Paths.lean |
1 |
2 |
['github-actions', 'vlad902'] |
awainverse assignee:awainverse |
17-33628 17 days ago |
38-2802 1 month ago |
38-2834 38 days |
| 29960 |
yonggyuchoimath author:yonggyuchoimath |
feat(Algebra/Category/Ring): equalizers of pushout maps of tensor product inclusions |
This PR defines a ring map `S →ₗ[R] S ⊗[R] S : s ↦ (s ⊗ₜ[R] 1) - (1 ⊗ₜ[R] s)` for an `R`-algebra `S`, and show that its kernel is exactly (the image of) `R` if `S` is faithfully flat over `R`.
Changes:
* `TensorProduct.AlgebraTensorModule.distribBaseChange`: Origianlly takes `M` and `N`, where `M` is an `R`-module with an additional instance `IsScalarTower R A M`. This is unnecessary, so I changed the `M` and `N` into `N` and `Q`, now both of which are merely modules over `R`.
Main results :
* Add compatibility of `Algebra.TensorProduct.includeLeft` (or `Algebra.TensorProduct.includeRight`) with `TensorProduct.AlgebraTensorModule.distribBaseChange` and `LinearMap.lTensor`
* Define `Algebra.TensorProduct.includeLeftSubRight`, which is the `R`-linear map `S →ₗ[R] S ⊗[R] S` sending `s : S` to `(s ⊗ₜ[R] 1) - (1 ⊗ₜ[R] s)`.
* `Algebra.TensorProduct.exactIncludeLeftSubRight_of_faithfullyFlat`: the pair `algebraMap : R → S` and `includeLeftSubRight R S : S → S ⊗[R] S` is exact if `S` is a faithfully flat `R`-algebra.
---
- [x] depends on: #30806 |
new-contributor |
223/1 |
Mathlib.lean,Mathlib/LinearAlgebra/TensorProduct/Tower.lean,Mathlib/RingTheory/TensorProduct/IncludeLeftSubRight.lean,Mathlib/RingTheory/TensorProduct/Maps.lean |
4 |
7 |
['erdOne', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'yonggyuchoimath'] |
TwoFX assignee:TwoFX |
17-22538 17 days ago |
17-25809 17 days ago |
45-7788 45 days |
| 29539 |
YaelDillies author:YaelDillies |
feat: monoid algebras are invariant under base change |
From Toric
Co-authored-by: Michał Mrugała
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
toric
large-import
|
112/6 |
Mathlib.lean,Mathlib/Algebra/MonoidAlgebra/Basic.lean,Mathlib/RingTheory/TensorProduct/MonoidAlgebra.lean |
3 |
6 |
['YaelDillies', 'github-actions', 'mathlib4-merge-conflict-bot', 'plp127'] |
mattrobball assignee:mattrobball |
17-9651 17 days ago |
17-9673 17 days ago |
63-47618 63 days |
| 29186 |
winstonyin author:winstonyin |
feat: IsIntegralCurve for solutions to ODEs |
I define `IsIntegralCurve` etc. for solutions to ODEs on vector spaces. The translation and scaling lemmas are also included. This parallels `IsMIntegralCurve` etc. for manifolds.
Moved from #26534.
- [x] depends on: #26563
---
[](https://gitpod.io/from-referrer/)
|
t-dynamics
t-analysis
t-differential-geometry
|
298/100 |
Mathlib.lean,Mathlib/Analysis/ODE/Basic.lean,Mathlib/Analysis/ODE/Transform.lean,Mathlib/Geometry/Manifold/IntegralCurve/Basic.lean,Mathlib/Geometry/Manifold/IntegralCurve/Transform.lean |
5 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
grunweg and sgouezel assignee:grunweg assignee:sgouezel |
17-7704 17 days ago |
74-53466 2 months ago |
74-53602 74 days |
| 25856 |
MichaelStollBayreuth author:MichaelStollBayreuth |
perf(Data.Real.Sqrt): make Real.sqrt irreducible |
We try to see what happens if we make Real.sqrt irreducible.
There are cases where this makes unification very significantly faster, compare [#mathlib4 > Coercion triggers timeout @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Coercion.20triggers.20timeout/near/517177117).
(Migrated manually from #24752)
---
[](https://gitpod.io/from-referrer/)
|
migrated-from-branch
t-data
|
7/5 |
Mathlib/Data/Real/Sqrt.lean |
1 |
6 |
['MichaelStollBayreuth', 'github-actions', 'j-loreaux', 'leanprover-bot'] |
ericrbg assignee:ericrbg |
16-80838 16 days ago |
74-52481 2 months ago |
143-79071 143 days |
| 25945 |
adomani author:adomani |
feat: the empty line in commands linter |
This linter flags empty lines within a command.
It allows empty lines within doc-strings, module-docs and a couple of other "sensible" places.
It also skips files that are likely to contain meta-code, since there the use of empty lines in definition is more widespread.
This PR continues the work from #25236. |
large-import
t-linter
|
380/22 |
Mathlib.lean,Mathlib/Algebra/Polynomial/RuleOfSigns.lean,Mathlib/Analysis/Meromorphic/FactorizedRational.lean,Mathlib/CategoryTheory/Comma/StructuredArrow/CommaMap.lean,Mathlib/CategoryTheory/Monoidal/Opposite/Mon_.lean,Mathlib/Data/UInt.lean,Mathlib/Init.lean,Mathlib/RepresentationTheory/Homological/GroupHomology/LowDegree.lean,Mathlib/RingTheory/Flat/TorsionFree.lean,Mathlib/RingTheory/HahnSeries/HahnEmbedding.lean,Mathlib/Tactic.lean,Mathlib/Tactic/Linter/EmptyLine.lean,MathlibTest/EmptyLine.lean |
13 |
23 |
['adomani', 'bryangingechen', 'eric-wieser', 'github-actions', 'mathlib4-merge-conflict-bot'] |
bryangingechen assignee:bryangingechen |
16-61866 16 days ago |
17-3165 17 days ago |
64-43507 64 days |
| 30620 |
plp127 author:plp127 |
feat: copy LE and LT on preorder and partial order |
Adds `Preorder.copy` and `PartialOrder.copy` for replacing the le and lt with provably equal ones.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
22/0 |
Mathlib/Order/Defs/PartialOrder.lean |
1 |
1 |
['github-actions'] |
Vierkantor assignee:Vierkantor |
16-33605 16 days ago |
28-43185 28 days ago |
28-43229 28 days |
| 30069 |
IvanRenison author:IvanRenison |
feat(Combinatorics/SimpleGraph): add lemma `IsTree.dist_ne_of_adj` and necessary lemmas |
This contribution was created as part of the Utrecht Summerschool "Formalizing Mathematics in Lean" in July 2025.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
34/0 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean |
1 |
8 |
['github-actions', 'mathlib4-merge-conflict-bot', 'themathqueen', 'vlad902'] |
kmill assignee:kmill |
16-7173 16 days ago |
16-7173 16 days ago |
44-58087 44 days |
| 29946 |
smmercuri author:smmercuri |
feat(InfinitePlace/Ramification): embeddings of unramified/ramified infinite places satisfy `IsUnmixed/IsMixed` |
---
- [x] depends on: #29945
[](https://gitpod.io/from-referrer/)
|
FLT
t-number-theory
|
67/2 |
Mathlib/NumberTheory/NumberField/InfinitePlace/Ramification.lean |
1 |
5 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'smmercuri', 'xroblot'] |
alexjbest assignee:alexjbest |
15-52866 15 days ago |
15-53194 15 days ago |
45-79989 45 days |
| 30800 |
dagurtomas author:dagurtomas |
feat(Condensed): cartesian monoidal functor LightProfinite -> LightCondSet |
---
[](https://gitpod.io/from-referrer/)
|
large-import |
137/4 |
Mathlib.lean,Mathlib/Condensed/Light/Functors.lean,Mathlib/Topology/Category/CompHausLike/Cartesian.lean,Mathlib/Topology/Category/LightProfinite/Cartesian.lean |
4 |
2 |
['dagurtomas', 'github-actions'] |
adamtopaz assignee:adamtopaz |
15-33606 15 days ago |
22-50895 22 days ago |
22-50939 22 days |
| 30131 |
fpvandoorn author:fpvandoorn |
feat: alias_in attribute |
* A small wrapper for adding an alias of a declaration in another namespace.
* application time `.afterCompilation` is necessary for `#eval` to work correctly
* Docstrings are copied, jump-to-definition works (no test in the test file, but tested locally)
* To be used for CW-complexes, where lemmas are frequently duplicated between `RelCWComplex` and `CWComplex`.
---
[](https://gitpod.io/from-referrer/)
cc @scholzhannah
|
t-meta |
93/0 |
Mathlib.lean,Mathlib/Util/AliasIn.lean,MathlibTest/Util/AliasIn.lean |
3 |
13 |
['JovanGerb', 'fpvandoorn', 'github-actions'] |
JovanGerb assignee:JovanGerb |
14-74071 14 days ago |
42-63609 1 month ago |
42-63587 42 days |
| 30936 |
themathqueen author:themathqueen |
feat(Data/Int): define `Int.fib`, the Fibonacci numbers on the integers |
We define `Int.fib`, the integer version of `Nat.fib`, which satisfies `Int.fib 0 = 0`, `Int.fib 1 = 1`, and `Int.fib (n + 2) = Int.fib n + Int.fib (n + 1)`.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
172/0 |
Mathlib.lean,Mathlib/Data/Int/Fib.lean |
2 |
11 |
['Ruben-VandeVelde', 'github-actions', 'themathqueen', 'vihdzp'] |
nobody |
14-306 14 days ago |
17-68335 17 days ago |
18-64001 18 days |
| 30758 |
Timeroot author:Timeroot |
chore: tag abs_inv and abs_div with grind= |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
2/1 |
Mathlib/Algebra/Order/Field/Basic.lean |
1 |
n/a |
['github-actions'] |
nobody |
13-85420 13 days ago |
unknown |
unknown |
| 27664 |
pechersky author:pechersky |
feat(Topology,Analysis): discrete topology metric space and normed groups |
Explicit construction of the discrete topology metric space and normed groups where `dist x y = 1` for all `x != y`
Provide PseudoMetricSpace, MetricSpace, Seminormed(Add)Group, and Normed(Add)Group constructions
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
138/0 |
Mathlib/Analysis/Normed/Group/Basic.lean,Mathlib/Topology/MetricSpace/Basic.lean,Mathlib/Topology/MetricSpace/Pseudo/Constructions.lean |
3 |
6 |
['github-actions', 'kckennylau', 'mathlib4-merge-conflict-bot', 'pechersky'] |
urkud assignee:urkud |
13-67869 13 days ago |
13-70722 13 days ago |
107-19539 107 days |
| 26588 |
faenuccio author:faenuccio |
feat(Algebra/GroupWithZero/WithZero): add the multiplicative embedding with zero from the range |
We extend the embedding of the range of a `MonoidWithZeroHom` to the codomain by enriching it with the structure of an ordered, multiplicative embedding. In passing, we extend some results about the embedding of `WithZero` of the units of a group with zero, to the group itself.
Co-authored by: María Inés de Frutos Fernández @mariainesdff
---
- [x] depends on: #29594
- [x] depends on: #29644
[](https://gitpod.io/from-referrer/)
|
t-order
t-algebra
label:t-algebra$ |
114/2 |
Mathlib.lean,Mathlib/Algebra/GroupWithZero/Range.lean,Mathlib/Algebra/Order/GroupWithZero/Range.lean |
3 |
108 |
['YaelDillies', 'eric-wieser', 'faenuccio', 'github-actions', 'leanprover-community-bot-assistant', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'pechersky'] |
YaelDillies assignee:YaelDillies |
13-52182 13 days ago |
17-76042 17 days ago |
51-13893 51 days |
| 30525 |
515801431 author:515801431 |
Polya_counting |
This PR introduces basic definitions and results about colorings under permutation group actions.
A coloring is defined as a function X → Y, and the permutation group Equiv.Perm X acts on colorings by precomposition:
(g • c) x = c (g⁻¹ • x)
This formalizes the natural action of relabeling the elements of X.
Main definitions
MulAction (Equiv.Perm X) (X → Y):
The action of the permutation group on colorings via precomposition.
coloringEquiv (c₁ c₂ : X → Y) : Prop:
Two colorings are equivalent if they lie in the same orbit under this action, i.e.
∃ f : Equiv.Perm X, f • c₁ = c₂.
Main results
smul_eq_iff_mem_stabilizer:
Characterizes when two group actions on the same coloring are equal, showing that
g • c = f • c ↔ f⁻¹ * g ∈ stabilizer c.
coloringEquiv_equivalence:
Proves that coloringEquiv defines an equivalence relation on X → Y.
orbit_size_eq_index:
Reformulates the orbit–stabilizer theorem in the context of colorings:
|orbit c| = |Perm X| / |stabilizer c|
Motivation
These results provide foundational infrastructure for studying Burnside’s lemma and Pólya’s enumeration theorem in Mathlib, where the enumeration of distinct colorings up to symmetry plays a central role. |
new-contributor
t-combinatorics
|
109/0 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Polya.lean |
2 |
2 |
['IvanRenison', 'github-actions'] |
awainverse assignee:awainverse |
13-33605 13 days ago |
31-27619 1 month ago |
31-27656 31 days |
| 30768 |
tb65536 author:tb65536 |
chore(GroupTheory/Subgroup/Centralizer): replace `centralizer (zpowers s)` with `centralizer {s}` |
This PR fixes some lingering technical debt from two years ago: https://github.com/leanprover-community/mathlib3/pull/18965
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory
t-algebra
label:t-algebra$ |
32/34 |
Mathlib/Algebra/Group/Subgroup/ZPowers/Lemmas.lean,Mathlib/GroupTheory/Finiteness.lean,Mathlib/GroupTheory/GroupAction/ConjAct.lean,Mathlib/GroupTheory/GroupAction/Quotient.lean,Mathlib/GroupTheory/Index.lean,Mathlib/GroupTheory/Subgroup/Centralizer.lean,Mathlib/RingTheory/Ideal/Operations.lean,Mathlib/Topology/Algebra/Group/SubmonoidClosure.lean,Mathlib/Topology/Instances/AddCircle/Defs.lean |
9 |
1 |
['github-actions'] |
mattrobball assignee:mattrobball |
13-33602 13 days ago |
22-49210 22 days ago |
22-49188 22 days |
| 30855 |
Ruben-VandeVelde author:Ruben-VandeVelde |
fix: deprecate IsTotal in favour of Std.Total |
---
[](https://gitpod.io/from-referrer/)
|
RFC |
208/111 |
Mathlib/Algebra/Group/Basic.lean,Mathlib/Algebra/Order/Archimedean/Class.lean,Mathlib/Algebra/Order/GroupWithZero/Canonical.lean,Mathlib/Algebra/Order/Ring/Canonical.lean,Mathlib/Data/Finset/Sort.lean,Mathlib/Data/List/Sort.lean,Mathlib/Data/Multiset/Sort.lean,Mathlib/Data/Nat/PartENat.lean,Mathlib/Data/Ordmap/Invariants.lean,Mathlib/Data/Ordmap/Ordset.lean,Mathlib/Data/Prod/Basic.lean,Mathlib/Data/Prod/Lex.lean,Mathlib/Data/Real/Basic.lean,Mathlib/Data/Sigma/Lex.lean,Mathlib/Data/Sigma/Order.lean,Mathlib/Data/Sum/Order.lean,Mathlib/Logic/Encodable/Basic.lean,Mathlib/Order/Antisymmetrization.lean,Mathlib/Order/Basic.lean,Mathlib/Order/Comparable.lean,Mathlib/Order/Compare.lean,Mathlib/Order/Defs/Unbundled.lean,Mathlib/Order/Directed.lean,Mathlib/Order/Filter/FilterProduct.lean,Mathlib/Order/Lattice.lean,Mathlib/Order/PropInstances.lean,Mathlib/Order/RelClasses.lean,Mathlib/Order/RelIso/Basic.lean,Mathlib/Order/UpperLower/CompleteLattice.lean,Mathlib/Order/WithBot.lean,Mathlib/RingTheory/Valuation/ValuationRing.lean,Mathlib/RingTheory/Valuation/ValuationSubring.lean,Mathlib/Topology/EMetricSpace/BoundedVariation.lean |
33 |
1 |
['github-actions'] |
alexjbest assignee:alexjbest |
13-33598 13 days ago |
20-70298 20 days ago |
20-70276 20 days |
| 30867 |
erdOne author:erdOne |
feat(RingTheory/Etale): standard etale maps |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
315/1 |
Mathlib.lean,Mathlib/Algebra/Polynomial/Bivariate.lean,Mathlib/Algebra/Polynomial/Taylor.lean,Mathlib/RingTheory/Etale/StandardEtale.lean,Mathlib/RingTheory/Ideal/Quotient/Operations.lean |
5 |
1 |
['github-actions'] |
mariainesdff assignee:mariainesdff |
13-33596 13 days ago |
20-40768 20 days ago |
20-47217 20 days |
| 31119 |
LLaurance author:LLaurance |
feat(Combinatorics/SimpleGraph/Walk): a vertex of a walk is in its tail starting from the second vertex onwards |
Add helper theorems for https://github.com/leanprover-community/mathlib4/pull/29309
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
10/0 |
Mathlib/Combinatorics/SimpleGraph/Walk.lean |
1 |
3 |
['SnirBroshi', 'github-actions'] |
nobody |
13-15110 13 days ago |
14-1780 14 days ago |
14-2487 14 days |
| 30322 |
kckennylau author:kckennylau |
feat(RingTheory): base change of graded algebra |
In this file we show that if `𝒜` is a graded `R`-algebra, and `S` is any `R`-algebra, then `S ⊗[R] 𝒜` (which is actually `fun i ↦ (𝒜 i).baseChange S`) is a graded `S`-algebra with the same grading.
---
Split from #26061.
[](https://gitpod.io/from-referrer/)
|
|
272/47 |
Mathlib.lean,Mathlib/Algebra/DirectSum/Basic.lean,Mathlib/Algebra/DirectSum/Decomposition.lean,Mathlib/Algebra/DirectSum/Module.lean,Mathlib/Algebra/Order/Module/HahnEmbedding.lean,Mathlib/LinearAlgebra/DirectSum/Finsupp.lean,Mathlib/LinearAlgebra/DirectSum/TensorProduct.lean,Mathlib/LinearAlgebra/TensorProduct/Decomposition.lean,Mathlib/LinearAlgebra/TensorProduct/Tower.lean,Mathlib/RingTheory/Flat/Basic.lean,Mathlib/RingTheory/Flat/FaithfullyFlat/Basic.lean,Mathlib/RingTheory/GradedAlgebra/TensorProduct.lean |
12 |
2 |
['github-actions', 'mathlib4-merge-conflict-bot'] |
dupuisf assignee:dupuisf |
13-5917 13 days ago |
13-38509 13 days ago |
35-50416 35 days |
| 31120 |
LLaurance author:LLaurance |
feat(Combinatorics/SimpleGraph/Connectivity/Subgraph): toSubgraph and Subgraph.map preserve connectivity |
Add helper theorems for https://github.com/leanprover-community/mathlib4/pull/29309
---
- [ ] depends on : #31118
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
42/0 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean |
1 |
1 |
['github-actions'] |
nobody |
12-84728 12 days ago |
13-13381 13 days ago |
14-263 14 days |
| 30880 |
themathqueen author:themathqueen |
feat(Analysis/InnerProductSpace): finite-dimensional inner product space with coalgebra implies an algebra structure |
A finite-dimensional inner product space with a coalgebra structure also has an algebra structure by taking adjoints of the comultiplication map and counit map, i.e., `x * y = (adjoint comul) (x ⊗ₜ y)` and `algebraMap = adjoint counit`.
TODO:
There is also the opposite implication, i.e., a finite-dimensional inner product space with an algebra structure implies a coalgebra where `counit = adjoint Algebra.linearMap` and `comul = adjoint mul'`.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
123/0 |
Mathlib.lean,Mathlib/Analysis/InnerProductSpace/Coalgebra.lean,Mathlib/Analysis/InnerProductSpace/TensorProduct.lean |
3 |
1 |
['github-actions'] |
urkud assignee:urkud |
12-33609 12 days ago |
19-77129 19 days ago |
19-82708 19 days |
| 30345 |
vlad902 author:vlad902 |
feat(Order): replace the implementation of `Set.chainHeight` |
`Set.chainHeight` is unused in Mathlib--it was a previous attempt to formalize heights for preorders before `Order.height` came into use. The current implementation `Set.chainHeight` is previously defined for Sets that had an `LT` order but it's behavior was unexpected for relations that were not strict orders, e.g. singleton sets with a reflexive relation would have infinite height.
LE is such a relation so this implementation is very limited in what it could be used for. I replace it with an implementation that:
- Is defined for arbitrary relations instead of using `[LT]`.
- Uses `IsChain` instead of `List.IsChain` for defining chains. This is equivalent for transitive relations, but behaves differently for non- transitive relations--it requires that all elements in the set are comparable instead of just comparability between neighboring elements in the List. This makes the definition better behaved for e.g. reflexive relations and better matches the definition of chain height typically used in the literature.
The API has been slimmed down but what remains largely matches the previous API.
Discussed on [Zulip](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Definitions.20for.20chain.20height.2Fpartitions/near/542823244)
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-order
|
133/292 |
Mathlib/Order/Height.lean |
1 |
6 |
['Vierkantor', 'github-actions', 'mathlib4-merge-conflict-bot', 'vlad902'] |
b-mehta assignee:b-mehta |
11-43789 11 days ago |
11-43789 11 days ago |
29-51889 29 days |
| 31178 |
morrison-daniel author:morrison-daniel |
feat(LinearAlgebra/Multilinear): basis for multilinear maps |
Adds a basis for MulilinearMap given bases for the domain and codomain.
This PR builds upon work started in #25141 toward #11155.
---
[](https://gitpod.io/from-referrer/)
|
large-import
new-contributor
t-algebra
label:t-algebra$ |
567/10 |
Mathlib.lean,Mathlib/LinearAlgebra/DFinsupp/PiTensorProduct.lean,Mathlib/LinearAlgebra/DirectSum/Finsupp.lean,Mathlib/LinearAlgebra/DirectSum/PiTensorProduct.lean,Mathlib/LinearAlgebra/Multilinear/Basic.lean,Mathlib/LinearAlgebra/Multilinear/Basis.lean,Mathlib/LinearAlgebra/Multilinear/DFinsupp.lean,Mathlib/LinearAlgebra/Multilinear/DirectSum.lean,Mathlib/LinearAlgebra/Multilinear/Finsupp.lean,Mathlib/LinearAlgebra/Multilinear/Pi.lean |
10 |
n/a |
['github-actions'] |
nobody |
11-43471 11 days ago |
unknown |
unknown |
| 30363 |
smmercuri author:smmercuri |
feat: `PadicInt` is isomorphic to the integers of the uniform space completion `(Rat.padicValuation p).Completion` |
- Uniform and ring isomorphisms between `𝒪[(Rat.padicValuation p).Completion]` and `ℤ_[p]`
- A homeomorphism `e : X ≃ Y` gives a closed set `{ x : X | p x ↔ q (e x) }` for clopen subsets given by `p` and `q`
- Move `Padic.isUnit_den` to an earlier file to avoid having to import `Padics.RingHoms` unnecessarily
---
- [x] depends on: #30361
[](https://gitpod.io/from-referrer/)
|
|
86/21 |
Mathlib/Algebra/Ring/Subring/Basic.lean,Mathlib/NumberTheory/Padics/PadicIntegers.lean,Mathlib/NumberTheory/Padics/RingHoms.lean,Mathlib/NumberTheory/Padics/WithVal.lean,Mathlib/Topology/Homeomorph/Defs.lean |
5 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
dwrensha assignee:dwrensha |
10-85776 10 days ago |
35-63760 1 month ago |
35-66294 35 days |
| 30881 |
FlAmmmmING author:FlAmmmmING |
feat(RingTheory/PowerSeries/Schroder.lean) : Define the generating function for large and small Schroder number |
Define the generating function for large and small Schroder number.
Main result : Prove some lemmas and the generating function of large Schroder.
Todo : Prove the generating function of small Schroder.
- depends on: #30609
---
[](https://gitpod.io/from-referrer/)
|
new-contributor |
350/1 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Catalan.lean,Mathlib/RingTheory/PowerSeries/Schroder.lean |
3 |
1 |
['github-actions'] |
dwrensha assignee:dwrensha |
10-80260 10 days ago |
19-81886 19 days ago |
19-81876 19 days |
| 30439 |
plp127 author:plp127 |
feat: `norm_num` extension for `IsSquare` on `Nat`, `Int`, `Rat` |
Write a `norm_num` extension to evaluate `IsSquare` for `Nat`, `Int`, `Rat`.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
152/1 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/NormNum/IsSquare.lean,MathlibTest/norm_num_ext.lean |
4 |
10 |
['Rob23oba', 'dwrensha', 'github-actions', 'plp127', 'vasnesterov'] |
dwrensha assignee:dwrensha |
10-49326 10 days ago |
33-69941 1 month ago |
33-69975 33 days |
| 31107 |
rudynicolop author:rudynicolop |
feat(Data/Multiset): add Multiset filter and bind lemmas |
Add basic lemmas equating `Multiset` `filter`, `filterMap`, `join`, and `bind` operations.
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
67/2 |
Mathlib/Data/Multiset/Bind.lean,Mathlib/Data/Multiset/Filter.lean |
2 |
7 |
['Ruben-VandeVelde', 'github-actions', 'rudynicolop'] |
nobody |
10-32323 10 days ago |
14-43020 14 days ago |
14-43059 14 days |
| 30391 |
rudynicolop author:rudynicolop |
feat(Data/List): list splitting definitions and lemmas |
This PR continues the work from #24395.
Original PR: https://github.com/leanprover-community/mathlib4/pull/24395 |
t-data
new-contributor
|
154/2 |
Mathlib/Data/List/Perm/Lattice.lean,Mathlib/Data/List/TakeDrop.lean |
2 |
7 |
['BoltonBailey', 'github-actions', 'rudynicolop'] |
nobody |
10-31811 10 days ago |
35-40192 1 month ago |
35-40229 35 days |
| 27308 |
xyzw12345 author:xyzw12345 |
feat(LinearAlgebra/SymmetricAlgebra): IsSymmetricAlgebra |
This PR continues the work from #24602.
Original PR: https://github.com/leanprover-community/mathlib4/pull/24602 |
t-algebra label:t-algebra$ |
107/1 |
Mathlib/LinearAlgebra/SymmetricAlgebra/Basic.lean,Mathlib/LinearAlgebra/SymmetricAlgebra/Basis.lean |
2 |
13 |
['github-actions', 'kckennylau', 'mattrobball', 'xyzw12345'] |
mattrobball assignee:mattrobball |
9-81175 9 days ago |
9-84805 9 days ago |
116-20047 116 days |
| 25907 |
mans0954 author:mans0954 |
feat: low order roots of unity |
This PR continues the work from #25470.
Original PR: https://github.com/leanprover-community/mathlib4/pull/25470 |
t-algebra label:t-algebra$ |
182/0 |
Mathlib/Algebra/CharP/Invertible.lean,Mathlib/RingTheory/RootsOfUnity/Complex.lean |
2 |
3 |
['github-actions', 'mans0954', 'urkud'] |
jcommelin assignee:jcommelin |
9-70725 9 days ago |
151-79076 4 months ago |
151-79116 151 days |
| 31103 |
YaelDillies author:YaelDillies |
feat: removing leaves from a connected graph keeps it connected |
... using properties of 2-connected components.
From the ProofBench workshop
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
78/0 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Data/List/Nodup.lean |
2 |
6 |
['SnirBroshi', 'YaelDillies', 'b-mehta', 'github-actions'] |
nobody |
9-65220 9 days ago |
10-4340 10 days ago |
14-35726 14 days |
| 30639 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Connectivity/Connected): `IsBridge` is antitone |
---
- [x] depends on: #30602
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
6/0 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean |
1 |
5 |
['SnirBroshi', 'b-mehta', 'github-actions', 'mathlib4-dependent-issues-bot'] |
nobody |
9-63644 9 days ago |
9-63839 9 days ago |
9-74388 9 days |
| 29758 |
SnirBroshi author:SnirBroshi |
feat(RingTheory/RootsOfUnity): exp(pi * i * q) is a root of unity for rational q |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
33/4 |
Mathlib/RingTheory/RootsOfUnity/Complex.lean |
1 |
7 |
['Ruben-VandeVelde', 'SnirBroshi', 'chrisflav', 'github-actions', 'kckennylau'] |
chrisflav assignee:chrisflav |
9-50811 9 days ago |
9-50824 9 days ago |
55-56687 55 days |
| 30246 |
dwrensha author:dwrensha |
make Nat.digits use well-founded recursion once again |
#25864 made `Nat.digits` structurally recursive, which has some benefits. In doing so, however, it added significant complexity. As brought up in [this zulip thread](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/structural.20recursion.20instead.20of.20well.20founded/near/543172385), on the balance that PR might not be considered an improvement.
The present PR reverts that change (but keeps a code golf that was bundled with it).
Note that recent improvements to core Lean mean that `simp` can handle the structurally recursive version without a problem:
```lean
example : digits 10 123456789 = [9,8,7,6,5,4,3,2,1] := by
simp [digits, digitsAux]
```
---
[](https://gitpod.io/from-referrer/)
|
t-data |
7/45 |
Mathlib/Data/Nat/Digits/Defs.lean |
1 |
8 |
['alreadydone', 'dwrensha', 'github-actions', 'j-loreaux', 'plp127'] |
TwoFX assignee:TwoFX |
9-50457 9 days ago |
39-61955 1 month ago |
39-61987 39 days |
| 31243 |
FlAmmmmING author:FlAmmmmING |
feat(Mathlib/Combinatorics/SimpleGraph/Planar.lean): Define the planar graph in mathlib |
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
|
62/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Planar.lean |
2 |
5 |
['SnirBroshi', 'github-actions'] |
nobody |
9-49400 9 days ago |
10-24589 10 days ago |
10-24627 10 days |
| 30648 |
loefflerd author:loefflerd |
feat(NumberTheory/ModularForms): define the strict width of a subgroup |
We define the periods of a subgroup of GL(2, R) to be the `x` such that `!![1, x; 0, 1]` is in the subgroup, and the *strict width* to be the unique positive generator of this subgroup (when it exists).
This is a variant of a more familiar modular-forms concept, the *width*, which is the least positive `x` such that `± !![1, x; 0, 1]` is in the subgroup (note signs `±`). However, the strict width is the concept that's relevant for q-expansions.
---
Carved off from the WIP PR #30089.
- [x] depends on: #30461
- [x] depends on: #30471
[](https://gitpod.io/from-referrer/)
|
t-number-theory |
182/2 |
Mathlib/NumberTheory/ModularForms/Cusps.lean |
1 |
8 |
['CBirkbeck', 'github-actions', 'loefflerd', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
alreadydone assignee:alreadydone |
9-47131 9 days ago |
16-42321 16 days ago |
16-43221 16 days |
| 30181 |
alreadydone author:alreadydone |
feat(Data/Nat): reducible strong recursion |
+ Redefine `Nat.strongRec'` to allow Lean kernel computation (reduction) with the strong Nat recursor. TODO: maybe merge this with Batteries' `Nat.strongRec`.
+ Redefine `Nat.xgcd` to use `Nat.strongRec'` to allow kernel reduction.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
46/72 |
Mathlib/Data/Int/GCD.lean,Mathlib/Data/Nat/Digits/Defs.lean,Mathlib/Data/Nat/Init.lean |
3 |
4 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
pechersky assignee:pechersky |
9-33611 9 days ago |
41-46616 1 month ago |
41-52665 41 days |
| 30477 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Angle/Bisector): oriented angle bisection and equal distance |
Add a lemma
```lean
lemma dist_orthogonalProjection_eq_iff_oangle_eq {p p' : P} {s₁ s₂ : AffineSubspace ℝ P}
[s₁.direction.HasOrthogonalProjection] [s₂.direction.HasOrthogonalProjection]
(hp' : p' ∈ s₁ ⊓ s₂)
(hne : haveI : Nonempty s₁ := ⟨p', hp'.1⟩; haveI : Nonempty s₂ := ⟨p', hp'.2⟩;
(orthogonalProjection s₁ p : P) ≠ orthogonalProjection s₂ p)
(hp₁ : haveI : Nonempty s₁ := ⟨p', hp'.1⟩; orthogonalProjection s₁ p ≠ p')
(hp₂ : haveI : Nonempty s₂ := ⟨p', hp'.2⟩; orthogonalProjection s₂ p ≠ p') :
haveI : Nonempty s₁ := ⟨p', hp'.1⟩
haveI : Nonempty s₂ := ⟨p', hp'.2⟩
dist p (orthogonalProjection s₁ p) = dist p (orthogonalProjection s₂ p) ↔
∡ (orthogonalProjection s₁ p : P) p' p = ∡ p p' (orthogonalProjection s₂ p) :=
```
that is an oriented angle analogue of the existing `dist_orthogonalProjection_eq_iff_angle_eq`. Because the minimal nondegeneracy conditions required for the two directions of this lemma are different (whereas the unoriented version doesn't need any nondegeneracy conditions), those two directions are added as separate lemmas, each with minimal nondegeneracy conditions, from which the `iff` version is then deduced.
---
- [ ] depends on: #30474
- [ ] depends on: #30476
- [ ] depends on: #30698
[](https://gitpod.io/from-referrer/)
|
large-import
t-euclidean-geometry
|
106/0 |
Mathlib/Geometry/Euclidean/Angle/Bisector.lean |
1 |
3 |
['github-actions', 'jsm28', 'mathlib4-dependent-issues-bot'] |
JovanGerb assignee:JovanGerb |
9-33609 9 days ago |
17-13126 17 days ago |
17-15452 17 days |
| 30637 |
strihanje01 author:strihanje01 |
feat(Combinatorics/SetFamily/Lindstrom): Lindstrom's theorem for subfamilies with equal unions |
add Lindstrom's theorem and its strengthening for equal intersections
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
|
210/0 |
Mathlib.lean,Mathlib/Combinatorics/SetFamily/Lindstrom.lean |
2 |
1 |
['github-actions'] |
b-mehta assignee:b-mehta |
9-33608 9 days ago |
27-60876 27 days ago |
27-60921 27 days |
| 30733 |
harahu author:harahu |
doc(Combinatorics): spell cliquefree as clique-free |
This change was initially suggested to me by Codex, as part of #30621, but it made sense to do this as a free-standing PR, since this change requires some justification, and this PR provides just that.
The fact that Codex is encouraging this change does not mean much on its own, so I did my best to check the literature. Searching on Google Scholar yields a mere [four results](https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=%22cliquefree%22) for "cliquefree" and [423 results](https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=%22clique-free%22) for "clique-free". Based on these results, I think it is safe to say that "cliquefree" is quite idiosyncratic, and should be avoided.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
12/12 |
Mathlib/Combinatorics/SimpleGraph/Clique.lean,Mathlib/Combinatorics/SimpleGraph/CompleteMultipartite.lean,Mathlib/Combinatorics/SimpleGraph/Extremal/Turan.lean,Mathlib/Combinatorics/SimpleGraph/FiveWheelLike.lean |
4 |
1 |
['github-actions'] |
b-mehta assignee:b-mehta |
9-33605 9 days ago |
24-51353 24 days ago |
24-51397 24 days |
| 30885 |
erdOne author:erdOne |
chore(RingTheory): better defeqs for `PrimeSpectrum.preimageOrderIsoTensorResidueField` |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
94/30 |
Mathlib/RingTheory/Ideal/Prime.lean,Mathlib/RingTheory/LocalRing/ResidueField/Fiber.lean,Mathlib/RingTheory/LocalRing/ResidueField/Ideal.lean |
3 |
1 |
['github-actions'] |
chrisflav assignee:chrisflav |
9-33601 9 days ago |
19-65187 19 days ago |
19-65237 19 days |
| 30973 |
vihdzp author:vihdzp |
feat: generalize `Finsupp.lex_lt_iff_of_unique` |
---
- [x] depends on: #30481
[](https://gitpod.io/from-referrer/)
|
t-order |
46/13 |
Mathlib/Data/DFinsupp/Lex.lean,Mathlib/Data/Finsupp/Lex.lean,Mathlib/Order/PiLex.lean |
3 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
bryangingechen assignee:bryangingechen |
9-33600 9 days ago |
16-74818 16 days ago |
16-83687 16 days |
| 30984 |
erdOne author:erdOne |
feat(RingTheory): lemmas about scaleRoots |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
large-import
|
120/5 |
Mathlib/RingTheory/Polynomial/IntegralNormalization.lean,Mathlib/RingTheory/Polynomial/ScaleRoots.lean |
2 |
2 |
['erdOne', 'github-actions'] |
chrisflav assignee:chrisflav |
9-33598 9 days ago |
17-44511 17 days ago |
17-44616 17 days |
| 30994 |
kim-em author:kim-em |
feat: `fix_deprecations.py` script |
|
CI |
131/0 |
scripts/README.md,scripts/fix_deprecations.py |
2 |
18 |
['SnirBroshi', 'github-actions', 'kim-em'] |
bryangingechen assignee:bryangingechen |
9-33596 9 days ago |
17-3694 17 days ago |
17-3739 17 days |
| 31011 |
YuvalFilmus author:YuvalFilmus |
feat: properties of Chebyshev polynomials over the reals |
Added several properties of the Chebyshev polynomials:
- Degrees of T_n, U_n
- Leading coefficients of T_n, U_n
- Evaluations ofT_n, U_n at the endpoints ±1
- T_n is bounded on [-1, 1], and vice versa
- Zeroes of T_n and U_n, and extrema of T_n
- Normalized T_n minimizes the maximum absolute value over [-1, 1] for monic polynomials
---
[](https://gitpod.io/from-referrer/)
|
new-contributor |
989/5 |
Mathlib.lean,Mathlib/Algebra/Polynomial/Roots.lean,Mathlib/Analysis/SpecialFunctions/Arsinh.lean,Mathlib/LinearAlgebra/Lagrange.lean,Mathlib/RingTheory/Polynomial/Chebyshev.lean,Mathlib/RingTheory/Polynomial/ChebyshevReal/Basic.lean,Mathlib/RingTheory/Polynomial/ChebyshevReal/Monic.lean |
7 |
22 |
['Ruben-VandeVelde', 'YuvalFilmus', 'github-actions', 'plp127'] |
Vierkantor assignee:Vierkantor |
9-33591 9 days ago |
16-67286 16 days ago |
16-67316 16 days |
| 26039 |
tsuki8 author:tsuki8 |
feat(RingTheory/MvPolynomial/{MonomialOrder,Ideal}): leadingTerm |
define the leadingTerm and prove some lemmas related to the def
`leadingTerm`: the leading term of `f` for the monomial ordering `m`
some basic lemmas about leadingTerm including:
1. `leadingTerm_eq_zero_iff`
2. `leadingTerm_image_sdiff_singleton_zero`
3. `leadingTerm_image_insert_zero`
4. `leadingTerm_zero`
5. `leadingTerm_degree_eq`
6. `leadingTerm_degree_eq'`
some lemmas about the degree of `f - m.leadingTerm f`:
1. `degree_sub_leadingTerm`
2. `degree_sub_leadingTerm_lt_degree`
3. `degree_sub_leadingTerm_lt_iff`
also some lemmas about leading terms and ideals:
1. `span_leadingTerm_sdiff_singleton_zero`
2. `span_leadingTerm_insert_zero`
3. `span_leadingTerm_eq_span_monomial`
4. `span_leadingTerm_eq_span_monomial'`
Co-authored-by: Junyu Guo @Hagb
---
- [x] depends on: #24361
- [x] depends on: #26148
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
large-import
new-contributor
|
142/1 |
Mathlib/RingTheory/MvPolynomial/Ideal.lean,Mathlib/RingTheory/MvPolynomial/MonomialOrder.lean |
2 |
38 |
['Hagb', 'chrisflav', 'github-actions', 'kim-em', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
chrisflav assignee:chrisflav |
9-26572 9 days ago |
9-26572 9 days ago |
26-76581 26 days |
| 29354 |
themathqueen author:themathqueen |
refactor(Algebra/Algebra/Equiv): allow for non-unital `AlgEquiv` |
This refactors `AlgEquiv` to allow for non-unital algebras. More specifically, we weaken the type class assumptions from:
```lean
structure AlgEquiv (R A B : Type*) [CommSemiring R] [Semiring A] [Semiring B]
[Algebra R A] [Algebra R B]
```
to
```lean
structure AlgEquiv (R A B : Type*) [Add A] [Add B] [Mul A] [Mul B] [SMul R A] [SMul R B]
```
Instead of a `commutes'` field, we now have a `map_smul'` field. We also include a definition `AlgEquiv.ofCommutes` which takes in a `RingEquiv` and a `commutes'` field to match before and for convenience.
`StarAlgEquiv` now extends `AlgEquiv`. We also generalize a few files to allow for non-unital.
I suspect there are a few more things to generalize, but will leave this for later.
Co-authored-by: Jireh Loreaux
---
Revives #8686.
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
560/491 |
Mathlib/Algebra/Algebra/Equiv.lean,Mathlib/Algebra/Algebra/Opposite.lean,Mathlib/Algebra/Algebra/Pi.lean,Mathlib/Algebra/Algebra/Prod.lean,Mathlib/Algebra/Algebra/Subalgebra/Basic.lean,Mathlib/Algebra/Algebra/Subalgebra/MulOpposite.lean,Mathlib/Algebra/Algebra/Tower.lean,Mathlib/Algebra/Algebra/TransferInstance.lean,Mathlib/Algebra/Category/AlgCat/Basic.lean,Mathlib/Algebra/Category/CommAlgCat/Basic.lean,Mathlib/Algebra/Category/CommAlgCat/FiniteType.lean,Mathlib/Algebra/Category/Ring/Constructions.lean,Mathlib/Algebra/DualQuaternion.lean,Mathlib/Algebra/MonoidAlgebra/Basic.lean,Mathlib/Algebra/MonoidAlgebra/ToDirectSum.lean,Mathlib/Algebra/MvPolynomial/Equiv.lean,Mathlib/Algebra/MvPolynomial/Rename.lean,Mathlib/Algebra/Polynomial/AlgebraMap.lean,Mathlib/Algebra/Polynomial/Taylor.lean,Mathlib/Algebra/Quaternion.lean,Mathlib/Algebra/SkewMonoidAlgebra/Lift.lean,Mathlib/Algebra/Star/Free.lean,Mathlib/Algebra/Star/StarAlgHom.lean,Mathlib/Analysis/CStarAlgebra/Spectrum.lean,Mathlib/Analysis/Normed/Algebra/GelfandFormula.lean,Mathlib/Analysis/Normed/Algebra/Spectrum.lean,Mathlib/Analysis/Normed/Algebra/UnitizationL1.lean,Mathlib/Analysis/Normed/Lp/LpEquiv.lean,Mathlib/Analysis/Normed/Module/Basic.lean,Mathlib/Analysis/RCLike/Basic.lean,Mathlib/Data/Matrix/Basic.lean,Mathlib/Data/Matrix/Composition.lean,Mathlib/Data/Matrix/DualNumber.lean,Mathlib/FieldTheory/Fixed.lean,Mathlib/FieldTheory/Galois/Basic.lean,Mathlib/FieldTheory/Galois/Notation.lean,Mathlib/FieldTheory/Galois/Profinite.lean,Mathlib/FieldTheory/IntermediateField/Adjoin/Basic.lean,Mathlib/FieldTheory/IntermediateField/Basic.lean,Mathlib/FieldTheory/Normal/Basic.lean,Mathlib/FieldTheory/PrimitiveElement.lean,Mathlib/FieldTheory/RatFunc/Basic.lean,Mathlib/FieldTheory/Separable.lean,Mathlib/LinearAlgebra/CliffordAlgebra/BaseChange.lean,Mathlib/LinearAlgebra/CliffordAlgebra/Conjugation.lean,Mathlib/LinearAlgebra/Complex/Module.lean,Mathlib/LinearAlgebra/Matrix/Basis.lean,Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean,Mathlib/LinearAlgebra/Matrix/Charpoly/LinearMap.lean,Mathlib/LinearAlgebra/Matrix/Reindex.lean,Mathlib/LinearAlgebra/Matrix/ToLin.lean,Mathlib/LinearAlgebra/Matrix/Unique.lean,Mathlib/LinearAlgebra/TensorProduct/Graded/Internal.lean,Mathlib/LinearAlgebra/TensorProduct/Subalgebra.lean,Mathlib/NumberTheory/NumberField/Cyclotomic/Ideal.lean,Mathlib/NumberTheory/NumberField/Discriminant/Defs.lean,Mathlib/RingTheory/AdjoinRoot.lean,Mathlib/RingTheory/Bialgebra/Equiv.lean,Mathlib/RingTheory/DedekindDomain/Different.lean,Mathlib/RingTheory/Etale/Field.lean,Mathlib/RingTheory/Finiteness/Basic.lean,Mathlib/RingTheory/Flat/Equalizer.lean,Mathlib/RingTheory/FractionalIdeal/Operations.lean,Mathlib/RingTheory/Frobenius.lean,Mathlib/RingTheory/GradedAlgebra/Basic.lean,Mathlib/RingTheory/HahnSeries/PowerSeries.lean,Mathlib/RingTheory/Ideal/Operations.lean,Mathlib/RingTheory/Ideal/Over.lean,Mathlib/RingTheory/Ideal/Quotient/Operations.lean,Mathlib/RingTheory/IntegralClosure/IntegrallyClosed.lean,Mathlib/RingTheory/Invariant/Basic.lean,Mathlib/RingTheory/Invariant/Profinite.lean,Mathlib/RingTheory/IsTensorProduct.lean,Mathlib/RingTheory/Jacobson/Artinian.lean,Mathlib/RingTheory/Jacobson/Ring.lean,Mathlib/RingTheory/Kaehler/Basic.lean,Mathlib/RingTheory/LaurentSeries.lean,Mathlib/RingTheory/Localization/Basic.lean,Mathlib/RingTheory/Localization/FractionRing.lean,Mathlib/RingTheory/MatrixAlgebra.lean,Mathlib/RingTheory/MvPolynomial/Localization.lean,Mathlib/RingTheory/Norm/Basic.lean,Mathlib/RingTheory/Polynomial/Quotient.lean,Mathlib/RingTheory/PolynomialAlgebra.lean,Mathlib/RingTheory/PowerSeries/WeierstrassPreparation.lean,Mathlib/RingTheory/RingHom/FiniteType.lean,Mathlib/RingTheory/SimpleModule/Isotypic.lean,Mathlib/RingTheory/Smooth/Basic.lean,Mathlib/RingTheory/Smooth/Pi.lean,Mathlib/RingTheory/Spectrum/Prime/Polynomial.lean,Mathlib/RingTheory/TensorProduct/Maps.lean,Mathlib/RingTheory/TensorProduct/MvPolynomial.lean,Mathlib/RingTheory/TensorProduct/Pi.lean,Mathlib/RingTheory/TensorProduct/Quotient.lean,Mathlib/RingTheory/Trace/Basic.lean,Mathlib/RingTheory/Unramified/Field.lean,Mathlib/Topology/Algebra/Algebra/Equiv.lean,Mathlib/Topology/Algebra/Module/FiniteDimension.lean,Mathlib/Topology/LocallyConstant/Algebra.lean,MathlibTest/GalNotation.lean |
100 |
35 |
['fpvandoorn', 'github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'mathlib4-merge-conflict-bot', 'themathqueen'] |
joelriou assignee:joelriou |
8-55789 8 days ago |
8-55813 8 days ago |
57-73620 57 days |
| 30423 |
erdOne author:erdOne |
feat(RingTheory): API for valuative rel |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
187/42 |
Mathlib/RingTheory/Valuation/ValuativeRel/Basic.lean,Mathlib/RingTheory/Valuation/ValuativeRel/Trivial.lean |
2 |
11 |
['erdOne', 'github-actions', 'mariainesdff', 'pechersky'] |
mariainesdff assignee:mariainesdff |
8-51834 8 days ago |
8-51834 8 days ago |
33-28134 33 days |
| 30214 |
SnirBroshi author:SnirBroshi |
feat(Data/List/Basic): add `Fin` variants of `*mem_iff_getElem` |
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
8/0 |
Mathlib/Data/List/Basic.lean |
1 |
5 |
['SnirBroshi', 'eric-wieser', 'github-actions', 'mathlib4-merge-conflict-bot'] |
nobody |
8-49801 8 days ago |
8-49820 8 days ago |
40-38969 40 days |
| 19046 |
j-loreaux author:j-loreaux |
feat: define class `SemigroupAction` |
---
If I can get this building with minimal performance impact, I would like to change the names to:
`MulAction → MonoidAction`
`SemigroupAction → MulAction`
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
48/26 |
Mathlib/Algebra/Azumaya/Matrix.lean,Mathlib/Algebra/Category/ModuleCat/Presheaf.lean,Mathlib/Algebra/Group/Action/Defs.lean,Mathlib/Algebra/Group/Action/Hom.lean,Mathlib/Algebra/Group/Action/Prod.lean,Mathlib/Algebra/Group/Action/TypeTags.lean,Mathlib/Algebra/Polynomial/Laurent.lean,Mathlib/GroupTheory/CoprodI.lean,Mathlib/LinearAlgebra/Eigenspace/Matrix.lean,Mathlib/LinearAlgebra/FreeModule/Finite/Quotient.lean,Mathlib/LinearAlgebra/Matrix/SesquilinearForm.lean,Mathlib/NumberTheory/ModularForms/CongruenceSubgroups.lean,Mathlib/RingTheory/Trace/Basic.lean |
13 |
12 |
['alreadydone', 'github-actions', 'j-loreaux', 'jcommelin', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'urkud'] |
jcommelin assignee:jcommelin |
8-43116 8 days ago |
77-49865 2 months ago |
83-77149 83 days |
| 31038 |
rudynicolop author:rudynicolop |
feat(Computability/NFA): NFA acceptsFrom definitions and lemmas |
This PR defines `NFA.acceptsFrom`, similar to [`DFA.acceptsFrom`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Computability/DFA.html#DFA.acceptsFrom), and provides helper lemmas.
---
[](https://gitpod.io/from-referrer/)
|
t-computability
new-contributor
|
108/6 |
Mathlib/Computability/NFA.lean |
1 |
23 |
['eric-wieser', 'github-actions', 'rudynicolop'] |
nobody |
8-36293 8 days ago |
16-35806 16 days ago |
16-35856 16 days |
| 30318 |
joelriou author:joelriou |
feat(Algebra/ModuleCat/Presheaf): composition of pushforwards and pullbacks and compatibilites |
The composition of two pullback functors on presheaves of modules `pullback φ ⋙ pullback ψ` identifies to the pullback of the composition. We show compatibilites for these isomorphisms: they are deduced from similar identifies for pushforwards (in which case they are `rfl`).
---
- [x] depends on: #30335
This PR continues the work from #17589.
Original PR: https://github.com/leanprover-community/mathlib4/pull/17589 |
t-algebra
t-algebraic-geometry
t-category-theory
label:t-algebra$ |
121/14 |
Mathlib/Algebra/Category/ModuleCat/Presheaf/Pullback.lean,Mathlib/Algebra/Category/ModuleCat/Presheaf/Pushforward.lean,Mathlib/CategoryTheory/Adjunction/CompositionIso.lean |
3 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
dagurtomas assignee:dagurtomas |
8-33614 8 days ago |
15-62336 15 days ago |
15-62358 15 days |
| 30696 |
joelriou author:joelriou |
feat(Order/Category): `PardOrdEmb` has filtered colimits |
---
- [x] depends on: #30693
[](https://gitpod.io/from-referrer/)
|
large-import
t-order
|
161/2 |
Mathlib/CategoryTheory/Limits/Types/Filtered.lean,Mathlib/Order/Category/PartOrdEmb.lean |
2 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
Vierkantor assignee:Vierkantor |
8-33610 8 days ago |
15-84260 15 days ago |
15-84290 15 days |
| 30757 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Acyclic): `singletonGraph` and `subgraphOfAdj` are trees |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
30/1 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean,Mathlib/Combinatorics/SimpleGraph/Subgraph.lean |
3 |
1 |
['github-actions'] |
kmill assignee:kmill |
8-33608 8 days ago |
23-54069 23 days ago |
23-54116 23 days |
| 30771 |
dagurtomas author:dagurtomas |
chore(CategoryTheory): move `Closed` directory into `Monoidal` |
---
[](https://gitpod.io/from-referrer/)
|
file-removed |
36/36 |
Mathlib.lean,Mathlib/Algebra/Category/ModuleCat/Monoidal/Closed.lean,Mathlib/AlgebraicTopology/SimplicialSet/Monoidal.lean,Mathlib/AlgebraicTopology/SimplicialSet/NerveAdjunction.lean,Mathlib/CategoryTheory/Category/Cat/CartesianClosed.lean,Mathlib/CategoryTheory/Distributive/Monoidal.lean,Mathlib/CategoryTheory/Limits/Sifted.lean,Mathlib/CategoryTheory/Monoidal/Braided/Reflection.lean,Mathlib/CategoryTheory/Monoidal/Closed/Basic.lean,Mathlib/CategoryTheory/Monoidal/Closed/Cartesian.lean,Mathlib/CategoryTheory/Monoidal/Closed/Enrichment.lean,Mathlib/CategoryTheory/Monoidal/Closed/Functor.lean,Mathlib/CategoryTheory/Monoidal/Closed/FunctorCategory/Basic.lean,Mathlib/CategoryTheory/Monoidal/Closed/FunctorCategory/Complete.lean,Mathlib/CategoryTheory/Monoidal/Closed/FunctorCategory/Groupoid.lean,Mathlib/CategoryTheory/Monoidal/Closed/FunctorToTypes.lean,Mathlib/CategoryTheory/Monoidal/Closed/Ideal.lean,Mathlib/CategoryTheory/Monoidal/Closed/Types.lean,Mathlib/CategoryTheory/Monoidal/Closed/Zero.lean,Mathlib/CategoryTheory/Monoidal/DayConvolution/Closed.lean,Mathlib/CategoryTheory/Monoidal/Rigid/Basic.lean,Mathlib/CategoryTheory/Monoidal/Subcategory.lean,Mathlib/CategoryTheory/Preadditive/Projective/Internal.lean,Mathlib/CategoryTheory/Sites/CartesianClosed.lean,Mathlib/CategoryTheory/Sites/Monoidal.lean,Mathlib/Condensed/CartesianClosed.lean,Mathlib/Condensed/Light/CartesianClosed.lean |
27 |
3 |
['github-actions', 'mathlib4-merge-conflict-bot'] |
dwrensha assignee:dwrensha |
8-33607 8 days ago |
16-16827 16 days ago |
23-21211 23 days |
| 30826 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Connectivity/Subgraph): map a walk to its own subgraph |
While this is not very interesting on its own, it opens the possibility of mapping a walk to any graph, given a graph homomorphism from the walk's subgraph.
---
Related: #30590
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
15/0 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean |
1 |
1 |
['github-actions'] |
b-mehta assignee:b-mehta |
8-33605 8 days ago |
21-62953 21 days ago |
21-63001 21 days |
| 30827 |
dagurtomas author:dagurtomas |
feat(Condensed): constructions for light condensed objects can be done in an equivalent small category |
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-condensed
|
36/2 |
Mathlib/Condensed/Light/Small.lean |
1 |
1 |
['github-actions'] |
joneugster assignee:joneugster |
8-33604 8 days ago |
21-61746 21 days ago |
21-61789 21 days |
| 30877 |
YaelDillies author:YaelDillies |
feat(Algebra/MonoidAlgebra): extend the `R[M]` notation to `MonoidAlgebra R M` |
It currently only is notation for `AddMonoidAlgebra R M`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
212/161 |
Mathlib/Algebra/MonoidAlgebra/Basic.lean,Mathlib/Algebra/MonoidAlgebra/Defs.lean,Mathlib/Algebra/MonoidAlgebra/Lift.lean,Mathlib/Algebra/MonoidAlgebra/MapDomain.lean,Mathlib/Algebra/MonoidAlgebra/Module.lean,Mathlib/Algebra/MonoidAlgebra/NoZeroDivisors.lean,Mathlib/Algebra/MonoidAlgebra/Opposite.lean,Mathlib/Algebra/MonoidAlgebra/Support.lean,MathlibTest/Algebra/MonoidAlgebra/Defs.lean |
9 |
17 |
['YaelDillies', 'eric-wieser', 'github-actions', 'vihdzp'] |
jcommelin assignee:jcommelin |
8-33603 8 days ago |
16-57343 16 days ago |
17-1484 17 days |
| 31054 |
jsm28 author:jsm28 |
feat(LinearAlgebra/AffineSpace/Simplex/Basic): faces and `reindex` |
Add lemmas about the set of vertices of a `face` or `faceOpposite` of `Simplex.reindex`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
14/0 |
Mathlib/LinearAlgebra/AffineSpace/Simplex/Basic.lean |
1 |
1 |
['github-actions'] |
kim-em assignee:kim-em |
8-33598 8 days ago |
15-81154 15 days ago |
15-81132 15 days |
| 30595 |
winstonyin author:winstonyin |
feat: $C^n$ implicit function theorem |
I formalise a proof that the implicit function obtained from a $C^n$ implicit equation ($n \geq 1$) is $C^n$. Roughly speaking, given an equation $f : E \times F \to F$ that is smooth at $(a,b) : E\times F$ and whose derivative $f'$ is in some sense non-singular, then there exists a function $\phi : E \to F$ such that $\phi(a) = b$, $f(x, \phi(x)) = f(a,b)$ for all $x$ in a neighbourhood of $a$, and $\phi$ is $C^n$ at $a$.
The current implicit function theorem in Mathlib is quite general and not directly applicable to many familiar scenarios. The statements added by this PR correspond to, e.g., the way the theorem is described on Wikipedia, and will be directly useful for an upcoming formalisation of the smoothness theorem for flows of ODEs.
- [x] depends on: #30607
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
166/2 |
Mathlib.lean,Mathlib/Analysis/Calculus/Implicit.lean,Mathlib/Analysis/Calculus/ImplicitContDiff.lean |
3 |
32 |
['github-actions', 'grunweg', 'mathlib4-dependent-issues-bot', 'sgouezel', 'winstonyin'] |
grunweg assignee:grunweg |
8-18422 8 days ago |
8-18444 8 days ago |
19-75412 19 days |
| 30678 |
YaelDillies author:YaelDillies |
refactor(Algebra/Quaternion): intermediate `Module` instance |
This `Module` instance allows me to not ungeneralise the `NoZeroSMulDivisors R ℍ[R,c₁,c₂,c₃]` in #30563.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
45/28 |
Mathlib/Algebra/Quaternion.lean |
1 |
20 |
['YaelDillies', 'eric-wieser', 'github-actions'] |
joneugster assignee:joneugster |
8-5491 8 days ago |
25-4553 25 days ago |
25-29292 25 days |
| 30120 |
FernandoChu author:FernandoChu |
feat(CategoryTheory): Pullback of equalizer is an equalizer |
We show that the pullback of an equalizer (seen as a subobject) along some morphism `h` is the subobject that comes from the equalizer of the two original arrows precomposed with `h`. A `TODO` was completed in the process.
This is a prerequisite of the [MTT project](https://github.com/kyoDralliam/model-theory-topos), which aims to use the internal language of toposes to reason about e.g. sheaves. |
large-import
t-category-theory
|
112/2 |
Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean,Mathlib/CategoryTheory/Limits/Shapes/Pullback/PullbackCone.lean,Mathlib/CategoryTheory/Subobject/Basic.lean,Mathlib/CategoryTheory/Subobject/FactorThru.lean,Mathlib/CategoryTheory/Subobject/Limits.lean |
5 |
11 |
['FernandoChu', 'dagurtomas', 'github-actions', 'joelriou'] |
joneugster assignee:joneugster |
8-1165 8 days ago |
8-1165 8 days ago |
34-69323 34 days |
| 30416 |
SnirBroshi author:SnirBroshi |
feat(Logic/Relation): lemmas relating `Relation.Map` and `Function.onFun` |
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-logic
|
32/0 |
Mathlib/Logic/Relation.lean |
1 |
1 |
['github-actions'] |
awainverse assignee:awainverse |
7-71711 7 days ago |
34-52411 1 month ago |
34-54639 34 days |
| 30041 |
josephmckinsey author:josephmckinsey |
feat(Algebra/Order/Floor): generalize mul_floor_div theorems to rings and semirings |
Generalize `mul_cast_floor_div_cancel` from `Field` and `Semifield` to `Ring` and `Semiring`.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-algebra
label:t-algebra$ |
43/31 |
Mathlib/Algebra/Order/Floor/Ring.lean,Mathlib/Algebra/Order/Floor/Semifield.lean,Mathlib/Algebra/Order/Floor/Semiring.lean,Mathlib/Analysis/Real/OfDigits.lean |
4 |
11 |
['Ruben-VandeVelde', 'github-actions', 'josephmckinsey', 'mathlib4-merge-conflict-bot'] |
joneugster assignee:joneugster |
7-65263 7 days ago |
7-65285 7 days ago |
33-58553 33 days |
| 28100 |
themathqueen author:themathqueen |
feat(LinearAlgebra/GeneralLinearGroup): algebra automorphisms in endomorphisms are inner |
Characterization of automorphisms in endomorphisms of vector spaces: for any algebra automorphism `f : End R V ≃ₐ[R] End R V`, there exists a linear isomorphism `T` such that `f a = T.conj a = T ∘ a ∘ T.symm` for all `a`. This does not suppose finite-dimensionality.
Also adds an instance for `Algebra.IsCentral K (Module.End K V)`.
---
Technically used Aristotle for showing that `T` is injective (out of curiosity) :) (added as co-author)
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
122/3 |
Mathlib.lean,Mathlib/Algebra/Central/End.lean,Mathlib/FieldTheory/SplittingField/Construction.lean,Mathlib/LinearAlgebra/FreeModule/Basic.lean,Mathlib/LinearAlgebra/FreeModule/Norm.lean,Mathlib/LinearAlgebra/GeneralLinearGroup/AlgEquiv.lean,Mathlib/RingTheory/LocalRing/Module.lean |
7 |
41 |
['Whysoserioushah', 'eric-wieser', 'github-actions', 'hrmacbeth', 'mathlib4-merge-conflict-bot', 'themathqueen'] |
Vierkantor assignee:Vierkantor |
7-61618 7 days ago |
12-70364 12 days ago |
47-807 47 days |
| 26580 |
vasnesterov author:vasnesterov |
feat(Tactic/Order): translate linear orders to `Int` |
It was [pointed out](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/tactic.20for.20partial.20orders/near/515897754) that `order` is not complete for linear orders with lattice operations (while it remains complete for linear orders without lattice operations and for general lattices without assuming linearity). The problem for linear orders with lattice operations is NP-hard, but it can be translated from an arbitrary type to `Int` and then solved using a smart and efficient procedure (such as `omega`). This PR implements such a translation within the `order` tactic.
Co-authored-by: Aaron Liu
---
- [x] depends on: #26354
[](https://gitpod.io/from-referrer/) |
large-import
t-meta
|
331/43 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/Order.lean,Mathlib/Tactic/Order/Graph/Basic.lean,Mathlib/Tactic/Order/Preprocessing.lean,Mathlib/Tactic/Order/ToInt.lean,MathlibTest/order.lean |
7 |
18 |
['Vierkantor', 'github-actions', 'leanprover-community-bot-assistant', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'plp127', 'vasnesterov'] |
alexjbest assignee:alexjbest |
7-59329 7 days ago |
7-60163 7 days ago |
123-77714 123 days |
| 31287 |
YaelDillies author:YaelDillies |
refactor(SetTheory/ZFC): deduplicate coercion to sets |
Currently, we have both `ZFSet.toSet` and `SetLike.coe` to turn a `ZFSet` into a `Set ZFSet`. This is bad for simp normal form. This PR removes the first spelling in favor of the second one.
---
[](https://gitpod.io/from-referrer/)
|
t-set-theory |
111/104 |
Mathlib/SetTheory/ZFC/Basic.lean,Mathlib/SetTheory/ZFC/Class.lean,Mathlib/SetTheory/ZFC/Ordinal.lean |
3 |
16 |
['YaelDillies', 'eric-wieser', 'github-actions', 'staroperator'] |
nobody |
7-52398 7 days ago |
8-69926 8 days ago |
8-69966 8 days |
| 30962 |
WangYiran01 author:WangYiran01 |
feat(Combinatorics/Enumerative): add lattice path lemmas and counts |
This PR adds definitions and theorems about monotone lattice paths:
- Defines `pathCount`, `pathCountFrom`, `SubdiagProp`, and related structures.
- Proves closed forms such as `pathCount_eq_closed`.
- Adds Dyck/ballot subdiagonal property (`SubdiagProp`).
All code builds successfully with `lake build`. |
new-contributor
t-combinatorics
|
64/0 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/RecLatticePath.lean |
2 |
1 |
['github-actions'] |
awainverse assignee:awainverse |
7-33617 7 days ago |
18-9718 18 days ago |
18-9760 18 days |
| 31072 |
euprunin author:euprunin |
golf(Combinatorics/Quiver/Path): golf `exists_eq_comp_and_notMem_tail_of_mem_vertices` using `grind` |
---
Show trace profiling of exists_eq_comp_and_notMem_tail_of_mem_vertices: 38 ms before, 46 ms after
### Trace profiling of `exists_eq_comp_and_notMem_tail_of_mem_vertices` before PR 31072
```diff
diff --git a/Mathlib/Combinatorics/Quiver/Path/Vertices.lean b/Mathlib/Combinatorics/Quiver/Path/Vertices.lean
index 9d27be9e85..35d3daa185 100644
--- a/Mathlib/Combinatorics/Quiver/Path/Vertices.lean
+++ b/Mathlib/Combinatorics/Quiver/Path/Vertices.lean
@@ -206,6 +206,7 @@ theorem exists_eq_comp_of_mem_vertices {v : V} (hv : v ∈ p.vertices) :
obtain ⟨v, p₁, p₂, hp, hv, rfl⟩ := p.exists_eq_comp_and_length_eq_of_lt_length n hn
exact ⟨p₁, p₂, hp⟩
+set_option trace.profiler true in
/-- Split a path at the *last* occurrence of a vertex. -/
theorem exists_eq_comp_and_notMem_tail_of_mem_vertices {v : V} (hv : v ∈ p.vertices) :
∃ (p₁ : Path a v) (p₂ : Path v b),
```
```
ℹ [521/521] Built Mathlib.Combinatorics.Quiver.Path.Vertices (1.1s)
info: Mathlib/Combinatorics/Quiver/Path/Vertices.lean:210:0: [Elab.async] [0.039993] elaborating proof of Quiver.Path.exists_eq_comp_and_notMem_tail_of_mem_vertices
[Elab.definition.value] [0.038334] Quiver.Path.exists_eq_comp_and_notMem_tail_of_mem_vertices
[Elab.step] [0.036860] induction p with
| nil =>
have hxa : v = a := by simpa [vertices_nil, List.mem_singleton] using hv
subst hxa
exact
⟨Path.nil, Path.nil, by simp only [comp_nil], by
simp only [vertices_nil, tail_cons, not_mem_nil, not_false_eq_true]⟩
| cons pPrev e
ih =>
have hv' : v ∈ pPrev.vertices ∨ v = (pPrev.cons e).end := by simpa using (mem_vertices_cons pPrev e).1 hv
have h_case₁ :
v = (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end), pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
rintro rfl
exact ⟨pPrev.cons e, Path.nil, by simp [comp_nil], by simp [vertices_nil]⟩
have h_case₂ :
v ∈ pPrev.vertices →
v ≠ (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end),
pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by
intro hmem
have hmem' : v ∈ (q₂.vertices ++ [(pPrev.cons e).end]).tail := by
simpa [q₂', vertices_cons, concat_eq_append] using hmem
cases hq2 : q₂.vertices with
| nil => simp [hq2] at hmem'
| cons y ys =>
have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by simpa [hq2] using hmem'
obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
· exact h_not_tail <| by simpa [hq2]
· have : v = (pPrev.cons e).end := by simpa [List.mem_singleton] using hx_last
exact hxe_ne this
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩
cases hv' with
| inl h_in_prefix =>
by_cases h_eq_end : v = (pPrev.cons e).end
· exact h_case₁ h_eq_end
· exact h_case₂ h_in_prefix h_eq_end
| inr h_eq_end => exact h_case₁ h_eq_end
[Elab.step] [0.036855] induction p with
| nil =>
have hxa : v = a := by simpa [vertices_nil, List.mem_singleton] using hv
subst hxa
exact
⟨Path.nil, Path.nil, by simp only [comp_nil], by
simp only [vertices_nil, tail_cons, not_mem_nil, not_false_eq_true]⟩
| cons pPrev e
ih =>
have hv' : v ∈ pPrev.vertices ∨ v = (pPrev.cons e).end := by simpa using (mem_vertices_cons pPrev e).1 hv
have h_case₁ :
v = (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end),
pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
rintro rfl
exact ⟨pPrev.cons e, Path.nil, by simp [comp_nil], by simp [vertices_nil]⟩
have h_case₂ :
v ∈ pPrev.vertices →
v ≠ (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end),
pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by
intro hmem
have hmem' : v ∈ (q₂.vertices ++ [(pPrev.cons e).end]).tail := by
simpa [q₂', vertices_cons, concat_eq_append] using hmem
cases hq2 : q₂.vertices with
| nil => simp [hq2] at hmem'
| cons y ys =>
have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by simpa [hq2] using hmem'
obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
· exact h_not_tail <| by simpa [hq2]
· have : v = (pPrev.cons e).end := by simpa [List.mem_singleton] using hx_last
exact hxe_ne this
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩
cases hv' with
| inl h_in_prefix =>
by_cases h_eq_end : v = (pPrev.cons e).end
· exact h_case₁ h_eq_end
· exact h_case₂ h_in_prefix h_eq_end
| inr h_eq_end => exact h_case₁ h_eq_end
[Elab.step] [0.036851] induction p with
| nil =>
have hxa : v = a := by simpa [vertices_nil, List.mem_singleton] using hv
subst hxa
exact
⟨Path.nil, Path.nil, by simp only [comp_nil], by
simp only [vertices_nil, tail_cons, not_mem_nil, not_false_eq_true]⟩
| cons pPrev e
[… 447 lines omitted …]
have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by
simpa [hq2] using hmem'
obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
· exact h_not_tail <| by simpa [hq2]
· have : v = (pPrev.cons e).end := by
simpa [List.mem_singleton] using hx_last
exact hxe_ne this)
[Elab.step] [0.014253] with_annotate_state"by"
( intro hmem
have hmem' : v ∈ (q₂.vertices ++ [(pPrev.cons e).end]).tail :=
by simpa [q₂', vertices_cons, concat_eq_append] using hmem
cases hq2 : q₂.vertices with
| nil => simp [hq2] at hmem'
| cons y
ys =>
have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by
simpa [hq2] using hmem'
obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
· exact h_not_tail <| by simpa [hq2]
· have : v = (pPrev.cons e).end := by
simpa [List.mem_singleton] using hx_last
exact hxe_ne this)
[Elab.step] [0.014250] with_annotate_state"by"
( intro hmem
have hmem' : v ∈ (q₂.vertices ++ [(pPrev.cons e).end]).tail :=
by simpa [q₂', vertices_cons, concat_eq_append] using hmem
cases hq2 : q₂.vertices with
| nil => simp [hq2] at hmem'
| cons y
ys =>
have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by
simpa [hq2] using hmem'
obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
· exact h_not_tail <| by simpa [hq2]
· have : v = (pPrev.cons e).end := by
simpa [List.mem_singleton] using hx_last
exact hxe_ne this)
[Elab.step] [0.014246] with_annotate_state"by"
( intro hmem
have hmem' : v ∈ (q₂.vertices ++ [(pPrev.cons e).end]).tail :=
by simpa [q₂', vertices_cons, concat_eq_append] using hmem
cases hq2 : q₂.vertices with
| nil => simp [hq2] at hmem'
| cons y
ys =>
have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by
simpa [hq2] using hmem'
obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
· exact h_not_tail <| by simpa [hq2]
· have : v = (pPrev.cons e).end := by
simpa [List.mem_singleton] using hx_last
exact hxe_ne this)
[Elab.step] [0.014243] (
intro hmem
have hmem' : v ∈ (q₂.vertices ++ [(pPrev.cons e).end]).tail :=
by simpa [q₂', vertices_cons, concat_eq_append] using hmem
cases hq2 : q₂.vertices with
| nil => simp [hq2] at hmem'
| cons y
ys =>
have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by
simpa [hq2] using hmem'
obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
· exact h_not_tail <| by simpa [hq2]
· have : v = (pPrev.cons e).end := by
simpa [List.mem_singleton] using hx_last
exact hxe_ne this)
[Elab.step] [0.014240]
intro hmem
have hmem' :
v ∈ (q₂.vertices ++ [(pPrev.cons e).end]).tail := by
simpa [q₂', vertices_cons, concat_eq_append] using hmem
cases hq2 : q₂.vertices with
| nil => simp [hq2] at hmem'
| cons y
ys =>
have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by
simpa [hq2] using hmem'
obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
· exact h_not_tail <| by simpa [hq2]
· have : v = (pPrev.cons e).end := by
simpa [List.mem_singleton] using hx_last
exact hxe_ne this
[Elab.step] [0.014235]
intro hmem
have hmem' :
v ∈ (q₂.vertices ++ [(pPrev.cons e).end]).tail := by
simpa [q₂', vertices_cons, concat_eq_append] using hmem
cases hq2 : q₂.vertices with
| nil => simp [hq2] at hmem'
| cons y
ys =>
have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by
simpa [hq2] using hmem'
obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
· exact h_not_tail <| by simpa [hq2]
· have : v = (pPrev.cons e).end := by
simpa [List.mem_singleton] using hx_last
exact hxe_ne this
Build completed successfully (521 jobs).
```
### Trace profiling of `exists_eq_comp_and_notMem_tail_of_mem_vertices` after PR 31072
```diff
diff --git a/Mathlib/Combinatorics/Quiver/Path/Vertices.lean b/Mathlib/Combinatorics/Quiver/Path/Vertices.lean
index 9d27be9e85..d658dc1eb1 100644
--- a/Mathlib/Combinatorics/Quiver/Path/Vertices.lean
+++ b/Mathlib/Combinatorics/Quiver/Path/Vertices.lean
@@ -206,6 +206,7 @@ theorem exists_eq_comp_of_mem_vertices {v : V} (hv : v ∈ p.vertices) :
obtain ⟨v, p₁, p₂, hp, hv, rfl⟩ := p.exists_eq_comp_and_length_eq_of_lt_length n hn
exact ⟨p₁, p₂, hp⟩
+set_option trace.profiler true in
/-- Split a path at the *last* occurrence of a vertex. -/
theorem exists_eq_comp_and_notMem_tail_of_mem_vertices {v : V} (hv : v ∈ p.vertices) :
∃ (p₁ : Path a v) (p₂ : Path v b),
@@ -230,18 +231,7 @@ theorem exists_eq_comp_and_notMem_tail_of_mem_vertices {v : V} (hv : v ∈ p.ver
intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
- have h_no_tail : v ∉ q₂'.vertices.tail := by
- intro hmem
- have hmem' : v ∈ (q₂.vertices ++ [(pPrev.cons e).end]).tail := by
- simpa [q₂', vertices_cons, concat_eq_append] using hmem
- cases hq2 : q₂.vertices with
- | nil => simp [hq2] at hmem'
- | cons y ys =>
- have hx_in : v ∈ ys ++ [(pPrev.cons e).end] := by simpa [hq2] using hmem'
- obtain (hx_ys | hx_last) := List.mem_append.mp hx_in
- · exact h_not_tail <| by simpa [hq2]
- · have : v = (pPrev.cons e).end := by simpa [List.mem_singleton] using hx_last
- exact hxe_ne this
+ have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩
cases hv' with
| inl h_in_prefix =>
```
```
ℹ [521/521] Built Mathlib.Combinatorics.Quiver.Path.Vertices (1.1s)
info: Mathlib/Combinatorics/Quiver/Path/Vertices.lean:210:0: [Elab.async] [0.047236] elaborating proof of Quiver.Path.exists_eq_comp_and_notMem_tail_of_mem_vertices
[Elab.definition.value] [0.045901] Quiver.Path.exists_eq_comp_and_notMem_tail_of_mem_vertices
[Elab.step] [0.044896] induction p with
| nil =>
have hxa : v = a := by simpa [vertices_nil, List.mem_singleton] using hv
subst hxa
exact
⟨Path.nil, Path.nil, by simp only [comp_nil], by
simp only [vertices_nil, tail_cons, not_mem_nil, not_false_eq_true]⟩
| cons pPrev e
ih =>
have hv' : v ∈ pPrev.vertices ∨ v = (pPrev.cons e).end := by simpa using (mem_vertices_cons pPrev e).1 hv
have h_case₁ :
v = (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end), pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
rintro rfl
exact ⟨pPrev.cons e, Path.nil, by simp [comp_nil], by simp [vertices_nil]⟩
have h_case₂ :
v ∈ pPrev.vertices →
v ≠ (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end),
pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩
cases hv' with
| inl h_in_prefix =>
by_cases h_eq_end : v = (pPrev.cons e).end
· exact h_case₁ h_eq_end
· exact h_case₂ h_in_prefix h_eq_end
| inr h_eq_end => exact h_case₁ h_eq_end
[Elab.step] [0.044892] induction p with
| nil =>
have hxa : v = a := by simpa [vertices_nil, List.mem_singleton] using hv
subst hxa
exact
⟨Path.nil, Path.nil, by simp only [comp_nil], by
simp only [vertices_nil, tail_cons, not_mem_nil, not_false_eq_true]⟩
| cons pPrev e
ih =>
have hv' : v ∈ pPrev.vertices ∨ v = (pPrev.cons e).end := by simpa using (mem_vertices_cons pPrev e).1 hv
have h_case₁ :
v = (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end),
pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
rintro rfl
exact ⟨pPrev.cons e, Path.nil, by simp [comp_nil], by simp [vertices_nil]⟩
have h_case₂ :
v ∈ pPrev.vertices →
v ≠ (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end),
pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩
cases hv' with
| inl h_in_prefix =>
by_cases h_eq_end : v = (pPrev.cons e).end
· exact h_case₁ h_eq_end
· exact h_case₂ h_in_prefix h_eq_end
| inr h_eq_end => exact h_case₁ h_eq_end
[Elab.step] [0.044888] induction p with
| nil =>
have hxa : v = a := by simpa [vertices_nil, List.mem_singleton] using hv
subst hxa
exact
⟨Path.nil, Path.nil, by simp only [comp_nil], by
simp only [vertices_nil, tail_cons, not_mem_nil, not_false_eq_true]⟩
| cons pPrev e
ih =>
have hv' : v ∈ pPrev.vertices ∨ v = (pPrev.cons e).end := by simpa using (mem_vertices_cons pPrev e).1 hv
have h_case₁ :
v = (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end),
pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
rintro rfl
exact ⟨pPrev.cons e, Path.nil, by simp [comp_nil], by simp [vertices_nil]⟩
have h_case₂ :
v ∈ pPrev.vertices →
v ≠ (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end),
pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
by
intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩
cases hv' with
| inl h_in_prefix =>
[… 96 lines omitted …]
case body✝ =>
with_annotate_state"by"
( intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩)
[Elab.step] [0.029274]
refine
no_implicit_lambda%
(have h_case₂ :
v ∈ pPrev.vertices →
v ≠ (pPrev.cons e).end →
∃ (p₁ : Path a v) (p₂ : Path v (pPrev.cons e).end),
pPrev.cons e = p₁.comp p₂ ∧ v ∉ p₂.vertices.tail :=
?body✝;
?_)
case body✝ =>
with_annotate_state"by"
( intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩)
[Elab.step] [0.025886] case body✝ =>
with_annotate_state"by"
( intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩)
[Elab.step] [0.025862] with_annotate_state"by"
( intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩)
[Elab.step] [0.025858] with_annotate_state"by"
( intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩)
[Elab.step] [0.025854] with_annotate_state"by"
( intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩)
[Elab.step] [0.025851] (
intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩)
[Elab.step] [0.025848]
intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩
[Elab.step] [0.025842]
intro hxPrev hxe_ne
obtain ⟨q₁, q₂, h_prev, h_not_tail⟩ := ih hxPrev
let q₂' : Path v (pPrev.cons e).end := q₂.cons e
have h_no_tail : v ∉ q₂'.vertices.tail := by grind [vertices_cons, end_cons]
exact ⟨q₁, q₂', by simp [q₂', h_prev], h_no_tail⟩
[Elab.step] [0.022111] have h_no_tail : v ∉ q₂'.vertices.tail := by
grind [vertices_cons, end_cons]
[Elab.step] [0.022085] focus
refine
no_implicit_lambda%
(have h_no_tail : v ∉ q₂'.vertices.tail := ?body✝;
?_)
case body✝ => with_annotate_state"by" (grind [vertices_cons, end_cons])
[Elab.step] [0.022082]
refine
no_implicit_lambda%
(have h_no_tail : v ∉ q₂'.vertices.tail := ?body✝;
?_)
case body✝ => with_annotate_state"by" (grind [vertices_cons, end_cons])
[Elab.step] [0.022079]
refine
no_implicit_lambda%
(have h_no_tail : v ∉ q₂'.vertices.tail := ?body✝;
?_)
case body✝ => with_annotate_state"by" (grind [vertices_cons, end_cons])
[Elab.step] [0.021564] case body✝ =>
with_annotate_state"by" (grind [vertices_cons, end_cons])
[Elab.step] [0.021552] with_annotate_state"by"
(grind [vertices_cons, end_cons])
[Elab.step] [0.021549] with_annotate_state"by"
(grind [vertices_cons, end_cons])
[Elab.step] [0.021546] with_annotate_state"by"
(grind [vertices_cons, end_cons])
[Elab.step] [0.021542] (grind [vertices_cons, end_cons])
[Elab.step] [0.021539] grind [vertices_cons, end_cons]
[Elab.step] [0.021535] grind [vertices_cons, end_cons]
[Elab.step] [0.021527] grind [vertices_cons, end_cons]
Build completed successfully (521 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
1/12 |
Mathlib/Combinatorics/Quiver/Path/Vertices.lean |
1 |
1 |
['github-actions'] |
b-mehta assignee:b-mehta |
7-33615 7 days ago |
15-44739 15 days ago |
15-44782 15 days |
| 31077 |
peabrainiac author:peabrainiac |
feat(Topology): `nhdsSetWithin` filter |
Add a relative version `nhdsSetWithin` of `nhdsSet`, analogous to `nhdsWithin`. The main application of this is a slightly more general variant of the tube lemma (`generalized_tube_lemma_left`) that came up while working in analysis files.
---
- [x] depends on: #31090
[](https://gitpod.io/from-referrer/)
|
t-topology |
159/4 |
Mathlib/Topology/Compactness/Compact.lean,Mathlib/Topology/ContinuousOn.lean,Mathlib/Topology/Defs/Filter.lean,Mathlib/Topology/NhdsWithin.lean |
4 |
7 |
['github-actions', 'grunweg', 'mathlib4-dependent-issues-bot', 'peabrainiac', 'plp127'] |
fpvandoorn assignee:fpvandoorn |
7-33614 7 days ago |
14-58684 14 days ago |
15-5610 15 days |
| 31086 |
kckennylau author:kckennylau |
feat(Util): open unscoped |
`open unscoped Foo` opens the namespace `Foo` without activating its scope, meaning without activating any of its scoped instances or notations.
Example usage:
```lean
namespace Nat
def pi : Nat := 3
scoped notation "π" => pi
end Nat
open unscoped Nat
#check pi
#check π -- error
```
---
Zulip:
* [lean4 > Why "scoped notation" for Euler's totient function?](https://leanprover.zulipchat.com/#narrow/channel/270676-lean4/topic/Why.20.22scoped.20notation.22.20for.20Euler's.20totient.20function.3F/with/547890198)
* [mathlib4 > open unscoped](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/open.20unscoped/with/547890545)
[](https://gitpod.io/from-referrer/)
|
t-meta |
82/0 |
Mathlib.lean,Mathlib/Util/OpenUnscoped.lean,MathlibTest/Util/OpenUnscoped.lean |
3 |
1 |
['github-actions'] |
robertylewis assignee:robertylewis |
7-33613 7 days ago |
15-2156 15 days ago |
15-2194 15 days |
| 31087 |
joelriou author:joelriou |
feat(CategoryTheory/Sites): categories of sheaves on Over categories, as a pseudofunctor |
Given a Grothendieck topology `J` on a category `C` and a category `A`, we define the pseudofunctor
`J.pseudofunctorOver A : Pseudofunctor (LocallyDiscrete Cᵒᵖ) Cat` which sends `X : C` to the category of sheaves on `Over X` with values in `A`.
In order to do this, we expand the API for pushforward of sheaves for continuous functors. We add a few pseudofunctor-like definitions for these pushforwards.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
190/7 |
Mathlib.lean,Mathlib/CategoryTheory/Comma/Over/Basic.lean,Mathlib/CategoryTheory/Sites/Continuous.lean,Mathlib/CategoryTheory/Sites/Over.lean,Mathlib/CategoryTheory/Sites/PseudofunctorSheafOver.lean |
5 |
1 |
['github-actions'] |
dagurtomas assignee:dagurtomas |
7-33612 7 days ago |
14-84824 14 days ago |
14-84801 14 days |
| 31092 |
FlAmmmmING author:FlAmmmmING |
feat(Algebra/Group/ForwardDiff.lean): Add theorem `sum_shift_eq_fwdDiff_iter`. |
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-algebra
label:t-algebra$ |
19/0 |
Mathlib/Algebra/Group/ForwardDiff.lean |
1 |
9 |
['FlAmmmmING', 'Ruben-VandeVelde', 'github-actions'] |
dagurtomas assignee:dagurtomas |
7-33611 7 days ago |
14-70844 14 days ago |
14-70889 14 days |
| 27971 |
smmercuri author:smmercuri |
feat: weak approximation theorems for infinite places of a number field |
Under the diagonal embedding into infinite places, a number field $K$ is dense inside both the product $\prod_{v \mid \infty} (K, v)$, where $(K, v)$ denotes $K$ equipped with $v$'s topology, and the infinite adele ring $\prod_v K_v$.
This PR continues the work from #22153.
Original PR: https://github.com/leanprover-community/mathlib4/pull/22153
---
- [x] depends on: #27969 |
FLT
t-algebra
t-number-theory
label:t-algebra$ |
98/2 |
Mathlib/Analysis/Normed/Field/WithAbs.lean,Mathlib/NumberTheory/NumberField/AdeleRing.lean,Mathlib/NumberTheory/NumberField/InfinitePlace/Basic.lean |
3 |
8 |
['faenuccio', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'smmercuri'] |
Vierkantor assignee:Vierkantor |
6-82781 6 days ago |
25-9187 25 days ago |
42-43736 42 days |
| 29270 |
euprunin author:euprunin |
chore: remove redundant `refine` invocations |
---
**Note:** Although technically redundant, some of these may be worth keeping for readability, or other reasons. Let me know if you think any should stay.
---
[](https://gitpod.io/from-referrer/)
|
|
4/12 |
Mathlib/Algebra/Order/GroupWithZero/Lex.lean,Mathlib/Algebra/Polynomial/Smeval.lean,Mathlib/AlgebraicGeometry/Limits.lean,Mathlib/Geometry/Manifold/LocalInvariantProperties.lean,Mathlib/Probability/Density.lean |
5 |
16 |
['euprunin', 'github-actions', 'j-loreaux', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'sgouezel'] |
dupuisf assignee:dupuisf |
6-60881 6 days ago |
6-60881 6 days ago |
36-51218 36 days |
| 30754 |
Jlh18 author:Jlh18 |
feat (CategoryTheory/Comma/Over/Pushforward): define pushforwards |
Define what it means to be a pushforward, what it means to have pushforwards, and the pullback/pushforward adjunction when all pushforwards exist.
This is related to PRs #30375 and PR #29810
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory
RFC
|
99/2 |
Mathlib.lean,Mathlib/CategoryTheory/Comma/Over/Pullback.lean,Mathlib/CategoryTheory/Comma/Over/Pushforward.lean |
3 |
7 |
['Jlh18', 'github-actions', 'joelriou', 'sinhp'] |
adamtopaz assignee:adamtopaz |
6-55349 6 days ago |
7-67947 7 days ago |
22-78917 22 days |
| 30647 |
JovanGerb author:JovanGerb |
chore(Tactic/Ring): use Qq more honestly |
This PR removes almost all uses of `(q(...) : Expr)` in the `ring` tactic implementation.
This includes switching from `Ring`/`DivisionSemiring` to `CommRing`/`Semifield`, because then we can rely on `assumeInstancesCommute` to make Qq happy. This should not affect the generality of the `ring` tactic, because a `Ring`/`DivisionSemiring` that is also commutative is also a `CommRing`/`Semifield`.
I wanted to do some other work on `ring`, but that stumbled on the fact that some `q(...)` proof terms weren't actually being type checked properly by Qq. This PR fixes this.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
136/118 |
Mathlib/Tactic/Ring/Basic.lean |
1 |
12 |
['JovanGerb', 'github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'thorimur'] |
thorimur assignee:thorimur |
6-45799 6 days ago |
26-81459 26 days ago |
26-81446 26 days |
| 30669 |
harahu author:harahu |
doc(Algebra): fix typos |
Found with help from Codex. I've tried to limit the PR to changes that are easy to review.
---
Should you find it difficult to review any particular part of this PR, know that I have nothing against trimming this PR down in favor of smaller free-standing PRs for the difficult-to-review parts.
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
46/46 |
Mathlib/Algebra/AddConstMap/Basic.lean,Mathlib/Algebra/BigOperators/Pi.lean,Mathlib/Algebra/BrauerGroup/Defs.lean,Mathlib/Algebra/CharZero/AddMonoidHom.lean,Mathlib/Algebra/Field/Action/ConjAct.lean,Mathlib/Algebra/Field/Power.lean,Mathlib/Algebra/Field/ULift.lean,Mathlib/Algebra/GroupWithZero/Associated.lean,Mathlib/Algebra/Homology/ComplexShapeSigns.lean,Mathlib/Algebra/Homology/DerivedCategory/Basic.lean,Mathlib/Algebra/Homology/DerivedCategory/ShortExact.lean,Mathlib/Algebra/Homology/Factorizations/Basic.lean,Mathlib/Algebra/Homology/HomologySequenceLemmas.lean,Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean,Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean,Mathlib/Algebra/Homology/HomotopyCategory/ShortExact.lean,Mathlib/Algebra/Homology/HomotopyCategory/SingleFunctors.lean,Mathlib/Algebra/Homology/HomotopyCategory/Triangulated.lean,Mathlib/Algebra/Homology/HomotopyCofiber.lean,Mathlib/Algebra/Homology/Localization.lean,Mathlib/Algebra/Lie/Free.lean,Mathlib/Algebra/Lie/InvariantForm.lean,Mathlib/Algebra/Lie/Quotient.lean,Mathlib/Algebra/Lie/Sl2.lean,Mathlib/Algebra/Lie/Submodule.lean,Mathlib/Algebra/Lie/TraceForm.lean,Mathlib/Algebra/Order/Ring/Nat.lean,Mathlib/Algebra/Polynomial/Lifts.lean,Mathlib/Algebra/Polynomial/RuleOfSigns.lean,Mathlib/Algebra/SkewMonoidAlgebra/Single.lean,Mathlib/Algebra/Star/NonUnitalSubsemiring.lean |
31 |
1 |
['github-actions'] |
kim-em assignee:kim-em |
6-39528 6 days ago |
25-82106 25 days ago |
26-353 26 days |
| 30144 |
alreadydone author:alreadydone |
feat(Data/Nat): kernel reducible binaryRec |
+ Redefine `Nat.binaryRec` to allow kernel reduction.
+ Move some lemmas from Data/Nat/Bitwise to Data/Nat/BinaryRec.
+ Use `nsmulBinRec` for nsmul/zsmul on elliptic curves.
---
[](https://gitpod.io/from-referrer/)
|
t-data
t-algebra
label:t-algebra$ |
90/35 |
Mathlib/Algebra/Group/Defs.lean,Mathlib/Algebra/Group/Prod.lean,Mathlib/AlgebraicGeometry/EllipticCurve/Affine/Point.lean,Mathlib/Data/Nat/BinaryRec.lean,Mathlib/Data/Nat/BitIndices.lean,Mathlib/Data/Nat/Bitwise.lean |
6 |
8 |
['alreadydone', 'astrainfinita', 'github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
pechersky assignee:pechersky |
6-33627 6 days ago |
14-38533 14 days ago |
40-35797 40 days |
| 30242 |
YaelDillies author:YaelDillies |
chore: rename `mul_le_mul_right'` to `mul_le_mul_left` |
---
- [x] depends on: #30508
- [x] depends on: #30632
[](https://gitpod.io/from-referrer/)
|
t-order
t-algebra
label:t-algebra$ |
345/379 |
Archive/Wiedijk100Theorems/CubingACube.lean,Counterexamples/OrderedCancelAddCommMonoidWithBounds.lean,Mathlib/Algebra/Algebra/Operations.lean,Mathlib/Algebra/Group/UniqueProds/Basic.lean,Mathlib/Algebra/Lie/Subalgebra.lean,Mathlib/Algebra/Module/Submodule/Pointwise.lean,Mathlib/Algebra/MonoidAlgebra/Degree.lean,Mathlib/Algebra/Order/AbsoluteValue/Basic.lean,Mathlib/Algebra/Order/AddTorsor.lean,Mathlib/Algebra/Order/Field/Pi.lean,Mathlib/Algebra/Order/Group/Defs.lean,Mathlib/Algebra/Order/Group/Int.lean,Mathlib/Algebra/Order/Group/Nat.lean,Mathlib/Algebra/Order/Group/Opposite.lean,Mathlib/Algebra/Order/Group/PiLex.lean,Mathlib/Algebra/Order/Group/Units.lean,Mathlib/Algebra/Order/GroupWithZero/Canonical.lean,Mathlib/Algebra/Order/GroupWithZero/Unbundled/Defs.lean,Mathlib/Algebra/Order/Monoid/Associated.lean,Mathlib/Algebra/Order/Monoid/Canonical/Defs.lean,Mathlib/Algebra/Order/Monoid/Defs.lean,Mathlib/Algebra/Order/Monoid/OrderDual.lean,Mathlib/Algebra/Order/Monoid/Prod.lean,Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean,Mathlib/Algebra/Order/Monoid/Unbundled/Units.lean,Mathlib/Algebra/Order/Nonneg/Ring.lean,Mathlib/Algebra/Order/Pi.lean,Mathlib/Algebra/Order/Positive/Ring.lean,Mathlib/Algebra/Order/Ring/Archimedean.lean,Mathlib/Algebra/Order/Ring/Basic.lean,Mathlib/Algebra/Order/Ring/Canonical.lean,Mathlib/Algebra/Order/Ring/Nat.lean,Mathlib/Algebra/Order/Ring/Rat.lean,Mathlib/Algebra/Order/Star/Basic.lean,Mathlib/Algebra/Order/ToIntervalMod.lean,Mathlib/Algebra/Tropical/Basic.lean,Mathlib/Analysis/CStarAlgebra/Multiplier.lean,Mathlib/Analysis/Matrix/Order.lean,Mathlib/Analysis/MeanInequalities.lean,Mathlib/Analysis/Normed/Group/Basic.lean,Mathlib/Analysis/Normed/Ring/Basic.lean,Mathlib/Analysis/Normed/Unbundled/SeminormFromConst.lean,Mathlib/Analysis/Normed/Unbundled/SmoothingSeminorm.lean,Mathlib/Analysis/NormedSpace/MStructure.lean,Mathlib/Analysis/PSeries.lean,Mathlib/Combinatorics/Additive/CauchyDavenport.lean,Mathlib/Combinatorics/Additive/Energy.lean,Mathlib/Combinatorics/Additive/PluenneckeRuzsa.lean,Mathlib/Combinatorics/SetFamily/Kleitman.lean,Mathlib/Computability/Language.lean,Mathlib/Data/ENNReal/Action.lean,Mathlib/Data/ENNReal/Basic.lean,Mathlib/Data/ENNReal/Inv.lean,Mathlib/Data/EReal/Inv.lean,Mathlib/Data/Finsupp/Lex.lean,Mathlib/Data/Int/Interval.lean,Mathlib/Data/Nat/Choose/Factorization.lean,Mathlib/Data/Nat/Fib/Zeckendorf.lean,Mathlib/Data/Nat/PartENat.lean,Mathlib/Data/Num/ZNum.lean,Mathlib/Data/Ordmap/Ordset.lean,Mathlib/Data/Real/Basic.lean,Mathlib/Data/Real/StarOrdered.lean,Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean,Mathlib/Geometry/Convex/Cone/Basic.lean,Mathlib/GroupTheory/DivisibleHull.lean,Mathlib/GroupTheory/MonoidLocalization/Order.lean,Mathlib/GroupTheory/Schreier.lean,Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean,Mathlib/MeasureTheory/Function/Intersectivity.lean,Mathlib/MeasureTheory/Function/SimpleFunc.lean,Mathlib/MeasureTheory/Integral/Bochner/VitaliCaratheodory.lean,Mathlib/MeasureTheory/Integral/Lebesgue/Add.lean,Mathlib/NumberTheory/EllipticDivisibilitySequence.lean,Mathlib/NumberTheory/FrobeniusNumber.lean,Mathlib/NumberTheory/Zsqrtd/Basic.lean,Mathlib/Order/Partition/Equipartition.lean,Mathlib/Probability/Independence/Integration.lean,Mathlib/Probability/Kernel/Defs.lean,Mathlib/RingTheory/DedekindDomain/Different.lean,Mathlib/RingTheory/DedekindDomain/Factorization.lean,Mathlib/RingTheory/HahnSeries/Lex.lean,Mathlib/RingTheory/Valuation/ValuativeRel/Basic.lean,Mathlib/SetTheory/Cardinal/Arithmetic.lean,Mathlib/SetTheory/Cardinal/Divisibility.lean,Mathlib/SetTheory/Cardinal/Order.lean,Mathlib/SetTheory/Cardinal/Regular.lean,Mathlib/SetTheory/Game/Basic.lean,Mathlib/SetTheory/Ordinal/Arithmetic.lean,Mathlib/SetTheory/Ordinal/Basic.lean,Mathlib/SetTheory/Ordinal/Exponential.lean,Mathlib/SetTheory/Ordinal/FixedPoint.lean,Mathlib/SetTheory/Ordinal/NaturalOps.lean,Mathlib/SetTheory/Ordinal/Notation.lean,Mathlib/SetTheory/Ordinal/Principal.lean,Mathlib/SetTheory/PGame/Algebra.lean,Mathlib/SetTheory/Surreal/Basic.lean,Mathlib/Tactic/LinearCombination/Lemmas.lean,Mathlib/Tactic/Ring/Compare.lean,Mathlib/Topology/ContinuousMap/CompactlySupported.lean |
104 |
13 |
['JovanGerb', 'YaelDillies', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
Vierkantor assignee:Vierkantor |
6-33626 6 days ago |
13-75994 13 days ago |
16-75010 16 days |
| 30657 |
alreadydone author:alreadydone |
feat(Algebra): generalize Picard group to Semiring |
---
- [x] depends on: #30638
- [x] depends on: #30665
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
33/28 |
Mathlib/RingTheory/PicardGroup.lean |
1 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
dagurtomas assignee:dagurtomas |
6-33624 6 days ago |
13-68406 13 days ago |
13-68608 13 days |
| 31113 |
515801431 author:515801431 |
feat(Mathlib/Combinatorics/Enumerative/Polya.lean): Add additional theorem in `Polya.lean` |
-- depend on #30525
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
|
298/0 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/Polya.lean |
2 |
1 |
['github-actions'] |
b-mehta assignee:b-mehta |
6-33616 6 days ago |
14-13455 14 days ago |
14-13507 14 days |
| 31132 |
kckennylau author:kckennylau |
Feat(Algebra): saturation of a submonoid |
This PR defines the saturation of a submonoid and the type of saturated submonoids.
It is used for the context of localisations.
Caveat: there is a similarly named predicate called `AddSubgroup.Saturated`.
Zulip:
* [mathlib4 > saturation of a submonoid](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/saturation.20of.20a.20submonoid/with/548242862)
* [#Is there code for X? > Closure of Submonoid in CommMonoids](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/Closure.20of.20Submonoid.20in.20CommMonoids/near/419087778)
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
279/0 |
Mathlib.lean,Mathlib/Algebra/Group/Submonoid/Saturation.lean |
2 |
11 |
['github-actions', 'kckennylau', 'plp127'] |
kim-em assignee:kim-em |
6-33612 6 days ago |
13-44805 13 days ago |
13-44842 13 days |
| 28719 |
mitchell-horner author:mitchell-horner |
refactor: redefine `IsTuranMaximal` |
Redefined `IsTuranMaximal := G.IsExtremal (CliqueFree · (r + 1))` and
- replaced `classical` in `IsTuranMaximal.le_iff_eq` with `DecidableRel`
- refactored `turanGraph.instDecidableRelAdj`, `turanGraph_zero`, `exists_isTuranMaximal`
- added `open Fintype`
- replaced `simp only` with `rw` or `simp_rw`
---
- [x] depends on: #28721
- [x] depends on: #29054
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
33/46 |
Mathlib/Combinatorics/SimpleGraph/Extremal/Turan.lean |
1 |
12 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'mitchell-horner', 'vihdzp'] |
kmill assignee:kmill |
6-24343 6 days ago |
47-7221 1 month ago |
74-26343 74 days |
| 31201 |
euprunin author:euprunin |
chore(RingTheory): golf `isPrimary_decomposition_pairwise_ne_radical` using `grind` |
---
Show trace profiling of isPrimary_decomposition_pairwise_ne_radical: 89 ms before, 156 ms after
### Trace profiling of `isPrimary_decomposition_pairwise_ne_radical` before PR 31201
```diff
diff --git a/Mathlib/RingTheory/Lasker.lean b/Mathlib/RingTheory/Lasker.lean
index 8f522d48f8..21bf4d68b6 100644
--- a/Mathlib/RingTheory/Lasker.lean
+++ b/Mathlib/RingTheory/Lasker.lean
@@ -57,6 +57,7 @@ lemma decomposition_erase_inf [DecidableEq (Ideal R)] {I : Ideal R}
open scoped Function -- required for scoped `on` notation
+set_option trace.profiler true in
lemma isPrimary_decomposition_pairwise_ne_radical {I : Ideal R}
{s : Finset (Ideal R)} (hs : s.inf id = I) (hs' : ∀ ⦃J⦄, J ∈ s → J.IsPrimary) :
∃ t : Finset (Ideal R), t.inf id = I ∧ (∀ ⦃J⦄, J ∈ t → J.IsPrimary) ∧
```
```
ℹ [1261/1261] Built Mathlib.RingTheory.Lasker (1.3s)
info: Mathlib/RingTheory/Lasker.lean:61:0: [Elab.command] [0.013044] theorem isPrimary_decomposition_pairwise_ne_radical {I : Ideal R} {s : Finset (Ideal R)}
(hs : s.inf id = I) (hs' : ∀ ⦃J⦄, J ∈ s → J.IsPrimary) :
∃ t : Finset (Ideal R),
t.inf id = I ∧ (∀ ⦃J⦄, J ∈ t → J.IsPrimary) ∧ (t : Set (Ideal R)).Pairwise ((· ≠ ·) on radical) :=
by
classical
refine ⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
· rw [← hs]
refine le_antisymm ?_ ?_ <;> intro x hx
· simp only [Finset.inf_image, CompTriple.comp_eq, Submodule.mem_finsetInf, Function.comp_apply,
Finset.mem_filter, id_eq, and_imp] at hx ⊢
intro J hJ
exact hx J hJ J hJ rfl
· simp only [Submodule.mem_finsetInf, id_eq, Finset.inf_image, CompTriple.comp_eq, Function.comp_apply,
Finset.mem_filter, and_imp] at hx ⊢
intro J _ K hK _
exact hx K hK
· simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
· intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.definition.header] [0.010071] Ideal.isPrimary_decomposition_pairwise_ne_radical
info: Mathlib/RingTheory/Lasker.lean:61:0: [Elab.command] [0.016459] lemma isPrimary_decomposition_pairwise_ne_radical {I : Ideal R} {s : Finset (Ideal R)}
(hs : s.inf id = I) (hs' : ∀ ⦃J⦄, J ∈ s → J.IsPrimary) :
∃ t : Finset (Ideal R),
t.inf id = I ∧ (∀ ⦃J⦄, J ∈ t → J.IsPrimary) ∧ (t : Set (Ideal R)).Pairwise ((· ≠ ·) on radical) :=
by
classical
refine ⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
· rw [← hs]
refine le_antisymm ?_ ?_ <;> intro x hx
· simp only [Finset.inf_image, CompTriple.comp_eq, Submodule.mem_finsetInf, Function.comp_apply,
Finset.mem_filter, id_eq, and_imp] at hx ⊢
intro J hJ
exact hx J hJ J hJ rfl
· simp only [Submodule.mem_finsetInf, id_eq, Finset.inf_image, CompTriple.comp_eq, Function.comp_apply,
Finset.mem_filter, and_imp] at hx ⊢
intro J _ K hK _
exact hx K hK
· simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
· intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
info: Mathlib/RingTheory/Lasker.lean:61:0: [Elab.async] [0.091697] elaborating proof of Ideal.isPrimary_decomposition_pairwise_ne_radical
[Elab.definition.value] [0.089099] Ideal.isPrimary_decomposition_pairwise_ne_radical
[Elab.step] [0.086924] classical
refine ⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
· rw [← hs]
refine le_antisymm ?_ ?_ <;> intro x hx
· simp only [Finset.inf_image, CompTriple.comp_eq, Submodule.mem_finsetInf, Function.comp_apply,
Finset.mem_filter, id_eq, and_imp] at hx ⊢
intro J hJ
exact hx J hJ J hJ rfl
· simp only [Submodule.mem_finsetInf, id_eq, Finset.inf_image, CompTriple.comp_eq, Function.comp_apply,
Finset.mem_filter, and_imp] at hx ⊢
intro J _ K hK _
exact hx K hK
· simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
· intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.086918] classical
[… 154 lines omitted …]
Finset.mem_filter, id_eq, and_imp] at hx ⊢
intro J hJ
exact hx J hJ J hJ rfl
· simp only [Submodule.mem_finsetInf, id_eq, Finset.inf_image, CompTriple.comp_eq,
Function.comp_apply, Finset.mem_filter, and_imp] at hx ⊢
intro J _ K hK _
exact hx K hK
[Elab.step] [0.020717]
rw [← hs]
refine le_antisymm ?_ ?_ <;> intro x hx
· simp only [Finset.inf_image, CompTriple.comp_eq, Submodule.mem_finsetInf, Function.comp_apply,
Finset.mem_filter, id_eq, and_imp] at hx ⊢
intro J hJ
exact hx J hJ J hJ rfl
· simp only [Submodule.mem_finsetInf, id_eq, Finset.inf_image, CompTriple.comp_eq,
Function.comp_apply, Finset.mem_filter, and_imp] at hx ⊢
intro J _ K hK _
exact hx K hK
[Elab.step] [0.010102] ·
simp only [Finset.inf_image, CompTriple.comp_eq, Submodule.mem_finsetInf, Function.comp_apply,
Finset.mem_filter, id_eq, and_imp] at hx ⊢
intro J hJ
exact hx J hJ J hJ rfl
[Elab.step] [0.010064]
simp only [Finset.inf_image, CompTriple.comp_eq, Submodule.mem_finsetInf,
Function.comp_apply, Finset.mem_filter, id_eq, and_imp] at hx ⊢
intro J hJ
exact hx J hJ J hJ rfl
[Elab.step] [0.010060]
simp only [Finset.inf_image, CompTriple.comp_eq, Submodule.mem_finsetInf,
Function.comp_apply, Finset.mem_filter, id_eq, and_imp] at hx ⊢
intro J hJ
exact hx J hJ J hJ rfl
[Elab.step] [0.015365] ·
simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
[Elab.step] [0.015273]
simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
[Elab.step] [0.015268]
simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
[Elab.step] [0.027960] ·
intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.027947]
intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.027944]
intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.014324] ·
rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.014317]
rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.014310]
rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
Build completed successfully (1261 jobs).
```
### Trace profiling of `isPrimary_decomposition_pairwise_ne_radical` after PR 31201
```diff
diff --git a/Mathlib/RingTheory/Lasker.lean b/Mathlib/RingTheory/Lasker.lean
index 8f522d48f8..6f1c39f8a7 100644
--- a/Mathlib/RingTheory/Lasker.lean
+++ b/Mathlib/RingTheory/Lasker.lean
@@ -57,6 +57,7 @@ lemma decomposition_erase_inf [DecidableEq (Ideal R)] {I : Ideal R}
open scoped Function -- required for scoped `on` notation
+set_option trace.profiler true in
lemma isPrimary_decomposition_pairwise_ne_radical {I : Ideal R}
{s : Finset (Ideal R)} (hs : s.inf id = I) (hs' : ∀ ⦃J⦄, J ∈ s → J.IsPrimary) :
∃ t : Finset (Ideal R), t.inf id = I ∧ (∀ ⦃J⦄, J ∈ t → J.IsPrimary) ∧
@@ -64,16 +65,8 @@ lemma isPrimary_decomposition_pairwise_ne_radical {I : Ideal R}
classical
refine ⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id,
?_, ?_, ?_⟩
- · rw [← hs]
- refine le_antisymm ?_ ?_ <;> intro x hx
- · simp only [Finset.inf_image, CompTriple.comp_eq, Submodule.mem_finsetInf,
- Function.comp_apply, Finset.mem_filter, id_eq, and_imp] at hx ⊢
- intro J hJ
- exact hx J hJ J hJ rfl
- · simp only [Submodule.mem_finsetInf, id_eq, Finset.inf_image, CompTriple.comp_eq,
- Function.comp_apply, Finset.mem_filter, and_imp] at hx ⊢
- intro J _ K hK _
- exact hx K hK
+ · ext
+ grind [Finset.inf_image, Submodule.mem_finsetInf]
· simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
```
```
ℹ [1261/1261] Built Mathlib.RingTheory.Lasker (1.2s)
info: Mathlib/RingTheory/Lasker.lean:61:0: [Elab.command] [0.011121] theorem isPrimary_decomposition_pairwise_ne_radical {I : Ideal R} {s : Finset (Ideal R)}
(hs : s.inf id = I) (hs' : ∀ ⦃J⦄, J ∈ s → J.IsPrimary) :
∃ t : Finset (Ideal R),
t.inf id = I ∧ (∀ ⦃J⦄, J ∈ t → J.IsPrimary) ∧ (t : Set (Ideal R)).Pairwise ((· ≠ ·) on radical) :=
by
classical
refine ⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
· ext
grind [Finset.inf_image, Submodule.mem_finsetInf]
· simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
· intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
info: Mathlib/RingTheory/Lasker.lean:61:0: [Elab.command] [0.012898] lemma isPrimary_decomposition_pairwise_ne_radical {I : Ideal R} {s : Finset (Ideal R)}
(hs : s.inf id = I) (hs' : ∀ ⦃J⦄, J ∈ s → J.IsPrimary) :
∃ t : Finset (Ideal R),
t.inf id = I ∧ (∀ ⦃J⦄, J ∈ t → J.IsPrimary) ∧ (t : Set (Ideal R)).Pairwise ((· ≠ ·) on radical) :=
by
classical
refine ⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
· ext
grind [Finset.inf_image, Submodule.mem_finsetInf]
· simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
· intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
info: Mathlib/RingTheory/Lasker.lean:61:0: [Elab.async] [0.157957] elaborating proof of Ideal.isPrimary_decomposition_pairwise_ne_radical
[Elab.definition.value] [0.156050] Ideal.isPrimary_decomposition_pairwise_ne_radical
[Elab.step] [0.154194] classical
refine ⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
· ext
grind [Finset.inf_image, Submodule.mem_finsetInf]
· simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
· intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.154189] classical
refine ⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
· ext
grind [Finset.inf_image, Submodule.mem_finsetInf]
· simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
· intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.154184] classical
refine ⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
· ext
grind [Finset.inf_image, Submodule.mem_finsetInf]
· simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
[… 59 lines omitted …]
⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
[Elab.step] [0.017062] expected type: ∃ t,
t.inf id = I ∧
(∀ ⦃J : Ideal R⦄, J ∈ t → J.IsPrimary) ∧ (↑t).Pairwise ((fun x1 x2 ↦ x1 ≠ x2) on radical), term
⟨(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id, ?_, ?_, ?_⟩
[Elab.step] [0.017043] expected type: ∃ t,
t.inf id = I ∧
(∀ ⦃J : Ideal R⦄, J ∈ t → J.IsPrimary) ∧
(↑t).Pairwise ((fun x1 x2 ↦ x1 ≠ x2) on radical), term
Exists.intro✝ ((s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id)
⟨?_, ?_, ?_⟩
[Elab.step] [0.016253] expected type: Finset (Ideal R), term
(s.image (fun J ↦ {I ∈ s | I.radical = J.radical})).image fun t ↦ t.inf id
[Elab.step] [0.013756] expected type: , term
(s.image (fun J ↦ {I ∈ s | I.radical = J.radical}))
[Elab.step] [0.013751] expected type: , term
s.image (fun J ↦ {I ∈ s | I.radical = J.radical})
[Elab.step] [0.011627] expected type: ?m.44 → Finset (Ideal R), term
(fun J ↦ {I ∈ s | I.radical = J.radical})
[Elab.step] [0.011622] expected type: ?m.44 → Finset (Ideal R), term
fun J ↦ {I ∈ s | I.radical = J.radical}
[Elab.step] [0.011555] expected type: Finset (Ideal R), term
{I ∈ s | I.radical = J.radical}
[Elab.step] [0.090158] ·
ext
grind [Finset.inf_image, Submodule.mem_finsetInf]
[Elab.step] [0.090093]
ext
grind [Finset.inf_image, Submodule.mem_finsetInf]
[Elab.step] [0.090089]
ext
grind [Finset.inf_image, Submodule.mem_finsetInf]
[Elab.step] [0.089120] grind [Finset.inf_image, Submodule.mem_finsetInf]
[Elab.step] [0.014619] ·
simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
[Elab.step] [0.014610]
simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
[Elab.step] [0.014605]
simp only [Finset.mem_image, exists_exists_and_eq_and, forall_exists_index, and_imp,
forall_apply_eq_imp_iff₂]
intro J hJ
refine isPrimary_finset_inf (i := J) ?_ ?_ (by simp)
· simp [hJ]
· simp only [Finset.mem_filter, id_eq, and_imp]
intro y hy
simp [hs' hy]
[Elab.step] [0.026753] ·
intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.026740]
intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.026737]
intro I hI J hJ hIJ
simp only [Finset.coe_image, Set.mem_image, Finset.mem_coe, exists_exists_and_eq_and] at hI hJ
obtain ⟨I', hI', hI⟩ := hI
obtain ⟨J', hJ', hJ⟩ := hJ
simp only [Function.onFun, ne_eq]
contrapose! hIJ
suffices I'.radical = J'.radical by rw [← hI, ← hJ, this]
· rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.013805] ·
rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.013799]
rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
[Elab.step] [0.013796]
rw [← hI, radical_finset_inf (i := I') (by simp [hI']) (by simp), id_eq] at hIJ
rw [hIJ, ← hJ, radical_finset_inf (i := J') (by simp [hJ']) (by simp), id_eq]
Build completed successfully (1261 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
maintainer-merge
|
2/10 |
Mathlib/RingTheory/Lasker.lean |
1 |
2 |
['erdOne', 'github-actions'] |
nobody |
5-79842 5 days ago |
5-79842 5 days ago |
11-52017 11 days |
| 30727 |
joelriou author:joelriou |
feat(CategoryTheory/Presentable): presentable objects in `Type` |
In this file, we show that if `κ : Cardinal.{u}` is a regular cardinal, then `X : Type u` is `κ`-presentable in the category of types iff `HasCardinalLT X κ` holds.
---
- [x] depends on: #30633
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
141/0 |
Mathlib.lean,Mathlib/CategoryTheory/Presentable/Type.lean |
2 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
TwoFX assignee:TwoFX |
5-44949 5 days ago |
5-45209 5 days ago |
15-81810 15 days |
| 27258 |
JovanGerb author:JovanGerb |
Imo2020 q6 |
Original PR: #23431
This PR adds a solution to IMO 2020 Q6. It follows the solution that I found when I was participating in the IMO. I used the statement formalization that was given by @jsm28.
---
- [x] depends on: #27257
[](https://gitpod.io/from-referrer/)
|
IMO |
335/0 |
Archive.lean,Archive/Imo/Imo2020Q6.lean |
2 |
10 |
['JovanGerb', 'dwrensha', 'github-actions', 'mathlib4-dependent-issues-bot'] |
dwrensha assignee:dwrensha |
5-41880 5 days ago |
52-65709 1 month ago |
52-66989 52 days |
| 29147 |
ocfnash author:ocfnash |
feat: miscellaneous root system lemmas |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
73/34 |
Mathlib/LinearAlgebra/RootSystem/Defs.lean,Mathlib/LinearAlgebra/RootSystem/Finite/G2.lean,Mathlib/LinearAlgebra/RootSystem/Finite/Nondegenerate.lean,Mathlib/LinearAlgebra/RootSystem/Reduced.lean |
4 |
2 |
['github-actions', 'ocfnash'] |
dagurtomas assignee:dagurtomas |
5-33614 5 days ago |
12-71463 12 days ago |
12-71440 12 days |
| 31118 |
LLaurance author:LLaurance |
feat(Combinatorics/SimpleGraph/Connectivity/Subgraph): the path of a walk is a subgraph of the walk itself |
Add helper theorems for https://github.com/leanprover-community/mathlib4/pull/29309
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
19/0 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean |
1 |
2 |
['SnirBroshi', 'github-actions'] |
b-mehta assignee:b-mehta |
5-33614 5 days ago |
14-1794 14 days ago |
14-3507 14 days |
| 30559 |
SnirBroshi author:SnirBroshi |
feat(Data/Sym/Sym2): add `Sym2.diagSet` |
feat(Data/Sym/Sym2): add `Sym2.diagSet`, the set of elements on the diagonal
---
This should help state theorems in simple graphs more easily (e.g. see `SimpleGraph.edgeSet_fromEdgeSet`, `SimpleGraph.edgeSet_eq_iff`, `SimpleGraph.edgeSet_sdiff_sdiff_isDiag`, `SimpleGraph.edgeSet_subset_setOf_not_isDiag`) and more importantly work with such statements.
[](https://gitpod.io/from-referrer/)
|
t-data |
42/5 |
Mathlib/Data/Sym/Sym2.lean |
1 |
1 |
['github-actions'] |
nobody |
5-30925 5 days ago |
30-48474 30 days ago |
30-48513 30 days |
| 28557 |
ShreckYe author:ShreckYe |
feat(Data/Nat/Factorization): some results on equality of powers of naturals proved from factorization |
I came across some math olympiad problems in number theory that could benefit from these theorems, expecially those on the prime power equality `p ^ m = a ^ n`. A specialized `eq_of_factorization_eq'` is added BTW to help with proof search. |
t-data |
96/0 |
Mathlib/Data/Nat/Factorization/Basic.lean,Mathlib/Data/Nat/Factorization/Defs.lean,Mathlib/Data/Nat/Factorization/PrimePow.lean |
3 |
22 |
['Ruben-VandeVelde', 'ShreckYe', 'github-actions', 'robin-carlier'] |
pechersky assignee:pechersky |
5-23690 5 days ago |
5-32394 5 days ago |
84-70882 84 days |
| 29449 |
mitchell-horner author:mitchell-horner |
feat(Combinatorics/SimpleGraph): add Turán density related theorems |
Refactors `tendsto_turanDensity` and implements `turanDensity_eq_sInf` and `isContained_of_card_edgeFinset` (theorems that are common in proofs involving Turán density).
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
134/22 |
Mathlib/Combinatorics/SimpleGraph/Extremal/TuranDensity.lean,Mathlib/Data/Set/Image.lean,Mathlib/Topology/Instances/NNReal/Lemmas.lean |
3 |
15 |
['YaelDillies', 'github-actions', 'mitchell-horner'] |
YaelDillies assignee:YaelDillies |
5-22170 5 days ago |
5-22170 5 days ago |
64-48098 64 days |
| 31416 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Walk): lemmas about the first and last darts/edges |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
43/0 |
Mathlib/Combinatorics/SimpleGraph/Walk.lean |
1 |
1 |
['github-actions'] |
nobody |
5-8739 5 days ago |
5-8741 5 days ago |
5-8777 5 days |
| 30232 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Connectivity/Subgraph): add `ConnectedComponent.toSubgraph` |
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-combinatorics
|
43/0 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean,Mathlib/Combinatorics/SimpleGraph/Maps.lean,Mathlib/Combinatorics/SimpleGraph/Subgraph.lean |
3 |
20 |
['SnirBroshi', 'YaelDillies', 'github-actions', 'mathlib4-merge-conflict-bot'] |
YaelDillies assignee:YaelDillies |
5-6750 5 days ago |
5-6774 5 days ago |
38-73091 38 days |
| 31418 |
mitchell-horner author:mitchell-horner |
feat(Combinatorics/SimpleGraph): impl `Iso.degree_eq` and `Iso.minDegree_eq` and `Iso.maxDegree_eq` |
Move `Iso.card_edgeFinset_eq` further down in Finite.lean and implement:
- `Iso.degree_eq`
- `Iso.minDegree_eq`
- `Iso.maxDegree_eq`
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
51/12 |
Mathlib/Combinatorics/SimpleGraph/Finite.lean |
1 |
1 |
['github-actions'] |
nobody |
4-85115 4 days ago |
4-85389 4 days ago |
4-85416 4 days |
| 27602 |
mitchell-horner author:mitchell-horner |
feat(Combinatorics/SimpleGraph): define `CompleteBipartiteSubgraph` |
Define the complete bipartite subgraphs of `s` and `t` parts as a "left" subset of `s` vertices and a "right" subset of `t` vertices such that every vertex in the "left" subset is adjacent to every vertex in the "right" subset.
In this case `Nonempty (G.CompleteBipartiteSubgraph (card α) (card β))` is equivalent to `completeBipartiteGraph α β ⊑ G`, that is, finding a "left" subset of `s` vertices and a "right" subset of `t` vertices such that every vertex in the "left" subset is adjacent to every vertex in the "right" subset is equivalent to finding an injective homomorphism `completeBipartiteGraph α β` to `G`.
---
- [x] depends on: #30287
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
93/0 |
Mathlib/Combinatorics/SimpleGraph/Bipartite.lean |
1 |
18 |
['YaelDillies', 'b-mehta', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'mitchell-horner', 'vlad902'] |
YaelDillies assignee:YaelDillies |
4-84505 4 days ago |
4-84525 4 days ago |
73-15470 73 days |
| 31423 |
harahu author:harahu |
doc(Combinatorics): ensure only a single H1 header per file |
This PR ensures we only have a single H1 header per lean file in the `Combinatorics` subdirectory. We do this for the following reasons:
- Having more than one H1 header per file is likely to hamper both assistive technologies and SEO, since it introduces ambiguity about what the title of the resulting documentation webpage actually should be.
- The [documentation style guide](https://leanprover-community.github.io/contribute/doc.html) asks for the title of the file to be H1, any other header in the file-level docstring to be H2, and sectioning headers to be H3.
I have used my own judgement to decide whether to demote the extra H1 headers to H2 or H3. I've also tried to ensure that any intended header hierarchy is maintained, by further demoting existing H2 comments to H3 where applicable. I ask reviewers to verify that my choices makes sense to them.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
20/22 |
Mathlib/Combinatorics/Derangements/Finite.lean,Mathlib/Combinatorics/Enumerative/Stirling.lean,Mathlib/Combinatorics/Matroid/Circuit.lean,Mathlib/Combinatorics/Matroid/Minor/Contract.lean,Mathlib/Combinatorics/Matroid/Minor/Delete.lean,Mathlib/Combinatorics/Matroid/Minor/Order.lean,Mathlib/Combinatorics/Matroid/Rank/Cardinal.lean,Mathlib/Combinatorics/Matroid/Rank/ENat.lean,Mathlib/Combinatorics/Matroid/Rank/Finite.lean |
9 |
1 |
['github-actions'] |
nobody |
4-82875 4 days ago |
4-82891 4 days ago |
4-82926 4 days |
| 27599 |
mitchell-horner author:mitchell-horner |
feat(Combinatorics/SimpleGraph): define `CompleteEquipartiteSubgraph` |
Define the complete equipartite subgraphs in `r` parts each of size `t` in `G` as the `r` subsets of vertices each of size `t` such that vertices in distinct subsets are adjacent.
In this case `Nonempty (G.CompleteEquipartiteSubgraph r t)` is equivalent to `completeEquipartiteGraph r t ⊑ G`, that is, finding `r` subsets of vertices each of size `t` in `G` such that vertices in distinct subsets are adjacent is equivalent to finding an injective homomorphism from `completeEquipartiteGraph r t` to `G`.
---
- [x] depends on: #27597
- [x] depends on: #30287
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
117/7 |
Mathlib/Combinatorics/SimpleGraph/CompleteMultipartite.lean |
1 |
24 |
['YaelDillies', 'b-mehta', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'mitchell-horner'] |
YaelDillies assignee:YaelDillies |
4-80634 4 days ago |
4-84146 4 days ago |
44-66050 44 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)`
(the proof of this is ugly).
---
- [x] depends on: #27567
- [x] depends on: #27569
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
195/0 |
Mathlib.lean,Mathlib/RingTheory/Coalgebra/Frobenius.lean |
2 |
4 |
['erdOne', 'github-actions', 'mathlib4-dependent-issues-bot', 'themathqueen'] |
alreadydone assignee:alreadydone |
4-78423 4 days ago |
4-78423 4 days ago |
15-15883 15 days |
| 30987 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(LinearAlgebra/SpecialLinearGroup): special linear group of a module |
Define the special linear group of a module.
Relate it with `Matrix.SpecialLinearGroup`.
Several additional constructions.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
467/14 |
Mathlib.lean,Mathlib/LinearAlgebra/Charpoly/BaseChange.lean,Mathlib/LinearAlgebra/Determinant.lean,Mathlib/LinearAlgebra/GeneralLinearGroup.lean,Mathlib/LinearAlgebra/Matrix/Dual.lean,Mathlib/LinearAlgebra/Matrix/GeneralLinearGroup/Defs.lean,Mathlib/LinearAlgebra/SpecialLinearGroup.lean,Mathlib/LinearAlgebra/TensorProduct/Tower.lean |
8 |
44 |
['AntoineChambert-Loir', 'eric-wieser', 'github-actions', 'mattrobball', 'mcdoll', 'riccardobrasca'] |
riccardobrasca assignee:riccardobrasca |
4-77469 4 days ago |
16-34484 16 days ago |
16-83529 16 days |
| 26710 |
metakunt author:metakunt |
feat (Data/Nat/Digits/Lemmas): Add digits_getD |
Adds digits_getD, an explicit computation of the i-th digits of n in base b representation. |
t-data
new-contributor
|
15/0 |
Mathlib/Data/Nat/Digits/Lemmas.lean |
1 |
19 |
['github-actions', 'metakunt', 'pechersky', 'plp127'] |
nobody |
4-76375 4 days ago |
6-14075 6 days ago |
63-8171 63 days |
| 30853 |
JovanGerb author:JovanGerb |
feat(LinearAlgebra/AffineSpace/Simplex): `CoeFun` instance for `Simplex` |
This PR introduces the notation `s i` to refer to the `i`th vertex of simplex `s`, which replaces the current `s.points i`. It does this by adding a `CoeFun` instance.
I first tried using `FunLike`, but this came with some different problems related to discrimination tree indexing in `simp`.
---
[](https://gitpod.io/from-referrer/)
|
|
348/338 |
Archive/Imo/Imo2019Q2.lean,Mathlib/Analysis/Convex/Between.lean,Mathlib/Analysis/Normed/Affine/Simplex.lean,Mathlib/Geometry/Euclidean/Altitude.lean,Mathlib/Geometry/Euclidean/Angle/Sphere.lean,Mathlib/Geometry/Euclidean/Circumcenter.lean,Mathlib/Geometry/Euclidean/Incenter.lean,Mathlib/Geometry/Euclidean/MongePoint.lean,Mathlib/Geometry/Euclidean/Projection.lean,Mathlib/Geometry/Euclidean/SignedDist.lean,Mathlib/Geometry/Euclidean/Simplex.lean,Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean,Mathlib/LinearAlgebra/AffineSpace/Simplex/Basic.lean,Mathlib/LinearAlgebra/AffineSpace/Simplex/Centroid.lean,scripts/nolints.json |
15 |
7 |
['JovanGerb', 'github-actions', 'jsm28'] |
robertylewis assignee:robertylewis |
4-74563 4 days ago |
20-77831 20 days ago |
20-77808 20 days |
| 31055 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Projection): `orthogonalProjectionSpan_congr` |
Add a congruence lemma for `orthogonalProjectionSpan` applied to two simplices with the same set of vertices, analogous to and proved using `orthogonalProjection_congr`, and a variant
`orthogonalProjectionSpan_reindex`.
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-euclidean-geometry
|
10/0 |
Mathlib/Geometry/Euclidean/Projection.lean |
1 |
3 |
['JovanGerb', 'github-actions'] |
JovanGerb assignee:JovanGerb |
4-73079 4 days ago |
4-73079 4 days ago |
15-80868 15 days |
| 30618 |
wwylele author:wwylele |
feat(Combinatorics): Glaisher's theorem |
This proves Glaisher's theorem, one of the 1000+ theorems. It is also a generalization of [Euler's partition theorem](https://github.com/leanprover-community/mathlib4/blob/master/Archive/Wiedijk100Theorems/Partition.lean), which can be rewritten as a collorary of this (will be in a different PR)
---
- [ ] depends on: #30599
- [ ] depends on #30567
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
533/15 |
Mathlib.lean,Mathlib/Algebra/Order/Antidiag/Finsupp.lean,Mathlib/Analysis/SpecificLimits/Normed.lean,Mathlib/Combinatorics/Enumerative/Partition.lean,Mathlib/Combinatorics/Enumerative/Partition/GenFun.lean,Mathlib/Combinatorics/Enumerative/Partition/Glaisher.lean,Mathlib/RingTheory/MvPowerSeries/Order.lean,Mathlib/RingTheory/MvPowerSeries/PiTopology.lean,Mathlib/RingTheory/PowerSeries/Order.lean,Mathlib/RingTheory/PowerSeries/PiTopology.lean,Mathlib/Topology/Algebra/InfiniteSum/Ring.lean,docs/1000.yaml |
12 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
nobody |
4-71226 4 days ago |
4-71229 4 days ago |
4-73709 4 days |
| 28346 |
joelriou author:joelriou |
feat(AlgebraicTopology/SimplicialSet): rank functions for pairings |
This PR introduces the type of (weak) rank functions for pairings, a notion introduced by Sean Moss, *Another approach to the Kan-Quillen model structure*. Rank functions can be used in order to show that certain pairings are regular (i.e. the ancestrality relation is well founded). In a future PR, it shall be shown that a regular pairing admits a rank function to the natural numbers, which shall be used to show that the corresponding inclusion of simplicial sets is a (strong) anodyne extension.
---
- [x] depends on: #28336
- [x] depends on: #28332
- [x] depends on: #28330
- [x] depends on: #28224
- [x] depends on: #27968
- [x] depends on: #28034
- [x] depends on: #26076
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology |
174/0 |
Mathlib.lean,Mathlib/AlgebraicTopology/SimplicialSet/AnodyneExtensions/Pairing.lean,Mathlib/AlgebraicTopology/SimplicialSet/AnodyneExtensions/Rank.lean |
3 |
n/a |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
4-69221 4 days ago |
unknown |
unknown |
| 31097 |
joelriou author:joelriou |
feat(AlgebraicTopology): the model category structure on Over categories |
If `C` is a model category, then for any `X : C`, the category `Over X` is also a model category.
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology |
218/5 |
Mathlib.lean,Mathlib/Algebra/Homology/QuasiIso.lean,Mathlib/AlgebraicTopology/ModelCategory/Over.lean,Mathlib/CategoryTheory/CommSq.lean,Mathlib/CategoryTheory/LiftingProperties/Over.lean,Mathlib/CategoryTheory/Limits/Over.lean,Mathlib/CategoryTheory/MorphismProperty/Comma.lean,Mathlib/CategoryTheory/MorphismProperty/FunctorCategory.lean,Mathlib/CategoryTheory/MorphismProperty/Retract.lean,Mathlib/CategoryTheory/Retract.lean |
10 |
2 |
['github-actions', 'mathlib4-merge-conflict-bot'] |
dagurtomas assignee:dagurtomas |
4-64122 4 days ago |
4-64142 4 days ago |
14-51917 14 days |
| 31431 |
harahu author:harahu |
doc(Data): misc. improvements |
This PR fixes a batch of typos in the `Data` subdirectory. Found and fixed with help from Codex. As part of this work, we also demote some headers that shouldn't have been H1.
---
[](https://gitpod.io/from-referrer/)
|
t-data |
12/20 |
Mathlib/Data/ENNReal/Real.lean,Mathlib/Data/Nat/Factorial/Basic.lean,Mathlib/Data/Nat/Fib/Basic.lean |
3 |
6 |
['github-actions', 'grunweg', 'harahu', 'metakunt'] |
nobody |
4-58691 4 days ago |
4-76651 4 days ago |
4-76691 4 days |
| 29610 |
llllvvuu author:llllvvuu |
feat(LinearAlgebra): define LinearMap.Eigenbasis |
Some theorems are left TODO for follow-up work.
The definition is from @eric-wieser ([#Is there code for X? > diagonalizable linear maps @ 💬](https://leanprover.zulipchat.com/#narrow/channel/217875-Is-there-code-for-X.3F/topic/diagonalizable.20linear.20maps/near/539163222)).
Co-authored-by: Aristotle Harmonic
---
- [x] depends on: #29420 (golfs some `[Nontrivial R]` assumptions)
- [x] depends on: #29791
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
455/5 |
Mathlib.lean,Mathlib/Analysis/InnerProductSpace/Spectrum.lean,Mathlib/LinearAlgebra/Eigenbasis.lean,Mathlib/LinearAlgebra/FreeModule/PID.lean,Mathlib/Order/CompleteLattice/Basic.lean |
5 |
29 |
['github-actions', 'kckennylau', 'llllvvuu', 'mathlib4-dependent-issues-bot'] |
joelriou assignee:joelriou |
4-43871 4 days ago |
4-43871 4 days ago |
17-54300 17 days |
| 22782 |
alreadydone author:alreadydone |
feat(Topology): étalé space associated to a predicate on sections |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
886/160 |
Mathlib.lean,Mathlib/AlgebraicGeometry/ProjectiveSpectrum/StructureSheaf.lean,Mathlib/Data/Set/Operations.lean,Mathlib/Geometry/Manifold/Sheaf/Smooth.lean,Mathlib/Logic/Equiv/Basic.lean,Mathlib/Topology/EtaleSpace.lean,Mathlib/Topology/IsLocalHomeomorph.lean,Mathlib/Topology/Sheaves/LocalPredicate.lean,Mathlib/Topology/Sheaves/Sheafify.lean,Mathlib/Topology/Sheaves/Stalks.lean |
10 |
16 |
['AntoineChambert-Loir', 'alreadydone', 'github-actions', 'jcommelin', 'leanprover-community-bot-assistant', 'mathlib4-merge-conflict-bot'] |
PatrickMassot assignee:PatrickMassot |
4-38623 4 days ago |
100-38264 3 months ago |
30-3459 30 days |
| 22662 |
plp127 author:plp127 |
feat: Localization.Away.lift (computably) |
This PR adds `Localization.Away.lift'` and `Localization.Away.lift`, computable alternatives to `Localization.awayLift`.
---
- [x] depends on: #24791
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
74/0 |
Mathlib/RingTheory/Localization/Away/Basic.lean |
1 |
17 |
['eric-wieser', 'github-actions', 'grunweg', 'mathlib4-dependent-issues-bot', 'plp127', 'vihdzp'] |
kim-em assignee:kim-em |
4-33613 4 days ago |
186-38007 6 months ago |
252-37979 252 days |
| 31144 |
YaelDillies author:YaelDillies |
feat: transfer `FaithfulSMul`/`NoZeroSMulDivisors` along equivs |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
26/1 |
Mathlib/Algebra/Group/Action/TransferInstance.lean,Mathlib/Algebra/Module/TransferInstance.lean |
2 |
11 |
['YaelDillies', 'erdOne', 'github-actions'] |
kim-em assignee:kim-em |
4-33610 4 days ago |
11-66874 11 days ago |
12-18310 12 days |
| 31194 |
grunweg author:grunweg |
feat: add `#check'` command and tactic, which only show explicit arguments |
In some areas (such as differential geometry), many lemmas have a *lot* of implicit and typeclass arguments.
Using `#check foo` to determine which explicit arguments are expected for a given lemma gives output which is painful to read, because the explicit argument is buried among many lines of other output.
The `#check'` command and tactic produce very similar output, but with implicit and typeclass arguments omitted.
This increases usability a lot.
In the future, this could (and should) be unified to the #check command in core, by becoming e.g. `#check +only-explicit`. Until then, let us add this to mathlib to facilitate experimentation of the most useful behaviour.
From the project towards geodesics and the Levi-Civita connection.
Co-authored-by: Kyle Miller
Co-authored-by: Patrick Massot
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
151/11 |
Mathlib/Tactic/Check.lean,MathlibTest/Check.lean |
2 |
2 |
['github-actions', 'grunweg'] |
thorimur assignee:thorimur |
4-33607 4 days ago |
11-63288 11 days ago |
11-63272 11 days |
| 31199 |
YaelDillies author:YaelDillies |
feat: recursion principle for `Mᵐ⁰` |
From ClassFieldTheory
Co-authored-by: Kenny Lau
---
[](https://gitpod.io/from-referrer/)
|
CFT
t-algebra
label:t-algebra$ |
17/0 |
Mathlib/Algebra/GroupWithZero/WithZero.lean |
1 |
3 |
['YaelDillies', 'eric-wieser', 'github-actions'] |
dagurtomas assignee:dagurtomas |
4-33606 4 days ago |
11-55891 11 days ago |
11-55932 11 days |
| 31204 |
jsm28 author:jsm28 |
feat(LinearAlgebra/AffineSpace/Combination): `affineCombination_mem_affineSpan_image` |
Add a lemma giving a condition for an affine combination to lie in the affine span of a subset of the indexed family of points (the reverse direction of `eq_affineCombination_of_mem_affineSpan_image`, which is the only current `image` lemma in this file, roughly).
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
19/0 |
Mathlib/LinearAlgebra/AffineSpace/Combination.lean |
1 |
1 |
['github-actions'] |
dagurtomas assignee:dagurtomas |
4-33605 4 days ago |
11-42865 11 days ago |
11-42843 11 days |
| 31206 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Incenter): bound coordinates of the incenter |
`inv_height_lt_sum_inv_height`, used to prove existence of the excenter opposite a vertex, has a remark in the docstring about what it also implies about the location of the incenter. Change this to an actual lemma `excenterWeights_empty_lt_inv_two` (which I think is the most natural form for that information that can then be applied further in any context where this information is useful).
---
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
16/2 |
Mathlib/Geometry/Euclidean/Incenter.lean |
1 |
1 |
['github-actions'] |
JovanGerb assignee:JovanGerb |
4-33604 4 days ago |
11-41932 11 days ago |
11-41910 11 days |
| 31462 |
ScottCarnahan author:ScottCarnahan |
feat (Algebra/Lie/Extension): 2-cocycle from a Lie algebra extension with abelian kernel and a linear splitting |
This PR defines the Lie algebra 2-cocycle of a Lie algebra extension with abelian kernel equipped with a linear splitting.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
219/12 |
Mathlib/Algebra/Lie/Abelian.lean,Mathlib/Algebra/Lie/Extension.lean |
2 |
1 |
['github-actions'] |
ocfnash assignee:ocfnash |
4-4162 4 days ago |
4-5244 4 days ago |
4-5248 4 days |
| 30988 |
erdOne author:erdOne |
feat(AlgebraicGeometry): descending affine cover of an inverse limit |
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-algebraic-geometry
|
347/35 |
Mathlib/Algebra/Category/Ring/Constructions.lean,Mathlib/AlgebraicGeometry/AffineTransitionLimit.lean,Mathlib/AlgebraicGeometry/Gluing.lean,Mathlib/AlgebraicGeometry/Morphisms/IsIso.lean,Mathlib/AlgebraicGeometry/Pullbacks.lean,Mathlib/AlgebraicGeometry/QuasiAffine.lean,Mathlib/AlgebraicGeometry/Sites/MorphismProperty.lean,Mathlib/Topology/LocalAtTarget.lean |
8 |
21 |
['chrisflav', 'erdOne', 'github-actions'] |
alexjbest assignee:alexjbest |
4-909 4 days ago |
7-46018 7 days ago |
17-8983 17 days |
| 30348 |
RemyDegenne author:RemyDegenne |
feat: convergence in probability implies convergence in distribution |
Prove that convergence in probability implies convergence in distribution, as well as Slutsky's theorem on the convergence of a product of random variables (since those two facts follow from the same lemma).
---
- [x] depends on: #30346
- [x] depends on: #30385
- [x] depends on: #30402
- [x] depends on: #30540
- [x] depends on: #30585
- [x] depends on: #30742
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-measure-probability
|
256/2 |
Mathlib/MeasureTheory/Function/ConvergenceInDistribution.lean,Mathlib/MeasureTheory/Function/ConvergenceInMeasure.lean,Mathlib/Topology/EMetricSpace/Lipschitz.lean,Mathlib/Topology/Instances/ENNReal/Lemmas.lean,docs/1000.yaml |
5 |
21 |
['EtienneC30', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
EtienneC30 assignee:EtienneC30 |
3-85864 3 days ago |
5-51571 5 days ago |
13-20176 13 days |
| 30140 |
chrisflav author:chrisflav |
feat(AlgebraicGeometry): locally directed colimits in `P.Over ⊤ S` |
We lift the colimit properties of `Scheme` to `P.Over ⊤ S` if `IsLocalAtSource P`. In particular, `P.Over ⊤ S` has pushouts along open immersions and (small) coproducts.
We also add two instances, that make
```
example {U X Y : Scheme.{u}} (f : U ⟶ X) (g : U ⟶ Y)
[IsOpenImmersion f] [IsOpenImmersion g] : HasPushout f g :=
inferInstance
```
work.
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry |
170/0 |
Mathlib.lean,Mathlib/AlgebraicGeometry/Limits.lean,Mathlib/AlgebraicGeometry/LimitsOver.lean,Mathlib/CategoryTheory/Limits/MorphismProperty.lean,Mathlib/CategoryTheory/Limits/Over.lean,Mathlib/CategoryTheory/MorphismProperty/Comma.lean |
6 |
10 |
['chrisflav', 'erdOne', 'github-actions', 'joelriou'] |
alexjbest assignee:alexjbest |
3-85221 3 days ago |
3-85221 3 days ago |
36-82789 36 days |
| 27306 |
xyzw12345 author:xyzw12345 |
feat: `lie_ring` tactic and `LieReduce` command |
This PR continues the work from #22196.
Original PR: https://github.com/leanprover-community/mathlib4/pull/22196 |
t-meta |
810/2 |
Mathlib.lean,Mathlib/Algebra/Lie/Derivation/AdjointAction.lean,Mathlib/Tactic.lean,Mathlib/Tactic/LieAlgebra/Basic.lean,Mathlib/Tactic/LieAlgebra/LieRingNF.lean,Mathlib/Util/AtomM.lean,MathlibTest/lie_ring.lean,scripts/noshake.json |
8 |
13 |
['JovanGerb', 'github-actions', 'grunweg', 'xyzw12345'] |
JovanGerb assignee:JovanGerb |
3-78500 3 days ago |
66-24218 2 months ago |
113-77694 113 days |
| 30171 |
smmercuri author:smmercuri |
feat(DedekindDomain/AdicValuation): `le_one` lemmas for `HeightOneSpectrum.valuation` and specialisations to `Rat` |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
48/0 |
Mathlib/RingTheory/Coprime/Lemmas.lean,Mathlib/RingTheory/DedekindDomain/AdicValuation.lean,Mathlib/RingTheory/Ideal/Operations.lean |
3 |
7 |
['erdOne', 'github-actions', 'smmercuri'] |
erdOne assignee:erdOne |
3-78462 3 days ago |
41-64566 1 month ago |
41-64597 41 days |
| 31036 |
chrisflav author:chrisflav |
chore(RingTheory): prerequisites for #31034 |
In particular, various lemmas on `Submodule.comap` for injective maps, lemmas about `Extension.Cotangent.mk` and a criterion for `IsLocalization.Away` for quotients.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
90/0 |
Mathlib/LinearAlgebra/Span/Basic.lean,Mathlib/RingTheory/Extension/Basic.lean,Mathlib/RingTheory/Ideal/Maps.lean,Mathlib/RingTheory/Ideal/Operations.lean,Mathlib/RingTheory/Ideal/Quotient/Defs.lean,Mathlib/RingTheory/Localization/Away/Basic.lean |
6 |
13 |
['chrisflav', 'erdOne', 'github-actions'] |
erdOne assignee:erdOne |
3-76120 3 days ago |
3-77026 3 days ago |
11-33929 11 days |
| 31467 |
maix00 author:maix00 |
feat(Combinatorics/SimpleGraph): add simp lemma `getVert_map` for `Walk.map` |
feat(Combinatorics/SimpleGraph) add simp lemma `getVert_map` to `Walk.map`; set longFile
simple fact but can only be proved by reverting the start point of the walk due to the inductive definition
---
- in concept similar to `List.getElem_map`
- deserve a simp lemma (useful when pushing walks between Subgraphs)
lemma getVert_map (i : ℕ) : (p.map f).getVert i = f (p.getVert i) := by
revert u; induction i with
| zero => simp
| succ => intro _ p; cases p <;> simp [*]
can not just use simp to prove this fact |
new-contributor
t-combinatorics
|
6/0 |
Mathlib/Combinatorics/SimpleGraph/Walk.lean |
1 |
1 |
['github-actions'] |
nobody |
3-76101 3 days ago |
3-76113 3 days ago |
3-76153 3 days |
| 30797 |
adamtopaz author:adamtopaz |
feat(Mathlib/Tactic/CategoryStar): Category* |
We introduce `Category*`, an elaborator for introducing category instances which behaves analogously to `Type*`.
Specifically, when writing `Category* C` this elaborator does the following:
1. It creates a new universe parameter `v`, and the elaborated term becomes `Category.{v} C`.
2. It places `v` *just before* the universe parameters appearing in `C` or its type, as commonly done in the category theory library.
Basic usage:
```lean
variable (C : Type*) [Category* C]
variable (D : Type*) [Category* D]
```
This is essentially equivalent to:
```lean
universe v_1 u_1
variable (C : Type u_1) [Category.{v_1} C]
universe v_2 u_2
variable (D : Type u_2) [Category.{v_2} D]
```
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
229/0 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/CategoryTheory/CategoryStar.lean,MathlibTest/CategoryTheory/CategoryStar.lean |
4 |
26 |
['JovanGerb', 'adamtopaz', 'github-actions', 'mattrobball'] |
thorimur assignee:thorimur |
3-75316 3 days ago |
22-46491 22 days ago |
22-47291 22 days |
| 31001 |
gasparattila author:gasparattila |
fix(Tactic/FunProp): fix "loose bvar in expression" error |
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
16/1 |
Mathlib/Tactic/FunProp/Core.lean,MathlibTest/fun_prop_dev.lean |
2 |
13 |
['gasparattila', 'github-actions', 'grunweg', 'j-loreaux', 'leanprover-bot', 'thorimur'] |
thorimur assignee:thorimur |
3-74112 3 days ago |
6-43296 6 days ago |
16-83884 16 days |
| 31308 |
alreadydone author:alreadydone |
feat(RingTheory): `Module.Invertible.tmul_comm` |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
t-algebra
label:t-algebra$ |
59/2 |
Mathlib/RingTheory/Localization/BaseChange.lean,Mathlib/RingTheory/Localization/Basic.lean,Mathlib/RingTheory/PicardGroup.lean |
3 |
5 |
['alreadydone', 'github-actions', 'themathqueen'] |
nobody |
3-73509 3 days ago |
8-42378 8 days ago |
8-42416 8 days |
| 27244 |
xroblot author:xroblot |
feat(RingTheory/DedekindDomain): lifting an ideal in an extension is injective |
This PR develops some API for [FractionalIdeal.extendedHomₐ](https://leanprover-community.github.io/mathlib4_docs/Mathlib/RingTheory/FractionalIdeal/Extended.html#FractionalIdeal.extendedHom%E2%82%90) and in particular proves when it is an injective map. As a consequence, it deduces the fact that lifting an integral ideal in an extension of Dedekind domains is an injective map.
Note: the import increase happens in a leaf file `Mathlib.RingTheory.FractionalIdeal.Extended`
---
- [x] depends on: #28800
|
t-ring-theory
large-import
|
55/9 |
Mathlib/RingTheory/DedekindDomain/Ideal/Lemmas.lean,Mathlib/RingTheory/FractionalIdeal/Extended.lean |
2 |
14 |
['erdOne', 'github-actions', 'leanprover-community-bot-assistant', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'xroblot'] |
kbuzzard assignee:kbuzzard |
3-70265 3 days ago |
3-70265 3 days ago |
106-5779 106 days |
| 31429 |
llllvvuu author:llllvvuu |
feat(Topology): generalize `IsModuleTopology` lemmas to semilinear maps |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
116/52 |
Mathlib/Topology/Algebra/Module/Basic.lean,Mathlib/Topology/Algebra/Module/ModuleTopology.lean |
2 |
3 |
['erdOne', 'github-actions', 'llllvvuu'] |
kbuzzard assignee:kbuzzard |
3-67101 3 days ago |
4-77755 4 days ago |
4-77755 4 days |
| 25799 |
dagurtomas author:dagurtomas |
feat(CategoryTheory): the universal property of localized monoidal categories |
This PR provides a monoidal structure on any functor out of a localized monoidal category whose precomposition with the localization functor is monoidal
---
- [x] depends on: #29564
[](https://gitpod.io/from-referrer/)
---
*This PR continues the work from #24727.*
*Original PR: https://github.com/leanprover-community/mathlib4/pull/24727* |
t-category-theory |
209/0 |
Mathlib.lean,Mathlib/CategoryTheory/Localization/Bifunctor.lean,Mathlib/CategoryTheory/Localization/Monoidal/Functor.lean,Mathlib/CategoryTheory/Monoidal/Functor.lean,Mathlib/CategoryTheory/Monoidal/Multifunctor.lean |
5 |
28 |
['dagurtomas', 'github-actions', 'joelriou', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'robin-carlier'] |
TwoFX assignee:TwoFX |
3-63413 3 days ago |
3-63473 3 days ago |
65-13365 65 days |
| 31473 |
YaelDillies author:YaelDillies |
feat(RingTheory): compute `counitAlgHom`/`comulAlgHom` on specific bialgebras |
From Toric
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
toric
|
15/0 |
Mathlib/RingTheory/Bialgebra/Basic.lean,Mathlib/RingTheory/Bialgebra/Hom.lean,Mathlib/RingTheory/Bialgebra/TensorProduct.lean |
3 |
1 |
['github-actions'] |
nobody |
3-63298 3 days ago |
3-63363 3 days ago |
3-63341 3 days |
| 31362 |
BeibeiX0 author:BeibeiX0 |
feat(partitions): generalized pentagonal numbers. |
feat(partitions): generalized pentagonal numbers and error term eₙ
Introduce infrastructure around Euler’s pentagonal number theorem:
* Define parity counters for strict partitions:
- `p_even_distinct n`
- `p_odd_distinct n`
- `strict_partitions_parity_diff n := (p_even_distinct n : ℤ) - (p_odd_distinct n : ℤ)`
* Generalized pentagonal numbers:
- `generalizedPentagonalZ : ℤ → ℤ` with basic API (`gpn_nonneg`, `gpn_coe`)
- `generalizedPentagonalNum : ℤ → ℕ`
- parity lemma `even_neg_j_add_three_j_sq` and `even_neg_j_add_three_j_sq'`
- search window equivalence `exists_j_iff_exists_j_in_range`
- `Decidable (∃ j : ℤ, n = generalizedPentagonalZ j)` via a bounded range
* Euler error term:
- `error_term_e n : ℤ` (≔ `(-1)^{|j|}` if `n = generalizedPentagonalZ j` for some `j`,
and `0` otherwise)
* Finite product cut-off of the generating function:
- `E n : PowerSeries ℤ := ∏_{k=1}^{n+1} (1 - X^k)`
- lemma `coeff_E_eq_coeff_cutoff`
Implementation notes:
* Keep the integer-valued version `generalizedPentagonalZ` for arithmetic lemmas and
signs; obtain the natural-number version via `Int.toNat`.
* The bounded search lemma gives a small window `j ∈ [-(n+1), n+1]` for decidability.
Motivation:
* This is groundwork for proofs of Euler’s pentagonal number theorem and parity
identities relating strict partitions to the error term.
References:
* https://en.wikipedia.org/wiki/Pentagonal_number_theorem |
new-contributor
t-combinatorics
|
256/0 |
Mathlib.lean,Mathlib/Combinatorics/Enumerative/PentagonalNumbers.lean |
2 |
5 |
['BeibeiX0', 'github-actions', 'wwylele'] |
nobody |
3-43428 3 days ago |
6-68583 6 days ago |
6-68620 6 days |
| 26831 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(GroupTheory/SpecificGroups/Alternating/MaximalSubgroups): maximal subgroups of the alternating group |
This proves the first case (intransitive) of the O'Nan-Scott classification of maximal subgroups of the alternating group.
---
- [x] depends on: #26457
- [x] depends on: #26282
- [x] depends on: #26281
- [x] depends on: #26280
- [x] depends on: #26279
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
569/20 |
Mathlib.lean,Mathlib/GroupTheory/GroupAction/MultiplePrimitivity.lean,Mathlib/GroupTheory/GroupAction/MultipleTransitivity.lean,Mathlib/GroupTheory/Perm/MaximalSubgroups.lean,Mathlib/GroupTheory/SpecificGroups/Alternating.lean,Mathlib/GroupTheory/SpecificGroups/Alternating/MaximalSubgroups.lean |
6 |
n/a |
['AntoineChambert-Loir', 'adomani', 'github-actions', 'leanprover-community-bot-assistant', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
3-37335 3 days ago |
unknown |
unknown |
| 24965 |
erdOne author:erdOne |
refactor: Make `IsLocalHom` take unbundled map |
Under the current definition, `IsLocalHom f` and `IsLocalHom f.toMonoidHom` are not defeq, which causes quite some annoyances. We also have a consensus to not use `*HomClass` in definitions. As a result, we change `IsLocalHom` to take an unbundled function instead of a funlike.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
16/7 |
Mathlib/Algebra/Group/Units/Hom.lean,Mathlib/AlgebraicGeometry/Scheme.lean,Mathlib/Geometry/RingedSpace/LocallyRingedSpace.lean,Mathlib/Geometry/RingedSpace/LocallyRingedSpace/HasColimits.lean,Mathlib/Geometry/RingedSpace/OpenImmersion.lean |
5 |
7 |
['alreadydone', 'erdOne', 'eric-wieser', 'github-actions', 'leanprover-community-bot-assistant'] |
mattrobball assignee:mattrobball |
3-33614 3 days ago |
10-67848 10 days ago |
21-7434 21 days |
| 31210 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/MongePoint): `reindex` lemmas |
Add lemmas about `mongePoint`, `mongePlane` and `orthocenter` applied to `Simplex.reindex`.
---
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
28/0 |
Mathlib/Geometry/Euclidean/MongePoint.lean |
1 |
1 |
['github-actions'] |
JovanGerb assignee:JovanGerb |
3-33609 3 days ago |
11-29493 11 days ago |
11-29472 11 days |
| 31215 |
ScottCarnahan author:ScottCarnahan |
feat (RingTheory/HahnSeries): introduce binomialFamily and generalized powers. |
We introduce a way to take generalized powers of Hahn series whose leading term is 1. The powers take values in a binomial ring.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
286/14 |
Mathlib.lean,Mathlib/RingTheory/HahnSeries/Addition.lean,Mathlib/RingTheory/HahnSeries/Basic.lean,Mathlib/RingTheory/HahnSeries/Binomial.lean,Mathlib/RingTheory/HahnSeries/Multiplication.lean,Mathlib/RingTheory/HahnSeries/Summable.lean |
6 |
1 |
['github-actions'] |
erdOne assignee:erdOne |
3-33608 3 days ago |
10-85115 10 days ago |
10-85154 10 days |
| 31224 |
YaelDillies author:YaelDillies |
feat(Algebra/Homology): pushforward of connected complexes |
This is useful for proving functoriality of Tate cohomology, whose complex is defined as the connection of the homology and cohomology complexes.
From ClassFieldTheory
Co-authored-by: Edison Xie
Co-authored-by: Michał Mrugała
---
[](https://gitpod.io/from-referrer/)
|
CFT
t-algebra
label:t-algebra$ |
75/25 |
Mathlib/Algebra/Homology/Embedding/Connect.lean |
1 |
4 |
['YaelDillies', 'erdOne', 'github-actions'] |
dagurtomas assignee:dagurtomas |
3-33607 3 days ago |
10-71229 10 days ago |
10-72943 10 days |
| 29425 |
pechersky author:pechersky |
feat(NumberTheory/Padics/Torsion): `HasEnoughRootsOfUnity ℤ_[p] (p - 1)` |
---
[](https://gitpod.io/from-referrer/)
- [x] depends on: #29403
- [x] depends on: #29404
- [x] depends on: #29405
- [x] depends on: #29408
- [x] depends on: #29424
|
t-ring-theory |
179/0 |
Mathlib.lean,Mathlib/NumberTheory/Padics/Torsion.lean,Mathlib/RingTheory/ZMod/Torsion.lean |
3 |
4 |
['erdOne', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'pechersky'] |
erdOne assignee:erdOne |
3-30021 3 days ago |
3-30021 3 days ago |
43-13944 43 days |
| 24627 |
pechersky author:pechersky |
feat(Topology/Algebra/Valued): `IsLinearTopology 𝒪[K] K` and `𝒪[K] 𝒪[K]` |
as well as
`IsLinearTopology ℤ_[p] ℤ_[p]`
---
[](https://gitpod.io/from-referrer/)
- [x] depends on: #26829
|
t-topology |
219/26 |
Mathlib.lean,Mathlib/NumberTheory/Padics/LinearTopology.lean,Mathlib/Topology/Algebra/Valued/LinearTopology.lean,Mathlib/Topology/Algebra/Valued/ValuationTopology.lean,Mathlib/Topology/Algebra/Valued/ValuedField.lean |
5 |
49 |
['ADedecker', 'erdOne', 'faenuccio', 'github-actions', 'jcommelin', 'leanprover-community-bot-assistant', 'loefflerd', 'mathlib4-dependent-issues-bot', 'pechersky'] |
jcommelin assignee:jcommelin |
3-29964 3 days ago |
3-29964 3 days ago |
31-22437 31 days |
| 31494 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Sphere/SecondInter): `eq_or_eq_secondInter_of_mem_affineSpan_pair_iff_mem` |
Add a variant of
`eq_or_eq_secondInter_of_mem_mk'_span_singleton_iff_mem` in a form that's more convenient when the line is given in terms of two points, rather than a point and a vector.
```lean
/-- A point on a line through a point on a sphere and a second point equals that point or
`secondInter`. -/
lemma Sphere.eq_or_eq_secondInter_of_mem_affineSpan_pair_iff_mem {s : Sphere P} {p q : P}
(hp : p ∈ s) {p' : P} (hp' : p' ∈ line[ℝ, p, q]) :
p' = p ∨ p' = s.secondInter p (q -ᵥ p) ↔ p' ∈ s := by
```
---
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
11/0 |
Mathlib/Geometry/Euclidean/Sphere/SecondInter.lean |
1 |
1 |
['github-actions'] |
nobody |
3-29121 3 days ago |
3-29187 3 days ago |
3-29165 3 days |
| 31240 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat: base change properties, direct sums, bases, modules of linear maps |
Establish various `IsBaseChange` properties:
* direct sums commute with base change
* when the source module is finite free, modules of linear maps commute with base change (on the right, on both sides, and for endomorphisms).
* a base change of a free module is free, with compatible bases.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
399/6 |
Mathlib.lean,Mathlib/Algebra/DirectSum/Module.lean,Mathlib/LinearAlgebra/DirectSum/TensorProduct.lean,Mathlib/RingTheory/TensorProduct/IsBaseChangeFree.lean,Mathlib/RingTheory/TensorProduct/IsBaseChangeHom.lean,Mathlib/RingTheory/TensorProduct/IsBaseChangePi.lean |
6 |
3 |
['AntoineChambert-Loir', 'github-actions'] |
nobody |
3-28182 3 days ago |
3-28182 3 days ago |
10-38913 10 days |
| 31133 |
thorimur author:thorimur |
feat(Linter): combinators for linter option boilerplate |
Provides simple combinators `whenLinterOption` and `whenNotLinterOption` to parallel `whenPPOption` and `whenNotPPOption`, and bundles `withSetOptionIn` and `whenLinterOption` into `whenLinterActivated`.
Currently, a typical linter action uses
```lean
run := withSetOptionIn fun stx => do
unless getLinterValue linter.foo (← getLinterOptions) do
return
...
```
This allows us to simply write
```lean
run := whenLinterActivated linter.foo fun stx => do
...
```
Using these combinators in Mathlib's linters is left to a subsequent PR (#31134).
Since this is a utility used in basic linters, including the header linter, we exclude it from `lint-style`.
---
I'm not sure I'm doing the right thing here re: Mathlib.Init. What exactly should happen?
[](https://gitpod.io/from-referrer/)
|
t-linter
t-meta
|
50/0 |
Mathlib.lean,Mathlib/Lean/Linter.lean,scripts/lint-style.lean |
3 |
3 |
['adomani', 'github-actions', 'thorimur'] |
adomani assignee:adomani |
3-19127 3 days ago |
13-37910 13 days ago |
13-44275 13 days |
| 31498 |
zcyemi author:zcyemi |
feat(LinearAlgebra/AffineSpace/Independent): add affine independence permutation lemmas for three points |
---
Add three helper theorems for convenient reasoning with affine independence:
- `AffineIndependent.comm_left`
- `AffineIndependent.comm_right`
- `AffineIndependent.reverse_of_three` |
t-algebra label:t-algebra$ |
25/0 |
Mathlib/LinearAlgebra/AffineSpace/Independent.lean |
1 |
1 |
['github-actions'] |
nobody |
3-17939 3 days ago |
3-17960 3 days ago |
3-17998 3 days |
| 31499 |
zcyemi author:zcyemi |
feat(LinearAlgebra/AffineSpace/FiniteDimensional): add lemma preserving affine independence under collinear point replacement |
---
Add `affineIndependent_of_affineIndependent_collinear_ne`
|
t-algebra label:t-algebra$ |
15/0 |
Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean |
1 |
1 |
['github-actions'] |
nobody |
3-17599 3 days ago |
3-17606 3 days ago |
3-17650 3 days |
| 25779 |
robin-carlier author:robin-carlier |
feat(CategoryTheory/Bicategory/NaturalTransformations): strong and lax natural transformations of lax functors |
Given two lax functors `F G` between bicategories, we define lax natural transformations as families of 1-morphisms `∀ a : B, F.obj a ⟶ G.obj a` equipped with a naturality 2-cell `∀ {a b : B} (f : a ⟶ b), app a ≫ G.map f ⟶ F.map f ≫ app b` that are required to satisfy conditions such as naturality, and compatibility with the `mapId` and `mapComp` fields of the source and target functors.
This notion dualizes the existing notion of oplax natural transformations between, and tries to narrow the current gap between lax and oplax functors in the library, where the latter has much more formalized API. For maintainability, The code tries to stay as aligned as possible with the code in `CategoryTheory.Bicategory.Naturaltransformations.Oplax`.
---
I followed the book by Johnson and Yau for the definition.
I made @yuma-mizuno and @callesonne authors of the files, as they are the authors of the original code for Oplax functors, which I basically copy-pasted and modified to make it work with lax functors. They should feel free to modify this if they want.
Next thing on the list is to tackle modifications between lax/strong natural transforms of lax transforms, as well as the category instance on lax functors.
[](https://gitpod.io/from-referrer/)
---
*This PR continues the work from #25565.*
*Original PR: https://github.com/leanprover-community/mathlib4/pull/25565* |
t-category-theory |
286/0 |
Mathlib.lean,Mathlib/CategoryTheory/Bicategory/NaturalTransformation/Lax.lean,scripts/noshake.json |
3 |
8 |
['github-actions', 'joelriou', 'robin-carlier', 'yuma-mizuno'] |
joelriou assignee:joelriou |
3-900 3 days ago |
3-900 3 days ago |
119-71207 119 days |
| 31298 |
jjdishere author:jjdishere |
feat(RingTheory/AdicCompletion): `IsAdicComplete.lift` APIs for `RingHoms` |
In this PR, we build every API of the module version `IsAdicComplete.lift` for the ring version `IsAdicComplete.liftRingHom`. Mainly copying APIs in #25837, #31295, #31296.
This would be used in #26388.
---
- [x] depends on: #31296
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
308/0 |
Mathlib.lean,Mathlib/RingTheory/AdicCompletion/Algebra.lean,Mathlib/RingTheory/AdicCompletion/RingHom.lean,Mathlib/RingTheory/Ideal/Quotient/Defs.lean,Mathlib/RingTheory/Ideal/Quotient/Operations.lean |
5 |
n/a |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
2-80285 2 days ago |
unknown |
unknown |
| 31503 |
Scarlett-le author:Scarlett-le |
feat(Geometry/Euclidean/PerpBisector): add distance inequalities for Sbtw with perpendicularity |
This PR adds two theorems about distance relationships when points satisfy strict betweenness (`Sbtw`) and perpendicularity conditions:
### New theorems
- `dist_lt_of_sbtw_of_inner_eq_zero`: If `b` is strictly between `a` and `c`, and `p - a` is perpendicular to `b - a`, then `dist p b < dist p c`.
- `dist_lt_of_sbtw_of_mem_perpBisector`: If `p` lies on the perpendicular bisector of `ab` and `b` is strictly between `a` and `c`, then `dist p b < dist p c`. |
new-contributor
t-euclidean-geometry
|
47/0 |
Mathlib/Geometry/Euclidean/PerpBisector.lean |
1 |
1 |
['github-actions'] |
nobody |
2-77403 2 days ago |
3-2194 3 days ago |
3-2236 3 days |
| 31496 |
Scarlett-le author:Scarlett-le |
feat(Geometry/Euclidean/Sphere/Power): power equals squared tangent length and characterization of tangency |
Adds two lemmas in `Geometry.Euclidean.Sphere.Power`:
* `power_eq_dist_sq_of_IsTangentAt` — the power of a point equals the square of its tangent length.
* `IsTangentAt_of_dist_sq_eq_power` — characterization of tangency via the power of a point.
|
large-import
new-contributor
t-euclidean-geometry
|
18/0 |
Mathlib/Geometry/Euclidean/Sphere/Power.lean |
1 |
2 |
['github-actions', 'jsm28'] |
nobody |
2-77377 2 days ago |
3-23791 3 days ago |
3-23836 3 days |
| 31414 |
SnirBroshi author:SnirBroshi |
feat(Data/Nat/Bitwise): formula for the xor of {0,...,n} |
---
[](https://gitpod.io/from-referrer/)
|
t-data |
40/2 |
Mathlib/Data/Int/Bitwise.lean,Mathlib/Data/Nat/Bitwise.lean |
2 |
3 |
['SnirBroshi', 'github-actions', 'plp127'] |
nobody |
2-68210 2 days ago |
4-57590 4 days ago |
5-9054 5 days |
| 31506 |
FLDutchmann author:FLDutchmann |
feat: Qq version of getLevel |
These were helpful for writing the `algebra` tactic for adding Qq annotations in cases where I know that an expression is a type.
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-meta
|
11/2 |
Mathlib/Util/Qq.lean |
1 |
6 |
['FLDutchmann', 'github-actions', 'grunweg'] |
nobody |
2-65671 2 days ago |
2-65671 2 days ago |
2-73012 2 days |
| 31173 |
jsm28 author:jsm28 |
feat(Mathlib/Geometry/Euclidean/Incenter): excenters do not lie in faces |
Add lemmas with various versions of the statement that an excenter of a simplex does not lie in the affine span of a face. `excenter_ne_point` becomes a special case of this with a two-line proof.
---
- [ ] depends on: #31172
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
53/10 |
Mathlib/Geometry/Euclidean/Incenter.lean |
1 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
nobody |
2-62380 2 days ago |
2-63013 2 days ago |
2-66093 2 days |
| 26277 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(RingTheory/Congruence/Hom): prove basic isomorphisms theorems for ring congruences |
This file contains elementary definitions involving congruence
relations and morphisms for semirings, rings, and algebras.
* `RingCon.ker`: the kernel of a monoid homomorphism as a congruence relation
* `RingCon.lift`, `RingCon.liftₐ`: the homomorphism / the algebra morphism
on the quotient given that the congruence is in the kernel
* `RingCon.map`, `RingCon.mapₐ`: homomorphism / algebra morphism
from a smaller to a larger quotient
* `RingCon.quotientKerEquivRangeS`, `RingCon.quotientKerEquivRange`,
`RingCon.quotientKerEquivRangeₐ` :
the first isomorphism theorem for semirings (using `RingHom.rangeS`),
rings (using `RingHom.range`) and algebras (using `AlgHom.range`).
* `RingCon.comapQuotientEquivRangeS`, `RingCon.comapQuotientEquivRange`,
`RingCon.comapQuotientEquivRangeₐ` : the second isomorphism theorem
for semirings (using `RingHom.rangeS`), rings (using `RingHom.range`)
and algebras (using `AlgHom.range`).
* `RingCon.quotientQuotientEquivQuotient`, `RingCon.quotientQuotientEquivQuotientₐ` :
the third isomorphism theorem for semirings (or rings) and algebras
It is an adaptation of what existed for multiplicative congruences (docs#Con) and is only useful for semirings which are not rings.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
531/3 |
Mathlib.lean,Mathlib/Algebra/Ring/Subsemiring/Basic.lean,Mathlib/Algebra/RingQuot.lean,Mathlib/Data/Set/Restrict.lean,Mathlib/LinearAlgebra/Dimension/DivisionRing.lean,Mathlib/RingTheory/Congruence/Defs.lean,Mathlib/RingTheory/Congruence/Hom.lean |
7 |
52 |
['AntoineChambert-Loir', 'eric-wieser', 'github-actions', 'kckennylau'] |
joneugster assignee:joneugster |
2-61207 2 days ago |
2-61207 2 days ago |
140-63386 140 days |
| 31227 |
YaelDillies author:YaelDillies |
feat(Algebra/Homology): sandwich a comm group between two finite comm groups |
From ClassFieldTheory
---
[](https://gitpod.io/from-referrer/)
|
CFT
maintainer-merge
t-algebra
label:t-algebra$ |
64/39 |
Mathlib/Algebra/Homology/ShortComplex/Ab.lean,Mathlib/Data/Finite/Prod.lean,Mathlib/Data/Set/Finite/Basic.lean,Mathlib/GroupTheory/QuotientGroup/Finite.lean,Mathlib/RingTheory/Ideal/Quotient/Basic.lean,Mathlib/Topology/Algebra/Valued/LocallyCompact.lean |
6 |
10 |
['YaelDillies', 'erdOne', 'github-actions', 'jcommelin'] |
erdOne assignee:erdOne |
2-61184 2 days ago |
2-80385 2 days ago |
10-56866 10 days |
| 31464 |
Ljon4ik4 author:Ljon4ik4 |
improved R-linearity to A-linearity in the PushForward of Derivations |
Let $A$ be an $R$-algebra for a commutative ring $R$ and $f:M\to N$ an $A$-module homomorphism.
Given a derivation $D\in Der_R(A,M)$, we have a derivation $f \circ D$ of $Der_R(A,N)$. The induced map
$Der_R(A,M)\to Der_R(A,N)$ is $A$-linear but was only reported to be $R$-linear in the previous implementation.
All changes are in the PushForward section of the RingTheory/Derivation/Basic.lean file. The statements of definitions
* `_root_.LinearMap.compDer`
* `llcomp`
* `_root_.LinearEquiv.compDer`
are changed from $R$-linear to $A$-linear.
For the stronger linearity the proof of `map_smul'` in `_root_.LinearMap.compDer` had to be changed. The rest remains as is.
Edit: Some files explicitly used the weaker version, these have now been changed, by applying `.restrictScalars (R:=...)`, whereever the weaker linearity version of `compDer` was needed.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
new-contributor
|
9/8 |
Mathlib/Geometry/Manifold/Algebra/LeftInvariantDerivation.lean,Mathlib/Geometry/Manifold/DerivationBundle.lean,Mathlib/RingTheory/Derivation/Basic.lean,Mathlib/RingTheory/Kaehler/Basic.lean |
4 |
13 |
['Ljon4ik4', 'erdOne', 'github-actions', 'kckennylau'] |
nobody |
2-61125 2 days ago |
2-62110 2 days ago |
3-78257 3 days |
| 31231 |
Jlh18 author:Jlh18 |
refactor: MorphismProperty.HasPullbacksAlong |
Fix a morphism `f : X -> Y` in a category `C` with two morphism properties `P` and `Q`. To define a pullback functor between the subcategories of the slice categories `P.Over Q Y ⥤ P.Over Q X` one does not need the existence of all pullbacks along `f`. This refactor requires only that `f` has pullbacks of `P`-morphisms.
This property of "`f` has pullbacks of `P`-morphisms is defined as a typeclass. Note that it cannot simply be an `abbrev` like `Limits.HasPullbacksAlong` because the typeclass inference system will not be able to infer `P` that way.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
72/34 |
Mathlib/CategoryTheory/Limits/Shapes/Pullback/HasPullback.lean,Mathlib/CategoryTheory/MorphismProperty/Limits.lean,Mathlib/CategoryTheory/MorphismProperty/OverAdjunction.lean |
3 |
11 |
['Jlh18', 'chrisflav', 'github-actions', 'joelriou'] |
joelriou assignee:joelriou |
2-60577 2 days ago |
2-60595 2 days ago |
10-51607 10 days |
| 30895 |
callesonne author:callesonne |
feat(Bicategory/Modification/Pseudo): define modifications between strong natural transformations of pseudofunctors |
This PR adds modifications between strong natural transformations of pseudofunctors. At the same time, it improves the existing code on modifications between oplax natural tranformations of oplax functors (by removing some simp lemmas).
This is a migration of #18254 to a fork.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
334/46 |
Mathlib.lean,Mathlib/CategoryTheory/Bicategory/FunctorBicategory/Oplax.lean,Mathlib/CategoryTheory/Bicategory/Modification/Oplax.lean,Mathlib/CategoryTheory/Bicategory/Modification/Pseudo.lean,Mathlib/CategoryTheory/Bicategory/NaturalTransformation/Oplax.lean,Mathlib/CategoryTheory/Bicategory/NaturalTransformation/Pseudo.lean |
6 |
12 |
['callesonne', 'github-actions', 'joelriou', 'mathlib4-merge-conflict-bot', 'robin-carlier'] |
nobody |
2-60474 2 days ago |
2-80560 2 days ago |
12-72660 12 days |
| 30132 |
callesonne author:callesonne |
feat(Bicategory/Functor/Strict): add `StrictPseudofunctor` |
This PR adds the notion of a strict pseudofunctor, where the coherence isomorphisms are equalities. This will be useful for #25561 where I define the bicategory of groupoids.
---
- [x] depends on: #30134
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
181/0 |
Mathlib.lean,Mathlib/CategoryTheory/Bicategory/Functor/StrictPseudofunctor.lean |
2 |
17 |
['callesonne', 'dagurtomas', 'github-actions', 'joelriou', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'robin-carlier'] |
nobody |
2-60298 2 days ago |
2-80213 2 days ago |
13-82386 13 days |
| 31512 |
gasparattila author:gasparattila |
feat(MeasureTheory): typeclass for measurability of equality |
Currently, there are multiple lemmas of the form `MeasurableSet {x | f x = g x}` with different typeclass assumptions. This PR unifies them using a new `MeasurableEq` typeclass. A new instance for second-countable Hausdorff spaces is also added.
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
75/50 |
Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean,Mathlib/MeasureTheory/Group/Arithmetic.lean,Mathlib/MeasureTheory/MeasurableSpace/Constructions.lean,Mathlib/MeasureTheory/MeasurableSpace/Defs.lean,Mathlib/MeasureTheory/Measure/AEMeasurable.lean,Mathlib/MeasureTheory/Measure/Trim.lean,Mathlib/Probability/Kernel/CondDistrib.lean,Mathlib/Probability/Kernel/Posterior.lean |
8 |
1 |
['github-actions'] |
nobody |
2-56925 2 days ago |
2-65667 2 days ago |
2-65713 2 days |
| 31504 |
joelriou author:joelriou |
refactor(CategoryTheory/Shift): export Functor.CommShift.commShiftIso |
The isomorphism of commutation with shifts `Functor.CommShift.iso` is renamed `Functor.CommShift.commShiftIso` and exported as `Functor.commShiftIso` (which was a definition previously). This allows to generate a few equational lemmas automatically. A few `erw` are also removed.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
79/112 |
Mathlib/Algebra/Homology/HomotopyCategory/Shift.lean,Mathlib/CategoryTheory/Shift/Adjunction.lean,Mathlib/CategoryTheory/Shift/CommShift.lean,Mathlib/CategoryTheory/Shift/Induced.lean,Mathlib/CategoryTheory/Shift/Localization.lean,Mathlib/CategoryTheory/Shift/Opposite.lean,Mathlib/CategoryTheory/Shift/Pullback.lean,Mathlib/CategoryTheory/Shift/Quotient.lean,Mathlib/CategoryTheory/Shift/ShiftedHom.lean,Mathlib/CategoryTheory/Triangulated/Functor.lean,Mathlib/CategoryTheory/Triangulated/Opposite/Functor.lean |
11 |
7 |
['github-actions', 'joelriou', 'leanprover-bot'] |
nobody |
2-51518 2 days ago |
2-51518 2 days ago |
2-51496 2 days |
| 31407 |
SnirBroshi author:SnirBroshi |
feat(Analysis/SpecialFunctions/Gamma/BohrMollerup): Gamma is strictly decreasing on (0, 1] |
---
- [x] depends on: #31405
[](https://gitpod.io/from-referrer/)
|
t-analysis |
30/0 |
Mathlib/Analysis/Convex/Slope.lean,Mathlib/Analysis/SpecialFunctions/Gamma/BohrMollerup.lean |
2 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
nobody |
2-48592 2 days ago |
2-49587 2 days ago |
2-50404 2 days |
| 29856 |
mans0954 author:mans0954 |
feat(Analysis/Normed/Ring/Basic): Add NonUnitalNonAssocSeminormedRing and NonUnitalNonAssocNormedRing |
Adds the classes `NonUnitalNonAssocSeminormedRing` and `NonUnitalNonAssocNormedRing` and relaxes the `NonUnitalSeminormedRing` section to `NonUnitalNonAssocSeminormedRing`.
Examples of non-unital non-associative normed rings include non-untial JB-algebras and non-unital JB*-algebras.
---
[](https://gitpod.io/from-referrer/)
|
awaiting-bench
t-analysis
|
110/11 |
Mathlib/Analysis/Normed/Ring/Basic.lean,MathlibTest/TCSynth.lean |
2 |
4 |
['github-actions', 'j-loreaux', 'leanprover-bot'] |
ADedecker assignee:ADedecker |
2-47226 2 days ago |
2-50730 2 days ago |
53-73598 53 days |
| 31520 |
harahu author:harahu |
doc(Geometry): ensure only a single H1 header per file |
This PR ensures we only have a single H1 header per lean file in the `Geometry` subdirectory. We do this for the following reasons:
- Having more than one H1 header per file is likely to hamper both assistive technologies and SEO, since it introduces ambiguity about what the title of the resulting documentation webpage actually is.
- The [documentation style guide](https://leanprover-community.github.io/contribute/doc.html) asks for the title of the file to be H1, any other header in the file-level docstring to be H2, and sectioning headers to be H3.
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry |
5/5 |
Mathlib/Geometry/Manifold/LocalDiffeomorph.lean,Mathlib/Geometry/Manifold/Riemannian/Basic.lean,Mathlib/Geometry/Manifold/Sheaf/Smooth.lean,Mathlib/Geometry/Manifold/VectorBundle/LocalFrame.lean |
4 |
1 |
['github-actions'] |
nobody |
2-44550 2 days ago |
2-44555 2 days ago |
2-44599 2 days |
| 31519 |
harahu author:harahu |
doc(FieldTheory): ensure only a single H1 header per file |
This PR ensures we only have a single H1 header per lean file in the `FieldTheory` subdirectory. We do this for the following reasons:
- Having more than one H1 header per file is likely to hamper both assistive technologies and SEO, since it introduces ambiguity about what the title of the resulting documentation webpage actually is.
- The [documentation style guide](https://leanprover-community.github.io/contribute/doc.html) asks for the title of the file to be H1, any other header in the file-level docstring to be H2, and sectioning headers to be H3.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
3/3 |
Mathlib/FieldTheory/Galois/GaloisClosure.lean,Mathlib/FieldTheory/Galois/Infinite.lean,Mathlib/FieldTheory/Galois/Profinite.lean |
3 |
1 |
['github-actions'] |
nobody |
2-44544 2 days ago |
2-45226 2 days ago |
2-45266 2 days |
| 31521 |
harahu author:harahu |
doc(GroupTheory): ensure only a single H1 header per file |
This PR ensures we only have a single H1 header per lean file in the `GroupTheory` subdirectory. We do this for the following reasons:
- Having more than one H1 header per file is likely to hamper both assistive technologies and SEO, since it introduces ambiguity about what the title of the resulting documentation webpage actually is.
- The [documentation style guide](https://leanprover-community.github.io/contribute/doc.html) asks for the title of the file to be H1, any other header in the file-level docstring to be H2, and sectioning headers to be H3.
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
3/3 |
Mathlib/GroupTheory/Exponent.lean,Mathlib/GroupTheory/Index.lean,Mathlib/GroupTheory/SpecificGroups/KleinFour.lean |
3 |
1 |
['github-actions'] |
nobody |
2-44017 2 days ago |
2-44022 2 days ago |
2-44064 2 days |
| 31522 |
harahu author:harahu |
doc(LinearAlgebra): ensure only a single H1 header per file |
This PR ensures we only have a single H1 header per lean file in the `LinearAlgebra` subdirectory. We do this for the following reasons:
- Having more than one H1 header per file is likely to hamper both assistive technologies and SEO, since it introduces ambiguity about what the title of the resulting documentation webpage actually is.
- The [documentation style guide](https://leanprover-community.github.io/contribute/doc.html) asks for the title of the file to be H1, any other header in the file-level docstring to be H2, and sectioning headers to be H3.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
3/3 |
Mathlib/LinearAlgebra/Matrix/Transvection.lean,Mathlib/LinearAlgebra/Projectivization/Independence.lean,Mathlib/LinearAlgebra/Quotient/Pi.lean |
3 |
1 |
['github-actions'] |
nobody |
2-42747 2 days ago |
2-42753 2 days ago |
2-42793 2 days |
| 31179 |
SnirBroshi author:SnirBroshi |
feat(Algebra/QuadraticAlgebra/NormDeterminant): norm = det of left-mul endomorphism |
The norm of an element in a quadratic algebra is the determinant of the endomorphism defined by
left multiplication by that element.
---
I believe this is the reasoning behind the definition of the norm, though there might be an easier way to motivate the definition that I'm not aware of.
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
45/1 |
Mathlib.lean,Mathlib/Algebra/QuadraticAlgebra/Basic.lean,Mathlib/Algebra/QuadraticAlgebra/NormDeterminant.lean,Mathlib/LinearAlgebra/Matrix/ToLin.lean |
4 |
5 |
['SnirBroshi', 'github-actions', 'kckennylau', 'themathqueen'] |
jcommelin assignee:jcommelin |
2-42081 2 days ago |
2-42089 2 days ago |
12-17039 12 days |
| 26912 |
pechersky author:pechersky |
chore(Algebra/Ring/Subring): simp tag `Subring.smul_def` |
s-multiplying by a subtype is easiest to manipulate when both terms are in the ambient type. Many places that had to use the _def lemma for a rewrite, or to include it in a simp set, no longer have to.
Ported from #25308
---
[](https://gitpod.io/from-referrer/)
I found this being not-simp frustrating when talking about submodules over a valuation subring. |
t-algebra label:t-algebra$ |
67/66 |
Mathlib/Algebra/Algebra/Subalgebra/Basic.lean,Mathlib/Algebra/Field/Subfield/Basic.lean,Mathlib/Algebra/Group/Subgroup/Actions.lean,Mathlib/Algebra/Group/Submonoid/MulAction.lean,Mathlib/Algebra/Module/LocalizedModule/Basic.lean,Mathlib/Algebra/Module/LocalizedModule/Exact.lean,Mathlib/Algebra/Module/LocalizedModule/IsLocalization.lean,Mathlib/Algebra/Module/LocalizedModule/Submodule.lean,Mathlib/Algebra/Ring/Periodic.lean,Mathlib/Algebra/Ring/Subring/Basic.lean,Mathlib/Algebra/Ring/Subsemiring/Basic.lean,Mathlib/Analysis/CStarAlgebra/Basic.lean,Mathlib/FieldTheory/KummerExtension.lean,Mathlib/GroupTheory/GroupAction/Defs.lean,Mathlib/GroupTheory/GroupAction/MultiplePrimitivity.lean,Mathlib/GroupTheory/GroupAction/MultipleTransitivity.lean,Mathlib/GroupTheory/GroupAction/SubMulAction/OfFixingSubgroup.lean,Mathlib/GroupTheory/GroupAction/SubMulAction/OfStabilizer.lean,Mathlib/LinearAlgebra/RootSystem/Irreducible.lean,Mathlib/LinearAlgebra/RootSystem/WeylGroup.lean,Mathlib/RingTheory/Etale/Kaehler.lean,Mathlib/RingTheory/Ideal/Over.lean,Mathlib/RingTheory/LocalProperties/Projective.lean,Mathlib/RingTheory/Localization/InvSubmonoid.lean,Mathlib/RingTheory/OreLocalization/Basic.lean |
25 |
19 |
['artie2000', 'eric-wieser', 'github-actions', 'j-loreaux', 'linesthatinterlace', 'mathlib4-merge-conflict-bot', 'pechersky'] |
joelriou assignee:joelriou |
2-41501 2 days ago |
2-47443 2 days ago |
54-35075 54 days |
| 31524 |
harahu author:harahu |
doc(Logic/Equiv/Fintype): fix typos |
Found and fixed with help from Claude.
---
[](https://gitpod.io/from-referrer/)
|
t-logic |
4/4 |
Mathlib/Logic/Equiv/Fintype.lean |
1 |
1 |
['github-actions'] |
nobody |
2-41401 2 days ago |
2-41410 2 days ago |
2-41449 2 days |
| 30879 |
grunweg author:grunweg |
feat: beta reduce in the `T%` elaborator |
Whenever the `T%` elaborator succeeds, head beta reduce the resulting application.
This enables applying it with anonymous functions or inside big operators without issue.
(For instance, all changes to `SmoothSection` in #30357 are now possible without addition `dsimp` steps.)
In the process, also extract the workhorse component of the elaborator into an independent function
and improve its doc-string to mention the corresponding tracing option.
---
- [x] depends on: #30413
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry
t-meta
|
62/20 |
Mathlib/Geometry/Manifold/Notation.lean,MathlibTest/DifferentialGeometry/Notation.lean |
2 |
12 |
['github-actions', 'grunweg', 'mathlib4-dependent-issues-bot', 'thorimur'] |
thorimur assignee:thorimur |
2-33719 2 days ago |
2-57313 2 days ago |
13-12558 13 days |
| 28793 |
grunweg author:grunweg |
feat: smooth immersions |
Define smooth immersions between manifolds.
We use a definition which allows for corners, infinite dimension and arbitrary fields.
Future PRs will
- prove that immersions are C^n (#28796),
- prove another characterisation of immersions: f is immersed at x iff the differential df_x splits,
i.e. is injective, has closed range and its image has a closed complement,
and in particular that a map between finite-dimensional manifolds over a complete field is an
immersion iff its differential is injective,
- use this to prove that the product (#28853) and composition of immersions is an immersion,
- use this theory to give more conceptual proofs of half of `Manifold/Instances/Icc.lean` (#29077)
- define smooth embeddings and immersed and embedded smooth submanifolds
---
- [x] depends on: #28701
- [x] depends on: #31123
Most of the above has been done at https://github.com/grunweg/mathlib4/tree/MR-define-immersions.
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry |
658/2 |
Mathlib.lean,Mathlib/Geometry/Manifold/IsImmersionEmbedding.lean,Mathlib/Geometry/Manifold/LocalSourceTargetProperty.lean,Mathlib/Topology/Closure.lean,Mathlib/Topology/OpenPartialHomeomorph.lean,docs/references.bib |
6 |
118 |
['chrisflav', 'github-actions', 'grunweg', 'mathlib4-dependent-issues-bot', 'sgouezel'] |
sgouezel assignee:sgouezel |
2-33663 2 days ago |
2-33663 2 days ago |
35-58364 35 days |
| 26149 |
vasnesterov author:vasnesterov |
feat(Topology): continuous surjection from Cantor set to Hilbert cube |
1. Add `cantorToHilbert`: a continuous surjection from the Cantor space (`ℕ → Bool`) to the Hilbert Cube (`ℕ → unitInterval`).
2. Add auxiliary constructions for homeomorphisms:
* `Equiv.toHomeomorphOfDiscrete`: any bijection between discrete spaces is a homeomorphism
* `Homeomorph.piCurry`: `(X × Y → Z) ≃ₜ (X → Y → Z)`
This is the first part of the Hausdorff–Alexandroff theorem's proof, the second is #26184.
---
- [x] depends on: #26136
- [x] depends on: #31349
[](https://gitpod.io/from-referrer/)
|
t-topology |
100/0 |
Mathlib.lean,Mathlib/Analysis/Real/OfDigits.lean,Mathlib/Topology/Constructions.lean,Mathlib/Topology/Homeomorph/Defs.lean,Mathlib/Topology/Instances/CantorSet.lean,Mathlib/Topology/MetricSpace/HausdorffAlexandroff.lean |
6 |
5 |
['alreadydone', 'github-actions', 'leanprover-community-bot-assistant', 'mathlib4-dependent-issues-bot', 'vasnesterov'] |
dagurtomas assignee:dagurtomas |
2-33616 2 days ago |
6-34937 6 days ago |
7-20970 7 days |
| 30168 |
joelriou author:joelriou |
feat(CategoryTheory): closure under bounded colimits |
In this PR, given `P : ObjectProperty C` and `κ : Cardinal.{w}`, we introduce the closure `P.colimitsCardinalClosure κ`
of `P` under colimits of shapes given by categories `J` such that `HasCardinalLT (Arrow J) κ` holds.
If `C` is locally `w`-small and `P` is essentially `w`-small, we show that this closure `P.colimitsCardinalClosure κ` is
also essentially `w`-small.
(In particular, if `κ = ℵ₀`, this is the closure of `P` under finite colimits.)
---
- [x] depends on: #29851
- [x] depends on: #29881
- [x] depends on: #29903
- [x] depends on: #29854
- [x] depends on: #30160
[](https://gitpod.io/from-referrer/)
|
large-import
t-category-theory
|
125/2 |
Mathlib.lean,Mathlib/CategoryTheory/ObjectProperty/ColimitsCardinalClosure.lean,Mathlib/CategoryTheory/SmallRepresentatives.lean |
3 |
7 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
TwoFX assignee:TwoFX |
2-33614 2 days ago |
5-46467 5 days ago |
5-46444 5 days |
| 30570 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph/Connectivity/Connected): `reachabilitySet` |
feat(Combinatorics/SimpleGraph/Connectivity/Connected): define `reachabilitySet` as the set of all pairs that have a walk between them
---
The main motivation is making it easier to work with the bridge definition (see `isBridge_iff_mem_edgeSet_and_notMem_reachabilitySet_deleteEdges` and `mem_edgeSet_and_mem_reachabilitySet_deleteEdges_iff_exists_isCycle_and_mem_edges` at the bottom), although I think this set is worth defining regardless.
- [x] depends on: #30542
[](https://gitpod.io/from-referrer/)
|
|
57/0 |
Mathlib/Combinatorics/SimpleGraph/Connectivity/Connected.lean |
1 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
kex-y assignee:kex-y |
2-33613 2 days ago |
6-59602 6 days ago |
6-62115 6 days |
| 30798 |
joelriou author:joelriou |
feat(Algebra/Category/ModuleCat): a functorial projective resolution |
Any `R`-module can be written functorialy as a quotient of a projective `R`-module.
---
- [x] depends on: #30796
This PR continues the work from #22556.
Original PR: https://github.com/leanprover-community/mathlib4/pull/22556 |
t-category-theory |
52/0 |
Mathlib.lean,Mathlib/Algebra/Category/ModuleCat/LeftResolution.lean,Mathlib/CategoryTheory/Preadditive/Injective/Basic.lean,Mathlib/CategoryTheory/Preadditive/Projective/Basic.lean |
4 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
dagurtomas assignee:dagurtomas |
2-33612 2 days ago |
5-44498 5 days ago |
5-44514 5 days |
| 30812 |
joelriou author:joelriou |
feat(CategoryTheory/Abelian): construction of reduced left resolutions |
The standard functorial free resolution of a `R`-module `M` (#30798) does not directly extend to free resolutions of (bounded above) complexes because the free `R`-module functor does preserve zero morphisms. In this PR, we provide a general construction which takes functorial left resolutions and modify them by considering a suitable direct factor so that it preserves zero morphisms.
---
- [x] depends on: #30796
This PR continues the work from #22547.
Original PR: https://github.com/leanprover-community/mathlib4/pull/22547 |
t-category-theory |
233/0 |
Mathlib.lean,Mathlib/Algebra/Homology/LeftResolution/Reduced.lean,Mathlib/Algebra/Homology/LeftResolution/Transport.lean,Mathlib/CategoryTheory/Idempotents/FunctorExtension.lean,Mathlib/CategoryTheory/Idempotents/Karoubi.lean,Mathlib/CategoryTheory/Retract.lean |
6 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
dagurtomas assignee:dagurtomas |
2-33611 2 days ago |
5-42502 5 days ago |
5-42559 5 days |
| 30897 |
euprunin author:euprunin |
chore(Order/Defs): golf multiple lemmas in `LinearOrder` using `grind` |
---
Show trace profiling of lt_trichotomy: <10 ms before, <10 ms after 🎉
### Trace profiling of `lt_trichotomy` before PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..12b8e67c46 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -87,6 +87,7 @@ lemma lt_of_not_ge (h : ¬b ≤ a) : a < b := lt_of_le_not_ge (le_of_not_ge h) h
@[deprecated (since := "2025-05-11")] alias le_of_not_le := le_of_not_ge
+set_option trace.profiler true in
lemma lt_trichotomy (a b : α) : a < b ∨ a = b ∨ b < a := by
grind [le_total, Decidable.lt_or_eq_of_le]
```
```
✔ [61/61] Built Mathlib.Order.Defs.LinearOrder (524ms)
Build completed successfully (61 jobs).
```
### Trace profiling of `lt_trichotomy` after PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..ea19594593 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -87,8 +87,9 @@ lemma lt_of_not_ge (h : ¬b ≤ a) : a < b := lt_of_le_not_ge (le_of_not_ge h) h
@[deprecated (since := "2025-05-11")] alias le_of_not_le := le_of_not_ge
+set_option trace.profiler true in
lemma lt_trichotomy (a b : α) : a < b ∨ a = b ∨ b < a := by
- grind [le_total, Decidable.lt_or_eq_of_le]
+ grind
lemma le_of_not_gt (h : ¬b < a) : a ≤ b :=
match lt_trichotomy a b with
```
```
✔ [61/61] Built Mathlib.Order.Defs.LinearOrder (522ms)
Build completed successfully (61 jobs).
```
---
Show trace profiling of lt_or_gt_of_ne: <10 ms before, <10 ms after 🎉
### Trace profiling of `lt_or_gt_of_ne` before PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..f6b239762a 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -107,6 +107,7 @@ lemma le_or_gt (a b : α) : a ≤ b ∨ b < a := (lt_or_ge b a).symm
@[deprecated (since := "2025-05-11")] alias le_or_lt := le_or_gt
+set_option trace.profiler true in
lemma lt_or_gt_of_ne (h : a ≠ b) : a < b ∨ b < a := by simpa [h] using lt_trichotomy a b
lemma ne_iff_lt_or_gt : a ≠ b ↔ a < b ∨ b < a := ⟨lt_or_gt_of_ne, (Or.elim · ne_of_lt ne_of_gt)⟩
```
```
✔ [61/61] Built Mathlib.Order.Defs.LinearOrder (526ms)
Build completed successfully (61 jobs).
```
### Trace profiling of `lt_or_gt_of_ne` after PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..32b1b7866a 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -107,7 +107,9 @@ lemma le_or_gt (a b : α) : a ≤ b ∨ b < a := (lt_or_ge b a).symm
@[deprecated (since := "2025-05-11")] alias le_or_lt := le_or_gt
-lemma lt_or_gt_of_ne (h : a ≠ b) : a < b ∨ b < a := by simpa [h] using lt_trichotomy a b
+set_option trace.profiler true in
+lemma lt_or_gt_of_ne (h : a ≠ b) : a < b ∨ b < a := by
+ grind
lemma ne_iff_lt_or_gt : a ≠ b ↔ a < b ∨ b < a := ⟨lt_or_gt_of_ne, (Or.elim · ne_of_lt ne_of_gt)⟩
```
```
✔ [61/61] Built Mathlib.Order.Defs.LinearOrder (523ms)
Build completed successfully (61 jobs).
```
---
Show trace profiling of min_le_left: <10 ms before, 11 ms after
### Trace profiling of `min_le_left` before PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..7df1c3ca17 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -131,6 +131,7 @@ lemma min_def (a b : α) : min a b = if a ≤ b then a else b := LinearOrder.min
@[grind =]
lemma max_def (a b : α) : max a b = if a ≤ b then b else a := LinearOrder.max_def a b
+set_option trace.profiler true in
lemma min_le_left (a b : α) : min a b ≤ a := by
if h : a ≤ b
then simp [min_def, if_pos h, le_refl]
```
```
✔ [61/61] Built Mathlib.Order.Defs.LinearOrder (522ms)
Build completed successfully (61 jobs).
```
### Trace profiling of `min_le_left` after PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..5b358180c5 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -131,10 +131,9 @@ lemma min_def (a b : α) : min a b = if a ≤ b then a else b := LinearOrder.min
@[grind =]
lemma max_def (a b : α) : max a b = if a ≤ b then b else a := LinearOrder.max_def a b
+set_option trace.profiler true in
lemma min_le_left (a b : α) : min a b ≤ a := by
- if h : a ≤ b
- then simp [min_def, if_pos h, le_refl]
- else simpa [min_def, if_neg h] using le_of_not_ge h
+ grind
lemma min_le_right (a b : α) : min a b ≤ b := by
if h : a ≤ b
```
```
ℹ [61/61] Built Mathlib.Order.Defs.LinearOrder (537ms)
info: Mathlib/Order/Defs/LinearOrder.lean:135:0: [Elab.async] [0.011028] elaborating proof of min_le_left
[Elab.definition.value] [0.010868] min_le_left
[Elab.step] [0.010797] grind
[Elab.step] [0.010791] grind
[Elab.step] [0.010784] grind
Build completed successfully (61 jobs).
```
---
Show trace profiling of min_assoc: <10 ms before, 19 ms after
### Trace profiling of `min_assoc` before PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..5d78975606 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -163,6 +163,7 @@ lemma eq_min (h₁ : c ≤ a) (h₂ : c ≤ b) (h₃ : ∀ {d}, d ≤ a → d
lemma min_comm (a b : α) : min a b = min b a :=
eq_min (min_le_right a b) (min_le_left a b) fun h₁ h₂ => le_min h₂ h₁
+set_option trace.profiler true in
lemma min_assoc (a b c : α) : min (min a b) c = min a (min b c) := by
apply eq_min
· apply le_trans (min_le_left ..) (min_le_left ..)
```
```
✔ [61/61] Built Mathlib.Order.Defs.LinearOrder (531ms)
Build completed successfully (61 jobs).
```
### Trace profiling of `min_assoc` after PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..abb242c8ee 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -163,15 +163,9 @@ lemma eq_min (h₁ : c ≤ a) (h₂ : c ≤ b) (h₃ : ∀ {d}, d ≤ a → d
lemma min_comm (a b : α) : min a b = min b a :=
eq_min (min_le_right a b) (min_le_left a b) fun h₁ h₂ => le_min h₂ h₁
+set_option trace.profiler true in
lemma min_assoc (a b c : α) : min (min a b) c = min a (min b c) := by
- apply eq_min
- · apply le_trans (min_le_left ..) (min_le_left ..)
- · apply le_min
- · apply le_trans (min_le_left ..) (min_le_right ..)
- · apply min_le_right
- · intro d h₁ h₂; apply le_min
- · apply le_min h₁; apply le_trans h₂; apply min_le_left
- · apply le_trans h₂; apply min_le_right
+ grind
lemma min_left_comm (a b c : α) : min a (min b c) = min b (min a c) := by
rw [← min_assoc, min_comm a, min_assoc]
```
```
ℹ [61/61] Built Mathlib.Order.Defs.LinearOrder (521ms)
info: Mathlib/Order/Defs/LinearOrder.lean:167:0: [Elab.async] [0.019168] elaborating proof of min_assoc
[Elab.definition.value] [0.018952] min_assoc
[Elab.step] [0.018863] grind
[Elab.step] [0.018857] grind
[Elab.step] [0.018848] grind
Build completed successfully (61 jobs).
```
---
Show trace profiling of min_left_comm: <10 ms before, 19 ms after
### Trace profiling of `min_left_comm` before PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..331ed67051 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -173,6 +173,7 @@ lemma min_assoc (a b c : α) : min (min a b) c = min a (min b c) := by
· apply le_min h₁; apply le_trans h₂; apply min_le_left
· apply le_trans h₂; apply min_le_right
+set_option trace.profiler true in
lemma min_left_comm (a b c : α) : min a (min b c) = min b (min a c) := by
rw [← min_assoc, min_comm a, min_assoc]
```
```
✔ [61/61] Built Mathlib.Order.Defs.LinearOrder (529ms)
Build completed successfully (61 jobs).
```
### Trace profiling of `min_left_comm` after PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..dc93dd47af 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -173,8 +173,9 @@ lemma min_assoc (a b c : α) : min (min a b) c = min a (min b c) := by
· apply le_min h₁; apply le_trans h₂; apply min_le_left
· apply le_trans h₂; apply min_le_right
+set_option trace.profiler true in
lemma min_left_comm (a b c : α) : min a (min b c) = min b (min a c) := by
- rw [← min_assoc, min_comm a, min_assoc]
+ grind
@[simp] lemma min_self (a : α) : min a a = a := by simp [min_def]
```
```
ℹ [61/61] Built Mathlib.Order.Defs.LinearOrder (522ms)
info: Mathlib/Order/Defs/LinearOrder.lean:177:0: [Elab.async] [0.019701] elaborating proof of min_left_comm
[Elab.definition.value] [0.019485] min_left_comm
[Elab.step] [0.019416] grind
[Elab.step] [0.019411] grind
[Elab.step] [0.019404] grind
Build completed successfully (61 jobs).
```
---
Show trace profiling of compare_lt_iff_lt: 23 ms before, 14 ms after 🎉
### Trace profiling of `compare_lt_iff_lt` before PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..a38e430f94 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -223,6 +223,7 @@ lemma max_lt (h₁ : a < c) (h₂ : b < c) : max a b < c := by
section Ord
+set_option trace.profiler true in
lemma compare_lt_iff_lt : compare a b = .lt ↔ a < b := by
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
split_ifs <;> simp only [*, lt_irrefl]
```
```
ℹ [61/61] Built Mathlib.Order.Defs.LinearOrder (521ms)
info: Mathlib/Order/Defs/LinearOrder.lean:227:0: [Elab.async] [0.023362] elaborating proof of compare_lt_iff_lt
[Elab.definition.value] [0.022981] compare_lt_iff_lt
[Elab.step] [0.022850]
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
split_ifs <;> simp only [*, lt_irrefl]
[Elab.step] [0.022844]
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
split_ifs <;> simp only [*, lt_irrefl]
[Elab.step] [0.021754] split_ifs <;> simp only [*, lt_irrefl]
[Elab.step] [0.021740] focus
split_ifs
with_annotate_state"<;>" skip
all_goals simp only [*, lt_irrefl]
[Elab.step] [0.021735]
split_ifs
with_annotate_state"<;>" skip
all_goals simp only [*, lt_irrefl]
[Elab.step] [0.021730]
split_ifs
with_annotate_state"<;>" skip
all_goals simp only [*, lt_irrefl]
[Elab.step] [0.018987] split_ifs
Build completed successfully (61 jobs).
```
### Trace profiling of `compare_lt_iff_lt` after PR 30897
```diff
diff --git a/Mathlib/Order/Defs/LinearOrder.lean b/Mathlib/Order/Defs/LinearOrder.lean
index 7b6f0d5598..a97d025c43 100644
--- a/Mathlib/Order/Defs/LinearOrder.lean
+++ b/Mathlib/Order/Defs/LinearOrder.lean
@@ -223,9 +223,10 @@ lemma max_lt (h₁ : a < c) (h₂ : b < c) : max a b < c := by
section Ord
+set_option trace.profiler true in
lemma compare_lt_iff_lt : compare a b = .lt ↔ a < b := by
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
- split_ifs <;> simp only [*, lt_irrefl]
+ grind
lemma compare_gt_iff_gt : compare a b = .gt ↔ b < a := by
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
```
```
ℹ [61/61] Built Mathlib.Order.Defs.LinearOrder (518ms)
info: Mathlib/Order/Defs/LinearOrder.lean:227:0: [Elab.async] [0.014062] elaborating proof of compare_lt_iff_lt
[Elab.definition.value] [0.013827] compare_lt_iff_lt
[Elab.step] [0.013735]
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
grind
[Elab.step] [0.013730]
rw [LinearOrder.compare_eq_compareOfLessAndEq, compareOfLessAndEq]
grind
[Elab.step] [0.012536] grind
Build completed successfully (61 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-order |
19/60 |
Mathlib/Order/Defs/LinearOrder.lean |
1 |
11 |
['euprunin', 'github-actions', 'grunweg', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
bryangingechen assignee:bryangingechen |
2-33610 2 days ago |
6-47716 6 days ago |
6-60176 6 days |
| 31051 |
joelriou author:joelriou |
chore(CategoryTheory): adding grind annotations for `op_comp` and `Quiver.Hom.comp_toLoc` |
This shall be used in #30189 in order to define descent data (which shall be used to define stacks).
---
In the application to #30189, any of `grind =`, `grind =_` or `grind _=_` would work. I am not sure which one is the best option.
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
2/2 |
Mathlib/CategoryTheory/Bicategory/LocallyDiscrete.lean,Mathlib/CategoryTheory/Opposites.lean |
2 |
5 |
['github-actions', 'joelriou', 'leanprover-bot', 'mathlib4-merge-conflict-bot', 'robin-carlier'] |
dagurtomas assignee:dagurtomas |
2-33609 2 days ago |
9-62485 9 days ago |
15-74201 15 days |
| 31147 |
daefigueroa author:daefigueroa |
feat(Dynamics): point transitive monoid actions and transitive points |
We define point transitivity for a monoid action on a topological space and define the set of transitive points. We add some basic lemmas and implications between topological transitivity and point transitivity.
---
- [x] depends on: #28001
[](https://gitpod.io/from-referrer/) |
new-contributor
t-dynamics
|
114/6 |
Mathlib/Dynamics/Transitive.lean |
1 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
sgouezel assignee:sgouezel |
2-33609 2 days ago |
9-70014 9 days ago |
9-74200 9 days |
| 31221 |
themathqueen author:themathqueen |
chore(Algebra/Star/LinearMap): moving stuff around |
Moving stuff around from `Algebra/Star/LinearMap` to other files. This way, the intrinsic star gets imported early on instead of keeping it all in one file with big imports.
Also adds `LinearMap.toMatrix'_intrinsicStar : (star f).toMatrix' = f.toMatrix'.map star` and `LinearMap.isSelfAdjoint_iff_forall_isSelfAdjoint_toMatrix'_apply`.
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-algebra
label:t-algebra$ |
69/38 |
Mathlib/Algebra/Algebra/Bilinear.lean,Mathlib/Algebra/Star/LinearMap.lean,Mathlib/Algebra/Star/TensorProduct.lean,Mathlib/LinearAlgebra/Matrix/ToLin.lean |
4 |
2 |
['github-actions', 'themathqueen'] |
chrisflav assignee:chrisflav |
2-33607 2 days ago |
9-85120 9 days ago |
10-69677 10 days |
| 31239 |
Paul-Lez author:Paul-Lez |
feat(NumberTheory/NumberField/InfinitePlace): A few easy lemmas about totally real fields |
---
[](https://gitpod.io/from-referrer/)
|
t-number-theory |
15/0 |
Mathlib/NumberTheory/NumberField/InfinitePlace/TotallyRealComplex.lean |
1 |
9 |
['Paul-Lez', 'Ruben-VandeVelde', 'github-actions', 'riccardobrasca'] |
jcommelin assignee:jcommelin |
2-33606 2 days ago |
8-82858 8 days ago |
9-33488 9 days |
| 31242 |
plp127 author:plp127 |
feat: express filter as supremum of principal filter and free filter |
Prove a filter is free iff it is smaller than the cofinite filter. Prove that every filter decomposes as the disjoint supremum of a principal filter and a free filter.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
52/0 |
Mathlib/Order/Filter/Cofinite.lean,Mathlib/Order/Lattice.lean |
2 |
1 |
['github-actions'] |
bryangingechen assignee:bryangingechen |
2-33605 2 days ago |
10-25137 10 days ago |
10-25130 10 days |
| 31250 |
joelriou author:joelriou |
feat(AlgebraicTopology): inductive construction of StrictSegal structures |
We obtain a computable `StrictSegal (nerve C)` structure by using an inductive construction based on a new `StrictSegalCore` structure which provides a way to construct a `n + 1`-simplex by from a `1`-simplex and a `n`-simplex satisfying a compatibility.
---
- [x] depends on: #31248
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology
maintainer-merge
|
177/29 |
Mathlib/AlgebraicTopology/SimplicialSet/Coskeletal.lean,Mathlib/AlgebraicTopology/SimplicialSet/Path.lean,Mathlib/AlgebraicTopology/SimplicialSet/StrictSegal.lean,Mathlib/CategoryTheory/ComposableArrows.lean |
4 |
20 |
['emilyriehl', 'github-actions', 'joelriou', 'mathlib4-dependent-issues-bot', 'robin-carlier'] |
dagurtomas assignee:dagurtomas |
2-33603 2 days ago |
9-64181 9 days ago |
9-74481 9 days |
| 31256 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/SignedDist): `signedInfDist_reindex` |
Add a lemma saying how `Affine.Simplex.signedInfDist` interacts with `Affine.Simplex.reindex`.
---
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
5/0 |
Mathlib/Geometry/Euclidean/SignedDist.lean |
1 |
1 |
['github-actions'] |
JovanGerb assignee:JovanGerb |
2-33602 2 days ago |
9-84173 9 days ago |
9-84151 9 days |
| 31257 |
jsm28 author:jsm28 |
feat(LinearAlgebra/AffineSpace/Simplex/Basic): more `reindex` lemmas |
Add lemmas about how `reindex` interacts with `restrict`, `setInterior`, `interior` and `closedInterior`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
35/0 |
Mathlib/LinearAlgebra/AffineSpace/Simplex/Basic.lean |
1 |
1 |
['github-actions'] |
riccardobrasca assignee:riccardobrasca |
2-33601 2 days ago |
9-82135 9 days ago |
9-82114 9 days |
| 31259 |
YaelDillies author:YaelDillies |
refactor(Dynamics): use `SetRel` notions of separation and cover |
... instead of the handmade ones.
---
[](https://gitpod.io/from-referrer/)
|
t-dynamics |
173/203 |
Mathlib/Data/Rel/Cover.lean,Mathlib/Dynamics/TopologicalEntropy/CoverEntropy.lean,Mathlib/Dynamics/TopologicalEntropy/DynamicalEntourage.lean,Mathlib/Dynamics/TopologicalEntropy/NetEntropy.lean,Mathlib/Dynamics/TopologicalEntropy/Semiconj.lean,Mathlib/Dynamics/TopologicalEntropy/Subset.lean,Mathlib/Topology/UniformSpace/Defs.lean |
7 |
1 |
['github-actions'] |
urkud assignee:urkud |
2-33599 2 days ago |
9-363 9 days ago |
9-341 9 days |
| 31294 |
erdOne author:erdOne |
feat(Analysis): Weierstrass ℘ functions |
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
274/0 |
Mathlib.lean,Mathlib/Analysis/SpecialFunctions/Elliptic/Weierstrass.lean |
2 |
2 |
['github-actions', 'grunweg'] |
urkud assignee:urkud |
2-33595 2 days ago |
8-57477 8 days ago |
8-57521 8 days |
| 31309 |
gasparattila author:gasparattila |
feat(Probability/Independence): reindexing lemmas for `iIndep*` |
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
105/30 |
Mathlib/Probability/Independence/Basic.lean,Mathlib/Probability/Independence/Kernel.lean |
2 |
3 |
['EtienneC30', 'gasparattila', 'github-actions'] |
sgouezel assignee:sgouezel |
2-33594 2 days ago |
8-40359 8 days ago |
8-40399 8 days |
| 31315 |
Parcly-Taxel author:Parcly-Taxel |
feat: IMO 2010 Q5 |
I use an opaque power function to avoid `(kernel) deep recursion detected`. Cf. [#general > Panic in rw: Nat.pow exponent is too big @ 💬](https://leanprover.zulipchat.com/#narrow/channel/113488-general/topic/Panic.20in.20rw.3A.20Nat.2Epow.20exponent.20is.20too.20big/near/513294906). |
IMO |
252/0 |
Archive.lean,Archive/Imo/Imo2010Q5.lean |
2 |
2 |
['github-actions', 'jsm28'] |
dwrensha assignee:dwrensha |
2-33593 2 days ago |
8-22331 8 days ago |
8-22315 8 days |
| 31356 |
adomani author:adomani |
feat: add inspect-like functions |
Produces a tree-like formatting for `Syntax`, `Expr` and `InfoTree`. Especially for the `InfoTree`s, there are *many* parts of it that do not get printed.
For instance, this is how the `InfoTree`s of `set_option linter.missingDocs true` get printed:
```lean
inspectIT
set_option linter.missingDocs true
/-
commandCtx
|-Info.ofCommandInfo: Lean.Elab.Command.elabSetOption, 'set_option…gDocs true'
| |-Info.ofCompletionInfo.CompletionInfo.option 'set_option…issingDocs'
| |-Info.ofOptionInfo: linter.missingDocs, Linter.linter.missingDocs
-/
```
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
720/0 |
Mathlib.lean,Mathlib/Util/Inspect.lean,MathlibTest/Inspect.lean |
3 |
2 |
['github-actions', 'plp127'] |
kim-em assignee:kim-em |
2-33591 2 days ago |
6-78316 6 days ago |
6-78353 6 days |
| 31358 |
erdOne author:erdOne |
feat(RingTheory): universal factorization map of polynomials |
---
[](https://gitpod.io/from-referrer/)
|
|
220/0 |
Mathlib.lean,Mathlib/Algebra/Polynomial/Monic.lean,Mathlib/RingTheory/Polynomial/UniversalFactorizationRing.lean,Mathlib/RingTheory/TensorProduct/Maps.lean |
4 |
1 |
['github-actions'] |
dwrensha assignee:dwrensha |
2-33590 2 days ago |
6-77453 6 days ago |
6-77430 6 days |
| 31387 |
gasparattila author:gasparattila |
feat(Topology/Separation): condition for regularity given a subbasis |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
19/0 |
Mathlib/Topology/Separation/Regular.lean |
1 |
1 |
['github-actions', 'plp127'] |
j-loreaux assignee:j-loreaux |
2-33589 2 days ago |
5-58668 5 days ago |
5-58702 5 days |
| 31371 |
euprunin author:euprunin |
chore(RingTheory): golf `RingTheory/` using `order` |
---
[](https://gitpod.io/from-referrer/)
|
|
11/20 |
Mathlib/RingTheory/DedekindDomain/AdicValuation.lean,Mathlib/RingTheory/DedekindDomain/Factorization.lean,Mathlib/RingTheory/DiscreteValuationRing/Basic.lean,Mathlib/RingTheory/DiscreteValuationRing/TFAE.lean,Mathlib/RingTheory/Ideal/Operations.lean,Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean |
6 |
4 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
EtienneC30 assignee:EtienneC30 |
2-33589 2 days ago |
6-32331 6 days ago |
6-40360 6 days |
| 31389 |
YaelDillies author:YaelDillies |
chore: golf proofs involving permutations |
This reduces the diff of #27433.
---
[](https://gitpod.io/from-referrer/)
|
|
175/247 |
Mathlib/Algebra/Group/End.lean,Mathlib/Algebra/Order/Rearrangement.lean,Mathlib/Data/Fintype/Perm.lean,Mathlib/GroupTheory/Perm/Centralizer.lean,Mathlib/GroupTheory/Perm/Cycle/Basic.lean,Mathlib/GroupTheory/Perm/Cycle/Factors.lean,Mathlib/GroupTheory/Perm/Finite.lean,Mathlib/GroupTheory/Perm/Sign.lean,Mathlib/GroupTheory/Perm/Support.lean,Mathlib/GroupTheory/SpecificGroups/Alternating.lean,Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean |
11 |
7 |
['YaelDillies', 'github-actions', 'plp127'] |
kex-y assignee:kex-y |
2-33588 2 days ago |
5-51727 5 days ago |
5-51704 5 days |
| 31400 |
joelriou author:joelriou |
feat(CategoryTheory): deriving functors using a right derivability structure |
We develop the API for derived functors following the existence theorem obtained in #26374. If `Φ` is a localizer morphism, we introduce a predicate `Φ.Derives F` for a functor `F` saying that `Φ.functor ⋙ F` inverts the given class of morphisms, and in case `Φ` is a right derivability structure, we show that `F` admits a right derived functor, and we obtain a recognition lemma for this derived functor.
(In the future, this will be applied to the injective/projective/flat derivability structures.)
---
- [x] depends on: #26374
- [x] depends on: #22474
- [x] depends on: #26036
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
117/1 |
Mathlib.lean,Mathlib/CategoryTheory/Functor/Derived/PointwiseRightDerived.lean,Mathlib/CategoryTheory/Functor/Derived/RightDerived.lean,Mathlib/CategoryTheory/Localization/DerivabilityStructure/Derives.lean |
4 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
erdOne assignee:erdOne |
2-33583 2 days ago |
5-42580 5 days ago |
5-42558 5 days |
| 31401 |
SnirBroshi author:SnirBroshi |
feat(NumberTheory/Real/GoldenRatio): add two more fib identities |
---
In case using `grind` here is considered too fragile, there are alternative proofs without `grind` in the first commit, let me know if I should switch to them.
[](https://gitpod.io/from-referrer/)
|
t-number-theory |
8/0 |
Mathlib/NumberTheory/Real/GoldenRatio.lean |
1 |
1 |
['github-actions'] |
mariainesdff assignee:mariainesdff |
2-33582 2 days ago |
5-42603 5 days ago |
5-42638 5 days |
| 31526 |
Aaron1011 author:Aaron1011 |
feat: Add multiplicative version of structure theorem for finitely generated abelian groups |
This is similar to the multiplicative version of the structure theorem for *finite* abelian groups (using a pi type instead of a direct sum)
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory
new-contributor
|
18/0 |
Mathlib/GroupTheory/FiniteAbelian/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
2-32643 2 days ago |
2-32645 2 days ago |
2-32687 2 days |
| 28266 |
euprunin author:euprunin |
chore(RingTheory): golf entire `single_one_eq_pow` using `simp`. deprecate `single_inv`. |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
4/6 |
Mathlib/RingTheory/LaurentSeries.lean |
1 |
10 |
['erdOne', 'eric-wieser', 'euprunin', 'github-actions', 'grunweg', 'mathlib4-merge-conflict-bot'] |
erdOne assignee:erdOne |
2-31201 2 days ago |
6-58796 6 days ago |
6-70149 6 days |
| 31528 |
bwangpj author:bwangpj |
feat: MulAction.fixedPoints and MulAction.fixedBy under MulActionHom |
MulActionHom maps fixedPoints to fixedPoints and fixedBy to fixedBy.
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory
large-import
|
33/1 |
Mathlib/GroupTheory/GroupAction/FixedPoints.lean |
1 |
0 |
[] |
nobody |
2-22628 2 days ago |
2-22710 2 days ago |
2-22746 2 days |
| 31502 |
urkud author:urkud |
feat: add a version of Bernoulli's inequality |
Motivated by #31492
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-algebra
label:t-algebra$ |
82/21 |
Mathlib/Algebra/Order/Archimedean/Basic.lean,Mathlib/Algebra/Order/Ring/Pow.lean |
2 |
1 |
['github-actions'] |
nobody |
2-22609 2 days ago |
2-22648 2 days ago |
3-8728 3 days |
| 30331 |
urkud author:urkud |
feat(Calculus): derivative of `ContinuousAlternatingMap.compContinuousLinearMap` |
---
- [ ] depends on: #30182
[](https://gitpod.io/from-referrer/)
|
t-analysis |
359/9 |
Mathlib.lean,Mathlib/Analysis/Asymptotics/TVS.lean,Mathlib/Analysis/Calculus/FDeriv/ContinuousAlternatingMap.lean,Mathlib/Analysis/Convex/EGauge.lean,Mathlib/Analysis/NormedSpace/Alternating/Basic.lean,Mathlib/Topology/Algebra/Module/Alternating/Topology.lean |
6 |
13 |
['github-actions', 'j-loreaux', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'urkud'] |
nobody |
2-10045 2 days ago |
2-10045 2 days ago |
7-34816 7 days |
| 31376 |
euprunin author:euprunin |
chore: use `order` instead of `linarith` to make the intent clearer |
---
Separated from the non-`linarith` cases for benchmarking reasons.
---
[](https://gitpod.io/from-referrer/)
|
|
57/55 |
Mathlib/Analysis/Convex/Slope.lean,Mathlib/Analysis/InnerProductSpace/Subspace.lean,Mathlib/Analysis/MeanInequalities.lean,Mathlib/Analysis/SpecialFunctions/BinaryEntropy.lean,Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean,Mathlib/Analysis/SpecialFunctions/Integrals/PosLogEqCircleAverage.lean,Mathlib/Analysis/SpecialFunctions/Log/Base.lean,Mathlib/Analysis/SpecialFunctions/Log/Monotone.lean,Mathlib/Analysis/SpecialFunctions/Log/PosLog.lean,Mathlib/Combinatorics/Schnirelmann.lean,Mathlib/Computability/AkraBazzi/GrowsPolynomially.lean,Mathlib/Computability/AkraBazzi/SumTransform.lean,Mathlib/FieldTheory/PrimitiveElement.lean,Mathlib/FieldTheory/SeparableDegree.lean,Mathlib/Geometry/Euclidean/Triangle.lean,Mathlib/MeasureTheory/Covering/BesicovitchVectorSpace.lean,Mathlib/MeasureTheory/Function/AbsolutelyContinuous.lean,Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean,Mathlib/MeasureTheory/Integral/Bochner/Set.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/DerivIntegrable.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/LebesgueDifferentiationThm.lean,Mathlib/MeasureTheory/Integral/IntervalIntegral/Periodic.lean,Mathlib/MeasureTheory/Integral/PeakFunction.lean,Mathlib/MeasureTheory/Measure/Lebesgue/VolumeOfBalls.lean,Mathlib/NumberTheory/ClassNumber/Finite.lean,Mathlib/NumberTheory/Modular.lean,Mathlib/NumberTheory/NumberField/ClassNumber.lean,Mathlib/NumberTheory/NumberField/FinitePlaces.lean,Mathlib/NumberTheory/Ostrowski.lean,Mathlib/Probability/Distributions/Exponential.lean,Mathlib/Probability/Distributions/Gamma.lean,Mathlib/Probability/StrongLaw.lean |
32 |
7 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
2-4397 2 days ago |
2-4437 2 days ago |
5-65466 5 days |
| 31530 |
euprunin author:euprunin |
chore(Data/List): golf entire `drop_length_sub_one` using `ext; grind` |
---
Show trace profiling of drop_length_sub_one: 131 ms before, 272 ms after
### Trace profiling of `drop_length_sub_one` before PR 31530
```diff
diff --git a/Mathlib/Data/List/TakeDrop.lean b/Mathlib/Data/List/TakeDrop.lean
index 7598f40935..efa3cdfbb1 100644
--- a/Mathlib/Data/List/TakeDrop.lean
+++ b/Mathlib/Data/List/TakeDrop.lean
@@ -68,6 +68,7 @@ theorem cons_get_drop_succ {l : List α} {n} :
l.get n :: l.drop (n.1 + 1) = l.drop n.1 :=
(drop_eq_getElem_cons n.2).symm
+set_option trace.profiler true in
lemma drop_length_sub_one {l : List α} (h : l ≠ []) : l.drop (l.length - 1) = [l.getLast h] := by
induction l with
| nil => aesop
```
```
ℹ [436/436] Built Mathlib.Data.List.TakeDrop (1.2s)
info: Mathlib/Data/List/TakeDrop.lean:72:0: [Elab.async] [0.131338] elaborating proof of List.drop_length_sub_one
[Elab.definition.value] [0.130820] List.drop_length_sub_one
[Elab.step] [0.130582] induction l with
| nil => aesop
| cons a l ih =>
by_cases hl : l = []
· simp_all
rw [length_cons, Nat.add_one_sub_one, List.drop_length_cons hl a]
simp [getLast_cons, hl]
[Elab.step] [0.130577] induction l with
| nil => aesop
| cons a l ih =>
by_cases hl : l = []
· simp_all
rw [length_cons, Nat.add_one_sub_one, List.drop_length_cons hl a]
simp [getLast_cons, hl]
[Elab.step] [0.130571] induction l with
| nil => aesop
| cons a l ih =>
by_cases hl : l = []
· simp_all
rw [length_cons, Nat.add_one_sub_one, List.drop_length_cons hl a]
simp [getLast_cons, hl]
[Elab.step] [0.124915] aesop
[Elab.step] [0.124908] aesop
[Elab.step] [0.124896] aesop
[aesop.forward] [0.025181] building initial forward state
[aesop] [0.017932] ✅️ (G0) [100.0000%] ⋯ ⊢ drop ([].length - 1) [] = [[].getLast h]
[aesop] [0.013220] ✅️ Safe rules
[aesop] [0.014939] 🏁 (G1) [100.0000%] ⋯ ⊢ drop ([].length - 1) [] = [[].getLast h]
[aesop] [0.014777] 🏁 Normalisation
Build completed successfully (436 jobs).
```
### Trace profiling of `drop_length_sub_one` after PR 31530
```diff
diff --git a/Mathlib/Data/List/TakeDrop.lean b/Mathlib/Data/List/TakeDrop.lean
index 7598f40935..d5c64d154e 100644
--- a/Mathlib/Data/List/TakeDrop.lean
+++ b/Mathlib/Data/List/TakeDrop.lean
@@ -68,14 +68,10 @@ theorem cons_get_drop_succ {l : List α} {n} :
l.get n :: l.drop (n.1 + 1) = l.drop n.1 :=
(drop_eq_getElem_cons n.2).symm
+set_option trace.profiler true in
lemma drop_length_sub_one {l : List α} (h : l ≠ []) : l.drop (l.length - 1) = [l.getLast h] := by
- induction l with
- | nil => aesop
- | cons a l ih =>
- by_cases hl : l = []
- · simp_all
- rw [length_cons, Nat.add_one_sub_one, List.drop_length_cons hl a]
- simp [getLast_cons, hl]
+ ext
+ grind
section TakeI
```
```
ℹ [436/436] Built Mathlib.Data.List.TakeDrop (1.4s)
info: Mathlib/Data/List/TakeDrop.lean:72:0: [Elab.async] [0.273157] elaborating proof of List.drop_length_sub_one
[Elab.definition.value] [0.272410] List.drop_length_sub_one
[Elab.step] [0.272252]
ext
grind
[Elab.step] [0.272245]
ext
grind
[Elab.step] [0.271667] grind
info: Mathlib/Data/List/TakeDrop.lean:74:2: [Elab.async] [0.030869] Lean.addDecl
[Kernel] [0.030851] ✅️ typechecking declarations [List.drop_length_sub_one._proof_1_24]
Build completed successfully (436 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-data |
2/7 |
Mathlib/Data/List/TakeDrop.lean |
1 |
1 |
['github-actions'] |
nobody |
2-3238 2 days ago |
2-4501 2 days ago |
2-4540 2 days |
| 30389 |
euprunin author:euprunin |
fix: correctly apply `hint` priority (was always set to default 1000 due to a bug) |
Fixes #29831.
In addition to fixing the bug, this PR also adjusts the (now-working) tactic priorities to ensure that:
* `bound` is tested _after_ `aesop` (`bound` calls `aesop` and is therefore stronger)
* `group` is tested _after_ `ring` (`group` calls `ring` and is therefore stronger)
A bug in the parsing code below caused the priority value to be ignored, resulting in all hints using the default priority of 1000 regardless of the `register_hint` priority parameter:
```lean
elab (name := registerHintStx)
"register_hint" p:("(" "priority" ":=" num ")")? tac:tactic : command =>
liftTermElabM do
-- remove comments
let prio := match p with
| some stx =>
match stx.raw[3]?.bind Syntax.isNatLit? with
| some n => n
| none => 1000
| none => 1000
let tac : TSyntax `tactic := ⟨tac.raw.copyHeadTailInfoFrom .missing⟩
addHint prio tac
```
Fixed by simplifying the syntax to take a mandatory numeric priority argument and extracting it directly via `prio.raw.isNatLit?`, removing the index-based parsing and the silent fallback to 1000.
---
[](https://gitpod.io/from-referrer/)
|
t-meta
bug
|
275/201 |
Mathlib/Tactic/Abel.lean,Mathlib/Tactic/Bound.lean,Mathlib/Tactic/Common.lean,Mathlib/Tactic/ComputeDegree.lean,Mathlib/Tactic/Field.lean,Mathlib/Tactic/FieldSimp.lean,Mathlib/Tactic/Finiteness.lean,Mathlib/Tactic/GCongr.lean,Mathlib/Tactic/Group.lean,Mathlib/Tactic/Hint.lean,Mathlib/Tactic/Linarith.lean,Mathlib/Tactic/NoncommRing.lean,Mathlib/Tactic/NormNum/Core.lean,Mathlib/Tactic/Positivity/Core.lean,Mathlib/Tactic/Ring/RingNF.lean,MathlibTest/hint.lean,MathlibTest/hintAll.lean |
17 |
19 |
['BoltonBailey', 'Vierkantor', 'euprunin', 'github-actions', 'mathlib4-merge-conflict-bot'] |
adamtopaz assignee:adamtopaz |
2-2024 2 days ago |
6-61915 6 days ago |
30-18324 30 days |
| 31539 |
joelriou author:joelriou |
feat(CategoryTheory/Triangulated): basic lemmas for t-structures |
This PR adds a few very basic lemmas about `t`-structures. For example `t.IsLE (X⟦a⟧) n' ↔ t.IsLE X n` when `a + n' = n`.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
60/0 |
Mathlib/CategoryTheory/Triangulated/TStructure/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
1-86383 1 day ago |
2-81 2 days ago |
2-59 2 days |
| 26212 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra): the Rees theorem for depth |
In this PR we proved the Rees theorem for depth.
Co-authored-by: Hu Yongle
---
- [ ] depends on: #27416
[](https://gitpod.io/from-referrer/)
|
large-import
t-algebra
label:t-algebra$ |
258/10 |
Mathlib/Algebra/Category/Grp/Preadditive.lean,Mathlib/RingTheory/Ideal/AssociatedPrime/Localization.lean,Mathlib/RingTheory/Regular/Category.lean,Mathlib/RingTheory/Regular/Depth.lean |
4 |
n/a |
['Thmoas-Guan', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
1-86319 1 day ago |
unknown |
unknown |
| 24730 |
YaelDillies author:YaelDillies |
feat(RingTheory): group-like elements |
Define group-like elements in a bialgebra, ie elements such that `η a = 1` and `Δ a = a ⊗ₜ a`.
We prove that group-like elements of a coalgebra over a domain are linearly independent, group-like elements of a bialgebra form a monoid, group-like elements of a Hopf algebra form a group.
From Toric
Co-authored-by: Michał Mrugała
---
- [x] depends on: #24747
- [x] depends on: #31515
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
toric
|
315/0 |
Mathlib.lean,Mathlib/RingTheory/Bialgebra/GroupLike.lean,Mathlib/RingTheory/Coalgebra/GroupLike.lean,Mathlib/RingTheory/HopfAlgebra/GroupLike.lean |
4 |
81 |
['Julian-Kuelshammer', 'Parcly-Taxel', 'Whysoserioushah', 'YaelDillies', 'erdOne', 'eric-wieser', 'github-actions', 'kckennylau', 'kim-em', 'leanprover-bot', 'mathlib4-dependent-issues-bot', 'smorel394'] |
eric-wieser assignee:eric-wieser |
1-84882 1 day ago |
1-85071 1 day ago |
182-60823 182 days |
| 31536 |
joelriou author:joelriou |
feat(CategoryTheory/Triangulated): the category of triangles is preadditive |
---
Note that `Linear.LinearFunctor` is already imported by the other files in this directory like `TriangleShift` or `Pretriangulated`), so that the `large-import` label could be ignored.
[](https://gitpod.io/from-referrer/)
|
large-import
t-category-theory
|
103/0 |
Mathlib/CategoryTheory/Triangulated/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
1-84852 1 day ago |
2-1597 2 days ago |
2-1640 2 days |
| 31537 |
RemyDegenne author:RemyDegenne |
feat: totally bounded sets have finite covers |
New result: a totally bounded set has finite `ε`-covers for all `ε > 0`.
I then use it to golf and generalize `exists_finite_isCover_of_isCompact_closure` and `exists_finite_isCover_of_isCompact` to extended pseudo-metric spaces.
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-topology
|
36/17 |
Mathlib/Data/Rel/Cover.lean,Mathlib/Topology/MetricSpace/Cover.lean |
2 |
7 |
['YaelDillies', 'github-actions'] |
nobody |
1-83770 1 day ago |
1-83770 1 day ago |
1-85475 1 day |
| 31219 |
Thmoas-Guan author:Thmoas-Guan |
feat(Algebra): lemma about `IsBaseChange` under exact sequence |
In this lemma, we proved cokernel preserve `IsBaseChange S` and kernel preserve `IsBaseChange S` when `S` is flat.
Co-authored-by: Wang Jingting
---
[](https://gitpod.io/from-referrer/)
|
|
162/0 |
Mathlib.lean,Mathlib/Algebra/FiveLemma.lean,Mathlib/RingTheory/Flat/IsBaseChange.lean |
3 |
2 |
['github-actions', 'mathlib4-merge-conflict-bot'] |
nobody |
1-78947 1 day ago |
1-78967 1 day ago |
9-8056 9 days |
| 31543 |
grunweg author:grunweg |
chore: rename FiniteDimensional.of_fintype_basis |
The lemma has a Finite hypothesis now, not a Fintype one. The new name was discussed on zulip:
https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Naming.20convention/near/555088215
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
37/33 |
Archive/Sensitivity.lean,Mathlib/Algebra/Module/ZLattice/Basic.lean,Mathlib/Analysis/Normed/Module/FiniteDimension.lean,Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean,Mathlib/LinearAlgebra/BilinearForm/DualLattice.lean,Mathlib/LinearAlgebra/BilinearForm/Properties.lean,Mathlib/LinearAlgebra/Complex/FiniteDimensional.lean,Mathlib/LinearAlgebra/FiniteDimensional/Defs.lean,Mathlib/LinearAlgebra/PerfectPairing/Restrict.lean,Mathlib/MeasureTheory/Measure/Haar/OfBasis.lean,Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean,Mathlib/NumberTheory/FunctionField.lean,Mathlib/RingTheory/Norm/Basic.lean,Mathlib/RingTheory/Trace/Basic.lean,Mathlib/Topology/Algebra/Module/FiniteDimension.lean |
15 |
1 |
['github-actions'] |
nobody |
1-77888 1 day ago |
1-83079 1 day ago |
1-83155 1 day |
| 31540 |
themathqueen author:themathqueen |
chore: move `LinearAlgebra/Matrix/HermitianFunctionalCalculus` to `Analysis/Matrix` |
`Analysis/Matrix` is a more appropriate location for this as these are analysis results and depends on `Analysis/Matrix/Spectrum`.
---
[](https://gitpod.io/from-referrer/)
|
file-removed
maintainer-merge
t-analysis
|
2/2 |
Mathlib.lean,Mathlib/Analysis/Matrix/HermitianFunctionalCalculus.lean,Mathlib/Analysis/Matrix/Order.lean |
3 |
6 |
['Vierkantor', 'github-actions', 'grunweg'] |
nobody |
1-77798 1 day ago |
1-83872 1 day ago |
1-85377 1 day |
| 30083 |
grunweg author:grunweg |
feat: local frames in a vector bundle |
We construct local frames on a vector from local trivialisations. The former constructs, given a trivialisation `e` of the vector bundle and a basis of the model fibre, `Basis.localFrame` is a local frame on `e.baseSet`
A future PR will use this to define the local extension of a tangent vector to a vector field near a point.
From the path towards geodesics and the Levi-Civita connection.
Co-authored-by: Patrick Massot [patrickmassot@free.fr](mailto:patrickmassot@free.fr)
---
- [x] depends on: #27021
- [x] depends on: #30338
- [x] depends on: #31542
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry |
320/22 |
Mathlib/Geometry/Manifold/VectorBundle/LocalFrame.lean |
1 |
41 |
['github-actions', 'grunweg', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'ocfnash'] |
ocfnash assignee:ocfnash |
1-77180 1 day ago |
1-77685 1 day ago |
14-74797 14 days |
| 31550 |
RemyDegenne author:RemyDegenne |
feat: properties of sub-Gaussian random variables |
Add several simple lemmas, and the fact that for `X, Y` two independent sub-Gaussian random variables such that `μ[X] ≥ μ[Y]`, the probability that `X ≤ Y` is bounded by an exponential function of `(μ[X] - μ[Y])^2`.
From the LeanBandits project.
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
93/0 |
Mathlib/Probability/Moments/Basic.lean,Mathlib/Probability/Moments/IntegrableExpMul.lean,Mathlib/Probability/Moments/SubGaussian.lean |
3 |
1 |
['github-actions'] |
nobody |
1-76688 1 day ago |
1-76693 1 day ago |
1-76739 1 day |
| 31511 |
bwangpj author:bwangpj |
feat: fixed points of normal subgroup is stable under the group action |
The set of fixed points of a normal subgroup is stable under the group action.
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
34/0 |
Mathlib/GroupTheory/GroupAction/SubMulAction.lean |
1 |
3 |
['ADedecker', 'bwangpj', 'github-actions'] |
nobody |
1-76529 1 day ago |
2-66334 2 days ago |
2-66370 2 days |
| 31027 |
YaelDillies author:YaelDillies |
chore: shortcut instance for `Nat` to be mul-torsion-free |
This instance can already be found by typeclass search using the fact that `Nat` is a `LinearOrderedCommMonoidWithZero`, but it is better practice to not rely on algebraic order theory to prove algebraic results about such basic types. Similarly for `IsAddTorsionFree Int`.
From ClassFieldTheory
---
[](https://gitpod.io/from-referrer/)
|
CFT
t-algebra
label:t-algebra$ |
6/0 |
Mathlib/Algebra/Group/Int/Defs.lean,Mathlib/Algebra/Group/Nat/Defs.lean |
2 |
2 |
['github-actions', 'plp127'] |
mattrobball assignee:mattrobball |
1-75564 1 day ago |
11-58023 11 days ago |
16-58330 16 days |
| 31430 |
gasparattila author:gasparattila |
feat(Topology/Sets): `Unique`, `Nontrivial`, etc. instances for `(Nonempty)Compacts` |
---
- [x] depends on: #31379
[](https://gitpod.io/from-referrer/)
|
t-topology |
24/0 |
Mathlib/Topology/Sets/Compacts.lean |
1 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
nobody |
1-73041 1 day ago |
1-73056 1 day ago |
1-74381 1 day |
| 31549 |
ADedecker author:ADedecker |
feat: more API on tsupport and operations on functions |
Variants of [Function.mulSupport_one](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Notation/Support.html#Function.mulSupport_one), [Function.mulSupport_binop_subset](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Notation/Support.html#Function.mulSupport_binop_subset), [Function.mulSupport_inv](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Group/Support.html#Function.mulSupport_inv), [Function.mulSupport_div](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Group/Support.html#Function.mulSupport_div)... for the topological support.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
52/9 |
Archive/Hairer.lean,Mathlib/Topology/Algebra/Support.lean |
2 |
1 |
['github-actions'] |
nobody |
1-71837 1 day ago |
1-76919 1 day ago |
1-76959 1 day |
| 31555 |
EtienneC30 author:EtienneC30 |
feat: bounded distance implies bounded space |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
24/0 |
Mathlib/Topology/MetricSpace/Pseudo/Basic.lean,Mathlib/Topology/MetricSpace/Pseudo/Defs.lean |
2 |
1 |
['github-actions'] |
nobody |
1-70340 1 day ago |
1-70403 1 day ago |
1-70381 1 day |
| 30928 |
themathqueen author:themathqueen |
chore(LinearAlgebra/Matrix/PosDef): rename `Matrix.InnerProductSpace.ofMatrix` |
- Renames `Matrix.NormedAddCommGroup.ofMatrix` to `Matrix.PosDef.normedAddCommGroup`
- Removes `Matrix.InnerProductSpace.ofMatrix` and adds `Matrix.PosSemidef.innerProductSpace` instead.
- Removes `Matrix.PosDef.matrixInnerProductSpace` and adds `Matrix.PosSemidef.matrixInnerProductSpace` instead.
- Defines `Matrix.PosSemidef.seminormedAddCommGroup` and `Matrix.PosSemidef.matrixSeminormedAddCommGroup`.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
71/41 |
Mathlib/Analysis/Matrix/Order.lean,Mathlib/LinearAlgebra/Matrix/LDL.lean,Mathlib/LinearAlgebra/Matrix/PosDef.lean |
3 |
22 |
['YaelDillies', 'eric-wieser', 'github-actions', 'riccardobrasca', 'themathqueen'] |
riccardobrasca assignee:riccardobrasca |
1-69705 1 day ago |
1-85993 1 day ago |
18-75940 18 days |
| 31514 |
staroperator author:staroperator |
feat(Order): reprove Dickson's lemma |
Reprove Dickson's lemma `Pi.wellQuasiOrderedLE` under assumption of preorder and well-quasi-order, and generalize it to any relation and/or product of well-quasi-ordered sets. Also add an instance of `WellQuasiOrderedLE` from `LinearOrder` and `WellFoundedLT`.
`Pi.isPWO` and `Finsupp.isPWO` are deprecated since they are superseded by `isPWO_of_wellQuasiOrderedLE` and instances.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
89/33 |
Mathlib/Data/Finsupp/PWO.lean,Mathlib/Order/Preorder/Finsupp.lean,Mathlib/Order/WellFoundedSet.lean,Mathlib/Order/WellQuasiOrder.lean,Mathlib/RingTheory/HahnSeries/PowerSeries.lean |
5 |
7 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
nobody |
1-69212 1 day ago |
2-23391 2 days ago |
2-64238 2 days |
| 27107 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(GroupTheory/GroupAction/SubMulAction/Combination) : combinations and group actions |
`Nat.Combination X n` is the type all `s : Finset X` such that `s.card = n`.
This PR provides some API for this subtype and the `SubMulAction` it inherits when a group acts on `X`.
It will be used in conjunction with the description of some maximal subgroups of `Equiv.Perm X` to construct primitive actions.
Question on the names: when `X` is a fintype, there is `Finset.powersetCard` that gives the same object, as a `Finset`. But the present PR also applies when `X` is infinite. Then maybe `Nat.Combination` should be renamed as `Set.powersetCard`?
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
336/0 |
Mathlib.lean,Mathlib/Data/Fintype/EquivFin.lean,Mathlib/Data/Nat/Choose/Basic.lean,Mathlib/GroupTheory/GroupAction/SubMulAction/Combination.lean |
4 |
40 |
['AntoineChambert-Loir', 'alreadydone', 'github-actions', 'mathlib4-merge-conflict-bot', 'tb65536'] |
alreadydone assignee:alreadydone |
1-67729 1 day ago |
1-67748 1 day ago |
122-66691 122 days |
| 31548 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(Analysis/Convex/Quasiconvex): properties of quasiconcave functions |
Prove properties of quasiconcave/quasiconvex functions:
* monotony
* restriction
* connectedness of preimages
Co-authored with: @ADedecker
---
[](https://gitpod.io/from-referrer/)
|
large-import |
107/1 |
Mathlib/Analysis/Convex/Quasiconvex.lean,Mathlib/Data/Set/Basic.lean |
2 |
1 |
['github-actions'] |
nobody |
1-67644 1 day ago |
1-77627 1 day ago |
1-77664 1 day |
| 31547 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(Analysis/Convex/SaddlePoint): define saddle points of a map |
* `IsSaddlePointOn`.
Let `f : E × F → β` be a map, where `β` is preordered.
A pair `(a,b)` in `E × F` is a *saddle point* of `f` on `X × Y`
if `f a y ≤ f x b` for all `x ∈ X` and all `y `in Y`.
* `isSaddlePointOn_iff`: if `β` is a complete linear order,
then `(a, b) ∈ X × Y` is a saddle point on `X × Y` iff
`⨆ y ∈ Y, f a y = ⨅ x ∈ X f x b = f a b`.
Co-authored-by: @ADedecker
---
[](https://gitpod.io/from-referrer/)
|
large-import |
228/0 |
Mathlib.lean,Mathlib/Analysis/Convex/Quasiconvex.lean,Mathlib/Analysis/Convex/SaddlePoint.lean,Mathlib/Data/Set/Basic.lean |
4 |
1 |
['github-actions'] |
nobody |
1-67636 1 day ago |
1-77730 1 day ago |
1-77764 1 day |
| 31326 |
sgouezel author:sgouezel |
chore: deprecate `smooth` variants of `contMDiff` results |
---
[](https://gitpod.io/from-referrer/)
|
t-differential-geometry |
22/41 |
Mathlib/Geometry/Manifold/PartitionOfUnity.lean |
1 |
6 |
['github-actions', 'grunweg', 'sgouezel'] |
grunweg assignee:grunweg |
1-67185 1 day ago |
5-51360 5 days ago |
5-61720 5 days |
| 31166 |
gasparattila author:gasparattila |
feat(Topology/Sets): add `NonemptyCompacts.map` |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
34/0 |
Mathlib/Topology/Sets/Compacts.lean |
1 |
1 |
['github-actions'] |
dagurtomas assignee:dagurtomas |
1-65673 1 day ago |
12-53893 12 days ago |
12-53937 12 days |
| 30201 |
luigi-massacci author:luigi-massacci |
feat: add differentiation for ContDiffMapSupportedIn |
Add a wrapper for `iteratedFDeriv` on `ContDiffMapSupportedIn` and related API.
---
- [x] depends on: #30199
- [x] depends on: #30198
- [x] depends on: #30197
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-analysis
|
180/11 |
Mathlib/Analysis/Distribution/ContDiffMapSupportedIn.lean,Mathlib/Topology/ContinuousMap/Bounded/Basic.lean |
2 |
44 |
['ADedecker', 'github-actions', 'grunweg', 'luigi-massacci', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
1-65520 1 day ago |
1-71347 1 day ago |
5-62237 5 days |
| 31046 |
Thmoas-Guan author:Thmoas-Guan |
feat(Homology) : map between `Ext` induced by exact functor |
In this PR, we developed the additive map `Ext(M,N) => Ext(F(M), F(N))` when `F` is exact functor between abelian category. We also developed its linear version when `F` is linear.
Co-authored-by: Wang Jingting
---
- [x] depends on: #31004
[](https://gitpod.io/from-referrer/) |
|
475/0 |
Mathlib.lean,Mathlib/Algebra/Homology/DerivedCategory/ExactFunctor.lean,Mathlib/Algebra/Homology/DerivedCategory/Ext/Map.lean |
3 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
nobody |
1-64844 1 day ago |
1-77697 1 day ago |
1-77729 1 day |
| 31554 |
bwangpj author:bwangpj |
feat: define Subrepresentation |
This is upstreamed from the FLT project.
---
[](https://gitpod.io/from-referrer/)
|
FLT
t-algebra
label:t-algebra$ |
108/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Span/Defs.lean,Mathlib/RepresentationTheory/Subrepresentation.lean |
3 |
1 |
['github-actions'] |
nobody |
1-60422 1 day ago |
1-70777 1 day ago |
1-71142 1 day |
| 28884 |
kim-em author:kim-em |
chore: deprecate ShiftLeft Int instance |
This PR proposes deprecating the `ShiftLeft Int` instance (which allows bit-shifting an integer by an integer), and similarly for `ShiftRight`.
These are unused in Mathlib.
I'm happy if someone wants to keep this, but I would ask that they:
* fix the doc-strings to explain what happens for negative shifts
* ~~restores the theorem `Int.shiftLeft_add` which I've commented out on `nightly-testing` (and then revert b33c9d7aaea on `nightly-testing`).~~
* ideally but optionally, complete the API, e.g. reducing shifts by casts back to shifts by a Nat |
t-data |
22/3 |
Mathlib/Data/Int/Bitwise.lean |
1 |
9 |
['Rob23oba', 'eric-wieser', 'github-actions', 'kim-em', 'mathlib4-merge-conflict-bot', 'pechersky'] |
pechersky assignee:pechersky |
1-47759 1 day ago |
59-33635 1 month ago |
81-1732 81 days |
| 31559 |
joelriou author:joelriou |
feat(Algebra/Homology): a factorization of morphisms of cochain complexes |
Let `C` be an abelian category with enough injectives. We show that any morphism `f : K ⟶ L` between bounded below cochain complexes in `C` can be factored as `i ≫ p` where `i : K ⟶ L'` is a monomorphism (with `L'` bounded below) and `p : L' ⟶ L` a quasi-isomorphism that is an epimorphism with a degreewise injective kernel. (This is part of the factorization axiom CM5 for a model category structure on bounded below cochain complexes.)
(This shall be used in the formalization of right derived functors using injective resolutions.)
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
186/32 |
Mathlib.lean,Mathlib/Algebra/Homology/Embedding/CochainComplex.lean,Mathlib/Algebra/Homology/Factorizations/CM5b.lean,Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean,Mathlib/Algebra/Homology/QuasiIso.lean,Mathlib/CategoryTheory/Preadditive/Injective/Basic.lean |
6 |
1 |
['github-actions'] |
nobody |
1-53957 1 day ago |
1-61364 1 day ago |
1-61343 1 day |
| 30870 |
tb65536 author:tb65536 |
refactor(FieldTheory/*): partially switch over from `Polynomial.Splits` to `Polynomial.Factors` |
This PR is part of a larger effort to switch over from `Polynomial.Splits` to `Polynomial.Factors`.
I'm avoiding changing names to avoid lots of deprecated aliases during the transition period.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
92/87 |
Mathlib/Algebra/CubicDiscriminant.lean,Mathlib/Algebra/Polynomial/Factors.lean,Mathlib/Algebra/Polynomial/Splits.lean,Mathlib/Analysis/Complex/Polynomial/GaussLucas.lean,Mathlib/Analysis/Matrix/Spectrum.lean,Mathlib/Analysis/Normed/Unbundled/SpectralNorm.lean,Mathlib/FieldTheory/Finite/Basic.lean,Mathlib/FieldTheory/Finite/GaloisField.lean,Mathlib/FieldTheory/IsAlgClosed/AlgebraicClosure.lean,Mathlib/FieldTheory/KummerExtension.lean,Mathlib/FieldTheory/Minpoly/ConjRootClass.lean,Mathlib/FieldTheory/PolynomialGaloisGroup.lean,Mathlib/FieldTheory/SeparableDegree.lean,Mathlib/FieldTheory/SplittingField/IsSplittingField.lean,Mathlib/LinearAlgebra/Matrix/Charpoly/Eigs.lean,Mathlib/NumberTheory/Cyclotomic/Basic.lean,Mathlib/RingTheory/Norm/Basic.lean,Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean,Mathlib/RingTheory/Polynomial/Vieta.lean,Mathlib/RingTheory/Trace/Basic.lean,Mathlib/Topology/Algebra/Polynomial.lean |
21 |
5 |
['github-actions', 'mathlib4-merge-conflict-bot', 'riccardobrasca', 'tb65536'] |
riccardobrasca assignee:riccardobrasca |
1-51995 1 day ago |
1-55085 1 day ago |
13-23 13 days |
| 31497 |
staroperator author:staroperator |
feat(Algebra/Group): semigroup ideals |
This PR defines semigroup ideals; they are different from (in fact, a weaker form of) ring ideals. We prove that in a monoid whose algebraic order is well-quasi-order, all semigroup ideals are finitely generated, and the semigroup ideals satisfy the ascending chain condition. These definitions and results are useful in #27414.
Note: Following `Ideal` with `Submodule`, `SemigroupIdeal M` is an `abbrev` of `SubMulAction M M`. Also, `Ideal.closure` is a re-definition of `SubMulAction.closure` and `Ideal.FG` is defeq to `SubMulAction.FG` but unfolds more nicely.
---
- [x] depends on: #31517
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-algebra
label:t-algebra$ |
194/0 |
Mathlib.lean,Mathlib/Algebra/Group/Ideal.lean,Mathlib/Algebra/Order/Group/Ideal.lean |
3 |
24 |
['YaelDillies', 'github-actions', 'mathlib4-dependent-issues-bot', 'staroperator'] |
nobody |
1-50896 1 day ago |
1-65351 1 day ago |
2-86212 2 days |
| 31273 |
euprunin author:euprunin |
chore(MeasureTheory/MeasurableSpace): golf `measurableSet_generateFrom_singleton_iff` using `grind` |
---
Show trace profiling of measurableSet_generateFrom_singleton_iff: 70 ms before, 91 ms after
### Trace profiling of `measurableSet_generateFrom_singleton_iff` before PR 31273
```diff
diff --git a/Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean b/Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean
index baf5299a16..fb8e3fc16d 100644
--- a/Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean
+++ b/Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean
@@ -42,6 +42,7 @@ end MeasurableSpace
namespace MeasureTheory
+set_option trace.profiler true in
theorem measurableSet_generateFrom_singleton_iff {s t : Set α} :
MeasurableSet[MeasurableSpace.generateFrom {s}] t ↔ t = ∅ ∨ t = s ∨ t = sᶜ ∨ t = univ := by
simp_rw [MeasurableSpace.generateFrom_singleton]
```
```
ℹ [880/880] Built Mathlib.MeasureTheory.MeasurableSpace.MeasurablyGenerated (1.2s)
info: Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean:46:0: [Elab.async] [0.071352] elaborating proof of MeasureTheory.measurableSet_generateFrom_singleton_iff
[Elab.definition.value] [0.069878] MeasureTheory.measurableSet_generateFrom_singleton_iff
[Elab.step] [0.068734]
simp_rw [MeasurableSpace.generateFrom_singleton]
unfold MeasurableSet MeasurableSpace.MeasurableSet' MeasurableSpace.comap
simp_rw [MeasurableSpace.measurableSet_top, true_and]
constructor
· rintro ⟨x, rfl⟩
by_cases hT : True ∈ x
· by_cases hF : False ∈ x
· refine Or.inr <| Or.inr <| Or.inr <| subset_antisymm (subset_univ _) ?_
suffices x = univ by simp only [this, preimage_univ, subset_refl]
refine subset_antisymm (subset_univ _) ?_
rw [univ_eq_true_false]
rintro - (rfl | rfl)
· assumption
· assumption
· have hx : x = { True } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hT⟩
by_contra hpneg
rw [eq_iff_iff, iff_true, ← false_iff] at hpneg
exact hF (by convert hp)
simp [hx]
· by_cases hF : False ∈ x
· have hx : x = { False } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hF⟩
grind
refine Or.inr <| Or.inr <| Or.inl <| ?_
simp [hx, compl_def]
· refine Or.inl <| subset_antisymm ?_ <| empty_subset _
suffices x ⊆ ∅ by
rw [subset_empty_iff] at this
simp only [this, preimage_empty, subset_refl]
intro p hp
fin_cases p
· contradiction
· contradiction
· rintro (rfl | rfl | rfl | rfl)
on_goal 1 => use ∅
on_goal 2 => use { True }
on_goal 3 => use { False }
on_goal 4 => use Set.univ
all_goals simp [compl_def]
[Elab.step] [0.068727]
simp_rw [MeasurableSpace.generateFrom_singleton]
unfold MeasurableSet MeasurableSpace.MeasurableSet' MeasurableSpace.comap
simp_rw [MeasurableSpace.measurableSet_top, true_and]
constructor
· rintro ⟨x, rfl⟩
by_cases hT : True ∈ x
· by_cases hF : False ∈ x
· refine Or.inr <| Or.inr <| Or.inr <| subset_antisymm (subset_univ _) ?_
suffices x = univ by simp only [this, preimage_univ, subset_refl]
refine subset_antisymm (subset_univ _) ?_
rw [univ_eq_true_false]
rintro - (rfl | rfl)
· assumption
· assumption
· have hx : x = { True } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hT⟩
by_contra hpneg
rw [eq_iff_iff, iff_true, ← false_iff] at hpneg
exact hF (by convert hp)
simp [hx]
· by_cases hF : False ∈ x
· have hx : x = { False } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hF⟩
grind
refine Or.inr <| Or.inr <| Or.inl <| ?_
simp [hx, compl_def]
· refine Or.inl <| subset_antisymm ?_ <| empty_subset _
suffices x ⊆ ∅ by
rw [subset_empty_iff] at this
simp only [this, preimage_empty, subset_refl]
intro p hp
fin_cases p
· contradiction
· contradiction
· rintro (rfl | rfl | rfl | rfl)
on_goal 1 => use ∅
on_goal 2 => use { True }
on_goal 3 => use { False }
on_goal 4 => use Set.univ
all_goals simp [compl_def]
[Elab.step] [0.012541] simp_rw [MeasurableSpace.generateFrom_singleton]
[Elab.step] [0.041180] ·
rintro ⟨x, rfl⟩
by_cases hT : True ∈ x
· by_cases hF : False ∈ x
· refine Or.inr <| Or.inr <| Or.inr <| subset_antisymm (subset_univ _) ?_
suffices x = univ by simp only [this, preimage_univ, subset_refl]
refine subset_antisymm (subset_univ _) ?_
rw [univ_eq_true_false]
rintro - (rfl | rfl)
· assumption
[… 112 lines omitted …]
· assumption
· assumption
· have hx : x = { True } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hT⟩
by_contra hpneg
rw [eq_iff_iff, iff_true, ← false_iff] at hpneg
exact hF (by convert hp)
simp [hx]
[Elab.step] [0.028797]
by_cases hF : False ∈ x
· refine Or.inr <| Or.inr <| Or.inr <| subset_antisymm (subset_univ _) ?_
suffices x = univ by simp only [this, preimage_univ, subset_refl]
refine subset_antisymm (subset_univ _) ?_
rw [univ_eq_true_false]
rintro - (rfl | rfl)
· assumption
· assumption
· have hx : x = { True } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hT⟩
by_contra hpneg
rw [eq_iff_iff, iff_true, ← false_iff] at hpneg
exact hF (by convert hp)
simp [hx]
[Elab.step] [0.025079] ·
have hx : x = { True } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hT⟩
by_contra hpneg
rw [eq_iff_iff, iff_true, ← false_iff] at hpneg
exact hF (by convert hp)
simp [hx]
[Elab.step] [0.025059]
have hx : x = { True } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hT⟩
by_contra hpneg
rw [eq_iff_iff, iff_true, ← false_iff] at hpneg
exact hF (by convert hp)
simp [hx]
[Elab.step] [0.025057]
have hx : x = { True } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hT⟩
by_contra hpneg
rw [eq_iff_iff, iff_true, ← false_iff] at hpneg
exact hF (by convert hp)
simp [hx]
[Elab.step] [0.015096] simp [hx]
[Meta.synthInstance] [0.011997] ❌️ Nontrivial (Set α)
[Elab.step] [0.011467] ·
by_cases hF : False ∈ x
· have hx : x = { False } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hF⟩
grind
refine Or.inr <| Or.inr <| Or.inl <| ?_
simp [hx, compl_def]
· refine Or.inl <| subset_antisymm ?_ <| empty_subset _
suffices x ⊆ ∅ by
rw [subset_empty_iff] at this
simp only [this, preimage_empty, subset_refl]
intro p hp
fin_cases p
· contradiction
· contradiction
[Elab.step] [0.011367]
by_cases hF : False ∈ x
· have hx : x = { False } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hF⟩
grind
refine Or.inr <| Or.inr <| Or.inl <| ?_
simp [hx, compl_def]
· refine Or.inl <| subset_antisymm ?_ <| empty_subset _
suffices x ⊆ ∅ by
rw [subset_empty_iff] at this
simp only [this, preimage_empty, subset_refl]
intro p hp
fin_cases p
· contradiction
· contradiction
[Elab.step] [0.011363]
by_cases hF : False ∈ x
· have hx : x = { False } := by
ext p
refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hF⟩
grind
refine Or.inr <| Or.inr <| Or.inl <| ?_
simp [hx, compl_def]
· refine Or.inl <| subset_antisymm ?_ <| empty_subset _
suffices x ⊆ ∅ by
rw [subset_empty_iff] at this
simp only [this, preimage_empty, subset_refl]
intro p hp
fin_cases p
· contradiction
· contradiction
Build completed successfully (880 jobs).
```
### Trace profiling of `measurableSet_generateFrom_singleton_iff` after PR 31273
```diff
diff --git a/Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean b/Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean
index baf5299a16..b67f37d372 100644
--- a/Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean
+++ b/Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean
@@ -42,6 +42,7 @@ end MeasurableSpace
namespace MeasureTheory
+set_option trace.profiler true in
theorem measurableSet_generateFrom_singleton_iff {s t : Set α} :
MeasurableSet[MeasurableSpace.generateFrom {s}] t ↔ t = ∅ ∨ t = s ∨ t = sᶜ ∨ t = univ := by
simp_rw [MeasurableSpace.generateFrom_singleton]
@@ -51,35 +52,14 @@ theorem measurableSet_generateFrom_singleton_iff {s t : Set α} :
· rintro ⟨x, rfl⟩
by_cases hT : True ∈ x
· by_cases hF : False ∈ x
- · refine Or.inr <| Or.inr <| Or.inr <| subset_antisymm (subset_univ _) ?_
- suffices x = univ by simp only [this, preimage_univ, subset_refl]
- refine subset_antisymm (subset_univ _) ?_
- rw [univ_eq_true_false]
- rintro - (rfl | rfl)
- · assumption
- · assumption
- · have hx : x = {True} := by
- ext p
- refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hT⟩
- by_contra hpneg
- rw [eq_iff_iff, iff_true, ← false_iff] at hpneg
- exact hF (by convert hp)
- simp [hx]
+ · suffices x = univ by grind
+ grind [univ_eq_true_false]
+ · grind
· by_cases hF : False ∈ x
- · have hx : x = {False} := by
- ext p
- refine ⟨fun hp ↦ mem_singleton_iff.2 ?_, fun hp ↦ hp ▸ hF⟩
- grind
- refine Or.inr <| Or.inr <| Or.inl <| ?_
- simp [hx, compl_def]
- · refine Or.inl <| subset_antisymm ?_ <| empty_subset _
- suffices x ⊆ ∅ by
- rw [subset_empty_iff] at this
- simp only [this, preimage_empty, subset_refl]
+ · grind
+ · suffices x ⊆ ∅ by grind
intro p hp
- fin_cases p
- · contradiction
- · contradiction
+ fin_cases p <;> contradiction
· rintro (rfl | rfl | rfl | rfl)
on_goal 1 => use ∅
on_goal 2 => use {True}
```
```
ℹ [880/880] Built Mathlib.MeasureTheory.MeasurableSpace.MeasurablyGenerated (1.2s)
info: Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean:46:0: [Elab.async] [0.092756] elaborating proof of MeasureTheory.measurableSet_generateFrom_singleton_iff
[Elab.definition.value] [0.091377] MeasureTheory.measurableSet_generateFrom_singleton_iff
[Elab.step] [0.090497]
simp_rw [MeasurableSpace.generateFrom_singleton]
unfold MeasurableSet MeasurableSpace.MeasurableSet' MeasurableSpace.comap
simp_rw [MeasurableSpace.measurableSet_top, true_and]
constructor
· rintro ⟨x, rfl⟩
by_cases hT : True ∈ x
· by_cases hF : False ∈ x
· suffices x = univ by grind
grind [univ_eq_true_false]
· grind
· by_cases hF : False ∈ x
· grind
· suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
· rintro (rfl | rfl | rfl | rfl)
on_goal 1 => use ∅
on_goal 2 => use { True }
on_goal 3 => use { False }
on_goal 4 => use Set.univ
all_goals simp [compl_def]
[Elab.step] [0.090489]
simp_rw [MeasurableSpace.generateFrom_singleton]
unfold MeasurableSet MeasurableSpace.MeasurableSet' MeasurableSpace.comap
simp_rw [MeasurableSpace.measurableSet_top, true_and]
constructor
· rintro ⟨x, rfl⟩
by_cases hT : True ∈ x
· by_cases hF : False ∈ x
· suffices x = univ by grind
grind [univ_eq_true_false]
· grind
· by_cases hF : False ∈ x
· grind
· suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
· rintro (rfl | rfl | rfl | rfl)
on_goal 1 => use ∅
on_goal 2 => use { True }
on_goal 3 => use { False }
on_goal 4 => use Set.univ
all_goals simp [compl_def]
[Elab.step] [0.012749] simp_rw [MeasurableSpace.generateFrom_singleton]
[Elab.step] [0.062153] ·
rintro ⟨x, rfl⟩
by_cases hT : True ∈ x
· by_cases hF : False ∈ x
· suffices x = univ by grind
grind [univ_eq_true_false]
· grind
· by_cases hF : False ∈ x
· grind
· suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
[Elab.step] [0.062134]
rintro ⟨x, rfl⟩
by_cases hT : True ∈ x
· by_cases hF : False ∈ x
· suffices x = univ by grind
grind [univ_eq_true_false]
· grind
· by_cases hF : False ∈ x
· grind
· suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
[Elab.step] [0.062131]
rintro ⟨x, rfl⟩
by_cases hT : True ∈ x
· by_cases hF : False ∈ x
· suffices x = univ by grind
grind [univ_eq_true_false]
· grind
· by_cases hF : False ∈ x
· grind
· suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
[Elab.step] [0.031421] ·
by_cases hF : False ∈ x
· suffices x = univ by grind
grind [univ_eq_true_false]
· grind
[Elab.step] [0.031410]
by_cases hF : False ∈ x
· suffices x = univ by grind
grind [univ_eq_true_false]
· grind
[Elab.step] [0.031407]
by_cases hF : False ∈ x
· suffices x = univ by grind
grind [univ_eq_true_false]
· grind
[Elab.step] [0.019456] ·
suffices x = univ by grind
grind [univ_eq_true_false]
[Elab.step] [0.019448]
suffices x = univ by grind
grind [univ_eq_true_false]
[Elab.step] [0.019444]
suffices x = univ by grind
grind [univ_eq_true_false]
[Elab.step] [0.010344] grind [univ_eq_true_false]
[Elab.step] [0.011419] · grind
[Elab.step] [0.011411] grind
[Elab.step] [0.011407] grind
[Elab.step] [0.011402] grind
[Elab.step] [0.029820] ·
by_cases hF : False ∈ x
· grind
· suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
[Elab.step] [0.029812]
by_cases hF : False ∈ x
· grind
· suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
[Elab.step] [0.029808]
by_cases hF : False ∈ x
· grind
· suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
[Elab.step] [0.011217] · grind
[Elab.step] [0.011211] grind
[Elab.step] [0.011208] grind
[Elab.step] [0.011203] grind
[Elab.step] [0.017927] ·
suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
[Elab.step] [0.017920]
suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
[Elab.step] [0.017914]
suffices x ⊆ ∅ by grind
intro p hp
fin_cases p <;> contradiction
[Elab.step] [0.014460] suffices x ⊆ ∅ by grind
[Elab.step] [0.014455] refine_lift
suffices x ⊆ ∅ by grind;
?_
[Elab.step] [0.014451] focus
(refine
no_implicit_lambda%
(suffices x ⊆ ∅ by grind;
?_);
rotate_right)
[Elab.step] [0.014447] (refine
no_implicit_lambda%
(suffices x ⊆ ∅ by grind;
?_);
rotate_right)
[Elab.step] [0.014445] (refine
no_implicit_lambda%
(suffices x ⊆ ∅ by grind;
?_);
rotate_right)
[Elab.step] [0.014442] (refine
no_implicit_lambda%
(suffices x ⊆ ∅ by grind;
?_);
rotate_right)
[Elab.step] [0.014440] refine
no_implicit_lambda%
(suffices x ⊆ ∅ by grind;
?_);
rotate_right
[Elab.step] [0.014438] refine
no_implicit_lambda%
(suffices x ⊆ ∅ by grind;
?_);
rotate_right
[Elab.step] [0.014428] refine
no_implicit_lambda%
(suffices x ⊆ ∅ by grind;
?_)
[Elab.step] [0.013889] grind
[Elab.step] [0.013885] grind
[Elab.step] [0.013879] grind
Build completed successfully (880 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-measure-probability
|
6/27 |
Mathlib/MeasureTheory/MeasurableSpace/MeasurablyGenerated.lean |
1 |
3 |
['EtienneC30', 'github-actions'] |
EtienneC30 assignee:EtienneC30 |
1-49464 1 day ago |
1-49464 1 day ago |
9-4509 9 days |
| 31558 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(Topology/Sublevel): sublevels and overlevels, relation with semicontinuity |
Define sublevels and overlevels of a function, in various sorts (`LE` or LT`, relative to a set).
Relation with semicontinuity.
`Set.inter_leSublevelOn_empty_iff_exists_finset_inter`, an intersection of sublevels of a lower semicontinuous function on a compact set is empty if and only if a finite sub-intersection is already empty.
Co-authored with @ADedecker
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
399/0 |
Mathlib.lean,Mathlib/Topology/Compactness/Compact.lean,Mathlib/Topology/Sublevel.lean |
3 |
1 |
['github-actions'] |
nobody |
1-48095 1 day ago |
1-65179 1 day ago |
1-65216 1 day |
| 28013 |
astrainfinita author:astrainfinita |
feat: Lindemann-Weierstrass Theorem |
This PR continues the work from #6718.
--------
- [x] depends on: #18693
- [ ] depends on: #29121 |
t-algebra
t-analysis
label:t-algebra$ |
1141/54 |
Mathlib.lean,Mathlib/Algebra/MonoidAlgebra/Basic.lean,Mathlib/Algebra/NoZeroSMulDivisors/Basic.lean,Mathlib/Algebra/Polynomial/Splits.lean,Mathlib/Data/Finsupp/Defs.lean,Mathlib/NumberTheory/Transcendental/Lindemann/AlgebraicPart.lean,Mathlib/NumberTheory/Transcendental/Lindemann/AnalyticalPart.lean,Mathlib/NumberTheory/Transcendental/Lindemann/Basic.lean,Mathlib/RingTheory/MvPolynomial/Symmetric/Eval.lean,docs/100.yaml,docs/1000.yaml |
11 |
n/a |
['astrainfinita', 'github-actions', 'j-loreaux', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
1-44460 1 day ago |
unknown |
unknown |
| 31562 |
MichaelStollBayreuth author:MichaelStollBayreuth |
chore: clean up imports |
This PR removes unnecessary imports from a number of files.
The method is not very systematic: prompted by a PR I was reviewing that had a few unnecessary imports (not noticed by `#min_imports`), I was looking through Mathlib for these imports and tried to remove them (and possibly further imports in the files I was looking at).
---
[](https://gitpod.io/from-referrer/)
|
|
3/94 |
Archive/Imo/Imo2008Q3.lean,Archive/Imo/Imo2019Q4.lean,Counterexamples/Phillips.lean,Counterexamples/SorgenfreyLine.lean,Mathlib/Algebra/IsPrimePow.lean,Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/Range.lean,Mathlib/Analysis/Calculus/Taylor.lean,Mathlib/Analysis/Complex/Exponential.lean,Mathlib/Analysis/Fourier/RiemannLebesgueLemma.lean,Mathlib/Analysis/InnerProductSpace/Rayleigh.lean,Mathlib/Analysis/SpecialFunctions/ContinuousFunctionalCalculus/ExpLog.lean,Mathlib/Analysis/SpecialFunctions/ContinuousFunctionalCalculus/PosPart/Basic.lean,Mathlib/Combinatorics/Schnirelmann.lean,Mathlib/Data/Int/NatPrime.lean,Mathlib/Data/Nat/Factorization/Defs.lean,Mathlib/Data/Nat/Factorization/PrimePow.lean,Mathlib/Data/Nat/Prime/Int.lean,Mathlib/Data/Num/Prime.lean,Mathlib/Data/ZMod/Coprime.lean,Mathlib/Dynamics/PeriodicPts/Lemmas.lean,Mathlib/FieldTheory/Finite/Basic.lean,Mathlib/FieldTheory/RatFunc/AsPolynomial.lean,Mathlib/FieldTheory/RatFunc/Degree.lean,Mathlib/Geometry/Manifold/Instances/Sphere.lean,Mathlib/Geometry/Manifold/VectorBundle/SmoothSection.lean,Mathlib/GroupTheory/GroupAction/Primitive.lean,Mathlib/LinearAlgebra/AnnihilatingPolynomial.lean,Mathlib/LinearAlgebra/CrossProduct.lean,Mathlib/LinearAlgebra/InvariantBasisNumber.lean,Mathlib/LinearAlgebra/Matrix/PosDef.lean,Mathlib/LinearAlgebra/Reflection.lean,Mathlib/Logic/Godel/GodelBetaFunction.lean,Mathlib/MeasureTheory/Covering/BesicovitchVectorSpace.lean,Mathlib/ModelTheory/Algebra/Field/IsAlgClosed.lean,Mathlib/NumberTheory/Cyclotomic/PrimitiveRoots.lean,Mathlib/NumberTheory/Multiplicity.lean,Mathlib/NumberTheory/Padics/PadicVal/Basic.lean,Mathlib/NumberTheory/Primorial.lean,Mathlib/NumberTheory/Real/GoldenRatio.lean,Mathlib/NumberTheory/Real/Irrational.lean,Mathlib/NumberTheory/Zsqrtd/Basic.lean,Mathlib/RingTheory/Adjoin/FG.lean,Mathlib/RingTheory/AdjoinRoot.lean,Mathlib/RingTheory/DualNumber.lean,Mathlib/RingTheory/EuclideanDomain.lean,Mathlib/RingTheory/FractionalIdeal/Operations.lean,Mathlib/RingTheory/Ideal/NatInt.lean,Mathlib/RingTheory/Int/Basic.lean,Mathlib/RingTheory/KrullDimension/PID.lean,Mathlib/RingTheory/Polynomial/Dickson.lean,Mathlib/RingTheory/Polynomial/Quotient.lean,Mathlib/RingTheory/Radical.lean,Mathlib/RingTheory/ZMod/UnitsCyclic.lean,Mathlib/Topology/Algebra/InfiniteSum/ConditionalInt.lean,Mathlib/Topology/ContinuousMap/Compact.lean,Mathlib/Topology/ContinuousMap/ContinuousSqrt.lean,Mathlib/Topology/ContinuousMap/StoneWeierstrass.lean |
57 |
4 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
nobody |
1-43045 1 day ago |
1-43045 1 day ago |
1-47807 1 day |
| 31571 |
erdOne author:erdOne |
feat(RingTheory): existence of local algebra with given residue field |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
221/0 |
Mathlib.lean,Mathlib/RingTheory/LocalRing/SeparableResidueField.lean |
2 |
1 |
['github-actions'] |
nobody |
1-41935 1 day ago |
1-41947 1 day ago |
1-41985 1 day |
| 31570 |
tb65536 author:tb65536 |
feat(GroupTheory/Perm/ClosureSwap): add slight generalization |
This PR adds a slight generalization of `surjective_of_isSwap_of_isPretransitive` that is needed to compute the Galois group of `x^n - x - 1`.
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory |
15/5 |
Mathlib/GroupTheory/Perm/ClosureSwap.lean |
1 |
1 |
['github-actions'] |
nobody |
1-41703 1 day ago |
1-41703 1 day ago |
1-41681 1 day |
| 31573 |
SnirBroshi author:SnirBroshi |
feat(Combinatorics/SimpleGraph): split `Walk.lean` into 4 files |
Split into 4 files in a new `Walks` subfolder:
- `Basic.lean`: basic definitions and theorems about them, without modifying the walks: `Walk`, `Nil`, `length`, `getVert`, `support`, `darts`, `edges`, `edgeSet`, `snd`, `penultimate`, `firstDart`, `lastDart`
- `Operations.lean`: similar to the existing `WalkDecomp.lean`, this file defines operations on walks: `copy`, `append`, `concat`, `reverse`, `drop`, `take`, `tail`, `dropLast`. The name of the file matches `SimpleGraph/Operations.lean` which defines operations on graphs.
- `Maps.lean`: operations that map the walk to another graph: `map`, `mapLe`, `transfer`, `induce`, `toDeleteEdges`, `toDeleteEdge`. The name of the file matches `SimpleGraph/Maps.lean` which defines maps on graphs.
- `Subwalks.lean`: the definition of `IsSubwalk` and theorems about it
Deprecates the original `Walk.lean` module.
---
`Walk.lean` has been [around 1500 lines](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/long.20files/near/554617597) for a while, so this PR splits it into 4 files.
Fixes [this TODO](https://github.com/leanprover-community/mathlib4/blob/4055dfea0311fa984f3b4eaa629c12220ff0a03a/Mathlib/Combinatorics/SimpleGraph/Walk.lean#L36).
**What changed:**
I haven't changed any of the declarations, nor their relative order, just partitioned the contents of the original module.
But I *did* modify `namespace`/`end`/`variable`/`universe`/`open` commands, while attempting to not cause modifications to variable names/order/binder-info (can the bot verify that or does it only check name changes?).
Also I modified the module docstrings to include the definitions in each file, and a few heading comments (comments that begin with pound symbols).
I'll move the existing `Paths.lean` and `WalkDecomp.lean` to `Walks/` in a later PR, perhaps with a rename as well.
If it helps I can try to split this into 4 commits (or 4 separate PRs) doing the following in-order:
- move `Walk.lean` to `Walks/Basic.lean`
- split off a chunk to a new `Subwalks.lean`
- split off a chunk to a new `Maps.lean`
- split off a chunk to a new `Operations.lean`
I'm planning to PR a few more definitions to `Basic` soon, namely `nextDart`/`prevDart`/`containingEdge`, so if you prefer we can split `getVert`/`snd`/`penultimate`/`firstDart`/`lastDart` now to a new `Navigation.lean`, or keep it in `Basic`.
I think this split is pretty good, though it's worth noting 9 theorems are in `Operations` and not `Basic` because their proof relies on operations even though their statement doesn't:
- `support_eq_concat`
- `dart_snd_mem_support_of_mem_darts`
- `fst_mem_support_of_mem_edges`
- `snd_mem_support_of_mem_edges`
- `edges_nodup_of_support_nodup`
- `ext_support`
- `support_injective`
- `ext_getVert_le_length`
- `ext_getVert`
Zulip discussion: https://leanprover.zulipchat.com/#narrow/channel/252551-graph-theory/topic/Splitting.20.60Walk.2Elean.60/
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
1593/1494 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Connectivity/WalkDecomp.lean,Mathlib/Combinatorics/SimpleGraph/Paths.lean,Mathlib/Combinatorics/SimpleGraph/Walk.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Basic.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Maps.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Operations.lean,Mathlib/Combinatorics/SimpleGraph/Walks/Subwalks.lean |
8 |
1 |
['github-actions'] |
nobody |
1-38803 1 day ago |
1-40142 1 day ago |
1-40182 1 day |
| 31572 |
tb65536 author:tb65536 |
feat(Algebra/Group/Subgroup/Basic): API lemma relating `inertia` and `subgroupOf` |
This PR adds an API lemma relating `inertia` and `subgroupOf`.
---
[](https://gitpod.io/from-referrer/)
|
t-group-theory
t-algebra
label:t-algebra$ |
5/0 |
Mathlib/Algebra/Group/Subgroup/Basic.lean |
1 |
1 |
['github-actions'] |
nobody |
1-38769 1 day ago |
1-38769 1 day ago |
1-38747 1 day |
| 30650 |
JovanGerb author:JovanGerb |
perf(reassoc, to_app, elementwise): don't pass the same proof to the kernel again |
In `reassoc`, `to_app`, `elementwise`, the proof of the original lemma was being used to prove the modified lemma. This is silly, because the modified lemma can be proved using the original lemma directly. Hence, this PR modifies `addRelatedDecl` to include this optimization.
Previously, `addRelatedDecl` would pass around both the type and the value of the original declaration. This was necessary, because the inferred type of the value might not be identical to the type it is given. Now this is not necessary anymore, because the type of the constant is exactly the type that it is given, so the type can always be obtained with `inferType`.
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-meta
|
19/21 |
Mathlib/Tactic/CategoryTheory/Elementwise.lean,Mathlib/Tactic/CategoryTheory/Reassoc.lean,Mathlib/Tactic/CategoryTheory/ToApp.lean,Mathlib/Util/AddRelatedDecl.lean |
4 |
13 |
['JovanGerb', 'dwrensha', 'github-actions', 'grunweg', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'plp127'] |
dwrensha assignee:dwrensha |
1-35265 1 day ago |
1-76781 1 day ago |
26-66083 26 days |
| 13740 |
YaelDillies author:YaelDillies |
feat: more robust ae notation |
Make sure that, when `μ : FiniteMeasure Ω`, `f =ᵐ[μ] g` elaborates to `f =ᵐ[↑μ] g` instead of complaining about `OuterMeasureClass (FiniteMeasure Ω) (Set Ω) ℝ≥0∞` not existing.
[Zulip](https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/ae.20of.20a.20finite.20measure)
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability
t-meta
|
67/8 |
Mathlib/MeasureTheory/Integral/Bochner/L1.lean,Mathlib/MeasureTheory/Measure/Decomposition/IntegralRNDeriv.lean,Mathlib/MeasureTheory/Measure/MeasureSpaceDef.lean,Mathlib/MeasureTheory/OuterMeasure/AE.lean,Mathlib/MeasureTheory/OuterMeasure/BorelCantelli.lean,Mathlib/Probability/Notation.lean |
6 |
23 |
['YaelDillies', 'eric-wieser', 'github-actions', 'leanprover-community-bot-assistant', 'urkud'] |
RemyDegenne assignee:RemyDegenne |
1-33617 1 day ago |
8-67107 8 days ago |
8-67066 8 days |
| 30213 |
SnirBroshi author:SnirBroshi |
feat(Data/List/GetD): golf and add lemmas for `get` and `getElem?` |
---
[](https://gitpod.io/from-referrer/)
|
t-data
new-contributor
|
18/16 |
Mathlib/Data/List/GetD.lean |
1 |
11 |
['SnirBroshi', 'eric-wieser', 'github-actions', 'themathqueen'] |
pechersky assignee:pechersky |
1-33614 1 day ago |
18-32373 18 days ago |
39-85808 39 days |
| 30684 |
YaelDillies author:YaelDillies |
chore: deprecate `monoidalOfHasFiniteProducts` |
Over the summer, this was replaced everywhere with `CartesianMonoidalCategory.ofHasFiniteProducts`, but hadn't been deprecated.
---
I would personally be very happy to also delete the finite coproduct stuff, but we don't yet have cocartesian-monoidal categories to replace them.
[](https://gitpod.io/from-referrer/)
|
large-import
t-category-theory
|
92/92 |
Mathlib/CategoryTheory/Monoidal/OfHasFiniteProducts.lean |
1 |
20 |
['YaelDillies', 'dagurtomas', 'github-actions', 'joelriou', 'kckennylau'] |
thorimur assignee:thorimur |
1-33613 1 day ago |
8-5628 8 days ago |
23-74752 23 days |
| 30706 |
astrainfinita author:astrainfinita |
refactor(Analysis/NormedSpace/Exponential): remove the `𝕂` argument from `exp` |
This PR builds upon #8370 and avoids `Algebra ℚ` typeclass assumptions wherever possible.
Many `[NormedAlgebra ℚ 𝔸]` can be generalized to `[NontriviallyNormedField 𝕂] [CharZero 𝕂] [ContinuousSMul ℚ 𝕂] [NormedAlgebra 𝕂 𝔸]`, which basically means allowing `ℚ` to use other equivalent norms, and may not be the case of concern.
It might be possible to use some Prop-valued typeclasses to avoid the diamond problem potentially caused by `[NormedAlgebra ℚ 𝔸]`. This makes it unnecessary to manually obtain `[NormedAlgebra ℚ 𝔸]` when we have `[NormedAlgebra ℝ 𝔸]` or `[NormedAlgebra ℂ 𝔸]`.
Co-authored-by: Eric Wieser
---
- [ ] depends on: #28475
There are still some documentation comments that need to be updated.
Zulip: [#mathlib4 > Real.exp @ 💬](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Real.2Eexp/near/401602245)
[](https://gitpod.io/from-referrer/)
|
t-analysis |
477/444 |
Counterexamples/DiscreteTopologyNonDiscreteUniformity.lean,Mathlib/Analysis/CStarAlgebra/Exponential.lean,Mathlib/Analysis/CStarAlgebra/Spectrum.lean,Mathlib/Analysis/CStarAlgebra/Unitary/Connected.lean,Mathlib/Analysis/Normed/Algebra/DualNumber.lean,Mathlib/Analysis/Normed/Algebra/Exponential.lean,Mathlib/Analysis/Normed/Algebra/MatrixExponential.lean,Mathlib/Analysis/Normed/Algebra/QuaternionExponential.lean,Mathlib/Analysis/Normed/Algebra/Spectrum.lean,Mathlib/Analysis/Normed/Algebra/TrivSqZeroExt.lean,Mathlib/Analysis/Real/Hyperreal.lean,Mathlib/Analysis/SpecialFunctions/Complex/LogBounds.lean,Mathlib/Analysis/SpecialFunctions/ContinuousFunctionalCalculus/ExpLog.lean,Mathlib/Analysis/SpecialFunctions/Exponential.lean,Mathlib/Analysis/SpecialFunctions/Trigonometric/Series.lean,Mathlib/Analysis/SpecificLimits/Basic.lean,Mathlib/Analysis/SpecificLimits/RCLike.lean,Mathlib/Combinatorics/Derangements/Exponential.lean,Mathlib/MeasureTheory/Measure/CharacteristicFunction.lean,Mathlib/Probability/Distributions/Gaussian/Basic.lean,Mathlib/Probability/Distributions/Gaussian/Fernique.lean,Mathlib/Probability/Distributions/Poisson.lean |
22 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
1-33613 1 day ago |
15-30177 15 days ago |
0-996 16 minutes |
| 30814 |
yuanyi-350 author:yuanyi-350 |
feat(LinearAlgebra/Dimension/RankDecomposition): Rank decomposition and bases adapted to a linear map |
For any matrix A (not necessarily square), there exists a rank normal form. That is, there exist invertible matrices P and Q such that
$$
A = P \cdot \left(
\begin{array}{cc}
I_r & 0 \\
0 & 0
\end{array}
\right) Q
$$
Abstractly speaking, any linear map can be decomposed as an invertible map composed with a projection map composed with an invertible map.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
97/0 |
Mathlib.lean,Mathlib/LinearAlgebra/Dimension/RankDecomposition.lean |
2 |
20 |
['PatrickMassot', 'github-actions', 'kckennylau', 'ocfnash', 'plp127', 'yuanyi-350'] |
dagurtomas assignee:dagurtomas |
1-33612 1 day ago |
5-34400 5 days ago |
6-28446 6 days |
| 30851 |
FormulaRabbit81 author:FormulaRabbit81 |
feat(Topology): prove there exists an embedding of separable metric spaces in the hilbert cube |
---
[](https://gitpod.io/from-referrer/)
- [x] depends on: #30849 |
file-removed |
140/42 |
Mathlib.lean,Mathlib/Topology/Compactness/HilbertCubeEmbedding.lean,Mathlib/Topology/MetricSpace/PiNat.lean |
3 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
ADedecker assignee:ADedecker |
1-33611 1 day ago |
9-40675 9 days ago |
9-61433 9 days |
| 30857 |
erdOne author:erdOne |
feat(RingTheory): miscellaneous lemmas about etale |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
64/11 |
Mathlib/AlgebraicGeometry/Morphisms/FormallyUnramified.lean,Mathlib/RingTheory/Etale/Basic.lean,Mathlib/RingTheory/RingHom/Unramified.lean,Mathlib/RingTheory/Smooth/Basic.lean,Mathlib/RingTheory/Unramified/Basic.lean,Mathlib/RingTheory/Unramified/Field.lean,Mathlib/RingTheory/Unramified/LocalRing.lean,Mathlib/RingTheory/Unramified/Locus.lean |
8 |
6 |
['chrisflav', 'erdOne', 'github-actions'] |
mariainesdff assignee:mariainesdff |
1-33610 1 day ago |
7-47408 7 days ago |
10-80310 10 days |
| 30983 |
erdOne author:erdOne |
feat(RingTheory): results on resultant |
Also changed the definition of `sylvesterMatrix` because the old definition has the wrong sign.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
303/33 |
Mathlib/Algebra/BigOperators/Group/Finset/Basic.lean,Mathlib/Data/Multiset/Bind.lean,Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean,Mathlib/RingTheory/Polynomial/Resultant/Basic.lean,Mathlib/RingTheory/WittVector/MulCoeff.lean |
5 |
6 |
['erdOne', 'eric-wieser', 'github-actions', 'kckennylau'] |
chrisflav assignee:chrisflav |
1-33608 1 day ago |
6-42554 6 days ago |
17-47656 17 days |
| 31264 |
plp127 author:plp127 |
feat(Filter): replace coframe instance with better defeqs |
Replace the `Filter.instCoframe` with explicitly given operations. Prove `Filter.mem_sdiff` and `Filter.hnot_def`.
The definitions I chose here are somewhat arbitrary, but I think they're better than what we had before. I chose these specific definitions based on a conversation with AI, but I did not use AI to help me write this PR.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
34/22 |
Archive/Wiedijk100Theorems/SumOfPrimeReciprocalsDiverges.lean,Mathlib/Analysis/BoxIntegral/Basic.lean,Mathlib/MeasureTheory/Measure/Restrict.lean,Mathlib/Order/Filter/Finite.lean,Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean |
5 |
2 |
['github-actions', 'plp127'] |
Vierkantor assignee:Vierkantor |
1-33607 1 day ago |
9-68014 9 days ago |
9-68003 9 days |
| 31293 |
erdOne author:erdOne |
feat(Algebra/InfiniteSum): `HasProdUniformly` and friends |
Also refactors `HasProdUniformlyOn` to take one set instead of a family of sets. See https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/SummableUniformlyOn/with/553935898
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-topology
RFC
label:t-algebra$ |
338/101 |
Mathlib/Analysis/NormedSpace/MultipliableUniformlyOn.lean,Mathlib/Analysis/SpecialFunctions/Trigonometric/Cotangent.lean,Mathlib/Topology/Algebra/InfiniteSum/TsumUniformlyOn.lean,Mathlib/Topology/Algebra/InfiniteSum/UniformOn.lean |
4 |
1 |
['github-actions'] |
jcommelin assignee:jcommelin |
1-33605 1 day ago |
8-61638 8 days ago |
8-61630 8 days |
| 31305 |
kim-em author:kim-em |
feat: grind golfing in Topology/Path |
This is not as exhaustive as I would have liked; there's plenty more cleanup to do here. But I need to pause on this for now and I think it's an improvement. |
|
61/91 |
Mathlib/Algebra/Order/Interval/Set/Instances.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean,Mathlib/Topology/Homotopy/Path.lean,Mathlib/Topology/Path.lean,Mathlib/Topology/UnitInterval.lean |
5 |
3 |
['github-actions', 'grunweg'] |
j-loreaux assignee:j-loreaux |
1-33603 1 day ago |
8-45062 8 days ago |
8-45039 8 days |
| 31337 |
chrisflav author:chrisflav |
feat(CategoryTheory): add predicate `IsRepresentedBy` |
We define the predicate `IsRepresentedBy`: A functor `F` is represented by `X`
with universal element `x : F.obj X` if the natural transformation `yoneda.obj X ⟶ F` induced
by `x` is an isomorphism. We also relate this to the other existing ways of expressing a functor is representable.
This is part of a series towards expressing a certain morphism is an analytification morphism, which will be defined in terms of `IsRepresentedBy`.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
236/0 |
Mathlib.lean,Mathlib/CategoryTheory/RepresentedBy.lean,Mathlib/CategoryTheory/Yoneda.lean |
3 |
2 |
['erdOne', 'github-actions'] |
robin-carlier assignee:robin-carlier |
1-33602 1 day ago |
7-36120 7 days ago |
7-36098 7 days |
| 31342 |
kim-em author:kim-em |
feat: `extract_goal` preserves explicit foralls |
|
t-meta |
36/5 |
Mathlib/Tactic/ExtractGoal.lean,Mathlib/Tactic/TacticAnalysis/Declarations.lean,MathlibTest/ExtractGoal.lean |
3 |
1 |
['github-actions'] |
robertylewis assignee:robertylewis |
1-33600 1 day ago |
7-24920 7 days ago |
7-24959 7 days |
| 31360 |
erdOne author:erdOne |
feat(RingTheory): coeffs of a poly is integral if it divides an integral poly |
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory |
62/0 |
Mathlib.lean,Mathlib/RingTheory/Polynomial/IsIntegral.lean |
2 |
3 |
['SnirBroshi', 'erdOne', 'github-actions'] |
chrisflav assignee:chrisflav |
1-33599 1 day ago |
6-74573 6 days ago |
6-74610 6 days |
| 31374 |
euprunin author:euprunin |
chore: use `order` instead of `aesop` to make the intent clearer |
---
Separated from the non-`aesop` cases for benchmarking reasons.
---
[](https://gitpod.io/from-referrer/)
|
|
5/4 |
Mathlib/Analysis/Meromorphic/TrailingCoefficient.lean,Mathlib/Combinatorics/SimpleGraph/Tutte.lean,Mathlib/Computability/AkraBazzi/SumTransform.lean |
3 |
5 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
adamtopaz assignee:adamtopaz |
1-33598 1 day ago |
6-6462 6 days ago |
6-9304 6 days |
| 31385 |
harahu author:harahu |
doc(MathlibTest): demote repeated H1 headers to H2 |
This PR demotes H1 headers beyond the first per file to H2.
Having only a single H1 header per file is considered good practice when writing markdown. The mathlib documentation style guide does not explicitly state that a module docstring should only contain a single H1, but this seems to be taken for granted, since only the file header is requested to be an H1, while any other header mentioned is asked to be either H2 or H3.
---
[](https://gitpod.io/from-referrer/)
|
|
2/2 |
MathlibTest/norm_num.lean |
1 |
1 |
['github-actions'] |
dupuisf assignee:dupuisf |
1-33597 1 day ago |
5-61076 5 days ago |
5-61053 5 days |
| 31377 |
CoolRmal author:CoolRmal |
feat: a series of smooth functions that converges (locally) uniformly is smooth |
The main theorem proved in this lemma is that: if a sequence of functions `fₙ` is such that for each `0 ≤ k ≤ N`, the series of `k`-th iterated derivatives `∑ (iteratedDerivWithin k fₙ s) (z)` is summable (locally) uniformly on a set`s`, and
each `fₙ` is in the class of `C^N`, then the series is also in `C^N`. This is an analogue of the existing theorem [contDiff_tsum](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Analysis/Calculus/SmoothSeries.html#contDiff_tsum). My main motivation for this PR is the [#mathlib4 > Tychonov's Counterexample for the Heat Equation](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Tychonov's.20Counterexample.20for.20the.20Heat.20Equation/with/547367912).
Several Remarks:
1. The proof of `SummableUniformlyOn.continuousOn_tsum` (and other similar theorems) actually does not require the assumption that the codomain is a `T2Space` (see #31313).
2. The author of the file [Mathlib/Topology/Algebra/InfiniteSum/TsumUniformlyOn.lean](https://github.com/leanprover-community/mathlib4/compare/master...CoolRmal:mathlib4:contDiffwithinTsum?expand=1#diff-8b2f878190f47dd6544467469c58d2cdf59d6f79277b21814cdef554a27a4fd7) assumes that the set `s` is open and uses `derivWithin` in the statements. I follow the same convention right now, but I really think it is better to use `deriv` because we have [derivWithin_of_isOpen](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Analysis/Calculus/Deriv/Basic.html#derivWithin_of_isOpen) and `derivWithin` makes things more complicated.
3. I also doubt that some of the theorems I proved still hold if `s` is only assumed to has the [UniqueDiffOn](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Analysis/Calculus/TangentCone.html#UniqueDiffOn) property. If there is an easy way to generalize this theorem to sets that are not necessarily open, then the second comment can be ignored.
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-topology
|
249/23 |
Mathlib/Analysis/SpecialFunctions/Trigonometric/Cotangent.lean,Mathlib/NumberTheory/ModularForms/EisensteinSeries/QExpansion.lean,Mathlib/Topology/Algebra/InfiniteSum/TsumUniformlyOn.lean,Mathlib/Topology/Algebra/InfiniteSum/UniformOn.lean |
4 |
1 |
['github-actions'] |
ocfnash assignee:ocfnash |
1-33597 1 day ago |
6-1239 6 days ago |
6-1281 6 days |
| 31421 |
joelriou author:joelriou |
feat(CategoryTheory): HasCardinalLT for MorphismProperty and ObjectProperty |
This PR introduces abbreviations to say that the type of objects or morphisms satisfying a certain property is of cardinality `<κ`.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
123/0 |
Mathlib.lean,Mathlib/CategoryTheory/MorphismProperty/Basic.lean,Mathlib/CategoryTheory/MorphismProperty/HasCardinalLT.lean,Mathlib/CategoryTheory/ObjectProperty/HasCardinalLT.lean |
4 |
1 |
['github-actions'] |
TwoFX assignee:TwoFX |
1-33593 1 day ago |
4-82973 4 days ago |
4-82952 4 days |
| 31428 |
harahu author:harahu |
doc(AlgebraicTopology/SingularSet): fix typos |
This PR fixes some apparent typos in `SingularSet`. The typos were found and corrected with the help of Codex.
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology |
7/7 |
Mathlib/AlgebraicTopology/SingularSet.lean |
1 |
2 |
['github-actions', 'harahu'] |
robin-carlier assignee:robin-carlier |
1-33592 1 day ago |
4-78512 4 days ago |
4-78908 4 days |
| 31424 |
joelriou author:joelriou |
feat(CategoryTheory): description of the type WalkingMultispan |
Given `J : MultispanShape`, we introduce bijections `WalkingMultispan J ≃ J.L ⊕ J.R` and `Arrow (WalkingMultispan J) ≃ WalkingMultispan J ⊕ J.L ⊕ J.L`.
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
25/0 |
Mathlib/CategoryTheory/Limits/Shapes/Multiequalizer.lean |
1 |
1 |
['github-actions'] |
riccardobrasca assignee:riccardobrasca |
1-33592 1 day ago |
4-82635 4 days ago |
4-82613 4 days |
| 31441 |
harahu author:harahu |
doc(Dynamics): polish docstrings |
This PR fixes a batch of typos in `Dynamics`. The typos were found and fixed with the help of Codex.
---
[](https://gitpod.io/from-referrer/)
|
t-dynamics |
11/12 |
Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean,Mathlib/Dynamics/Ergodic/Action/OfMinimal.lean,Mathlib/Dynamics/Ergodic/Ergodic.lean |
3 |
2 |
['github-actions', 'harahu'] |
sgouezel assignee:sgouezel |
1-33591 1 day ago |
4-59475 4 days ago |
4-59515 4 days |
| 31449 |
kim-em author:kim-em |
feat(SemilocallySimplyConnected): definition and alternative formulation |
|
|
112/0 |
Mathlib.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/SemilocallySimplyConnected.lean,Mathlib/Topology/Path.lean |
3 |
2 |
['ADedecker', 'github-actions'] |
jcommelin assignee:jcommelin |
1-33589 1 day ago |
4-40246 4 days ago |
4-40223 4 days |
| 31535 |
ADedecker author:ADedecker |
feat: small tweaks to `PointwiseConvergenceCLM` |
These are small suggestions I would have made about #11496:
- add a `IsUniformEmbedding` variant of `isEmbedding_coeFn`
- add a `ContinuousEvalConst` instance using [UniformConvergenceCLM.continuousEvalConst](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Topology/Algebra/Module/StrongTopology.html#UniformConvergenceCLM.continuousEvalConst)
- use said instance to golf continuity in `evalCLM`
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-topology
|
16/11 |
Mathlib/Topology/Algebra/Module/PointwiseConvergence.lean |
1 |
3 |
['github-actions', 'mcdoll'] |
nobody |
1-32866 1 day ago |
1-32866 1 day ago |
2-1726 2 days |
| 29562 |
ShreckYe author:ShreckYe |
feat(Analysis/SpecialFunctions/Trigonometric): tangent half-angle substitution |
|
t-analysis |
58/0 |
Mathlib/Analysis/Complex/Trigonometric.lean,Mathlib/Analysis/SpecialFunctions/Trigonometric/Complex.lean |
2 |
9 |
['ShreckYe', 'github-actions', 'j-loreaux', 'ocfnash'] |
ocfnash assignee:ocfnash |
1-30872 1 day ago |
1-30948 1 day ago |
59-15118 59 days |
| 31575 |
kim-em author:kim-em |
chore: reverse the directions of Path.symm_cast and trans_cast |
It seems Mathlib doesn't mind currently which way these go, but pushing casts inwards is better for me. |
t-topology |
11/0 |
Mathlib/Topology/Path.lean |
1 |
1 |
['github-actions'] |
nobody |
1-30549 1 day ago |
1-30549 1 day ago |
1-30598 1 day |
| 31114 |
mcdoll author:mcdoll |
feat(Analysis): use new notation for Fourier transform on Schwartz functions and simplify presentation |
Use the new notation for the Fourier transform and its inverse to clean up `FourierSchwartz`.
- Use notation type class and `Prop`-type classes.
- State all lemmas for the Fourier transform on `SchwartzMap` and not on the coercion to functions.
- Add coercion lemmas.
- Move `FourierTransformCLE` up in the file and use `FourierEquiv` from the abstract notation file.
- Use the notation for the Fourier transform and the Schwartz functions in `PoissonSummation`.
- Add my name to the authors list for this PR and the PR for Plancherel's theorem.
- Some golfing
---
- [x] depends on: #31115
[](https://gitpod.io/from-referrer/)
|
t-analysis |
96/60 |
Mathlib/Analysis/Distribution/FourierSchwartz.lean,Mathlib/Analysis/Fourier/PoissonSummation.lean |
2 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
nobody |
1-25549 1 day ago |
1-26633 1 day ago |
1-26611 1 day |
| 31525 |
kim-em author:kim-em |
feat: convex combinations in `Set.Icc` |
This will hopefully become obsolete with a more general theory of convex spaces, but this would be helpful to go on for now.
|
t-topology |
120/0 |
Mathlib/Topology/UnitInterval.lean |
1 |
1 |
['github-actions'] |
nobody |
1-23834 1 day ago |
2-38548 2 days ago |
2-38585 2 days |
| 31577 |
mcdoll author:mcdoll |
feat(Analysis): the topology of pointwise convergence is locally convex |
Show that the pointwise convergence topology is locally convex both in the sense of `WithSeminorms` and `LocallyConvexSpace`.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
109/0 |
Mathlib.lean,Mathlib/Analysis/LocallyConvex/PointwiseConvergence.lean,Mathlib/Data/Set/Finite/Lemmas.lean,Mathlib/Topology/Algebra/Module/PointwiseConvergence.lean,Mathlib/Topology/Algebra/Module/StrongTopology.lean |
5 |
1 |
['github-actions'] |
nobody |
1-16601 1 day ago |
1-16601 1 day ago |
1-16580 1 day |
| 31557 |
kex-y author:kex-y |
feat: lemmas on the stopped process and stopped value |
---
From Brownian motion project
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
54/6 |
Mathlib/Probability/Process/Stopping.lean |
1 |
13 |
['EtienneC30', 'github-actions', 'kex-y'] |
nobody |
1-9843 1 day ago |
1-9992 1 day ago |
1-19838 1 day |
| 31408 |
peakpoint author:peakpoint |
feat(Analysis/Calculus/LHopital): L'Hopital's rule from within a convex set |
Extracted from #19796
---
[](https://gitpod.io/from-referrer/) |
new-contributor
t-analysis
|
185/20 |
Mathlib/Analysis/Calculus/LHopital.lean,Mathlib/Analysis/Convex/Topology.lean,Mathlib/Geometry/Manifold/Instances/Real.lean,Mathlib/Order/Interval/Set/Basic.lean |
4 |
1 |
['github-actions'] |
nobody |
1-8550 1 day ago |
1-8552 1 day ago |
5-27324 5 days |
| 31564 |
EtienneC30 author:EtienneC30 |
feat: injectivity of the map forgetting the continuity of bilinear maps |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
15/0 |
Mathlib/Topology/Algebra/Module/StrongTopology.lean |
1 |
2 |
['github-actions', 'themathqueen'] |
nobody |
1-7904 1 day ago |
1-46470 1 day ago |
1-46599 1 day |
| 30129 |
vlad902 author:vlad902 |
feat(SimpleGraph): define and prove basic theory of vertex covers |
Define a predicate `IsVertexCover G C` to state that `C` is a vertex cover of `G`. Furthermore, `G.minVertexCover` is the cardinality of the minimum vertex cover of G. Then prove the basic theory of how these definitions relate to the empty and complete graphs and their relationship with graph homs/isos.
---
- [x] depends on: #29833
- [x] depends on: #30136
- [x] depends on: #30137
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
199/0 |
Mathlib.lean,Mathlib/Combinatorics/SimpleGraph/Clique.lean,Mathlib/Combinatorics/SimpleGraph/VertexCover.lean |
3 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
YaelDillies assignee:YaelDillies |
1-6067 1 day ago |
9-44210 9 days ago |
9-45254 9 days |
| 29997 |
xroblot author:xroblot |
feat(CyclotomicFields): general formula for the discriminant |
Add the general formula for the (absolute value of the) discriminant of a cyclotomic field:
```lean
theorem natAbs_absdiscr (n : ℕ) [hn : NeZero n] [hK : IsCyclotomicExtension {n} ℚ K] :
(discr K).natAbs = (n ^ n.totient / ∏ p ∈ n.primeFactors, p ^ (n.totient / (p - 1)))
```
---
- [x] depends on: #29665
- [x] depends on: #29943
|
large-import
t-number-theory
|
88/2 |
Mathlib/NumberTheory/NumberField/Cyclotomic/Basic.lean |
1 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
1-4396 1 day ago |
1-4553 1 day ago |
1-6556 1 day |
| 31581 |
kebekus author:kebekus |
feat: behavior of the counting function under addition |
Establish the behavior of the "Proximity Function" of Value Distribution theory with respect to addition.
This material is used in [Project VD](https://github.com/kebekus/ProjectVD), which aims to formalize Value Distribution Theory for meromorphic functions on the complex plane. The formula established here is part of a larger package discussing the behavior of the Nenvanlinna height under algebraic manipulations of the functions.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
136/10 |
Mathlib/Analysis/Complex/ValueDistribution/CountingFunction.lean,Mathlib/Analysis/Meromorphic/Divisor.lean,Mathlib/Analysis/Meromorphic/Order.lean |
3 |
1 |
['github-actions'] |
nobody |
1-2320 1 day ago |
1-3304 1 day ago |
1-3341 1 day |
| 31556 |
kebekus author:kebekus |
feat: behavior of the proximity function under addition |
Establish the behavior of the "Proximity Function" of Value Distribution theory with respect to addition.
This material is used in [Project VD](https://github.com/kebekus/ProjectVD), which aims to formalize Value Distribution Theory for meromorphic functions on the complex plane. The formula established here is part of a larger package discussing the behavior of the Nenvanlinna height under algebraic manipulations of the functions.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
68/0 |
Mathlib/Analysis/Complex/ValueDistribution/ProximityFunction.lean,Mathlib/MeasureTheory/Integral/CircleAverage.lean,Mathlib/MeasureTheory/Integral/CircleIntegral.lean |
3 |
1 |
['github-actions'] |
nobody |
1-2143 1 day ago |
1-2143 1 day ago |
1-69186 1 day |
| 31584 |
joelriou author:joelriou |
chore: move CategoryTheory.ComposableArrows |
It is moved to `CategoryTheory.ComposableArrows.Basic` in order to allow new features without making this long file even longer.
---
[](https://gitpod.io/from-referrer/)
|
file-removed
t-category-theory
|
7/7 |
Mathlib.lean,Mathlib/Algebra/Homology/ExactSequence.lean,Mathlib/Algebra/Homology/HomotopyCategory/Triangulated.lean,Mathlib/AlgebraicTopology/SimplicialSet/Nerve.lean,Mathlib/CategoryTheory/ComposableArrows/Basic.lean,Mathlib/CategoryTheory/Limits/Shapes/Preorder/TransfiniteCompositionOfShape.lean,Mathlib/CategoryTheory/Localization/CalculusOfFractions/ComposableArrows.lean,Mathlib/CategoryTheory/Triangulated/Functor.lean |
8 |
1 |
['github-actions'] |
nobody |
1-1199 1 day ago |
1-1760 1 day ago |
1-1805 1 day |
| 31546 |
RemyDegenne author:RemyDegenne |
feat: MeasurableSet.iff |
Add two lemmas:
`MeasurableSet.imp (hs : MeasurableSet {x | p x}) (ht : MeasurableSet {x | q x}) : MeasurableSet {x | p x → q x}`
`MeasurableSet.iff (hs : MeasurableSet {x | p x}) (ht : MeasurableSet {x | q x}) : MeasurableSet {x | p x ↔ q x}`
From the LeanBandits project.
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-measure-probability
|
14/0 |
Mathlib/MeasureTheory/MeasurableSpace/Defs.lean |
1 |
3 |
['EtienneC30', 'github-actions'] |
nobody |
0-84114 23 hours ago |
0-84114 23 hours ago |
1-78056 1 day |
| 31583 |
kebekus author:kebekus |
feat: describe the logarithmic counting function in terms of circle averages |
Deliver on an open TODO and describe the logarithmic counting function in terms of circle averages.
This material is used in [Project VD](https://github.com/kebekus/ProjectVD), which aims to formalize Value Distribution Theory for meromorphic functions on the complex plane. The material established here is a step towards Cartan's classic formula for the Nevanlinna characteristic.
---
[](https://gitpod.io/from-referrer/)
|
large-import
t-analysis
|
68/4 |
Mathlib/Analysis/Complex/ValueDistribution/CountingFunction.lean,Mathlib/Topology/LocallyFinsupp.lean |
2 |
2 |
['github-actions', 'kebekus'] |
nobody |
0-82181 22 hours ago |
0-82181 22 hours ago |
1-2314 1 day |
| 31574 |
kim-em author:kim-em |
feat: lemmas for paths-up-to-homotopy |
We introduce `Path.Homotopic.Quotient.mk` as the normal form (rather than `_root_.Quotient.mk`) for constructing a path-up-to-homotopy from a path. This enables us to work more easily in the quotient. We add simp lemmas corresponding to the basic homotopies relating `refl` / `symm` / `trans` / `cast`. |
t-algebraic-topology
t-topology
|
199/30 |
Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/InducedMaps.lean,Mathlib/AlgebraicTopology/FundamentalGroupoid/Product.lean,Mathlib/Topology/Homotopy/Lifting.lean,Mathlib/Topology/Homotopy/Path.lean,Mathlib/Topology/Homotopy/Product.lean |
6 |
1 |
['github-actions'] |
nobody |
0-81351 22 hours ago |
0-81351 22 hours ago |
1-31305 1 day |
| 31434 |
stepanholub author:stepanholub |
feat: simple divisibility lemma |
---
Add a simple lemma about divisibility. It can be seen as a description of the last step of the Euclidean algorithm (when only subtraction is used) |
t-data
new-contributor
|
6/0 |
Mathlib/Data/Nat/GCD/Basic.lean |
1 |
9 |
['github-actions', 'grunweg', 'ocfnash', 'stepanholub', 'wwylele'] |
nobody |
0-80424 22 hours ago |
0-80425 22 hours ago |
4-66407 4 days |
| 31544 |
RemyDegenne author:RemyDegenne |
feat: add `MeasureTheory.Measure.integrable_comp_iff` |
Necessary and sufficient condition for `Integrable f (κ ∘ₘ μ)`, integrability with respect to the composition of a kernel and a measure. Special case of `ProbabilityTheory.integrable_comp_iff`, which is about composition of two kernels.
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-measure-probability
|
8/0 |
Mathlib/Probability/Kernel/Composition/IntegralCompProd.lean |
1 |
2 |
['EtienneC30', 'github-actions'] |
nobody |
0-80338 22 hours ago |
0-80338 22 hours ago |
1-79738 1 day |
| 31451 |
jsm28 author:jsm28 |
feat(Analysis/Convex/Combination): `centerMass_const`, `centerMass_congr` |
Add the lemma:
```lean
lemma Finset.centerMass_const (hw : ∑ j ∈ t, w j ≠ 0) (c : E) :
t.centerMass w (Function.const _ c) = c := by
```
along with various congruence lemmas that help with applying this in cases where the points are constant for the nonzero weights in `t`, but not necessarily everywhere.
---
[](https://gitpod.io/from-referrer/)
|
t-convex-geometry
maintainer-merge
t-analysis
|
28/0 |
Mathlib/Analysis/Convex/Combination.lean |
1 |
4 |
['Ruben-VandeVelde', 'github-actions', 'j-loreaux', 'jsm28'] |
nobody |
0-79745 22 hours ago |
0-79745 22 hours ago |
4-8914 4 days |
| 31493 |
jsm28 author:jsm28 |
feat(Geometry/Euclidean/Incenter): `incenter_mem_interior` |
Add a direct statement that the incenter of a simplex lies in its interior (along with factoring out a lemma `excenterWeights_empty_pos` that turns out to be useful several times in its proof).
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-euclidean-geometry
|
21/2 |
Mathlib/Geometry/Euclidean/Incenter.lean |
1 |
3 |
['Ruben-VandeVelde', 'github-actions'] |
nobody |
0-78656 21 hours ago |
0-79503 22 hours ago |
3-29512 3 days |
| 31579 |
xroblot author:xroblot |
feat(Data/Nat/Digits): prove the bijection induced by `Nat.ofDigits` and use it to compute the sum of the sum of digits |
We prove that `Nat.ofDigits` induces a bijection between the set of list of natural integers of length `l`
with coefficients `< b` and the set of natural integers `< b ^ l` and develop some API.
As a application, we prove that
```lean
theorem Nat.sum_digits_sum_eq {b : ℕ} (hb : 1 < b) (l : ℕ) :
∑ x ∈ Finset.range (b ^ l), (b.digits x).sum = l * b ^ (l - 1) * b.choose 2
```
---
|
t-data |
186/0 |
Mathlib/Data/Nat/Digits/Lemmas.lean |
1 |
3 |
['eric-wieser', 'github-actions', 'xroblot'] |
nobody |
0-78590 21 hours ago |
1-6890 1 day ago |
1-6927 1 day |
| 31062 |
zcyemi author:zcyemi |
feat(Geometry/Euclidean/Similarity): add triangle similarity |
---
Add theorems about similarity of triangles.
[](https://gitpod.io/from-referrer/)
|
t-euclidean-geometry |
284/0 |
Mathlib.lean,Mathlib/Geometry/Euclidean/Similarity.lean,Mathlib/Topology/MetricSpace/Similarity.lean |
3 |
19 |
['github-actions', 'jsm28', 'zcyemi'] |
nobody |
0-78522 21 hours ago |
1-66463 1 day ago |
2-6916 2 days |
| 31591 |
gasparattila author:gasparattila |
chore(Topology/Sets): use prefix naming for `toCompacts` in `simps` |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
6/8 |
Mathlib/Topology/Sets/Compacts.lean |
1 |
1 |
['github-actions'] |
nobody |
0-76551 21 hours ago |
0-76554 21 hours ago |
0-76597 21 hours |
| 31592 |
gasparattila author:gasparattila |
chore(Tactic/Measurability): `fun_prop` lemmas for solving `MeasurableSet {x | ...}` goals |
Currently, lemmas of the form `MeasurableSet {x | ...}` cannot be used by `measurability`, because `simp` changes the goal to `Measurable fun x => ...`. This PR adds the necessary `fun_prop` lemmas so that they work with `measurability` (except for statements involving equality, which are done in #31512). This fixes #26620.
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
13/7 |
Mathlib/MeasureTheory/Constructions/BorelSpace/Order.lean,Mathlib/MeasureTheory/MeasurableSpace/Constructions.lean,MathlibTest/measurability.lean |
3 |
1 |
['github-actions'] |
nobody |
0-73322 20 hours ago |
0-73322 20 hours ago |
0-73362 20 hours |
| 31593 |
Ruben-VandeVelde author:Ruben-VandeVelde |
feat: some lemmas about MonoidAlgebra |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
26/0 |
Mathlib/Algebra/MonoidAlgebra/Basic.lean |
1 |
2 |
['github-actions', 'themathqueen'] |
nobody |
0-72686 20 hours ago |
0-73193 20 hours ago |
0-73250 20 hours |
| 31518 |
YaelDillies author:YaelDillies |
chore(LinearAlgebra/Matrix): import less analysis |
Follow up to #31480. Also fix a few namespacing issues that arose.
---
[](https://gitpod.io/from-referrer/)
|
file-removed
t-analysis
|
128/119 |
Mathlib.lean,Mathlib/Analysis/InnerProductSpace/GramMatrix.lean,Mathlib/Analysis/InnerProductSpace/Positive.lean,Mathlib/Analysis/Matrix/Hermitian.lean,Mathlib/Analysis/Matrix/LDL.lean,Mathlib/Analysis/Matrix/PosDef.lean,Mathlib/Analysis/Matrix/Spectrum.lean,Mathlib/LinearAlgebra/Matrix/Hermitian.lean,Mathlib/LinearAlgebra/Matrix/PosDef.lean |
9 |
19 |
['Ruben-VandeVelde', 'YaelDillies', 'github-actions', 'mathlib4-merge-conflict-bot', 'themathqueen'] |
nobody |
0-70652 19 hours ago |
2-1559 2 days ago |
2-29660 2 days |
| 31217 |
YaelDillies author:YaelDillies |
feat: turn a closed walk into a cycle |
From the ProofBench workshop
Closes #23637, which does the same thing under a stronger hypothesis on the starting closed walk.
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
50/18 |
Mathlib/Combinatorics/SimpleGraph/Acyclic.lean,Mathlib/Combinatorics/SimpleGraph/Paths.lean,Mathlib/Combinatorics/SimpleGraph/Trails.lean,Mathlib/Tactic/GCongr/CoreAttrs.lean |
4 |
8 |
['MrQubo', 'SnirBroshi', 'YaelDillies', 'github-actions'] |
nobody |
0-70115 19 hours ago |
10-81046 10 days ago |
10-81226 10 days |
| 31595 |
astrainfinita author:astrainfinita |
chore: redefine `Ideal.IsPrime` |
Redefine `Ideal.IsPrime` to make it correct for non-commutative cases
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
209/101 |
Mathlib/Algebra/Order/Ring/Ordering/Defs.lean,Mathlib/AlgebraicGeometry/StructureSheaf.lean,Mathlib/RingTheory/DedekindDomain/Ideal/Lemmas.lean,Mathlib/RingTheory/GradedAlgebra/Radical.lean,Mathlib/RingTheory/Ideal/AssociatedPrime/Basic.lean,Mathlib/RingTheory/Ideal/IsPrimary.lean,Mathlib/RingTheory/Ideal/Maps.lean,Mathlib/RingTheory/Ideal/Maximal.lean,Mathlib/RingTheory/Ideal/Oka.lean,Mathlib/RingTheory/Ideal/Operations.lean,Mathlib/RingTheory/Ideal/Over.lean,Mathlib/RingTheory/Ideal/Pointwise.lean,Mathlib/RingTheory/Ideal/Prime.lean,Mathlib/RingTheory/Ideal/Prod.lean,Mathlib/RingTheory/Ideal/Quotient/Basic.lean,Mathlib/RingTheory/Localization/AtPrime/Basic.lean,Mathlib/RingTheory/Localization/Ideal.lean,Mathlib/RingTheory/Polynomial/Basic.lean,Mathlib/RingTheory/PrincipalIdealDomain.lean,Mathlib/RingTheory/Spectrum/Prime/Topology.lean,Mathlib/RingTheory/Valuation/Basic.lean |
21 |
4 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
nobody |
0-67314 18 hours ago |
0-67314 18 hours ago |
0-72009 20 hours |
| 30071 |
Jlh18 author:Jlh18 |
feat: dualize Pseudofunctor.CoGrothendieck results to Pseudofunctor.Grothendieck |
Continuing from #29681, dualize all definitions and lemmas in the namespace `Pseudofunctor.CoGrothendieck` to results in the namespace `Pseudofunctor.Grothendieck`.
- [x] depends on: #29681
---
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
118/10 |
Mathlib/CategoryTheory/Bicategory/Grothendieck.lean |
1 |
16 |
['Jlh18', 'callesonne', 'dagurtomas', 'github-actions', 'joelriou', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
riccardobrasca assignee:riccardobrasca |
0-66105 18 hours ago |
0-66105 18 hours ago |
37-27783 37 days |
| 30594 |
j-loreaux author:j-loreaux |
feat: generalize continuity results for the continuous functional calculus |
Under suitable conditions `x ↦ cfc f (a x)` is continuous. Previously these conditions were that there was a single compact set on which `f` was continuous, and which contained the spectra of all `a x`. However, this is a bit too stringent for some purposes and so we generalize it here. In particular, it suffices that the spectra `a x` are covered by a family of compact sets `s x` (on each of which `f` is continuous) satisfying the property that each `s x₀` contains the spectra `a x` for `x` sufficiently close to `x₀`.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
144/53 |
Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/Continuity.lean |
1 |
4 |
['dupuisf', 'github-actions', 'j-loreaux'] |
ADedecker and dupuisf assignee:dupuisf assignee:ADedecker |
0-58488 16 hours ago |
29-46510 29 days ago |
29-46499 29 days |
| 30842 |
kim-em author:kim-em |
feat: add Aristotle task for command palette |
---
[](https://gitpod.io/from-referrer/)
|
CI |
128/0 |
.vscode/tasks.json,scripts/README.md,scripts/aristotle/README.md |
3 |
17 |
['eric-wieser', 'euprunin', 'github-actions', 'kim-em', 'vikram-shanker'] |
robertylewis assignee:robertylewis |
0-54567 15 hours ago |
21-22964 21 days ago |
21-23004 21 days |
| 31031 |
gasparattila author:gasparattila |
feat(Topology/UniformSpace): define the Hausdorff uniformity |
This PR defines the Hausdorff uniformity on `Closeds`, `Compacts` and `NonemptyCompacts`. Since `Closeds` and `NonemptyCompacts` already have metrics, they are changed to use the newly defined uniformity.
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
328/31 |
Mathlib.lean,Mathlib/Data/Rel.lean,Mathlib/Topology/MetricSpace/Closeds.lean,Mathlib/Topology/Order.lean,Mathlib/Topology/Sets/Compacts.lean,Mathlib/Topology/UniformSpace/Closeds.lean |
6 |
5 |
['gasparattila', 'github-actions', 'j-loreaux', 'mathlib4-merge-conflict-bot'] |
dagurtomas assignee:dagurtomas |
0-52801 14 hours ago |
8-71616 8 days ago |
16-49316 16 days |
| 27163 |
pechersky author:pechersky |
feat(Topology/ValuativeRel): of and to basis of compatible valuations |
---
[](https://gitpod.io/from-referrer/)
- [x] depends on: #30262 |
t-algebra
t-topology
t-number-theory
label:t-algebra$ |
227/62 |
Mathlib/NumberTheory/LocalField/Basic.lean,Mathlib/Order/Filter/Bases/Basic.lean,Mathlib/Topology/Algebra/Valued/ValuativeRel.lean |
3 |
71 |
['erdOne', 'github-actions', 'kckennylau', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'pechersky', 'smmercuri'] |
alreadydone assignee:alreadydone |
0-51538 14 hours ago |
2-48533 2 days ago |
84-62313 84 days |
| 31399 |
CoolRmal author:CoolRmal |
feat: Conditional expectation commutes with continuous linear functionals and affine functions. |
This lemma is needed in the proof of conditional Jensen's inequality: #27953
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-measure-probability
|
29/0 |
Mathlib/MeasureTheory/Function/ConditionalExpectation/Basic.lean |
1 |
17 |
['CoolRmal', 'EtienneC30', 'github-actions'] |
EtienneC30 assignee:EtienneC30 |
0-48036 13 hours ago |
0-48279 13 hours ago |
5-38817 5 days |
| 31161 |
AntoineChambert-Loir author:AntoineChambert-Loir |
feat(RingTheory/MvPolynomial/IrrQuadratic): irreducibility of sum X_i Y_i |
For $n\geq 2$, the polynomial $$\sum_{i=1}^n X_i Y_i$$ is irreducible.
This was used in the initial proof that the transvections have determinant 1. Now,
a more general result is proved there and this PR is no more needed.
I believe that it remains of independent interest (irreducibility of quadrics in algebraic geometry) but the maintainers might want that the general one.
---
[](https://gitpod.io/from-referrer/)
|
|
230/0 |
Mathlib.lean,Mathlib/Algebra/Polynomial/RingDivision.lean,Mathlib/RingTheory/MvPolynomial/IrrQuadratic.lean,Mathlib/RingTheory/MvPolynomial/MonomialOrder/DegLex.lean |
4 |
7 |
['AntoineChambert-Loir', 'github-actions', 'joelriou'] |
joelriou assignee:joelriou |
0-45576 12 hours ago |
0-73910 20 hours ago |
11-60999 11 days |
| 31605 |
euprunin author:euprunin |
chore(Combinatorics/SimpleGraph): golf `circulantGraph_eq_symm` using `grind` |
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
3/5 |
Mathlib/Combinatorics/SimpleGraph/Circulant.lean |
1 |
1 |
['github-actions'] |
nobody |
0-45049 12 hours ago |
0-45766 12 hours ago |
0-45813 12 hours |
| 31534 |
euprunin author:euprunin |
chore(Probability/ProbabilityMassFunction): golf entire `support_bindOnSupport` using `ext; simp` |
---
Show trace profiling of support_bindOnSupport: 85 ms before, 219 ms after
### Trace profiling of `support_bindOnSupport` before PR 31534
```diff
diff --git a/Mathlib/Probability/ProbabilityMassFunction/Monad.lean b/Mathlib/Probability/ProbabilityMassFunction/Monad.lean
index 876540f3fb..120616c4bd 100644
--- a/Mathlib/Probability/ProbabilityMassFunction/Monad.lean
+++ b/Mathlib/Probability/ProbabilityMassFunction/Monad.lean
@@ -198,6 +198,7 @@ variable {p : PMF α} (f : ∀ a ∈ p.support, PMF β)
theorem bindOnSupport_apply (b : β) :
p.bindOnSupport f b = ∑' a, p a * if h : p a = 0 then 0 else f a h b := rfl
+set_option trace.profiler true in
@[simp]
theorem support_bindOnSupport :
(p.bindOnSupport f).support = ⋃ (a : α) (h : a ∈ p.support), (f a h).support := by
```
```
ℹ [1634/1634] Built Mathlib.Probability.ProbabilityMassFunction.Monad (1.7s)
info: Mathlib/Probability/ProbabilityMassFunction/Monad.lean:202:0: [Elab.async] [0.086185] elaborating proof of PMF.support_bindOnSupport
[Elab.definition.value] [0.085203] PMF.support_bindOnSupport
[Elab.step] [0.084834]
refine Set.ext fun b => ?_
simp only [ENNReal.tsum_eq_zero, not_or, mem_support_iff, bindOnSupport_apply, Ne, not_forall, mul_eq_zero,
Set.mem_iUnion]
exact
⟨fun hb =>
let ⟨a, ⟨ha, ha'⟩⟩ := hb
⟨a, ha, by simpa [ha] using ha'⟩,
fun hb =>
let ⟨a, ha, ha'⟩ := hb
⟨a, ⟨ha, by simpa [(mem_support_iff _ a).1 ha] using ha'⟩⟩⟩
[Elab.step] [0.084829]
refine Set.ext fun b => ?_
simp only [ENNReal.tsum_eq_zero, not_or, mem_support_iff, bindOnSupport_apply, Ne, not_forall, mul_eq_zero,
Set.mem_iUnion]
exact
⟨fun hb =>
let ⟨a, ⟨ha, ha'⟩⟩ := hb
⟨a, ha, by simpa [ha] using ha'⟩,
fun hb =>
let ⟨a, ha, ha'⟩ := hb
⟨a, ⟨ha, by simpa [(mem_support_iff _ a).1 ha] using ha'⟩⟩⟩
[Elab.step] [0.018183] simp only [ENNReal.tsum_eq_zero, not_or, mem_support_iff, bindOnSupport_apply, Ne,
not_forall, mul_eq_zero, Set.mem_iUnion]
[Elab.step] [0.066410] exact
⟨fun hb =>
let ⟨a, ⟨ha, ha'⟩⟩ := hb
⟨a, ha, by simpa [ha] using ha'⟩,
fun hb =>
let ⟨a, ha, ha'⟩ := hb
⟨a, ⟨ha, by simpa [(mem_support_iff _ a).1 ha] using ha'⟩⟩⟩
[Elab.step] [0.015660] expected type: (∃ x, ¬p x = 0 ∧ ¬(if h : p x = 0 then 0 else (f x h) b) = 0) ↔
∃ i, ∃ (h : ¬p i = 0), ¬(f i ⋯) b = 0, term
⟨fun hb =>
let ⟨a, ⟨ha, ha'⟩⟩ := hb
⟨a, ha, by simpa [ha] using ha'⟩,
fun hb =>
let ⟨a, ha, ha'⟩ := hb
⟨a, ⟨ha, by simpa [(mem_support_iff _ a).1 ha] using ha'⟩⟩⟩
[Elab.step] [0.015638] expected type: (∃ x, ¬p x = 0 ∧ ¬(if h : p x = 0 then 0 else (f x h) b) = 0) ↔
∃ i, ∃ (h : ¬p i = 0), ¬(f i ⋯) b = 0, term
Iff.intro✝
(fun hb =>
let ⟨a, ⟨ha, ha'⟩⟩ := hb
⟨a, ha, by simpa [ha] using ha'⟩)
fun hb =>
let ⟨a, ha, ha'⟩ := hb
⟨a, ⟨ha, by simpa [(mem_support_iff _ a).1 ha] using ha'⟩⟩
[Elab.step] [0.026635] simpa [ha] using ha'
[Elab.step] [0.026629] simpa [ha] using ha'
[Elab.step] [0.026622] simpa [ha] using ha'
[Elab.step] [0.023173] simpa [(mem_support_iff _ a).1 ha] using ha'
[Elab.step] [0.023168] simpa [(mem_support_iff _ a).1 ha] using ha'
[Elab.step] [0.023160] simpa [(mem_support_iff _ a).1 ha] using ha'
Build completed successfully (1634 jobs).
```
### Trace profiling of `support_bindOnSupport` after PR 31534
```diff
diff --git a/Mathlib/Probability/ProbabilityMassFunction/Monad.lean b/Mathlib/Probability/ProbabilityMassFunction/Monad.lean
index 876540f3fb..1e5f9ddbe1 100644
--- a/Mathlib/Probability/ProbabilityMassFunction/Monad.lean
+++ b/Mathlib/Probability/ProbabilityMassFunction/Monad.lean
@@ -198,19 +198,12 @@ variable {p : PMF α} (f : ∀ a ∈ p.support, PMF β)
theorem bindOnSupport_apply (b : β) :
p.bindOnSupport f b = ∑' a, p a * if h : p a = 0 then 0 else f a h b := rfl
+set_option trace.profiler true in
@[simp]
theorem support_bindOnSupport :
(p.bindOnSupport f).support = ⋃ (a : α) (h : a ∈ p.support), (f a h).support := by
- refine Set.ext fun b => ?_
- simp only [ENNReal.tsum_eq_zero, not_or, mem_support_iff, bindOnSupport_apply, Ne, not_forall,
- mul_eq_zero, Set.mem_iUnion]
- exact
- ⟨fun hb =>
- let ⟨a, ⟨ha, ha'⟩⟩ := hb
- ⟨a, ha, by simpa [ha] using ha'⟩,
- fun hb =>
- let ⟨a, ha, ha'⟩ := hb
- ⟨a, ⟨ha, by simpa [(mem_support_iff _ a).1 ha] using ha'⟩⟩⟩
+ ext
+ simp
theorem mem_support_bindOnSupport_iff (b : β) :
b ∈ (p.bindOnSupport f).support ↔ ∃ (a : α) (h : a ∈ p.support), b ∈ (f a h).support := by
```
```
ℹ [1634/1634] Built Mathlib.Probability.ProbabilityMassFunction.Monad (1.6s)
info: Mathlib/Probability/ProbabilityMassFunction/Monad.lean:202:0: [Elab.async] [0.219192] elaborating proof of PMF.support_bindOnSupport
[Elab.definition.value] [0.218516] PMF.support_bindOnSupport
[Elab.step] [0.217487]
ext
simp
[Elab.step] [0.217480]
ext
simp
[Elab.step] [0.217277] simp
[Meta.Tactic.simp.discharge] [0.024024] tsum_empty discharge ❌️
IsEmpty α
[Meta.synthInstance] [0.023614] ❌️ Nonempty α
Build completed successfully (1634 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
2/10 |
Mathlib/Probability/ProbabilityMassFunction/Monad.lean |
1 |
1 |
['github-actions'] |
nobody |
0-45025 12 hours ago |
2-2761 2 days ago |
2-2803 2 days |
| 31598 |
euprunin author:euprunin |
chore(Data/List): golf `ofFn_eq_pmap` using `ext; grind` |
---
Show trace profiling of ofFn_eq_pmap: 24 ms before, 74 ms after
### Trace profiling of `ofFn_eq_pmap` before PR 31598
```diff
diff --git a/Mathlib/Data/List/FinRange.lean b/Mathlib/Data/List/FinRange.lean
index 85f6e14dba..6e76b6640f 100644
--- a/Mathlib/Data/List/FinRange.lean
+++ b/Mathlib/Data/List/FinRange.lean
@@ -76,6 +76,7 @@ theorem map_coe_finRange (n : ℕ) : ((finRange n) : List (Fin n)).map (Fin.val)
theorem finRange_succ_eq_map (n : ℕ) : finRange n.succ = 0 :: (finRange n).map Fin.succ :=
finRange_succ
+set_option trace.profiler true in
theorem ofFn_eq_pmap {n} {f : Fin n → α} :
ofFn f = pmap (fun i hi => f ⟨i, hi⟩) (range n) fun _ => mem_range.1 := by
rw [pmap_eq_map_attach]
```
```
ℹ [529/529] Built Mathlib.Data.List.FinRange (1.0s)
info: Mathlib/Data/List/FinRange.lean:80:0: [Elab.async] [0.024331] elaborating proof of List.ofFn_eq_pmap
[Elab.definition.value] [0.023824] List.ofFn_eq_pmap
[Elab.step] [0.023649]
rw [pmap_eq_map_attach]
exact ext_getElem (by simp) fun i hi1 hi2 => by simp [List.getElem_ofFn hi1]
[Elab.step] [0.023643]
rw [pmap_eq_map_attach]
exact ext_getElem (by simp) fun i hi1 hi2 => by simp [List.getElem_ofFn hi1]
[Elab.step] [0.022707] exact ext_getElem (by simp) fun i hi1 hi2 => by simp [List.getElem_ofFn hi1]
[Elab.step] [0.012198] simp [List.getElem_ofFn hi1]
[Elab.step] [0.012193] simp [List.getElem_ofFn hi1]
[Elab.step] [0.012186] simp [List.getElem_ofFn hi1]
Build completed successfully (529 jobs).
```
### Trace profiling of `ofFn_eq_pmap` after PR 31598
```diff
diff --git a/Mathlib/Data/List/FinRange.lean b/Mathlib/Data/List/FinRange.lean
index 85f6e14dba..5ef8e4c1d0 100644
--- a/Mathlib/Data/List/FinRange.lean
+++ b/Mathlib/Data/List/FinRange.lean
@@ -76,10 +76,11 @@ theorem map_coe_finRange (n : ℕ) : ((finRange n) : List (Fin n)).map (Fin.val)
theorem finRange_succ_eq_map (n : ℕ) : finRange n.succ = 0 :: (finRange n).map Fin.succ :=
finRange_succ
+set_option trace.profiler true in
theorem ofFn_eq_pmap {n} {f : Fin n → α} :
ofFn f = pmap (fun i hi => f ⟨i, hi⟩) (range n) fun _ => mem_range.1 := by
- rw [pmap_eq_map_attach]
- exact ext_getElem (by simp) fun i hi1 hi2 => by simp [List.getElem_ofFn hi1]
+ ext
+ grind
theorem ofFn_id (n) : ofFn id = finRange n :=
rfl
```
```
ℹ [529/529] Built Mathlib.Data.List.FinRange (1.0s)
info: Mathlib/Data/List/FinRange.lean:80:0: [Elab.async] [0.074365] elaborating proof of List.ofFn_eq_pmap
[Elab.definition.value] [0.074039] List.ofFn_eq_pmap
[Elab.step] [0.073924]
ext
grind
[Elab.step] [0.073917]
ext
grind
[Elab.step] [0.073402] grind
Build completed successfully (529 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-data |
2/2 |
Mathlib/Data/List/FinRange.lean |
1 |
1 |
['github-actions'] |
nobody |
0-44844 12 hours ago |
0-58819 16 hours ago |
0-58869 16 hours |
| 31597 |
grunweg author:grunweg |
chore(AtLocation): allow throwing a warning when no progress is being made |
A future PR will use this to make `by_contra!` and friends warn if the `push_neg` step makes no progress.
Co-authored by: Jovan Gerbscheid
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
46/28 |
Mathlib/Tactic/Abel.lean,Mathlib/Tactic/Field.lean,Mathlib/Tactic/FieldSimp.lean,Mathlib/Tactic/NormNum/Core.lean,Mathlib/Tactic/Push.lean,Mathlib/Tactic/ReduceModChar.lean,Mathlib/Tactic/Ring/RingNF.lean,Mathlib/Util/AtLocation.lean,MathlibTest/FieldSimp.lean,MathlibTest/abel.lean |
10 |
1 |
['JovanGerb', 'github-actions'] |
nobody |
0-44842 12 hours ago |
0-44842 12 hours ago |
0-44825 12 hours |
| 31599 |
euprunin author:euprunin |
chore(Data/List): golf `insertIdx_pmap` using `ext; grind` |
---
Show trace profiling of insertIdx_pmap: 51 ms before, 285 ms after
### Trace profiling of `insertIdx_pmap` before PR 31599
```diff
diff --git a/Mathlib/Data/List/InsertIdx.lean b/Mathlib/Data/List/InsertIdx.lean
index b90a16262e..43de114107 100644
--- a/Mathlib/Data/List/InsertIdx.lean
+++ b/Mathlib/Data/List/InsertIdx.lean
@@ -63,6 +63,7 @@ theorem insertIdx_subset_cons (n : ℕ) (a : α) (l : List α) : l.insertIdx n a
intro b hb
simpa using eq_or_mem_of_mem_insertIdx hb
+set_option trace.profiler true in
theorem insertIdx_pmap {p : α → Prop} (f : ∀ a, p a → β) {l : List α} {a : α} {n : ℕ}
(hl : ∀ x ∈ l, p x) (ha : p a) :
(l.pmap f hl).insertIdx n (f a ha) = (l.insertIdx n a).pmap f
```
```
ℹ [452/452] Built Mathlib.Data.List.InsertIdx (997ms)
info: Mathlib/Data/List/InsertIdx.lean:67:0: [Elab.async] [0.051760] elaborating proof of List.insertIdx_pmap
[Elab.definition.value] [0.050893] List.insertIdx_pmap
[Elab.step] [0.050251] induction n generalizing l with
| zero => cases l <;> simp
| succ n ihn => cases l <;> simp_all
[Elab.step] [0.050245] induction n generalizing l with
| zero => cases l <;> simp
| succ n ihn => cases l <;> simp_all
[Elab.step] [0.050239] induction n generalizing l with
| zero => cases l <;> simp
| succ n ihn => cases l <;> simp_all
[Elab.step] [0.046111] cases l <;> simp_all
[Elab.step] [0.046075] cases l <;> simp_all
[Elab.step] [0.046069] (cases l) <;> simp_all
[Elab.step] [0.046061] focus
cases l
with_annotate_state"<;>" skip
all_goals simp_all
[Elab.step] [0.046055]
cases l
with_annotate_state"<;>" skip
all_goals simp_all
[Elab.step] [0.046051]
cases l
with_annotate_state"<;>" skip
all_goals simp_all
[Elab.step] [0.045526] all_goals simp_all
[Elab.step] [0.024558] simp_all
[Elab.step] [0.024554] simp_all
[Elab.step] [0.024544] simp_all
[Meta.Tactic.simp.discharge] [0.017061] IsEmpty.forall_iff discharge ❌️
IsEmpty (∀ (x : α), x ∈ l → p x)
[Elab.step] [0.020878] simp_all
[Elab.step] [0.020871] simp_all
[Elab.step] [0.020864] simp_all
[Meta.Tactic.simp.discharge] [0.012786] IsEmpty.forall_iff discharge ❌️
IsEmpty (∀ (x : α), x ∈ l → p x)
Build completed successfully (452 jobs).
```
### Trace profiling of `insertIdx_pmap` after PR 31599
```diff
diff --git a/Mathlib/Data/List/InsertIdx.lean b/Mathlib/Data/List/InsertIdx.lean
index b90a16262e..77ecfea7cb 100644
--- a/Mathlib/Data/List/InsertIdx.lean
+++ b/Mathlib/Data/List/InsertIdx.lean
@@ -63,13 +63,13 @@ theorem insertIdx_subset_cons (n : ℕ) (a : α) (l : List α) : l.insertIdx n a
intro b hb
simpa using eq_or_mem_of_mem_insertIdx hb
+set_option trace.profiler true in
theorem insertIdx_pmap {p : α → Prop} (f : ∀ a, p a → β) {l : List α} {a : α} {n : ℕ}
(hl : ∀ x ∈ l, p x) (ha : p a) :
(l.pmap f hl).insertIdx n (f a ha) = (l.insertIdx n a).pmap f
(fun _ h ↦ (eq_or_mem_of_mem_insertIdx h).elim (fun heq ↦ heq ▸ ha) (hl _)) := by
- induction n generalizing l with
- | zero => cases l <;> simp
- | succ n ihn => cases l <;> simp_all
+ ext
+ grind
theorem map_insertIdx (f : α → β) (l : List α) (n : ℕ) (a : α) :
(l.insertIdx n a).map f = (l.map f).insertIdx n (f a) := by
```
```
ℹ [452/452] Built Mathlib.Data.List.InsertIdx (1.2s)
info: Mathlib/Data/List/InsertIdx.lean:67:0: [Elab.async] [0.286042] elaborating proof of List.insertIdx_pmap
[Elab.definition.value] [0.284883] List.insertIdx_pmap
[Elab.step] [0.284702]
ext
grind
[Elab.step] [0.284696]
ext
grind
[Elab.step] [0.284160] grind
info: Mathlib/Data/List/InsertIdx.lean:72:2: [Elab.async] [0.012667] Lean.addDecl
[Kernel] [0.012657] ✅️ typechecking declarations [List.insertIdx_pmap._proof_1_47]
Build completed successfully (452 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-data |
2/3 |
Mathlib/Data/List/InsertIdx.lean |
1 |
1 |
['github-actions'] |
nobody |
0-44804 12 hours ago |
0-58606 16 hours ago |
0-58651 16 hours |
| 31602 |
euprunin author:euprunin |
chore(Data/Set): golf `image_sUnion` using `grind` |
---
Show trace profiling of image_sUnion: 11 ms before, 32 ms after
### Trace profiling of `image_sUnion` before PR 31602
```diff
diff --git a/Mathlib/Data/Set/Lattice/Image.lean b/Mathlib/Data/Set/Lattice/Image.lean
index 5f342155da..e416a9f7d3 100644
--- a/Mathlib/Data/Set/Lattice/Image.lean
+++ b/Mathlib/Data/Set/Lattice/Image.lean
@@ -391,6 +391,7 @@ theorem preimage_iUnion {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋃ i, s
theorem preimage_iUnion₂ {f : α → β} {s : ∀ i, κ i → Set β} :
(f ⁻¹' ⋃ (i) (j), s i j) = ⋃ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_iUnion]
+set_option trace.profiler true in
theorem image_sUnion {f : α → β} {s : Set (Set α)} : (f '' ⋃₀ s) = ⋃₀ (image f '' s) := by
ext b
simp only [mem_image, mem_sUnion, exists_prop, sUnion_image, mem_iUnion]
```
```
ℹ [414/414] Built Mathlib.Data.Set.Lattice.Image (1.9s)
info: Mathlib/Data/Set/Lattice/Image.lean:395:0: [Elab.async] [0.011457] elaborating proof of Set.image_sUnion
[Elab.definition.value] [0.010753] Set.image_sUnion
[Elab.step] [0.010230]
ext b
simp only [mem_image, mem_sUnion, exists_prop, sUnion_image, mem_iUnion]
constructor
· rintro ⟨a, ⟨t, ht₁, ht₂⟩, rfl⟩
exact ⟨t, ht₁, a, ht₂, rfl⟩
· rintro ⟨t, ht₁, a, ht₂, rfl⟩
exact ⟨a, ⟨t, ht₁, ht₂⟩, rfl⟩
[Elab.step] [0.010223]
ext b
simp only [mem_image, mem_sUnion, exists_prop, sUnion_image, mem_iUnion]
constructor
· rintro ⟨a, ⟨t, ht₁, ht₂⟩, rfl⟩
exact ⟨t, ht₁, a, ht₂, rfl⟩
· rintro ⟨t, ht₁, a, ht₂, rfl⟩
exact ⟨a, ⟨t, ht₁, ht₂⟩, rfl⟩
Build completed successfully (414 jobs).
```
### Trace profiling of `image_sUnion` after PR 31602
```diff
diff --git a/Mathlib/Data/Set/Lattice/Image.lean b/Mathlib/Data/Set/Lattice/Image.lean
index 5f342155da..010feb9b00 100644
--- a/Mathlib/Data/Set/Lattice/Image.lean
+++ b/Mathlib/Data/Set/Lattice/Image.lean
@@ -391,14 +391,11 @@ theorem preimage_iUnion {f : α → β} {s : ι → Set β} : (f ⁻¹' ⋃ i, s
theorem preimage_iUnion₂ {f : α → β} {s : ∀ i, κ i → Set β} :
(f ⁻¹' ⋃ (i) (j), s i j) = ⋃ (i) (j), f ⁻¹' s i j := by simp_rw [preimage_iUnion]
+set_option trace.profiler true in
theorem image_sUnion {f : α → β} {s : Set (Set α)} : (f '' ⋃₀ s) = ⋃₀ (image f '' s) := by
- ext b
- simp only [mem_image, mem_sUnion, exists_prop, sUnion_image, mem_iUnion]
- constructor
- · rintro ⟨a, ⟨t, ht₁, ht₂⟩, rfl⟩
- exact ⟨t, ht₁, a, ht₂, rfl⟩
- · rintro ⟨t, ht₁, a, ht₂, rfl⟩
- exact ⟨a, ⟨t, ht₁, ht₂⟩, rfl⟩
+ ext
+ simp only [Set.mem_iUnion, Set.sUnion_image]
+ grind
@[simp]
theorem preimage_sUnion {f : α → β} {s : Set (Set β)} : f ⁻¹' ⋃₀ s = ⋃ t ∈ s, f ⁻¹' t := by
```
```
ℹ [414/414] Built Mathlib.Data.Set.Lattice.Image (1.9s)
info: Mathlib/Data/Set/Lattice/Image.lean:395:0: [Elab.async] [0.031914] elaborating proof of Set.image_sUnion
[Elab.definition.value] [0.031515] Set.image_sUnion
[Elab.step] [0.031392]
ext
simp only [Set.mem_iUnion, Set.sUnion_image]
grind
[Elab.step] [0.031386]
ext
simp only [Set.mem_iUnion, Set.sUnion_image]
grind
[Elab.step] [0.026423] grind
Build completed successfully (414 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-data |
3/7 |
Mathlib/Data/Set/Lattice/Image.lean |
1 |
1 |
['github-actions'] |
nobody |
0-44763 12 hours ago |
0-52406 14 hours ago |
0-52447 14 hours |
| 31563 |
EtienneC30 author:EtienneC30 |
feat: small lemma about InnerProductSpace.toDual |
Prove `toDual 𝕜 E x = toDualMap 𝕜 E x`.
---
[](https://gitpod.io/from-referrer/)
|
t-analysis |
7/0 |
Mathlib/Analysis/InnerProductSpace/Dual.lean |
1 |
7 |
['EtienneC30', 'github-actions', 'themathqueen'] |
nobody |
0-43106 11 hours ago |
1-46835 1 day ago |
1-46883 1 day |
| 31603 |
alreadydone author:alreadydone |
chore(Algebra): make `RatFunc` an abbrev |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
RFC
label:t-algebra$ |
81/431 |
Mathlib/FieldTheory/Laurent.lean,Mathlib/FieldTheory/RatFunc/AsPolynomial.lean,Mathlib/FieldTheory/RatFunc/Basic.lean,Mathlib/FieldTheory/RatFunc/Defs.lean |
4 |
4 |
['github-actions', 'leanprover-bot', 'leanprover-community-mathlib4-bot'] |
nobody |
0-42362 11 hours ago |
0-42362 11 hours ago |
0-44826 12 hours |
| 31510 |
JovanGerb author:JovanGerb |
feat(contrapose): cancel negations, and support `↔` |
This PR introduces two features for `contrapose`:
- `contrapose` applied to a goal `p ↔ q` creates the goal `¬p ↔ ¬q`.
- Instead of creating double negations, contrapose will try to cancel out double negations that it creates.
This will allow for replacing some occurrences of `contrapose!` with `contrapose` (TODO: write a linter for this?). It also allows avoiding classical logic in some cases.
[Zulip discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/RFC.3A.20contrapose.20for.20.60a.20.E2.86.94.20b.60/with/554945103)
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-meta
|
172/18 |
Mathlib/LinearAlgebra/LinearIndependent/Lemmas.lean,Mathlib/LinearAlgebra/RootSystem/GeckConstruction/Semisimple.lean,Mathlib/RingTheory/Localization/Integral.lean,Mathlib/RingTheory/Valuation/ValuationRing.lean,Mathlib/Tactic/Contrapose.lean,MathlibTest/Contrapose.lean |
6 |
21 |
['JovanGerb', 'github-actions', 'grunweg', 'leanprover-bot'] |
nobody |
0-41001 11 hours ago |
1-77160 1 day ago |
2-3546 2 days |
| 31609 |
JovanGerb author:JovanGerb |
fix(rw??): `whnf` on equality hypotheses |
This PR adds some missing `whnf` in the `rw??` implementation. This only affects the behaviour of rewriting with local variables.
I discovered that sometimes the type can be an uninstantiated metavariable that needs to first instantiated, for example by using `whnf`.
---
[](https://gitpod.io/from-referrer/)
|
t-meta |
6/6 |
Mathlib/Tactic/Widget/LibraryRewrite.lean |
1 |
1 |
['github-actions'] |
nobody |
0-40443 11 hours ago |
0-40448 11 hours ago |
0-40486 11 hours |
| 31247 |
rudynicolop author:rudynicolop |
feat(Computability/DFA): add DFA complement, union, and intersection |
Add theorems for DFA complement, union, and intersection closure, and prove that regular languages are closed under complement, union, and intersection.
Note there's a [zulip discussion](https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/Regular.20languages.3A.20the.20review.20queue/with/553522644) regarding PRs for regular languages (also tracked in #24205). Admittedly, this is yet another PR, and this may prove obsolete if other PRs are merged first. In particular, this PR competes with #20238 and #15651.
---
[](https://gitpod.io/from-referrer/)
|
t-computability
new-contributor
|
124/5 |
Mathlib/Computability/DFA.lean,Mathlib/Computability/Language.lean |
2 |
34 |
['ctchou', 'github-actions', 'rudynicolop', 'staroperator'] |
nobody |
0-38145 10 hours ago |
10-5695 10 days ago |
10-5732 10 days |
| 31523 |
kim-em author:kim-em |
chore: fix version comparison in lake update hook |
|
|
5/2 |
lakefile.lean |
1 |
3 |
['eric-wieser', 'github-actions', 'kim-em'] |
nobody |
0-36737 10 hours ago |
0-36790 10 hours ago |
2-6720 2 days |
| 27508 |
chrisflav author:chrisflav |
feat(RingTheory): height under ring homomorphism |
We show that if `P` lies over `p`, the height of `P` is bounded by the height of `p` plus the height of the image of `P` in `S ⧸ p S`.
In a follow-up PR, we show that equality holds if `S` satisfies going-down as an `R`-algebra.
Co-authored by: Sihan Su
Co-authored by: Yi Song
---
- [x] depends on: #28520
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
large-import
|
101/1 |
Mathlib/RingTheory/Ideal/KrullsHeightTheorem.lean,Mathlib/RingTheory/Ideal/MinimalPrime/Basic.lean,Mathlib/RingTheory/Ideal/Over.lean,Mathlib/RingTheory/Ideal/Quotient/Operations.lean |
4 |
17 |
['YaelDillies', 'chrisflav', 'erdOne', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
mariainesdff assignee:mariainesdff |
0-33621 9 hours ago |
3-76514 3 days ago |
10-20084 10 days |
| 27821 |
BGuillemet author:BGuillemet |
feat(CategoryTheory/Sites/Sheaf): functorial version of Sheaf.homEquiv |
Add two functorial versions of Sheaf.homEquiv, one using `yoneda` and the other using `coyoneda`.
---
- [ ] depends on: #27819
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-category-theory
|
23/1 |
Mathlib/CategoryTheory/Sites/Sheaf.lean |
1 |
4 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
adamtopaz assignee:adamtopaz |
0-33620 9 hours ago |
4-59567 4 days ago |
4-64025 4 days |
| 29565 |
joelriou author:joelriou |
feat(CategoryTheory): dense functors |
A functor `F : C ⥤ D` is dense if `𝟭 D` is a pointwise left Kan extension of `F` along itself, i.e. any `Y : D` is the
colimit of all `F.obj X` for all morphisms `F.obj X ⟶ Y` (which is the condition `F.DenseAt Y`). When `F` is full, we show that this is equivalent to saying that the restricted Yoneda functor `D ⥤ Cᵒᵖ ⥤ Type _` is fully faithful. We also show that the range of a dense functor is a strong generator.
---
- [x] depends on: #30269
- [x] depends on: #29556
- [x] depends on: #29519
- [x] depends on: #29518
- [x] depends on: #29543
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
126/0 |
Mathlib.lean,Mathlib/CategoryTheory/Functor/KanExtension/Dense.lean |
2 |
6 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
jcommelin assignee:jcommelin |
0-33619 9 hours ago |
5-46494 5 days ago |
5-46470 5 days |
| 31149 |
riccardobrasca author:riccardobrasca |
feat: power series over a noetherian ring is noetherian |
We add that the power series ring over a noetherian ring is noetherian.
---
[](https://gitpod.io/from-referrer/)
|
t-ring-theory
maintainer-merge
|
287/3 |
Mathlib.lean,Mathlib/Algebra/Module/SpanRank.lean,Mathlib/RingTheory/PowerSeries/Ideal.lean,Mathlib/RingTheory/PowerSeries/Trunc.lean,docs/references.bib |
5 |
40 |
['copilot-pull-request-reviewer', 'erdOne', 'github-actions', 'riccardobrasca', 'yapudpill'] |
erdOne assignee:erdOne |
0-33617 9 hours ago |
4-43558 4 days ago |
11-7073 11 days |
| 31198 |
YaelDillies author:YaelDillies |
feat(Algebra): characterise when a quotient is nontrivial |
From BrauerGroup and ClassFieldTheory
---
[](https://gitpod.io/from-referrer/)
|
CFT
large-import
t-algebra
label:t-algebra$ |
167/133 |
Mathlib/Algebra/Lie/Engel.lean,Mathlib/Algebra/Lie/Subalgebra.lean,Mathlib/Algebra/Module/Submodule/Lattice.lean,Mathlib/Data/Setoid/Basic.lean,Mathlib/GroupTheory/Congruence/Defs.lean,Mathlib/GroupTheory/Congruence/Hom.lean,Mathlib/GroupTheory/CosetCover.lean,Mathlib/GroupTheory/QuotientGroup/Defs.lean,Mathlib/LinearAlgebra/Dual/Lemmas.lean,Mathlib/LinearAlgebra/FiniteDimensional/Lemmas.lean,Mathlib/LinearAlgebra/Quotient/Basic.lean,Mathlib/LinearAlgebra/Quotient/Defs.lean,Mathlib/NumberTheory/RamificationInertia/Basic.lean,Mathlib/RingTheory/AdjoinRoot.lean,Mathlib/RingTheory/ClassGroup.lean,Mathlib/RingTheory/Congruence/Basic.lean,Mathlib/RingTheory/Congruence/Defs.lean,Mathlib/RingTheory/Flat/FaithfullyFlat/Basic.lean,Mathlib/RingTheory/Ideal/AssociatedPrime/Finiteness.lean,Mathlib/RingTheory/Ideal/Over.lean,Mathlib/RingTheory/Ideal/Quotient/Basic.lean,Mathlib/RingTheory/Jacobson/Ring.lean,Mathlib/RingTheory/KrullDimension/NonZeroDivisors.lean,Mathlib/RingTheory/KrullDimension/Regular.lean,Mathlib/RingTheory/LocalRing/Quotient.lean,Mathlib/RingTheory/NoetherNormalization.lean,Mathlib/RingTheory/PowerSeries/WeierstrassPreparation.lean,Mathlib/RingTheory/Regular/Depth.lean,Mathlib/RingTheory/Regular/RegularSequence.lean,Mathlib/RingTheory/Support.lean,Mathlib/RingTheory/TensorProduct/Finite.lean,Mathlib/RingTheory/Unramified/LocalRing.lean |
32 |
2 |
['github-actions', 'mathlib4-merge-conflict-bot'] |
kim-em assignee:kim-em |
0-33617 9 hours ago |
3-55910 3 days ago |
11-49935 11 days |
| 31235 |
CoolRmal author:CoolRmal |
feat (Topology): IsCompletelyPseudoMetrizable |
Introduce the notion of IsCompletelyPseudoMetrizable. The main motivation is to prove the first Baire theorem for a completely pseudometrizable space.
Zulip discussion: https://leanprover.zulipchat.com/#narrow/channel/287929-mathlib4/topic/First.20Baire.20theorem
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
146/30 |
Mathlib/Topology/Baire/CompleteMetrizable.lean,Mathlib/Topology/MetricSpace/Isometry.lean,Mathlib/Topology/Metrizable/CompletelyMetrizable.lean |
3 |
16 |
['CoolRmal', 'EtienneC30', 'github-actions'] |
j-loreaux assignee:j-loreaux |
0-33616 9 hours ago |
5-30803 5 days ago |
10-12872 10 days |
| 31237 |
euprunin author:euprunin |
chore(Logic/Equiv): golf entire `Perm.subtypeCongr.symm` using `rfl` |
---
Show trace profiling of Perm.subtypeCongr.symm: 15 ms before, <10 ms after 🎉
### Trace profiling of `Perm.subtypeCongr.symm` before PR 31237
```diff
diff --git a/Mathlib/Logic/Equiv/Basic.lean b/Mathlib/Logic/Equiv/Basic.lean
index 0c39837098..557e0228df 100644
--- a/Mathlib/Logic/Equiv/Basic.lean
+++ b/Mathlib/Logic/Equiv/Basic.lean
@@ -83,6 +83,7 @@ theorem Perm.subtypeCongr.refl :
ext x
by_cases h : p x <;> simp [h]
+set_option trace.profiler true in
@[simp]
theorem Perm.subtypeCongr.symm : (ep.subtypeCongr en).symm = Perm.subtypeCongr ep.symm en.symm := by
ext x
```
```
ℹ [310/310] Built Mathlib.Logic.Equiv.Basic (1.5s)
info: Mathlib/Logic/Equiv/Basic.lean:87:0: [Elab.async] [0.015219] elaborating proof of Equiv.Perm.subtypeCongr.symm
[Elab.definition.value] [0.014659] Equiv.Perm.subtypeCongr.symm
[Elab.step] [0.014391]
ext x
by_cases h : p x
· have : p (ep.symm ⟨x, h⟩) := Subtype.property _
simp [h, symm_apply_eq, this]
· have : ¬p (en.symm ⟨x, h⟩) := Subtype.property (en.symm _)
simp [h, symm_apply_eq, this]
[Elab.step] [0.014380]
ext x
by_cases h : p x
· have : p (ep.symm ⟨x, h⟩) := Subtype.property _
simp [h, symm_apply_eq, this]
· have : ¬p (en.symm ⟨x, h⟩) := Subtype.property (en.symm _)
simp [h, symm_apply_eq, this]
Build completed successfully (310 jobs).
```
### Trace profiling of `Perm.subtypeCongr.symm` after PR 31237
```diff
diff --git a/Mathlib/Logic/Equiv/Basic.lean b/Mathlib/Logic/Equiv/Basic.lean
index 0c39837098..f3cfa176a3 100644
--- a/Mathlib/Logic/Equiv/Basic.lean
+++ b/Mathlib/Logic/Equiv/Basic.lean
@@ -83,14 +83,10 @@ theorem Perm.subtypeCongr.refl :
ext x
by_cases h : p x <;> simp [h]
+set_option trace.profiler true in
@[simp]
-theorem Perm.subtypeCongr.symm : (ep.subtypeCongr en).symm = Perm.subtypeCongr ep.symm en.symm := by
- ext x
- by_cases h : p x
- · have : p (ep.symm ⟨x, h⟩) := Subtype.property _
- simp [h, symm_apply_eq, this]
- · have : ¬p (en.symm ⟨x, h⟩) := Subtype.property (en.symm _)
- simp [h, symm_apply_eq, this]
+theorem Perm.subtypeCongr.symm : (ep.subtypeCongr en).symm = Perm.subtypeCongr ep.symm en.symm :=
+ rfl
@[simp]
theorem Perm.subtypeCongr.trans :
```
```
ℹ [310/310] Built Mathlib.Logic.Equiv.Basic (1.5s)
info: Mathlib/Logic/Equiv/Basic.lean:87:0: [Elab.async] [0.010065] elaborating proof of Equiv.Perm.subtypeCongr.symm
Build completed successfully (310 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-logic |
2/7 |
Mathlib/Logic/Equiv/Basic.lean |
1 |
1 |
['github-actions'] |
fpvandoorn assignee:fpvandoorn |
0-33615 9 hours ago |
10-42824 10 days ago |
10-42861 10 days |
| 31286 |
bryangingechen author:bryangingechen |
ci: make new contributor labeling work for users with a private profile |
The search API we switched to in #30859 returns an error when we try to filter for users with a private profile ([example log](https://github.com/leanprover-community/mathlib4/actions/runs/19093647472/job/54548944242?pr=31272)). We switch to searching for closed issues in the repo, which was working before. We then filter these for closed PRs whose titles start with `[Merged by bors] -`.
We also include a slight optimization so that we don't have to page through all of a user's closed issues but stop when we find enough that count as merged PRs (>5 at the moment).
written with help from Claude
---
[](https://gitpod.io/from-referrer/)
|
CI |
41/16 |
.github/workflows/label_new_contributor.yml |
1 |
8 |
['Ruben-VandeVelde', 'bryangingechen', 'github-actions'] |
robertylewis assignee:robertylewis |
0-33614 9 hours ago |
8-70505 8 days ago |
8-70544 8 days |
| 31363 |
euprunin author:euprunin |
chore(LinearAlgebra/AffineSpace): golf entire `attach_affineCombination_of_injective` using `simp` |
---
Show trace profiling of attach_affineCombination_of_injective: 39 ms before, 83 ms after
### Trace profiling of `attach_affineCombination_of_injective` before PR 31363
```diff
diff --git a/Mathlib/LinearAlgebra/AffineSpace/Combination.lean b/Mathlib/LinearAlgebra/AffineSpace/Combination.lean
index dbcbffbf97..80a6e546e8 100644
--- a/Mathlib/LinearAlgebra/AffineSpace/Combination.lean
+++ b/Mathlib/LinearAlgebra/AffineSpace/Combination.lean
@@ -399,6 +399,7 @@ theorem affineCombination_vsub (w₁ w₂ : ι → k) (p : ι → P) :
s.affineCombination k p w₁ -ᵥ s.affineCombination k p w₂ = s.weightedVSub p (w₁ - w₂) := by
rw [← AffineMap.linearMap_vsub, affineCombination_linear, vsub_eq_sub]
+set_option trace.profiler true in
theorem attach_affineCombination_of_injective [DecidableEq P] (s : Finset P) (w : P → k) (f : s → P)
(hf : Function.Injective f) :
s.attach.affineCombination k f (w ∘ f) = (image f univ).affineCombination k id w := by
```
```
ℹ [1120/1120] Built Mathlib.LinearAlgebra.AffineSpace.Combination (2.4s)
info: Mathlib/LinearAlgebra/AffineSpace/Combination.lean:403:0: [Elab.command] [0.011952] theorem attach_affineCombination_of_injective [DecidableEq P] (s : Finset P) (w : P → k)
(f : s → P) (hf : Function.Injective f) :
s.attach.affineCombination k f (w ∘ f) = (image f univ).affineCombination k id w :=
by
simp only [affineCombination, weightedVSubOfPoint_apply, id, vadd_right_cancel_iff, Function.comp_apply,
AffineMap.coe_mk]
let g₁ : s → V := fun i => w (f i) • (f i -ᵥ Classical.choice S.nonempty)
let g₂ : P → V := fun i => w i • (i -ᵥ Classical.choice S.nonempty)
change univ.sum g₁ = (image f univ).sum g₂
have hgf : g₁ = g₂ ∘ f := by
ext
simp [g₁, g₂]
rw [hgf, sum_image]
· simp only [g₂, Function.comp_apply]
· exact fun _ _ _ _ hxy => hf hxy
info: Mathlib/LinearAlgebra/AffineSpace/Combination.lean:403:0: [Elab.async] [0.041027] elaborating proof of Finset.attach_affineCombination_of_injective
[Elab.definition.value] [0.039381] Finset.attach_affineCombination_of_injective
[Elab.step] [0.038759]
simp only [affineCombination, weightedVSubOfPoint_apply, id, vadd_right_cancel_iff, Function.comp_apply,
AffineMap.coe_mk]
let g₁ : s → V := fun i => w (f i) • (f i -ᵥ Classical.choice S.nonempty)
let g₂ : P → V := fun i => w i • (i -ᵥ Classical.choice S.nonempty)
change univ.sum g₁ = (image f univ).sum g₂
have hgf : g₁ = g₂ ∘ f := by
ext
simp [g₁, g₂]
rw [hgf, sum_image]
· simp only [g₂, Function.comp_apply]
· exact fun _ _ _ _ hxy => hf hxy
[Elab.step] [0.038753]
simp only [affineCombination, weightedVSubOfPoint_apply, id, vadd_right_cancel_iff, Function.comp_apply,
AffineMap.coe_mk]
let g₁ : s → V := fun i => w (f i) • (f i -ᵥ Classical.choice S.nonempty)
let g₂ : P → V := fun i => w i • (i -ᵥ Classical.choice S.nonempty)
change univ.sum g₁ = (image f univ).sum g₂
have hgf : g₁ = g₂ ∘ f := by
ext
simp [g₁, g₂]
rw [hgf, sum_image]
· simp only [g₂, Function.comp_apply]
· exact fun _ _ _ _ hxy => hf hxy
[Elab.step] [0.014701] simp only [affineCombination, weightedVSubOfPoint_apply, id, vadd_right_cancel_iff,
Function.comp_apply, AffineMap.coe_mk]
Build completed successfully (1120 jobs).
```
### Trace profiling of `attach_affineCombination_of_injective` after PR 31363
```diff
diff --git a/Mathlib/LinearAlgebra/AffineSpace/Combination.lean b/Mathlib/LinearAlgebra/AffineSpace/Combination.lean
index dbcbffbf97..f7919e28b5 100644
--- a/Mathlib/LinearAlgebra/AffineSpace/Combination.lean
+++ b/Mathlib/LinearAlgebra/AffineSpace/Combination.lean
@@ -399,20 +399,11 @@ theorem affineCombination_vsub (w₁ w₂ : ι → k) (p : ι → P) :
s.affineCombination k p w₁ -ᵥ s.affineCombination k p w₂ = s.weightedVSub p (w₁ - w₂) := by
rw [← AffineMap.linearMap_vsub, affineCombination_linear, vsub_eq_sub]
+set_option trace.profiler true in
theorem attach_affineCombination_of_injective [DecidableEq P] (s : Finset P) (w : P → k) (f : s → P)
(hf : Function.Injective f) :
s.attach.affineCombination k f (w ∘ f) = (image f univ).affineCombination k id w := by
- simp only [affineCombination, weightedVSubOfPoint_apply, id, vadd_right_cancel_iff,
- Function.comp_apply, AffineMap.coe_mk]
- let g₁ : s → V := fun i => w (f i) • (f i -ᵥ Classical.choice S.nonempty)
- let g₂ : P → V := fun i => w i • (i -ᵥ Classical.choice S.nonempty)
- change univ.sum g₁ = (image f univ).sum g₂
- have hgf : g₁ = g₂ ∘ f := by
- ext
- simp [g₁, g₂]
- rw [hgf, sum_image]
- · simp only [g₂,Function.comp_apply]
- · exact fun _ _ _ _ hxy => hf hxy
+ simp [affineCombination, hf]
theorem attach_affineCombination_coe (s : Finset P) (w : P → k) :
s.attach.affineCombination k ((↑) : s → P) (w ∘ (↑)) = s.affineCombination k id w := by
```
```
ℹ [1120/1120] Built Mathlib.LinearAlgebra.AffineSpace.Combination (2.4s)
info: Mathlib/LinearAlgebra/AffineSpace/Combination.lean:403:0: [Elab.command] [0.012162] theorem attach_affineCombination_of_injective [DecidableEq P] (s : Finset P) (w : P → k)
(f : s → P) (hf : Function.Injective f) :
s.attach.affineCombination k f (w ∘ f) = (image f univ).affineCombination k id w := by
simp [affineCombination, hf]
info: Mathlib/LinearAlgebra/AffineSpace/Combination.lean:403:0: [Elab.async] [0.084734] elaborating proof of Finset.attach_affineCombination_of_injective
[Elab.definition.value] [0.083451] Finset.attach_affineCombination_of_injective
[Elab.step] [0.082443] simp [affineCombination, hf]
[Elab.step] [0.082438] simp [affineCombination, hf]
[Elab.step] [0.082430] simp [affineCombination, hf]
[Meta.Tactic.simp.discharge] [0.030281] univ_eq_empty discharge ❌️
IsEmpty ↥s
[Meta.synthInstance] [0.028689] ❌️ Nonempty ↥s
Build completed successfully (1120 jobs).
```
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
1/11 |
Mathlib/LinearAlgebra/AffineSpace/Combination.lean |
1 |
4 |
['euprunin', 'github-actions', 'grunweg'] |
joelriou assignee:joelriou |
0-33613 9 hours ago |
6-47080 6 days ago |
6-63442 6 days |
| 31438 |
b-mehta author:b-mehta |
chore(Order/UnorderedInterval): add basic uIoo lemmas |
Add a couple of lemmas about uIoo that are already present for uIcc. We also rename `uIoo_subset_uIcc` to `uIoo_subset_uIcc_self` for parity with the ordered version.
---
[](https://gitpod.io/from-referrer/)
|
t-order |
18/1 |
Mathlib/Order/Interval/Set/UnorderedInterval.lean |
1 |
1 |
['github-actions'] |
bryangingechen assignee:bryangingechen |
0-33611 9 hours ago |
4-63100 4 days ago |
4-63137 4 days |
| 31453 |
kim-em author:kim-em |
feat: locally contractible spaces |
|
t-topology |
196/0 |
Mathlib.lean,Mathlib/Topology/Homeomorph/Lemmas.lean,Mathlib/Topology/Homotopy/LocallyContractible.lean,docs/references.bib |
4 |
1 |
['github-actions'] |
j-loreaux assignee:j-loreaux |
0-33610 9 hours ago |
4-31520 4 days ago |
4-33480 4 days |
| 31465 |
bryangingechen author:bryangingechen |
ci: Notify Zulip on update dependencies workflow failure |
This adds a little bit more monitoring; would have caught the failures fixed by #31457 a little earlier. |
CI |
13/0 |
.github/workflows/update_dependencies.yml |
1 |
1 |
['github-actions'] |
robertylewis assignee:robertylewis |
0-33609 9 hours ago |
3-78261 3 days ago |
3-78297 3 days |
| 31458 |
bwangpj author:bwangpj |
feat: Subgroup.mem_sup for arbitrary groups when one of the subgroups is normal |
We prove Subgroup.mem_sup for arbitrary (not necessarily commutative) groups when one of the subgroups is normal.
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
18/0 |
Mathlib/Algebra/Group/Subgroup/Lattice.lean |
1 |
1 |
['github-actions'] |
ocfnash assignee:ocfnash |
0-33609 9 hours ago |
4-12215 4 days ago |
4-12254 4 days |
| 31470 |
ADedecker author:ADedecker |
feat: define test functions in the sense of distribution theory |
This code comes from #30278 from @luigi-massacci, who is the main author of this file. I am just opening another PR in order to parallelize the review work, since this doesn't depend on anything.
---
I did change one thing from Luigi's code: we want to define `𝓓(Ω, F)` with `Ω : Opens E`, not just `𝓓(E, F)`.
This makes the notation slightly more cumbersome when `Ω = E`, but I think we just have to either live with it or find a purely notational trick.
[](https://gitpod.io/from-referrer/)
|
t-analysis |
160/0 |
Mathlib.lean,Mathlib/Analysis/Distribution/ContDiffMapSupportedIn.lean,Mathlib/Analysis/Distribution/TestFunction.lean |
3 |
2 |
['ADedecker', 'github-actions'] |
grunweg assignee:grunweg |
0-33608 9 hours ago |
3-65749 3 days ago |
3-65732 3 days |
| 31471 |
Scarlett-le author:Scarlett-le |
feat(LinearAlgebra/AffineSpace): add commutativity lemmas for line parallelism |
Adds three lemmas showing that parallelism between lines defined by point pairs is invariant under reversing the order of points. |
new-contributor
t-algebra
label:t-algebra$ |
12/0 |
Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Basic.lean |
1 |
1 |
['github-actions'] |
ocfnash assignee:ocfnash |
0-33607 9 hours ago |
3-64522 3 days ago |
3-64559 3 days |
| 31475 |
YaelDillies author:YaelDillies |
feat: a pullback of schemes is canonically over the second component |
From Toric
---
[](https://gitpod.io/from-referrer/)
|
t-algebraic-geometry |
161/2 |
Mathlib/AlgebraicGeometry/Pullbacks.lean |
1 |
1 |
['github-actions'] |
dagurtomas assignee:dagurtomas |
0-33606 9 hours ago |
3-62932 3 days ago |
3-62973 3 days |
| 31490 |
themathqueen author:themathqueen |
chore(Algebra): move `QuadraticAlgebra` to `QuadraticAlgebra/Defs` |
Since we already have a `QuadraticAlgebra` folder, this should go in there. It looks strange on the documentation otherwise.
---
[](https://gitpod.io/from-referrer/)
|
file-removed
t-algebra
label:t-algebra$ |
2/2 |
Mathlib.lean,Mathlib/Algebra/QuadraticAlgebra/Basic.lean,Mathlib/Algebra/QuadraticAlgebra/Defs.lean |
3 |
1 |
['github-actions'] |
eric-wieser assignee:eric-wieser |
0-33605 9 hours ago |
3-40601 3 days ago |
3-40648 3 days |
| 31384 |
harahu author:harahu |
doc(Archive): ensure only a single H1 header per file |
This PR ensures we only have a single H1 header per lean file in the Archive subdirectory. We do this for the following reasons:
- Having more than one H1 header per file is likely to hamper both assistive technologies and SEO, since it introduces ambiguity about what the title of the resulting webpage actually is.
- The [documentation style guide](https://leanprover-community.github.io/contribute/doc.html) asks for the title of the file to be H1, any other header in the file-level docstring to be H2, and sectioning headers to be H3.
---
[](https://gitpod.io/from-referrer/)
|
IMO
maintainer-merge
|
16/16 |
Archive/Imo/Imo1975Q1.lean,Archive/Imo/Imo1985Q2.lean,Archive/Imo/Imo1994Q1.lean,Archive/Imo/Imo1997Q3.lean,Archive/Imo/Imo2001Q3.lean,Archive/Imo/Imo2001Q4.lean,Archive/Imo/Imo2001Q5.lean,Archive/Imo/Imo2005Q3.lean,Archive/Imo/Imo2008Q2.lean,Archive/Imo/Imo2008Q3.lean,Archive/Imo/Imo2008Q4.lean,Archive/Imo/Imo2011Q3.lean,Archive/Imo/Imo2013Q1.lean,Archive/Imo/Imo2013Q5.lean,Archive/Imo/Imo2015Q6.lean,Archive/Imo/Imo2021Q1.lean |
16 |
3 |
['github-actions', 'jsm28'] |
jsm28 assignee:jsm28 |
0-33348 9 hours ago |
0-33348 9 hours ago |
5-61916 5 days |
| 26770 |
Jun2M author:Jun2M |
feat(Combinatorics/Graph) : subgraph relations on `Graph` |
This PR creates a new file `Combinatorics/Graph/Subgraph.lean`. In it, the PR introduces a partial order on graphs by subgraph relation, defines relations `IsInducedSubgraph`, `IsSpanningSubgraph` and `IsClosedSubgraph`. Further, it introduce operations `EdgeRestrict`, `EdgeDelete`, `induce` and `VertexDelete`.
Co-authored-by: Peter Nelson
---
[](https://gitpod.io/from-referrer/)
|
t-combinatorics |
363/1 |
Mathlib.lean,Mathlib/Combinatorics/Graph/Basic.lean,Mathlib/Combinatorics/Graph/Subgraph.lean |
3 |
1 |
['github-actions'] |
awainverse assignee:awainverse |
0-25826 7 hours ago |
132-45093 4 months ago |
132-45128 132 days |
| 31159 |
gasparattila author:gasparattila |
feat(Topology/Sets): add `Compacts.toCloseds` |
---
[](https://gitpod.io/from-referrer/)
|
t-topology |
15/0 |
Mathlib/Topology/Sets/Compacts.lean |
1 |
5 |
['gasparattila', 'github-actions', 'mathlib4-merge-conflict-bot', 'urkud'] |
urkud assignee:urkud |
0-21128 5 hours ago |
0-75618 20 hours ago |
11-65875 11 days |
| 30524 |
mcdoll author:mcdoll |
feat: Basics of Montel spaces |
The definition of a Montel space.
We only prove the two rather trivial results: (a) every normed Montel space is finite dimensional and (b) for every Montel space `E` the topology of compact convergence on `E →SL[σ] F` is equal to the strong topology.
---
- [x] depends on: #30523
[](https://gitpod.io/from-referrer/)
|
t-analysis |
129/1 |
Mathlib.lean,Mathlib/Analysis/LocallyConvex/Bounded.lean,Mathlib/Analysis/LocallyConvex/Montel.lean |
3 |
3 |
['github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
0-20316 5 hours ago |
0-31887 8 hours ago |
0-31864 8 hours |
| 29283 |
Jlh18 author:Jlh18 |
feat(CategoryTheory): define forgetful-core adjunction between Cat and Grpd |
* Define `CategoryTheory.Core.functor`: the functor `Cat ⥤ Grpd` that on objects takes
the core of a category
* Define `CategoryTheory.Core.adjunction`: the adjunction with the forgetful functor
`Grpd.forgetToCat` on the left, and the core functor `Core.functor` on the right.
* Hence provide an instance that `Grpd.forgetToCat` is coreflective.
- [ ] depends on: #29284 [Extra lemmas in CategoryTheory.Core]
---
[](https://gitpod.io/from-referrer/)
|
new-contributor
t-category-theory
|
159/4 |
Mathlib.lean,Mathlib/CategoryTheory/Category/Grpd.lean,Mathlib/CategoryTheory/Core.lean,Mathlib/CategoryTheory/Groupoid/Grpd/Core.lean |
4 |
11 |
['Jlh18', 'github-actions', 'joelriou', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
nobody |
0-18792 5 hours ago |
0-18792 5 hours ago |
8-16433 8 days |
| 31074 |
mcdoll author:mcdoll |
feat(Analysis/Normed): extend densely defined LinearMaps to CLM |
This PR both adds a new and more user-friendly way to extend a CLM defined on a dense subspace.
We also add a definition for the left inverse of a linear map. Before this was only available in an existence statement,
which is slightly inconvenient to work with.
---
- [x] depends on: #29888
[](https://gitpod.io/from-referrer/)
|
t-analysis |
127/9 |
Mathlib/Analysis/Normed/Operator/Extend.lean,Mathlib/LinearAlgebra/Basis/VectorSpace.lean,Mathlib/LinearAlgebra/Dual/Lemmas.lean,Mathlib/RepresentationTheory/Maschke.lean |
4 |
23 |
['github-actions', 'grunweg', 'j-loreaux', 'mathlib4-dependent-issues-bot', 'mcdoll'] |
sgouezel assignee:sgouezel |
0-16436 4 hours ago |
0-16987 4 hours ago |
12-548 12 days |
| 31606 |
euprunin author:euprunin |
chore(Data/PNat): deprecate `gcd_eq_left` |
---
[](https://gitpod.io/from-referrer/)
|
t-data |
1/6 |
Mathlib/Data/PNat/Prime.lean |
1 |
3 |
['euprunin', 'github-actions', 'themathqueen'] |
nobody |
0-13531 3 hours ago |
0-45096 12 hours ago |
0-45140 12 hours |
| 31611 |
thorimur author:thorimur |
feat(Meta): `withPlural` wrapper for more readable messages in source |
This small PR introduces a thin wrapper `withPlural` for Lean's textual datatypes so that we can write
```
"foo".withPlural "foos" count
```
instead of
```
if count = 1 then "foo" else "foos"
```
The dot notation here is chosen so that the singular version of the word appears at the start of the syntax, as opposed to buried in an `if/then`. This makes dynamically pluralizing a word in `MessageData` (which is a relatively common occurrence) a bit easier to read in source, especially when multiple pluralizations are needed close to one another.
---
Am I handling the copyright header correctly? My reasoning is that the file was devoid of content, and so this is ultimately a new file. But I'm not sure this is technically what should happen here.
[](https://gitpod.io/from-referrer/)
|
t-meta |
34/5 |
Mathlib/Lean/Message.lean |
1 |
3 |
['github-actions', 'grunweg'] |
nobody |
0-7873 2 hours ago |
0-35687 9 hours ago |
0-35729 9 hours |
| 30133 |
smmercuri author:smmercuri |
feat: `WithVal v` and `WithVal w` are isomorphic as uniform spaces when `v` and `w` are equivalent valuations |
---
[](https://gitpod.io/from-referrer/)
|
t-algebra
t-topology
label:t-algebra$ |
97/0 |
Mathlib/Algebra/Order/Hom/Ring.lean,Mathlib/Topology/Algebra/Valued/WithVal.lean |
2 |
2 |
['github-actions', 'kbuzzard'] |
robin-carlier assignee:robin-carlier |
0-7504 2 hours ago |
11-1084 11 days ago |
14-61012 14 days |
| 30548 |
fbarroero author:fbarroero |
feat(Analysis/Polynomial/MahlerMeasure): the Mahler measure of a linear polynomial and applications |
We prove
``
theorem logMahlerMeasure_X_sub_C (z : ℂ) : (X - C z).logMahlerMeasure = log⁺ ‖z‖
``
and
``
theorem logMahlerMeasure_eq_log_leadingCoeff_add_sum_log_roots (p : ℂ[X]) : p.logMahlerMeasure =
log ‖p.leadingCoeff‖ + ((p.roots).map (fun a ↦ log⁺ ‖a‖)).sum
``
---
- [x] depends on: #30681
[](https://gitpod.io/from-referrer/)
|
large-import
t-analysis
t-number-theory
|
130/3 |
Mathlib/Analysis/Meromorphic/Divisor.lean,Mathlib/Analysis/Polynomial/MahlerMeasure.lean |
2 |
20 |
['MichaelStollBayreuth', 'copilot-pull-request-reviewer', 'fbarroero', 'github-actions', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot'] |
ADedecker assignee:ADedecker |
0-5991 1 hour ago |
0-5991 1 hour ago |
21-37980 21 days |
| 31446 |
harahu author:harahu |
doc(MeasureTheory/Measure/Regular): polish docstrings |
The issues were found and fixed by Codex.
The fixes are mainly just typo fixes, but there are three substantive changes that warrant careful review:
- "compacts closed sets" -> "compact sets" in the definition of a regular measure.
- The addition of "of finite measure" in the definition of a measure that is `InnerRegularCompactLTTop`.
- Changes to the docstring of `_root_.IsOpen.measure_eq_iSup_isClosed`
As far as I can tell, all of these changes are justified, but I am not an expert, so it would be helpful to have another critical pair of eyes look over them.
The PR also drops backticks around σ in a number of places. This is because σ-compact, σ-finite and σ-algebra are all established mathematical terminology. Having backticks mid-word just makes it harder to search for these terms in the code base.
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
28/27 |
Mathlib/MeasureTheory/Measure/Regular.lean |
1 |
1 |
['github-actions'] |
RemyDegenne assignee:RemyDegenne |
0-3426 57 minutes ago |
4-45221 4 days ago |
4-45262 4 days |
| 31265 |
joelriou author:joelriou |
feat(AlgebraicTopology): Edge and CompStruct for simplicial sets |
The API for `2`-truncated simplicial sets #31254 is reproduced for simplicial sets. The definitions for simplicial sets are defeq to their `2`-truncated counterparts, but an effort is made to contain abuse of defeq...
---
- [x] depends on: #31254
[](https://gitpod.io/from-referrer/)
|
t-algebraic-topology
maintainer-merge
|
187/1 |
Mathlib.lean,Mathlib/AlgebraicTopology/SimplicialSet/CompStruct.lean,Mathlib/AlgebraicTopology/SimplicialSet/CompStructTruncated.lean |
3 |
6 |
['github-actions', 'mathlib4-dependent-issues-bot', 'robin-carlier'] |
robin-carlier assignee:robin-carlier |
0-2575 42 minutes ago |
0-2575 42 minutes ago |
5-32976 5 days |
| 31566 |
EtienneC30 author:EtienneC30 |
feat: when a measure is equal to a `gaussianReal` |
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
10/0 |
Mathlib/Probability/Distributions/Gaussian/Basic.lean,Mathlib/Probability/Distributions/Gaussian/Real.lean |
2 |
4 |
['EtienneC30', 'RemyDegenne', 'github-actions', 'themathqueen'] |
nobody |
0-2207 36 minutes ago |
1-45891 1 day ago |
1-45927 1 day |