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-21700 3 months ago |
105-57749 3 months ago |
132-45580 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-71877 3 months ago |
109-55174 3 months ago |
109-55196 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-21717 3 months ago |
157-9027 5 months ago |
172-40949 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-21707 2 months ago |
97-43399 3 months ago |
98-17892 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-21715 2 months ago |
97-40184 3 months ago |
97-40217 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-21712 2 months ago |
95-53042 3 months ago |
95-53078 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-21689 2 months ago |
93-3905 3 months ago |
93-6603 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-55072 2 months ago |
128-22779 4 months ago |
128-22811 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-49348 2 months ago |
186-46713 6 months ago |
234-12518 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 |
76-79496 2 months ago |
146-30659 4 months ago |
146-35258 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-1339 2 months ago |
74-6385 2 months ago |
138-63260 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-74165 2 months ago |
69-74165 2 months ago |
75-60343 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-72799 2 months ago |
89-79254 2 months ago |
89-79283 89 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-43011 2 months ago |
61-43036 2 months ago |
209-30746 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 |
59-80506 1 month ago |
183-63543 5 months ago |
268-36562 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-54644 1 month ago |
63-49075 2 months ago |
147-49112 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-21701 1 month ago |
63-47534 2 months ago |
63-48182 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-33545 1 month ago |
67-69497 2 months ago |
67-69536 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-31447 1 month ago |
62-51261 2 months ago |
62-53543 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-21707 1 month ago |
59-36423 1 month ago |
59-36396 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-35475 1 month ago |
59-46426 1 month ago |
59-46399 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-51362 1 month ago |
81-41599 2 months ago |
81-41628 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-21705 1 month ago |
57-61662 1 month ago |
61-74579 61 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 |
43-78341 1 month ago |
44-64063 1 month ago |
143-44469 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-58434 1 month ago |
43-58434 1 month ago |
123-59653 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 |
42-75618 1 month ago |
80-8061 2 months ago |
86-63924 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-67645 1 month ago |
51-56803 1 month ago |
58-9437 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 |
40-77890 1 month ago |
68-85807 2 months ago |
68-85837 68 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 |
40-76886 1 month ago |
154-60299 5 months ago |
154-60269 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-48457 1 month ago |
101-75089 3 months ago |
142-84490 142 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-39310 1 month ago |
78-42053 2 months ago |
128-27055 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-21713 1 month ago |
45-82201 1 month ago |
45-83775 45 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 |
36-84710 1 month ago |
69-80785 2 months ago |
69-80811 69 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-21704 1 month ago |
43-80992 1 month ago |
43-80967 43 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-21704 1 month ago |
43-31960 1 month ago |
43-31990 43 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-67449 1 month ago |
36-21520 1 month ago |
36-21554 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-21711 1 month ago |
57-70711 1 month ago |
57-70752 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-14792 1 month ago |
68-34628 2 months ago |
70-57578 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-21721 1 month ago |
50-51644 1 month ago |
50-51679 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 |
30-79261 30 days ago |
72-23803 2 months ago |
105-85062 105 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 |
30-75923 30 days ago |
56-70583 1 month ago |
104-4199 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-21700 29 days ago |
36-76154 1 month ago |
36-76626 36 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-34973 28 days ago |
30-46401 30 days ago |
48-13387 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-54965 27 days ago |
43-25907 1 month ago |
43-84920 43 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-52112 27 days ago |
45-48953 1 month ago |
47-18454 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-32796 27 days ago |
27-32796 27 days ago |
96-85207 96 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-69844 26 days ago |
36-41385 1 month ago |
36-45264 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-37765 26 days ago |
82-70426 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-21669 26 days ago |
33-80614 1 month ago |
33-80644 33 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-26463 25 days ago |
58-63442 1 month ago |
58-79645 58 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 |
24-83875 24 days ago |
24-84137 24 days ago |
48-20598 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-21700 24 days ago |
50-43156 1 month ago |
68-39349 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-17641 24 days ago |
36-39066 1 month ago |
36-39095 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 |
22-82973 22 days ago |
101-48096 3 months ago |
116-59407 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 |
22-76643 22 days ago |
23-66136 23 days ago |
23-66175 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-21694 22 days ago |
39-24398 1 month ago |
39-24433 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-21692 22 days ago |
36-53993 1 month ago |
36-54026 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-21687 22 days ago |
29-61096 29 days ago |
29-61133 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 |
21-75985 21 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 |
21-75164 21 days ago |
21-75164 21 days ago |
140-77895 140 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-64439 21 days ago |
24-50688 24 days ago |
145-33260 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-58469 21 days ago |
21-58478 21 days ago |
21-58517 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-21717 21 days ago |
67-19662 2 months ago |
67-19635 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-21717 21 days ago |
57-68920 1 month ago |
66-56405 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-21708 20 days ago |
64-20114 2 months ago |
64-20103 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-5773 20 days ago |
48-33858 1 month ago |
48-33837 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-27879 19 days ago |
19-31284 19 days ago |
19-32004 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-21697 19 days ago |
26-46746 26 days ago |
33-66467 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-55593 17 days ago |
32-54823 1 month ago |
101-41842 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-21714 17 days ago |
37-77288 1 month ago |
37-77317 37 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-10624 17 days ago |
17-13895 17 days ago |
44-82270 44 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 |
16-84137 16 days ago |
16-84159 16 days ago |
63-35701 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 |
16-82190 16 days ago |
74-41552 2 months ago |
74-41685 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-68924 16 days ago |
74-40567 2 months ago |
143-67153 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-49952 16 days ago |
16-77651 16 days ago |
64-31589 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-21691 16 days ago |
28-31271 28 days ago |
28-31312 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 |
15-81659 15 days ago |
15-81659 15 days ago |
44-46169 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-40952 15 days ago |
15-41280 15 days ago |
45-68071 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-21692 15 days ago |
22-38981 22 days ago |
22-39021 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-62157 14 days ago |
42-51695 1 month ago |
42-51670 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 |
13-74792 13 days ago |
17-56421 17 days ago |
18-52083 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-73506 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-55955 13 days ago |
13-58808 13 days ago |
107-7622 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-40268 13 days ago |
17-64128 17 days ago |
51-1976 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-21691 13 days ago |
31-15705 1 month ago |
31-15739 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-21688 13 days ago |
22-37296 22 days ago |
22-37270 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-21684 13 days ago |
20-58384 20 days ago |
20-58358 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-21682 13 days ago |
20-28854 20 days ago |
20-35299 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-3196 13 days ago |
13-76266 13 days ago |
13-76970 13 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 |
12-80403 12 days ago |
13-26595 13 days ago |
35-38499 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-72814 12 days ago |
13-1467 13 days ago |
13-74746 13 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-21695 12 days ago |
19-65215 19 days ago |
19-70790 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-31875 11 days ago |
11-31875 11 days ago |
29-39972 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-31557 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-73862 10 days ago |
35-51846 1 month ago |
35-54377 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-68346 10 days ago |
19-69972 19 days ago |
19-69958 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-37412 10 days ago |
33-58027 1 month ago |
33-58058 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-20409 10 days ago |
14-31106 14 days ago |
14-31142 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-19897 10 days ago |
35-28278 1 month ago |
35-28312 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-69261 9 days ago |
9-72891 9 days ago |
116-8130 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-58811 9 days ago |
151-67162 4 months ago |
151-67198 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-53306 9 days ago |
9-78826 9 days ago |
14-23809 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-51730 9 days ago |
9-51925 9 days ago |
9-62471 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-38897 9 days ago |
9-38910 9 days ago |
55-44770 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-38543 9 days ago |
39-50041 1 month ago |
39-50070 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-37486 9 days ago |
10-12675 10 days ago |
10-12710 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-35217 9 days ago |
16-30407 16 days ago |
16-31304 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-21697 9 days ago |
41-34702 1 month ago |
41-40748 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-21695 9 days ago |
17-1212 17 days ago |
17-3535 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-21694 9 days ago |
27-48962 27 days ago |
27-49004 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-21691 9 days ago |
24-39439 24 days ago |
24-39479 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-21687 9 days ago |
19-53273 19 days ago |
19-53319 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-21686 9 days ago |
16-62904 16 days ago |
16-71769 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-21684 9 days ago |
17-32597 17 days ago |
17-32698 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-21682 9 days ago |
16-78180 16 days ago |
16-78221 16 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-21677 9 days ago |
16-55372 16 days ago |
16-55399 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-14658 9 days ago |
9-14658 9 days ago |
26-64663 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-43875 8 days ago |
8-43899 8 days ago |
57-61703 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-39920 8 days ago |
8-39920 8 days ago |
33-16217 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-37887 8 days ago |
8-37906 8 days ago |
40-27052 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-31202 8 days ago |
77-37951 2 months ago |
83-65231 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-24379 8 days ago |
16-23892 16 days ago |
16-23939 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-21700 8 days ago |
15-50422 15 days ago |
15-50441 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-21696 8 days ago |
15-72346 15 days ago |
15-72373 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-21694 8 days ago |
23-42155 23 days ago |
23-42198 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-21693 8 days ago |
16-4913 16 days ago |
23-9293 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-21691 8 days ago |
21-51039 21 days ago |
21-51083 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-21690 8 days ago |
21-49832 21 days ago |
21-49871 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-21689 8 days ago |
16-45429 16 days ago |
16-75966 16 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-21684 8 days ago |
15-69240 15 days ago |
15-69215 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-6508 8 days ago |
8-6530 8 days ago |
19-63495 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 |
7-79977 7 days ago |
24-79039 24 days ago |
25-17375 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 |
7-75651 7 days ago |
7-75651 7 days ago |
34-57406 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-59797 7 days ago |
34-40497 1 month ago |
34-42722 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-53349 7 days ago |
7-53371 7 days ago |
33-46635 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-49704 7 days ago |
12-58450 12 days ago |
46-75290 46 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-47415 7 days ago |
7-48249 7 days ago |
123-65797 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-40484 7 days ago |
8-58012 8 days ago |
8-58049 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-21703 7 days ago |
17-84204 17 days ago |
17-84242 17 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-21701 7 days ago |
15-32825 15 days ago |
15-32865 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-21700 7 days ago |
14-46770 14 days ago |
14-80093 14 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-21699 7 days ago |
14-76642 14 days ago |
14-76677 14 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-21698 7 days ago |
14-72910 14 days ago |
14-72884 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-21697 7 days ago |
14-58930 14 days ago |
14-58972 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-70867 6 days ago |
24-83673 24 days ago |
42-31819 42 days |
| 30940 |
jessealama author:jessealama |
feat(Data/Set/Image): add Option.range lemmas for elim function |
This PR adds two new lemmas about `Option.elim` and `range`:
- `Option.range_elim`: characterizes the range of a function defined via `Option.elim`
- `Option.image_elim_range_some_eq_range`: the image of `range some` under `Option.elim b f` equals `range f`
## Context
These lemmas are part of a larger PR (#30854) that touched multiple areas of Mathlib. Following reviewer suggestions, the PR has been split into smaller, focused contributions. This PR contains only the changes to `Mathlib/Data/Set/Image.lean`.
## Potential Reviewers
Based on recent contributions to `Mathlib/Data/Set/Image.lean`:
- @euprunin
- @plp127 |
t-data |
12/0 |
Mathlib/Data/Set/Image.lean |
1 |
5 |
['github-actions', 'jessealama', 'plp127'] |
nobody |
6-65544 6 days ago |
18-42053 18 days ago |
18-42091 18 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-48967 6 days ago |
6-48967 6 days ago |
36-39301 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-43435 6 days ago |
7-56033 7 days ago |
22-66999 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-33885 6 days ago |
26-69545 26 days ago |
26-69529 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-27614 6 days ago |
25-70192 25 days ago |
25-74836 25 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-21713 6 days ago |
14-26619 14 days ago |
40-23880 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-21712 6 days ago |
13-64080 13 days ago |
16-63093 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-21710 6 days ago |
13-56492 13 days ago |
13-56691 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-21702 6 days ago |
14-1541 14 days ago |
14-1590 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-21698 6 days ago |
13-32891 13 days ago |
13-32925 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-12429 6 days ago |
46-81707 1 month ago |
74-14425 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-67928 5 days ago |
5-67928 5 days ago |
11-40100 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-33035 5 days ago |
5-33295 5 days ago |
15-69892 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-29966 5 days ago |
52-53795 1 month ago |
52-55072 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-21700 5 days ago |
12-59549 12 days ago |
12-59523 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-21700 5 days ago |
13-76280 13 days ago |
13-77990 13 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-19011 5 days ago |
30-36560 30 days ago |
30-36596 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-11776 5 days ago |
5-20480 5 days ago |
84-58965 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-10256 5 days ago |
5-10256 5 days ago |
64-36181 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 |
4-83225 4 days ago |
4-83227 4 days ago |
4-83260 4 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 |
4-81236 4 days ago |
4-81260 4 days ago |
38-61174 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-73201 4 days ago |
4-73475 4 days ago |
4-73499 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-72591 4 days ago |
4-72611 4 days ago |
73-3553 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-70961 4 days ago |
4-70977 4 days ago |
4-71009 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-68720 4 days ago |
4-72232 4 days ago |
44-54133 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-66509 4 days ago |
4-66509 4 days ago |
15-3966 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-65555 4 days ago |
16-22570 16 days ago |
16-71611 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-64461 4 days ago |
6-2161 6 days ago |
62-82654 62 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-62649 4 days ago |
20-65917 20 days ago |
20-65890 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-61165 4 days ago |
4-61165 4 days ago |
15-68951 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-59312 4 days ago |
4-59315 4 days ago |
4-61792 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-57307 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-52208 4 days ago |
4-52228 4 days ago |
14-40000 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-46777 4 days ago |
4-64737 4 days ago |
4-64774 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-31957 4 days ago |
4-31957 4 days ago |
17-42383 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-26709 4 days ago |
100-26350 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-21699 4 days ago |
186-26093 6 months ago |
252-26062 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-21696 4 days ago |
11-54960 11 days ago |
12-6393 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-21693 4 days ago |
11-51374 11 days ago |
11-51355 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-21692 4 days ago |
11-43977 11 days ago |
11-44015 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-21691 4 days ago |
11-30951 11 days ago |
11-30926 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-21690 4 days ago |
11-30018 11 days ago |
11-29993 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 |
3-78648 3 days ago |
3-79730 3 days ago |
3-79731 3 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 |
3-75395 3 days ago |
7-34104 7 days ago |
16-83465 16 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-73950 3 days ago |
5-39657 5 days ago |
13-8259 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-73307 3 days ago |
3-73307 3 days ago |
36-70872 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-66586 3 days ago |
66-12304 2 months ago |
113-65777 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-66548 3 days ago |
41-52652 1 month ago |
41-52680 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-64206 3 days ago |
3-65112 3 days ago |
11-22012 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-64187 3 days ago |
3-64199 3 days ago |
3-64236 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-63402 3 days ago |
22-34577 22 days ago |
22-35373 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-62198 3 days ago |
6-31382 6 days ago |
16-71966 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-61595 3 days ago |
8-30464 8 days ago |
8-30499 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-58351 3 days ago |
3-58351 3 days ago |
105-80262 105 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-55187 3 days ago |
4-65841 4 days ago |
4-65838 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-51499 3 days ago |
3-51559 3 days ago |
65-1448 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-51384 3 days ago |
3-51449 3 days ago |
3-51424 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-31514 3 days ago |
6-56669 6 days ago |
6-56703 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-25421 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-21700 3 days ago |
10-55934 10 days ago |
20-81916 20 days |
| 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/)
|
|
97/0 |
Mathlib/Algebra/Order/Hom/Ring.lean,Mathlib/Topology/Algebra/Valued/WithVal.lean |
2 |
2 |
['github-actions', 'kbuzzard'] |
robin-carlier assignee:robin-carlier |
3-21699 3 days ago |
10-75570 10 days ago |
14-49095 14 days |
| 31145 |
FernandoChu author:FernandoChu |
chore(CategoryTheory): `IsRegularEpi` and its `MorphismProperty` |
This PR proves that isos are regular epis, and that epis are closed under postcomposition of isos. It also adds `IsRegularEpi` and the `MorphismProperty` it induces. This is so we can define regular categories, which require the regular epis to be stable under base change.
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
|
106/10 |
Mathlib/CategoryTheory/Limits/Shapes/RegularMono.lean,Mathlib/CategoryTheory/Limits/Shapes/StrongEpi.lean |
2 |
12 |
['FernandoChu', 'github-actions', 'joelriou'] |
robin-carlier assignee:robin-carlier |
3-21696 3 days ago |
10-38515 10 days ago |
12-42258 12 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-21695 3 days ago |
11-17579 11 days ago |
11-17555 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-21694 3 days ago |
10-73201 10 days ago |
10-73237 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-21693 3 days ago |
10-59315 10 days ago |
10-61026 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-18107 3 days ago |
3-18107 3 days ago |
43-2027 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-18050 3 days ago |
3-18050 3 days ago |
31-10520 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-17207 3 days ago |
3-17273 3 days ago |
3-17248 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-16268 3 days ago |
3-16268 3 days ago |
10-26996 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-7213 3 days ago |
13-25996 13 days ago |
13-32358 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-6025 3 days ago |
3-6046 3 days ago |
3-6081 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-5685 3 days ago |
3-5692 3 days ago |
3-5733 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 |
2-75386 2 days ago |
2-75386 2 days ago |
119-59290 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-68371 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-65489 2 days ago |
2-76680 2 days ago |
2-76719 2 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-65463 2 days ago |
3-11877 3 days ago |
3-11919 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-56296 2 days ago |
4-45676 4 days ago |
4-83537 4 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-53757 2 days ago |
2-53757 2 days ago |
2-61095 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-50466 2 days ago |
2-51099 2 days ago |
2-54176 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-49293 2 days ago |
2-49293 2 days ago |
140-51469 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-49270 2 days ago |
2-68471 2 days ago |
10-44949 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-49211 2 days ago |
2-50196 2 days ago |
3-66340 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-48663 2 days ago |
2-48681 2 days ago |
10-39690 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-48560 2 days ago |
2-68646 2 days ago |
12-60742 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-48384 2 days ago |
2-68299 2 days ago |
13-70469 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-45011 2 days ago |
2-53753 2 days ago |
2-53796 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-39604 2 days ago |
2-39604 2 days ago |
2-39579 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-36678 2 days ago |
2-37673 2 days ago |
2-38487 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-35312 2 days ago |
2-38816 2 days ago |
53-61680 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-32636 2 days ago |
2-32641 2 days ago |
2-32682 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-32630 2 days ago |
2-33312 2 days ago |
2-33349 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-32103 2 days ago |
2-32108 2 days ago |
2-32147 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-30833 2 days ago |
2-30839 2 days ago |
2-30876 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-30167 2 days ago |
2-30175 2 days ago |
12-5122 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-29587 2 days ago |
2-35529 2 days ago |
54-23157 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-29487 2 days ago |
2-29496 2 days ago |
2-29532 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-21805 2 days ago |
2-45399 2 days ago |
13-640 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-21749 2 days ago |
2-21749 2 days ago |
35-46446 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-21702 2 days ago |
6-23023 6 days ago |
7-9053 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-21700 2 days ago |
5-34553 5 days ago |
5-34527 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-21699 2 days ago |
6-47688 6 days ago |
6-50198 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-21698 2 days ago |
5-32584 5 days ago |
5-32596 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-21697 2 days ago |
5-30588 5 days ago |
5-30641 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-21696 2 days ago |
6-35802 6 days ago |
6-48258 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-21695 2 days ago |
9-50571 9 days ago |
15-62284 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-21695 2 days ago |
9-58100 9 days ago |
9-62283 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-21693 2 days ago |
9-73206 9 days ago |
10-57760 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-21692 2 days ago |
8-70944 8 days ago |
9-21571 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-21691 2 days ago |
10-13223 10 days ago |
10-13213 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-21689 2 days ago |
9-52267 9 days ago |
9-62564 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-21688 2 days ago |
9-72259 9 days ago |
9-72234 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-21687 2 days ago |
9-70221 9 days ago |
9-70197 9 days |
| 31258 |
joelriou author:joelriou |
chore(CategoryTheory/Limits/Types): split Shapes.lean |
The file `CategoryTheory.Limits.Types.Shapes` is split in several files corresponding to different kinds of shapes of limits/colimits. (As that constructions are not self-dual, dual shapes appear in separate files, e.g. `Pushouts` and `Pullbacks`.)
---
(The `large-import` warning is obviously a false positive...)
[](https://gitpod.io/from-referrer/)
|
large-import
t-category-theory
|
1131/1025 |
Mathlib.lean,Mathlib/Algebra/Category/Grp/Adjunctions.lean,Mathlib/AlgebraicGeometry/GluingOneHypercover.lean,Mathlib/AlgebraicTopology/SimplicialSet/StdSimplex.lean,Mathlib/CategoryTheory/Extensive.lean,Mathlib/CategoryTheory/Galois/Basic.lean,Mathlib/CategoryTheory/GlueData.lean,Mathlib/CategoryTheory/Limits/FilteredColimitCommutesProduct.lean,Mathlib/CategoryTheory/Limits/Final.lean,Mathlib/CategoryTheory/Limits/FintypeCat.lean,Mathlib/CategoryTheory/Limits/Pi.lean,Mathlib/CategoryTheory/Limits/Shapes/ConcreteCategory.lean,Mathlib/CategoryTheory/Limits/Shapes/Reflexive.lean,Mathlib/CategoryTheory/Limits/Types/Coequalizers.lean,Mathlib/CategoryTheory/Limits/Types/Coproducts.lean,Mathlib/CategoryTheory/Limits/Types/Equalizers.lean,Mathlib/CategoryTheory/Limits/Types/Multiequalizer.lean,Mathlib/CategoryTheory/Limits/Types/Products.lean,Mathlib/CategoryTheory/Limits/Types/Pullbacks.lean,Mathlib/CategoryTheory/Limits/Types/Pushouts.lean,Mathlib/CategoryTheory/Limits/Types/Shapes.lean,Mathlib/CategoryTheory/Monoidal/Types/Basic.lean,Mathlib/CategoryTheory/Sites/EqualizerSheafCondition.lean,Mathlib/CategoryTheory/Sites/MayerVietorisSquare.lean,Mathlib/CategoryTheory/Types/Monomorphisms.lean,Mathlib/Geometry/RingedSpace/LocallyRingedSpace/HasColimits.lean,Mathlib/Topology/Category/TopCat/Yoneda.lean,Mathlib/Topology/Gluing.lean,Mathlib/Topology/Sheaves/SheafCondition/UniqueGluing.lean |
29 |
1 |
['github-actions'] |
robin-carlier assignee:robin-carlier |
2-21686 2 days ago |
9-68355 9 days ago |
9-68394 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-21685 2 days ago |
8-74849 8 days ago |
8-74824 8 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-21681 2 days ago |
8-45563 8 days ago |
8-45604 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-21680 2 days ago |
8-28445 8 days ago |
8-28482 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-21679 2 days ago |
8-10417 8 days ago |
8-10398 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-21677 2 days ago |
6-66402 6 days ago |
6-66436 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-21676 2 days ago |
6-65539 6 days ago |
6-65513 6 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-21675 2 days ago |
6-20417 6 days ago |
6-28443 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-21675 2 days ago |
5-46754 5 days ago |
5-46785 5 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-21674 2 days ago |
5-39813 5 days ago |
5-39787 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-21669 2 days ago |
5-30666 5 days ago |
5-30641 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-21668 2 days ago |
5-30689 5 days ago |
5-30721 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-20729 2 days ago |
2-20731 2 days ago |
2-20770 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-19287 2 days ago |
6-46882 6 days ago |
6-58232 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-10714 2 days ago |
2-10796 2 days ago |
2-10829 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-10695 2 days ago |
2-10734 2 days ago |
2-83211 2 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 |
1-84531 1 day ago |
1-84531 1 day ago |
7-22899 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 |
1-78883 1 day ago |
1-78923 1 day ago |
5-53549 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 |
1-77724 1 day ago |
1-78987 1 day ago |
1-79023 1 day |
| 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 |
1-76510 1 day ago |
6-50001 6 days ago |
30-6407 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-74469 1 day ago |
1-74567 1 day ago |
1-74542 1 day |
| 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-74405 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-72968 1 day ago |
1-73157 1 day ago |
182-48906 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-72938 1 day ago |
1-76083 1 day ago |
1-76123 1 day |
| 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-71856 1 day ago |
1-71856 1 day ago |
1-73558 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-67033 1 day ago |
1-67053 1 day ago |
8-82539 8 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-65974 1 day ago |
1-71165 1 day ago |
1-71238 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-65884 1 day ago |
1-71958 1 day ago |
1-73460 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-65266 1 day ago |
1-65771 1 day ago |
14-62880 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-64774 1 day ago |
1-64779 1 day ago |
1-64822 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-64615 1 day ago |
2-54420 2 days ago |
2-54453 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-63650 1 day ago |
11-46109 11 days ago |
16-46413 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-61127 1 day ago |
1-61142 1 day ago |
1-62464 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-59923 1 day ago |
1-65005 1 day ago |
1-65042 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-58426 1 day ago |
1-58489 1 day ago |
1-58464 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-57791 1 day ago |
1-74079 1 day ago |
18-64022 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-57298 1 day ago |
2-11477 2 days ago |
2-52321 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-55815 1 day ago |
1-55834 1 day ago |
122-54774 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-55730 1 day ago |
1-65713 1 day ago |
1-65747 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-55722 1 day ago |
1-65816 1 day ago |
1-65847 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-55271 1 day ago |
5-39446 5 days ago |
5-49803 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-53759 1 day ago |
12-41979 12 days ago |
12-42020 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-53606 1 day ago |
1-59433 1 day ago |
5-50320 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-52930 1 day ago |
1-65783 1 day ago |
1-65812 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-48508 1 day ago |
1-58863 1 day ago |
1-59225 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-35845 1 day ago |
59-21721 1 month ago |
80-76214 80 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-42043 1 day ago |
1-49450 1 day ago |
1-49426 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-40081 1 day ago |
1-43171 1 day ago |
12-74505 12 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-38982 1 day ago |
1-53437 1 day ago |
2-74295 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-37550 1 day ago |
1-37550 1 day ago |
8-78992 8 days |
| 31398 |
YaelDillies author:YaelDillies |
feat(MeasureTheory/Measure): `comap_apply` version for measurable equivs |
This one is stated in terms of the preimage of the inverse, which is sometimes (but not always!) more useful than the image of the forward map.
---
[](https://gitpod.io/from-referrer/)
|
maintainer-merge
t-measure-probability
|
13/0 |
Mathlib/MeasureTheory/Measure/Restrict.lean |
1 |
4 |
['EtienneC30', 'YaelDillies', 'github-actions'] |
EtienneC30 assignee:EtienneC30 |
1-36395 1 day ago |
1-36420 1 day ago |
5-29604 5 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-36181 1 day ago |
1-53265 1 day ago |
1-53299 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-32546 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-31131 1 day ago |
1-31131 1 day ago |
1-35890 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-30021 1 day ago |
1-30033 1 day ago |
1-30068 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-29789 1 day ago |
1-29789 1 day ago |
1-29764 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-26889 1 day ago |
1-28228 1 day ago |
1-28265 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-26855 1 day ago |
1-26855 1 day ago |
1-26830 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-23351 1 day ago |
1-64867 1 day ago |
26-54166 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-21703 1 day ago |
8-55193 8 days ago |
8-55148 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-21700 1 day ago |
18-20459 18 days ago |
39-73891 39 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-21699 1 day ago |
15-18263 15 days ago |
0-996 16 minutes |
| 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-21699 1 day ago |
7-80114 7 days ago |
23-62835 23 days |
| 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-21698 1 day ago |
5-22486 5 days ago |
6-16528 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-21697 1 day ago |
9-28761 9 days ago |
9-49515 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-21696 1 day ago |
7-35494 7 days ago |
10-68392 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-21694 1 day ago |
6-30640 6 days ago |
17-35738 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-21693 1 day ago |
9-56100 9 days ago |
9-56086 9 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 |
187/1 |
Mathlib.lean,Mathlib/AlgebraicTopology/SimplicialSet/CompStruct.lean,Mathlib/AlgebraicTopology/SimplicialSet/CompStructTruncated.lean |
3 |
2 |
['github-actions', 'mathlib4-dependent-issues-bot'] |
robin-carlier assignee:robin-carlier |
1-21692 1 day ago |
5-21084 5 days ago |
5-21059 5 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-21691 1 day ago |
8-49724 8 days ago |
8-49713 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-21689 1 day ago |
8-33148 8 days ago |
8-33122 8 days |
| 31324 |
YaelDillies author:YaelDillies |
chore(Finsupp): move `mapRange.equiv` earlier |
Move `mapRange.equiv` to `Data.Finsupp.Defs` and `mapRange.addEquiv` to `Algebra.Group.Finsupp`. This lets us not import fields when defining `finsuppAntidiag`.
As previously, I am basing myself off the idea that `Finsupp` will at some point in the future be generalised to other base points (rather than just `0` as it is now), and that therefore anything under `Data.Finsupp` should not be algebraic (apart from mentioning `0`).
---
[](https://gitpod.io/from-referrer/)
|
t-algebra label:t-algebra$ |
103/151 |
Mathlib/Algebra/Group/Finsupp.lean,Mathlib/Algebra/Order/Antidiag/Finsupp.lean,Mathlib/Data/Finsupp/Basic.lean,Mathlib/Data/Finsupp/Defs.lean,Mathlib/LinearAlgebra/FreeModule/Basic.lean,Mathlib/RingTheory/Polynomial/Opposites.lean |
6 |
1 |
['github-actions', 'wwylele'] |
ocfnash assignee:ocfnash |
1-21688 1 day ago |
7-67866 7 days ago |
7-67856 7 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-21688 1 day ago |
7-24206 7 days ago |
7-24181 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-21686 1 day ago |
7-13006 7 days ago |
7-13042 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-21685 1 day ago |
6-62659 6 days ago |
6-62693 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-21684 1 day ago |
5-80948 5 days ago |
5-83787 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-21683 1 day ago |
5-75725 5 days ago |
5-75764 5 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-21683 1 day ago |
5-49162 5 days ago |
5-49136 5 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-21679 1 day ago |
4-71059 4 days ago |
4-71035 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-21678 1 day ago |
4-66598 4 days ago |
4-66991 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-21678 1 day ago |
4-70721 4 days ago |
4-70696 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-21677 1 day ago |
4-47561 4 days ago |
4-47598 4 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 |
1-21676 1 day ago |
4-33307 4 days ago |
4-33345 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-21675 1 day ago |
4-28332 4 days ago |
4-28306 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-20952 1 day ago |
1-20952 1 day ago |
1-76209 1 day |
| 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-18958 1 day ago |
1-19034 1 day ago |
59-3201 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-18635 1 day ago |
1-18635 1 day ago |
1-18681 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-13635 1 day ago |
1-14719 1 day ago |
1-14694 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-11920 1 day ago |
2-26634 2 days ago |
2-26668 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-4687 1 day ago |
1-4687 1 day ago |
1-4663 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 |
0-84329 23 hours ago |
0-84478 23 hours ago |
1-7921 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 |
0-83036 23 hours ago |
0-83038 23 hours ago |
5-15407 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 |
0-82390 22 hours ago |
1-34556 1 day ago |
1-34682 1 day |
| 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 |
2 |
['github-actions', 'themathqueen'] |
nobody |
0-82304 22 hours ago |
1-33977 1 day ago |
1-34010 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 |
0-80553 22 hours ago |
9-32296 9 days ago |
9-33337 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 |
0-78882 21 hours ago |
0-79039 21 hours ago |
0-81038 22 hours |
| 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 |
0-76806 21 hours ago |
0-77790 21 hours ago |
0-77824 21 hours |
| 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 |
0-76629 21 hours ago |
0-76629 21 hours ago |
1-57269 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 |
0-75685 21 hours ago |
0-76246 21 hours ago |
0-76288 21 hours |
| 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-72200 20 hours ago |
0-72200 20 hours ago |
1-66139 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-70267 19 hours ago |
0-70267 19 hours ago |
0-76797 21 hours |
| 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-69437 19 hours ago |
0-69437 19 hours ago |
1-19388 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-68510 19 hours ago |
0-68511 19 hours ago |
4-54490 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-68424 19 hours ago |
0-68424 18 hours ago |
1-67821 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-67831 18 hours ago |
0-67831 18 hours ago |
3-83397 3 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-66742 18 hours ago |
0-67589 18 hours ago |
3-17595 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-66676 18 hours ago |
0-81376 22 hours ago |
0-81410 22 hours |
| 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-66608 18 hours ago |
1-54549 1 day ago |
1-81399 1 day |
| 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-64637 17 hours ago |
0-64640 17 hours ago |
0-64680 17 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-61408 17 hours ago |
0-61408 17 hours ago |
0-61445 17 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-60772 16 hours ago |
0-61279 17 hours ago |
0-61333 17 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-58738 16 hours ago |
1-76045 1 day ago |
2-17743 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-58201 16 hours ago |
10-69132 10 days ago |
10-69309 10 days |
| 31569 |
sgouezel author:sgouezel |
feat: drop a finiteness assumptions in covariance results |
---
[](https://gitpod.io/from-referrer/)
|
t-measure-probability |
73/15 |
Mathlib/Probability/Moments/CovarianceBilin.lean,Mathlib/Probability/Moments/CovarianceBilinDual.lean |
2 |
7 |
['EtienneC30', 'github-actions', 'sgouezel'] |
nobody |
0-57126 15 hours ago |
1-32238 1 day ago |
1-32276 1 day |
| 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-55400 15 hours ago |
0-55400 15 hours ago |
0-60092 16 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-54191 15 hours ago |
0-54191 15 hours ago |
37-15865 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-46574 12 hours ago |
29-34596 29 days ago |
29-34582 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-42653 11 hours ago |
21-11050 21 days ago |
21-11086 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-40887 11 hours ago |
8-59702 8 days ago |
16-37399 16 days |
| 31433 |
sinhp author:sinhp |
feat (CategoryTheory): Computable cartesian monoidal structure on slices induced by chosen pullbacks |
We provide for a category `C` with chosen pullbacks, a cartesian monoidal structure on the slice categories `Over X` for all objects `X : C`.
We also show that the functor `pullback f : Over X ⥤ Over Y` is naturally isomorphic to `toOver (Over.mk f): Over X ⥤ Over (Over.mk f)` post-composed with the iterated slice equivalence `Over (Over.mk f) ⥤ Over Y`.
This latter theorem will be crucial in relating closed objects in the slices to exponentiable morphisms in the base in `LocallyCartesianClosed.Basic.lean`
(Here `toOver` is defined to be the computable analogue of the functor `Over.star`.)
```mermaid
graph TD
A[ChosenPullbackAlong.lean] --> A'[Over.lean]
A' --> B[Sections.lean]
A' --> C[ExponentiableMorphism.lean]
B --> D[Basic.lean]
C --> D
D --> E[Types.lean]
E --> F[Presheaves.lean]
D --> G[Beck-Chevalley.lean]
%% Define highlight style
classDef highlight fill:#ffe599,stroke:#d4a017,stroke-width:2px;
%% Apply to one node
class A' highlight;
```
---
- [ ] depends on: #31033
[](https://gitpod.io/from-referrer/)
|
t-category-theory |
438/0 |
Mathlib.lean,Mathlib/CategoryTheory/Comma/Over/Basic.lean,Mathlib/CategoryTheory/LocallyCartesianClosed/Over.lean |
3 |
9 |
['github-actions', 'joelriou', 'mathlib4-dependent-issues-bot', 'mathlib4-merge-conflict-bot', 'sinhp'] |
nobody |
0-39780 11 hours ago |
0-39780 11 hours ago |
0-67458 18 hours |
| 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-39624 11 hours ago |
2-36619 2 days ago |
84-50396 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-36122 10 hours ago |
0-36365 10 hours ago |
5-26900 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-33662 9 hours ago |
0-61996 17 hours ago |
11-49082 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-33135 9 hours ago |
0-33852 9 hours ago |
0-33896 9 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-33111 9 hours ago |
1-77247 1 day ago |
1-77286 1 day |
| 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-32930 9 hours ago |
0-46905 13 hours ago |
0-46952 13 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-32928 9 hours ago |
0-32928 9 hours ago |
0-32908 9 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-32890 9 hours ago |
0-46692 12 hours ago |
0-46734 12 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-32849 9 hours ago |
0-40492 11 hours ago |
0-40530 11 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-31192 8 hours ago |
1-34921 1 day ago |
1-34966 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-30448 8 hours ago |
0-30448 8 hours ago |
0-32909 9 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-29087 8 hours ago |
1-65246 1 day ago |
1-78029 1 day |
| 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-28529 7 hours ago |
0-28534 7 hours ago |
0-28569 7 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-26231 7 hours ago |
9-80181 9 days ago |
9-80215 9 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-24823 6 hours ago |
0-24876 6 hours ago |
1-81203 1 day |
| 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 |
1 |
['github-actions'] |
nobody |
0-23583 6 hours ago |
0-23773 6 hours ago |
0-23812 6 hours |
| 31244 |
kim-em author:kim-em |
chore: use generic `map_X` lemmas where possible |
While thinking about grind annotations for homomorphisms, it occurs to me that automation is more likely when we use the generic, rather than namespaced, lemmas where possible. This is some cleanup in that direction. |
|
817/861 |
Archive/Examples/Eisenstein.lean,Archive/Wiedijk100Theorems/Partition.lean,Counterexamples/CliffordAlgebraNotInjective.lean,Counterexamples/DirectSumIsInternal.lean,Counterexamples/Phillips.lean,Mathlib/Algebra/Algebra/Tower.lean,Mathlib/Algebra/Category/Grp/FilteredColimits.lean,Mathlib/Algebra/Category/Grp/Images.lean,Mathlib/Algebra/Category/Grp/ZModuleEquivalence.lean,Mathlib/Algebra/Category/ModuleCat/ChangeOfRings.lean,Mathlib/Algebra/Category/ModuleCat/FilteredColimits.lean,Mathlib/Algebra/Category/ModuleCat/Images.lean,Mathlib/Algebra/Category/ModuleCat/Monoidal/Basic.lean,Mathlib/Algebra/Category/MonCat/FilteredColimits.lean,Mathlib/Algebra/CharP/Pi.lean,Mathlib/Algebra/CharP/Subring.lean,Mathlib/Algebra/Colimit/Module.lean,Mathlib/Algebra/Colimit/Ring.lean,Mathlib/Algebra/CubicDiscriminant.lean,Mathlib/Algebra/DirectSum/Algebra.lean,Mathlib/Algebra/DirectSum/Basic.lean,Mathlib/Algebra/DirectSum/Ring.lean,Mathlib/Algebra/Exact.lean,Mathlib/Algebra/FreeAbelianGroup/Finsupp.lean,Mathlib/Algebra/FreeMonoid/Basic.lean,Mathlib/Algebra/GCDMonoid/Basic.lean,Mathlib/Algebra/Group/ForwardDiff.lean,Mathlib/Algebra/Group/Hom/Defs.lean,Mathlib/Algebra/Group/Prod.lean,Mathlib/Algebra/Group/Subgroup/Pointwise.lean,Mathlib/Algebra/Group/Submonoid/Pointwise.lean,Mathlib/Algebra/GroupWithZero/Action/End.lean,Mathlib/Algebra/GroupWithZero/Subgroup.lean,Mathlib/Algebra/GroupWithZero/Submonoid/Pointwise.lean,Mathlib/Algebra/Homology/ComplexShapeSigns.lean,Mathlib/Algebra/Homology/Homotopy.lean,Mathlib/Algebra/Lie/BaseChange.lean,Mathlib/Algebra/Lie/Basic.lean,Mathlib/Algebra/Lie/Character.lean,Mathlib/Algebra/Lie/DirectSum.lean,Mathlib/Algebra/Lie/Free.lean,Mathlib/Algebra/Lie/TensorProduct.lean,Mathlib/Algebra/Lie/TraceForm.lean,Mathlib/Algebra/Lie/Weights/Basic.lean,Mathlib/Algebra/Lie/Weights/Cartan.lean,Mathlib/Algebra/Module/Equiv/Basic.lean,Mathlib/Algebra/Module/Injective.lean,Mathlib/Algebra/Module/LinearMap/Defs.lean,Mathlib/Algebra/Module/LinearMap/End.lean,Mathlib/Algebra/Module/LocalizedModule/Basic.lean,Mathlib/Algebra/Module/LocalizedModule/Exact.lean,Mathlib/Algebra/Module/Submodule/Bilinear.lean,Mathlib/Algebra/Module/Submodule/Ker.lean,Mathlib/Algebra/Module/Submodule/LinearMap.lean,Mathlib/Algebra/Module/ZLattice/Covolume.lean,Mathlib/Algebra/MonoidAlgebra/Grading.lean,Mathlib/Algebra/MvPolynomial/CommRing.lean,Mathlib/Algebra/MvPolynomial/Derivation.lean,Mathlib/Algebra/MvPolynomial/Equiv.lean,Mathlib/Algebra/MvPolynomial/Eval.lean,Mathlib/Algebra/MvPolynomial/Funext.lean,Mathlib/Algebra/MvPolynomial/Monad.lean,Mathlib/Algebra/Order/CompleteField.lean,Mathlib/Algebra/Polynomial/Basic.lean,Mathlib/Algebra/Polynomial/Coeff.lean,Mathlib/Algebra/Polynomial/Degree/Lemmas.lean,Mathlib/Algebra/Polynomial/DenomsClearable.lean,Mathlib/Algebra/Polynomial/Derivative.lean,Mathlib/Algebra/Polynomial/Eval/Coeff.lean,Mathlib/Algebra/Polynomial/Eval/Defs.lean,Mathlib/Algebra/Polynomial/FieldDivision.lean,Mathlib/Algebra/Polynomial/Lifts.lean,Mathlib/Algebra/Polynomial/Monic.lean,Mathlib/Algebra/Polynomial/Roots.lean,Mathlib/Algebra/Quandle.lean,Mathlib/Algebra/Ring/Action/Basic.lean,Mathlib/Algebra/Ring/Action/End.lean,Mathlib/Algebra/RingQuot.lean,Mathlib/Algebra/Star/TensorProduct.lean,Mathlib/Algebra/TrivSqZeroExt.lean,Mathlib/AlgebraicGeometry/GammaSpecAdjunction.lean,Mathlib/AlgebraicGeometry/Modules/Tilde.lean,Mathlib/AlgebraicGeometry/Properties.lean,Mathlib/AlgebraicGeometry/StructureSheaf.lean,Mathlib/Analysis/BoxIntegral/Basic.lean,Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/Unital.lean,Mathlib/Analysis/CStarAlgebra/Matrix.lean,Mathlib/Analysis/Calculus/ContDiff/Basic.lean,Mathlib/Analysis/Calculus/ContDiff/FTaylorSeries.lean,Mathlib/Analysis/Calculus/Deriv/Basic.lean,Mathlib/Analysis/Calculus/FDeriv/Symmetric.lean,Mathlib/Analysis/Calculus/InverseFunctionTheorem/ApproximatesLinearOn.lean,Mathlib/Analysis/Calculus/Taylor.lean,Mathlib/Analysis/Complex/Harmonic/Analytic.lean,Mathlib/Analysis/Complex/Isometry.lean,Mathlib/Analysis/Complex/Norm.lean,Mathlib/Analysis/Complex/Polynomial/Basic.lean,Mathlib/Analysis/Complex/Trigonometric.lean,Mathlib/Analysis/Convolution.lean,Mathlib/Analysis/Fourier/BoundedContinuousFunctionChar.lean |
336 |
19 |
['github-actions', 'j-loreaux', 'kim-em', 'leanprover-bot', 'leanprover-community-mathlib4-bot', 'mathlib4-merge-conflict-bot', 'tb65536'] |
tb65536 assignee:tb65536 |
0-23379 6 hours ago |
0-23407 6 hours ago |
8-32997 8 days |
| 31612 |
JovanGerb author:JovanGerb |
chore(Tactic/Translate): rename the `ToAdditive` folder |
Rename the folder `ToAdditive` to `Translate`. And rename the file `Frontend` to `Core` (since that now mostly contains the backend code for the translation attributes).
Instead of `Translate`, we could also call it e.g. `Translation`, `TranslateAttr` or `TranslationAttr`.
---
[](https://gitpod.io/from-referrer/)
|
file-removed
t-meta
|
15/18 |
Mathlib.lean,Mathlib/Tactic.lean,Mathlib/Tactic/ToAdditive.lean,Mathlib/Tactic/ToDual.lean,Mathlib/Tactic/Translate/Core.lean,Mathlib/Tactic/Translate/GuessName.lean,Mathlib/Tactic/Translate/ToAdditive.lean,Mathlib/Tactic/Translate/ToDual.lean,scripts/noshake.json |
9 |
1 |
['github-actions'] |
nobody |
0-21965 6 hours ago |
0-21965 6 hours ago |
0-22008 6 hours |
| 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-21707 6 hours ago |
3-64600 3 days ago |
10-8167 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-21706 6 hours ago |
4-47653 4 days ago |
4-52107 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-21705 6 hours ago |
5-34580 5 days ago |
5-34553 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-21703 6 hours ago |
4-31644 4 days ago |
10-81556 10 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-21703 6 hours ago |
3-43996 3 days ago |
11-38018 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-21702 6 hours ago |
5-18889 5 days ago |
10-955 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-21701 6 hours ago |
10-30910 10 days ago |
10-30944 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-21700 6 hours ago |
8-58591 8 days ago |
8-58627 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'] |
nobody |
0-21699 6 hours ago |
6-35166 6 days ago |
6-51525 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-21697 6 hours ago |
4-51186 4 days ago |
4-51220 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'] |
nobody |
0-21696 6 hours ago |
4-19606 4 days ago |
4-21563 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-21695 6 hours ago |
3-66347 3 days ago |
3-66380 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-21695 6 hours ago |
4-301 4 days ago |
4-337 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-21694 6 hours ago |
3-53835 3 days ago |
3-53815 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-21693 6 hours ago |
3-52608 3 days ago |
3-52642 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-21692 6 hours ago |
3-51018 3 days ago |
3-51056 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-21691 6 hours ago |
3-28687 3 days ago |
3-28731 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-21434 5 hours ago |
0-21434 5 hours ago |
5-49999 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-13912 3 hours ago |
132-33179 4 months ago |
132-33210 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-9214 2 hours ago |
0-63704 17 hours ago |
11-53958 11 days |
| 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-6878 1 hour ago |
0-6878 1 hour ago |
8-4516 8 days |