Skip to content
Closed
Show file tree
Hide file tree
Changes from 53 commits
Commits
Show all changes
4477 commits
Select commit Hold shift + click to select a range
49a5f2f
feat(CategoryTheory/Sites): relation between `IsPrestack` and the ful…
joelriou Jan 2, 2026
2c67626
feat: cardinality of Hahn series inverse (#32643)
vihdzp Jan 2, 2026
e8634b0
feat: `stdPart x = sSup {r | r < x}` (#33007)
vihdzp Jan 2, 2026
f158da3
feat(Combinatorics/SimpleGraph/Acyclic): characterise maximal acyclic…
thomaskwaring Jan 2, 2026
1b6ed25
chore(Topology/Algebra/Module/LinearMap): deprecate duplicate lemmas …
themathqueen Jan 2, 2026
616962e
chore(Order/Defs/Unbundled): deprecate `IsSymm` in favor of core's `S…
SnirBroshi Jan 2, 2026
8ddacc3
feat(CategoryTheory): Exponentiable morphisms (#31332)
sinhp Jan 2, 2026
0411b42
chore(Algebra/Central/End): generalize `Algebra.IsCentral.instEnd` (#…
themathqueen Jan 2, 2026
9334a88
feat(Homotopy/Lifting): add a lemma about `IsCoveringMapOn` (#33422)
urkud Jan 2, 2026
df12474
feat(Probability): Right continuous filtrations (#33371)
kex-y Jan 2, 2026
bb09d6f
feat: FTaylorSeries of the composition with an affine map (#33459)
sgouezel Jan 2, 2026
314af9a
chore: Fix Dihedral comments (#33483)
ldct Jan 2, 2026
251c45c
feat(CategoryTheory/Sites): stacks (#33195)
joelriou Jan 2, 2026
b9694a5
feat(RingTheory): polynomial is integral <-> coeffs are integral (#33…
erdOne Jan 2, 2026
41d61da
feat(Algebra/GroupWithZero/NonZeroDivisors): add some lemmas about mu…
Hagb Jan 2, 2026
f7520f3
feat: simp lemmas PrimeSpectrum.asIdeal_bot/top (#33489)
xgenereux Jan 2, 2026
39c0197
feat: `IsStrictOrderedRing (Lex R⟦Γ⟧)` (#33398)
vihdzp Jan 2, 2026
1aa691d
feat(RingTheory/RootsOfUnity/PrimitiveRoots): add primitiveRootsPowEq…
metakunt Jan 3, 2026
c35ddca
doc(translate): improve discoverability of trace options (#33500)
JovanGerb Jan 3, 2026
3066d29
feat(Algebra/Order/SuccPred): simplify n+1 ≤ ... and ... < n+1 (#33320)
vihdzp Jan 3, 2026
e3902cd
feat: subfield of Hahn series bounded by a cardinal (#32648)
vihdzp Jan 3, 2026
5584e92
feat(Algebra/Group/Action): add `smul_set_eq_univ` (#33515)
urkud Jan 3, 2026
703ab83
chore(Algebra/MonoidAlgebra/Basic): rename variables (#33516)
YaelDillies Jan 3, 2026
06a7641
feat: file for lemmas about MvPolynomials over NoZeroDivisors (#25925)
BoltonBailey Jan 3, 2026
72d3634
feat(MetricSpace): add `eventually_ball_subset` (#33512)
urkud Jan 3, 2026
624d6e9
feat(ToIntervalMod): add missing lemmas (#33442)
urkud Jan 3, 2026
6f92c37
feat(MetricSpace/Algebra): prove uniform continuity of `(· • ·)` (#33…
urkud Jan 3, 2026
4592862
refactor: rename `≤ᵥ` to `vle` and `<ᵥ` to `vlt` (#33040)
vihdzp Jan 3, 2026
29b478a
ci: add tracing option to linting steps (#33474)
bryangingechen Jan 3, 2026
0ab0228
feat(RingTheory/TensorProduct/MonoidAlgebra): additivise (#33482)
YaelDillies Jan 3, 2026
4e04673
feat(Schwarz): generalize domain (#33511)
urkud Jan 3, 2026
db61c03
chore(Data/Finsupp): rename `finsuppProdEquiv` to `curryEquiv` (#33521)
YaelDillies Jan 3, 2026
e92f6ea
feat(CauchyIntegral): add a version of the Cauchy integral theorem (#…
urkud Jan 3, 2026
61d7db8
feat(CircleIntegral): integral of a finite sum of functions (#33513)
urkud Jan 3, 2026
909ef70
feat(RingTheory/Nilpotent/Exp): add isNilpotent_exp_sub_one (#33473)
anivegesana Jan 3, 2026
41a2742
feat(RingTheory/DedekindDomain/AdicValuation): introduce `intAdicAbv`…
fbarroero Jan 3, 2026
a76333c
feat(Algebra): characterise when a submodule constructor is equal to …
YaelDillies Jan 3, 2026
b9bc6cf
chore: update Mathlib dependencies 2026-01-03 (#33528)
mathlib4-update-dependencies-bot Jan 3, 2026
a87e2bc
feat(Data/Matrix/Cartan): determinants and simply-laced properties (#…
JohnnyTeutonic Jan 4, 2026
22e8540
chore: update Mathlib dependencies 2026-01-04 (#33534)
mathlib4-update-dependencies-bot Jan 4, 2026
96e366c
doc(Algebra): fix file refs (#33446)
harahu Jan 4, 2026
1495772
feat(RingTheory/MvPowerSeries): (mv) PowerSeries version of `expand_c…
WenrongZou Jan 4, 2026
d508ae4
doc(RingTheory): fix file refs (#33284)
harahu Jan 4, 2026
0aaa3be
feat(RingTheory/Nakayama): refine Nakayama's lemma 00DV (8) (#33361)
sun123zxy Jan 4, 2026
9548e28
feat(Valuation/Basic): adjust Valuation.IsNontrivial lemmas for field…
xgenereux Jan 4, 2026
a13d335
feat(AlgebraicTopology): finite simplicial sets are `ℵ₀`-presentable …
joelriou Jan 4, 2026
1165d68
refactor(SetTheory/Ordinal/Arithmetic): deprecate `boundedLimitRecOn`…
vihdzp Jan 4, 2026
0ec591e
feat(Geometry/Euclidean/Angle/Oriented/Affine): Add oangle sign lemma…
zcyemi Jan 4, 2026
208657c
feat(BigOperators/Finprod): add `finsum_cond_pos` (#33508)
urkud Jan 4, 2026
937ad4f
feat(RingTheory/DedekindDomain/GaussLemma): Gauss's Lemma for Dedekin…
fbarroero Jan 4, 2026
5ab3aa4
fix(CI): prevent empty grep pattern from matching all lean-pr-testing…
kim-em Jan 4, 2026
e81b152
feat: generalise `Ideal.absNorm_eq_pow_inertiaDeg` (#33484)
smmercuri Jan 4, 2026
c2732d7
refactor(Algebra/Polynomial/Factors): Deprecate file (#32946)
tb65536 Jan 4, 2026
9df9c09
feat: Simple lemmas about convergence in WithTop (#33374)
kex-y Jan 4, 2026
2f68dcb
doc(README): linter -> linters (#33533)
Rida-Hamadani Jan 4, 2026
2696ecd
feat(Polynomial/Chebyshev): calculate values of T and U at zero (#33311)
YuvalFilmus Jan 4, 2026
edc3e07
feat(Topology/Algebra/Module/Equiv): add 2 lemmas (#33510)
urkud Jan 4, 2026
55ce87f
feat(RingTheory): no extension is algebraic over the zero ring (#33540)
YaelDillies Jan 4, 2026
8f87d7d
feat: lemmas about `Matrix.single` and `diagonal` and `submatrix` (#3…
eric-wieser Jan 4, 2026
07bca97
feat(CategoryTheory): `FinCategory` instance on `Pairwise` (#33537)
erdOne Jan 4, 2026
ca8a739
chore(Analysis/Calculus): remove unnecessary @[expose] from public se…
kim-em Jan 5, 2026
2b51172
chore: update Mathlib dependencies 2026-01-05 (#33566)
mathlib4-update-dependencies-bot Jan 5, 2026
e88f2c4
chore(Analysis/SpecialFunctions): remove unnecessary @[expose] from p…
kim-em Jan 5, 2026
0f40d0e
chore(Analysis/Normed): remove unnecessary @[expose] from public sect…
kim-em Jan 5, 2026
bcad265
chore(Analysis/Complex): remove unnecessary @[expose] from public sec…
kim-em Jan 5, 2026
5a9ad26
chore(Data): remove unnecessary @[expose] from public sections (#33574)
kim-em Jan 5, 2026
8c35f53
feat(SimpleGraph): define and prove basic theory of vertex covers (#3…
vlad902 Jan 5, 2026
4ffca15
perf(to_fun): remove `ofNat(n)` in `Pi.ofNat_def` (#32940)
JovanGerb Jan 5, 2026
0851712
chore: golf proofs (#33541)
euprunin Jan 5, 2026
5ce9f29
chore: golf proofs (#33559)
euprunin Jan 5, 2026
e3dd0a7
chore: mark `Ordinal.enumOrd` with `no_expose` (#33298)
vihdzp Jan 5, 2026
35b13b9
ci: run check-lean4checker on self-hosted runner (#33424)
bryangingechen Jan 5, 2026
1d3bd48
feat: range of `Finsupp` is finite (#33530)
vihdzp Jan 5, 2026
35c5bc0
chore(Algebra/Order): remove unnecessary @[expose] from public sectio…
kim-em Jan 5, 2026
d11e274
chore(Algebra/Group): remove unnecessary @[expose] from public sectio…
kim-em Jan 5, 2026
44ef2da
chore(Algebra): remove unnecessary @[expose] from public sections (#3…
kim-em Jan 5, 2026
69448be
chore(RingTheory): remove unnecessary @[expose] from public sections …
kim-em Jan 5, 2026
26483f2
chore(Topology): remove unnecessary @[expose] from public sections (#…
kim-em Jan 5, 2026
b930ea3
chore(MeasureTheory): remove unnecessary @[expose] from public sectio…
kim-em Jan 5, 2026
43636d5
chore(CategoryTheory): remove unnecessary @[expose] from public secti…
kim-em Jan 5, 2026
e5d0a54
chore(NumberTheory): remove unnecessary @[expose] from public section…
kim-em Jan 5, 2026
0acd25d
chore(LinearAlgebra,Order): remove unnecessary @[expose] from public …
kim-em Jan 5, 2026
4a253ca
chore(Probability,Geometry): remove unnecessary @[expose] from public…
kim-em Jan 5, 2026
08a6528
chore: remove unnecessary @[expose] from public sections (#33581)
kim-em Jan 5, 2026
4e9b65c
feat(Homology): map between `Ext` induced by exact functor (#31707)
Thmoas-Guan Jan 5, 2026
cb8c784
feat(RepresentationTheory/Homological/GroupCohomology/Hilbert90): add…
riccardobrasca Jan 5, 2026
04e784c
chore(Algebra): move `LinearMap.mul{Left, Right, LeftRight}` to earli…
themathqueen Jan 5, 2026
6b53226
ci: revert changes to wrapper script in #33474 (#33598)
bryangingechen Jan 5, 2026
1b5ce83
doc(1000.yaml): Add decls of Prokhorov's theorem, Parseval's theorem …
yuanyi-350 Jan 5, 2026
4c02bd9
chore(Order/Defs/Unbundled): deprecate `IsAsymm` in favor of core's `…
SnirBroshi Jan 5, 2026
c883da4
chore: golf proofs (#33550)
euprunin Jan 5, 2026
620bd0d
chore: promote `Matrix.det` from an `abbrev` into a `def` (#33590)
ocfnash Jan 5, 2026
f8ef076
feat(MeasureTheory/Integral): add versions of `exists_eq_interval_ave…
Deep0Thinking Jan 5, 2026
3cf8b7d
feat(CategoryTheory): LCCC sections (constructing right adjoint to `O…
sinhp Jan 5, 2026
c243222
feat(Data/Matrix/Basis): add some lemmas (#31637)
Whysoserioushah Jan 5, 2026
ac4513e
feat(NumberTheory/Height/Basic): first installment of heights (#33054)
MichaelStollBayreuth Jan 5, 2026
652204f
chore: fix some `privateInPublic` proofs (#33591)
JovanGerb Jan 5, 2026
8bae6e5
feat(Geometry/Euclidean/Angle/Unoriented/Affine): Add Theorem about S…
wangying11123 Jan 5, 2026
dac4596
feat(LinearAlgebra/Prod): add `range_prodMap` (#33585)
urkud Jan 5, 2026
0253be6
chore(positivity): make tactic lemmas public (#33593)
JovanGerb Jan 5, 2026
0500c21
feat: define `Metric.Snowflaking` (#33114)
urkud Jan 5, 2026
248b61b
feat(Analysis/Complex): exp is covering map (#33564)
alreadydone Jan 5, 2026
e7f63db
feat(Analysis/SpecialFunctions/Integrals): add `∫ x : ℝ in a..b, (c ^…
michelsol Jan 5, 2026
1e47313
feat(Cache): environment-configurable URLs (#33605)
tydeu Jan 6, 2026
fdd2666
ci: do not wrap linting step with log parsing script (#33646)
bryangingechen Jan 6, 2026
3bbb613
ci: add nanoda verification to daily workflow (#33648)
kim-em Jan 6, 2026
ff197ea
fix(Cache): print ProofWidgets build stdout on error (#33651)
tydeu Jan 6, 2026
53c8c24
chore(Data/Option): deprecate `Option.iget` (#33583)
kim-em Jan 6, 2026
af5e422
chore: golf using `grind` (#33074)
euprunin Jan 6, 2026
875d476
feat(RingTheory): construct etale neighborhood that isolates point in…
erdOne Jan 6, 2026
e595c73
chore(Topology/Order): generalize `IsCountablyGenerated atTop` instan…
gasparattila Jan 6, 2026
844c764
feat(MeasureTheory/Group/Action): weaken MeasurableSMul to Measurable…
loefflerd Jan 6, 2026
86a6efc
chore: golf proofs (#33616)
euprunin Jan 6, 2026
2c93c1f
feat(Data/Nat/Digits): prove the bijection induced by `Nat.ofDigits` …
xroblot Jan 6, 2026
52e32bd
chore(Data): golf proofs (#33480)
euprunin Jan 6, 2026
31c4e1b
chore: golf proofs (#33549)
euprunin Jan 6, 2026
94b0683
chore: golf proofs (#33596)
euprunin Jan 6, 2026
4bf446b
chore: golf proofs (#33600)
euprunin Jan 6, 2026
29d2c35
feat(RingTheory): base change of ideal with flat quotients (#32806)
erdOne Jan 6, 2026
17142f8
feat(Algebra): leading coeff of sum of polynomials with same degree i…
michelsol Jan 6, 2026
fd574d4
feat(Analysis/Normed/Group/Seminorm): define SupSet instances (#32841)
0xTerencePrime Jan 6, 2026
e145716
chore(RingTheory/MvPowerSeries/Order): deprecate duplicate theorem (#…
vihdzp Jan 6, 2026
d1ddf71
feat: add simp lemma `nhdsSet_eq_bot_iff` (#33623)
j-loreaux Jan 6, 2026
5c74c48
feat: add `forall_is{Open,Closed}_iff` (#33624)
j-loreaux Jan 6, 2026
ee2b885
feat: filter bases for `nhdsSet` of a compact set in locally compact …
j-loreaux Jan 6, 2026
7e38299
fix: `zsmul` lemmas that were about `nsmul` instead (#33652)
vihdzp Jan 6, 2026
89c5f68
feat(AlgebraicGeometry/EllipticCurve/Projective): remove unnecessary …
euprunin Jan 6, 2026
5e12ee2
refactor(Analysis/NormedSpace/Exponential): remove the `𝕂` argument f…
astrainfinita Jan 6, 2026
b0d1ca1
feat(Polynomial/Derivative): iterated derivative of product of linear…
YuvalFilmus Jan 6, 2026
c41639c
fix(Tactic/WLOG): handle unused let variables (#33632)
plp127 Jan 6, 2026
e37a256
feat(Topology): sandwich lemmas for profinite sets (#32660)
dagurtomas Jan 6, 2026
71c8a99
refactor(EMetricSpace): rename `EMetric.diam` -> `Metric.ediam` (#33558)
urkud Jan 6, 2026
06a26cc
chore(Cache): add README and rename USE_FRO_CACHE to MATHLIB_CACHE_US…
kim-em Jan 6, 2026
169d14a
feat(Analysis/Analytic): analytic order of a composition (#33000)
loefflerd Jan 6, 2026
3bf11e2
feat(LinearAlgebra/AffineSpace/Simplex/Centroid): define centroid and…
zcyemi Jan 6, 2026
8db55b8
feat: use new predicate `Meromorphic` in Value Distribution Theory (…
kebekus Jan 6, 2026
ab079d1
feat(Analysis/InnerProductSpace): define rank-one operators (#33439)
themathqueen Jan 6, 2026
10b3af5
chore(Algebra): some cleanup (#33602)
themathqueen Jan 6, 2026
132a848
feat(ValuationSubring): toSubring_top (#33610)
xgenereux Jan 6, 2026
2180340
feat(Algebra/Algebra/Equiv): `f.conj (mulLeft R x) = mulLeft R (f x)`…
themathqueen Jan 6, 2026
e81ad61
fix(Finprod): fix a `to_additive` name (#33638)
urkud Jan 6, 2026
1d89657
feat(Analysis/Fourier): Fourier transform of the convolution (#32992)
mcdoll Jan 6, 2026
ac74dfd
chore: golf using `grind` and `simp` (#33290)
euprunin Jan 6, 2026
eed49da
feat(Topology/Separation/NotNormal): generalize to non-separable spac…
peakpoint Jan 6, 2026
baa785a
feat(Analysis/TemperedDistribution): derivatives (#32770)
mcdoll Jan 6, 2026
0c06f2d
feat(Analysis/TemperedDistribution): Fourier transform of the dirac d…
mcdoll Jan 6, 2026
3c80e5f
doc(Analysis): fix file refs (#33451)
harahu Jan 6, 2026
5a6798e
feat(Schwarz): add a version for maps with derivative zero (#33563)
urkud Jan 6, 2026
dfe1ee8
feat(UnitDisc): define `Pow 𝔻 ℕ+` (#33630)
urkud Jan 6, 2026
cb6f41f
chore: adaptations for batteries#1588 (#33681)
fgdorais Jan 6, 2026
669c494
chore: use `IsScalarTower.algebraMap_eq` to golf two proofs (#33353)
ocfnash Jan 6, 2026
3e01411
chore: deprecate duplicate results about `zsmul` (#33653)
vihdzp Jan 6, 2026
4a2d7a7
chore(Combinatorics/SimpleGraph/Connectivity/EdgeConnectivity): renam…
SnirBroshi Jan 6, 2026
6ead7e0
feat(Topology/Inseparable): condition for the compactness of a subset…
gasparattila Jan 6, 2026
36aee82
feat(AlgebraicGeometry): universal property of relative normalization…
erdOne Jan 7, 2026
bf799d3
feat(RingTheory): quasi-finite algebras (#32665)
erdOne Jan 7, 2026
9d56928
perf(translate): only run `check` after kernel check fails (#33498)
JovanGerb Jan 7, 2026
7996a51
chore: update Mathlib dependencies 2026-01-07 (#33695)
mathlib4-update-dependencies-bot Jan 7, 2026
4dac70e
chore(Topology/Order/Lattice): tag continuity lemmas with `fun_prop` …
gasparattila Jan 7, 2026
1d630b4
chore(UnitDisc): review API (#33639)
urkud Jan 7, 2026
17076a0
chore(Order/Defs/Unbundled): deprecate `IsAntisymm` in favor of core'…
SnirBroshi Jan 7, 2026
febfa25
feat: Upgrade theorem `MeromorphicAt.comp_analyticAt` (#33703)
kebekus Jan 7, 2026
8079afd
feat: add Artinian schemes (#32412)
Brian-Nugent Jan 7, 2026
37f4365
ci(daily.yml): remove continue-on-error from check steps (#33694)
bryangingechen Jan 7, 2026
5cb34be
feat: a dense Gdelta subset of a Baire space is Baire. (#32674)
CoolRmal Jan 7, 2026
a816023
chore(Tactic/Translate/ToDual): fix typo in `nameDict` (#33701)
JovanGerb Jan 7, 2026
b717d1a
feat(MeasureTheory): more MeasurableSMul -> MeasurableConstSMul (#33710)
loefflerd Jan 7, 2026
5a5a939
chore: fix more spacing issues (#33705)
grunweg Jan 7, 2026
c74583a
feat(RingTheory): noetherian model for etale algebras (#32837)
erdOne Jan 7, 2026
126382a
feat(Analysis): ℘ is analytic (#32911)
erdOne Jan 7, 2026
28f5b98
feat: nontrivial instances for valuation with `ℤᵐ⁰` as codomain (#33060)
xgenereux Jan 7, 2026
b644ff6
refactor(Combinatorics/SimpleGraph/VertexCover): assumes containment …
vlad902 Jan 7, 2026
35032eb
feat: more API for ae strongly measurable functions on compact sets (…
sgouezel Jan 7, 2026
f6b0499
feat(AlgebraicGeometry): fpqc descent implies fppf descent (#33556)
erdOne Jan 7, 2026
423550f
chore: fix whitespace (#33629)
harahu Jan 7, 2026
efe5300
feat(Order): `OrderIso` involving `Prod` and `Lex` (#33663)
YanYablonovskiy Jan 7, 2026
c3a3847
chore: remove some duplicate instances (#33667)
JovanGerb Jan 7, 2026
b12aaf5
chore: more `fun_prop` attributes and lemmas (#33671)
sgouezel Jan 7, 2026
4f6736d
chore: fix more spacing issues (#33706)
grunweg Jan 7, 2026
4cdb45f
chore(AlgebraicGeometry/ProjectiveSpectrum): delete unused code (#33711)
Vierkantor Jan 7, 2026
3231f5f
feat(RingTheory/Morita/Matrix): more on morita equivalence between `R…
Whysoserioushah Jan 7, 2026
0ed046d
feat(Polynomial/Derivative): formulas for iterated derivatives of P *…
YuvalFilmus Jan 7, 2026
13c03f1
chore: fix even more spacing issues (#33716)
grunweg Jan 7, 2026
e087f5c
chore(MeasureTheory): remove redundant `by_cases` (#33725)
yuma-mizuno Jan 7, 2026
09c66ba
feat: define `PolynormableSpace` (#32480)
ADedecker Jan 7, 2026
e71723e
feat(CategoryTheory): lifting colimit cocone to `Over` (#33536)
erdOne Jan 7, 2026
c3c4c1b
fix(Tactic/DepRewrite): unknown free variable on `rw!` at local hypot…
plp127 Jan 7, 2026
6e8ee6a
feat(Analysis/Asymptotics): Adds Asymptotics.IsEquivalent.Log (#33522)
ajirving Jan 7, 2026
b48a2f4
chore(Topology/Covering): adjust some statements (#33721)
alreadydone Jan 7, 2026
76409ba
feat(Analysis/Distribution): more lemmas for temperate growth functio…
mcdoll Jan 7, 2026
4aff231
chore(Topology): fix whitespace (#33728)
harahu Jan 7, 2026
92c679f
feat(Analysis/SchwartzSpace): scalar multiplication with linear facto…
mcdoll Jan 7, 2026
4a0ca4a
chore: rename the `commandStart` linter to `whitespace` (#33708)
grunweg Jan 7, 2026
781ee7a
fix(ci): show helpful message when runLinter needs master merge (#33696)
kim-em Jan 7, 2026
7d4c2a8
ci: add commit verification for transient commits (#33713)
jcommelin Jan 7, 2026
d056957
chore(RingTheory): fix whitespace (#33729)
harahu Jan 7, 2026
365c805
chore(CategoryTheory): fix whitespace (#33730)
harahu Jan 7, 2026
150d47b
style(misc): fix whitespace (#33732)
harahu Jan 7, 2026
304d220
chore: update Mathlib dependencies 2026-01-07 (#33733)
mathlib4-update-dependencies-bot Jan 7, 2026
76a769f
ci(daily.yml): get job status from API instead of via needs context (…
bryangingechen Jan 8, 2026
c1fa8e9
fix(Cache): option order in usage & error messages (#33735)
tydeu Jan 8, 2026
93a9f4a
chore(Order/Defs/Unbundled): deprecate `IsIrrefl` in favor of core's …
SnirBroshi Jan 8, 2026
f596bd4
feat(RingTheory/PowerSeries/Schroder): Define the generating function…
FlAmmmmING Jan 8, 2026
87ef5a9
feat(GroupTheory/SpecificGroups/Cyclic): generalize the proof of prim…
Lingyin00 Jan 8, 2026
d9f0298
chore(Analysis/InnerProductSpace): the Laplacian is `k`-linear (#33739)
mcdoll Jan 8, 2026
fe772cb
feat(Topology): add definition for subpaths (#27261)
Sebi-Kumar Jan 8, 2026
a566c06
refactor: make `LinearOrderedCommMonoidWithZero`s cancellative (#31749)
YaelDillies Jan 8, 2026
8e5efe5
feat(RingTheory): some base changes commute with integral closure (#3…
erdOne Jan 8, 2026
7e2e8d2
chore(Algebra/Exact): refactor using `to_additive` (#33719)
tb65536 Jan 8, 2026
ac1579d
feat(FundamentalGroupoid/InducedMaps): generalize to different univer…
urkud Jan 8, 2026
479ad5d
feat(to_dual): `to_dual none` to have the dual as an implementation d…
JovanGerb Jan 8, 2026
0560700
chore: update Mathlib dependencies 2026-01-08 (#33742)
mathlib4-update-dependencies-bot Jan 8, 2026
fef78f2
feat(ModelTheory/Definability): TermDefinable functions (#26332)
Timeroot Jan 8, 2026
9ee0f47
feat(Powerset): Results related to image (#33193)
YuvalFilmus Jan 8, 2026
b0c86e5
chore: use a generic neighborhood instead of balls in theorems on par…
sgouezel Jan 8, 2026
d5d9c04
feat(AlgebraicGeometry): properties of `coprod.map` and `coprod.desc`…
erdOne Jan 8, 2026
a84e121
feat(Topology): trivial lemmas (#33720)
alreadydone Jan 8, 2026
28f4592
chore(Algebra/GroupWithZero): deprecate `mul_mem_nonZeroDivisors{Left…
euprunin Jan 8, 2026
2bf8ab7
feat: Matrix.IsSymm.inv (#33748)
Ruben-VandeVelde Jan 8, 2026
42096ea
fix: generalize ContinuousLinearMap.map_add₂ and friends (#33750)
eric-wieser Jan 8, 2026
bf85eee
chore(Archive,Counterexamples): find whitespace (#33759)
grunweg Jan 8, 2026
f093daa
chore: remove superfluous disabling of the whitespace linter (#33758)
grunweg Jan 8, 2026
5a2c857
feat: add IsNowhereDense helpers (#32740)
LTolDe Jan 8, 2026
a7632b2
chore(Tactic): remove duplicate instances (#33666)
JovanGerb Jan 8, 2026
9661ec1
feat(DifferentialForm): exterior derivative applied to vector fields …
urkud Jan 8, 2026
443d8a9
feat: IMO 2010 Q5 (#31315)
Parcly-Taxel Jan 8, 2026
4dc7ba9
fix(Tactic/TacticAnalysis): analyze tactics inside `have ... := by ..…
kim-em Jan 8, 2026
426b7be
fix: `simp_rw` does not hide goals (#32956)
adomani Jan 8, 2026
695ffd9
feat: uniqueness API for implicit function of `IsContDiffImplicitAt` …
winstonyin Jan 8, 2026
392f67c
feat: some lemmas about finsum/finprod (#33186)
Ruben-VandeVelde Jan 8, 2026
d56fc60
feat(Algebra/Algebra/Subalgebra): remove unnecessary assumptions in `…
euprunin Jan 8, 2026
41043d9
chore: tidy various files (#33687)
Ruben-VandeVelde Jan 8, 2026
c372e37
ci: wrap linting with stdbuf -oL so log output appears immediately (#…
bryangingechen Jan 9, 2026
8b9c027
doc(Algebra): fix file refs (#33620)
harahu Jan 9, 2026
751eeeb
feat: more API for upper hemicontinuous functions (#33626)
j-loreaux Jan 9, 2026
87a4616
fix: Rename constructors in Irrational.lean docstrings (#33524)
ldct Jan 9, 2026
8251916
feat: Schur's lemma over an algebraically closed field (#33216)
stepan2698-cpu Jan 9, 2026
d5a2b31
feat(MeasureTheory): interval integral is absolutely continuous (#32163)
zhuyizheng Jan 9, 2026
601c22f
chore: fix whitespace (#33747)
harahu Jan 9, 2026
b6e3de2
chore(Order/Defs/Unbundled): deprecate `IsRefl` in favor of core's `S…
SnirBroshi Jan 9, 2026
bbcc617
feat: a lower bound for the volume of a cone on the unit sphere (#31960)
urkud Jan 9, 2026
8703a3d
feat(ConvexSpace): complete `proof_wanted` statements (#33562)
kim-em Jan 9, 2026
51c2029
fix(translate): don't unfold aux lemmas, but translate them (#33603)
JovanGerb Jan 9, 2026
32a14e1
refactor: unify the two versions of `pow_eq_one_iff` (#30799)
YaelDillies Jan 9, 2026
564fe01
feat(Topology.GDelta.Basic): add helpers for IsMeagre (#33308)
LTolDe Jan 9, 2026
3566c35
feat(Combinatorics/SimpleGraph): distributivity of box product over s…
YaelDillies Jan 9, 2026
aebf7c4
cs0
May 22, 2025
2a48ffd
Update Mathlib.lean
pfaffelh Jun 4, 2025
9125043
chore: clean up porting note left after #28324 (#28742)
bryangingechen Sep 1, 2025
9b337fd
doc: fix repeated typo "nonegative" (#29637)
harahu Sep 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -3519,6 +3519,7 @@ import Mathlib.Data.Set.Constructions
import Mathlib.Data.Set.Countable
import Mathlib.Data.Set.Defs
import Mathlib.Data.Set.Disjoint
import Mathlib.Data.Set.Dissipate
import Mathlib.Data.Set.Enumerate
import Mathlib.Data.Set.Equitable
import Mathlib.Data.Set.Finite.Basic
Expand Down Expand Up @@ -6372,6 +6373,7 @@ import Mathlib.Topology.Compactification.OnePointEquiv
import Mathlib.Topology.Compactification.StoneCech
import Mathlib.Topology.Compactness.Bases
import Mathlib.Topology.Compactness.Compact
import Mathlib.Topology.Compactness.CompactSystem
import Mathlib.Topology.Compactness.CompactlyCoherentSpace
import Mathlib.Topology.Compactness.CompactlyGeneratedSpace
import Mathlib.Topology.Compactness.DeltaGeneratedSpace
Expand Down
6 changes: 5 additions & 1 deletion Mathlib/Data/Set/Accumulate.lean
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ import Mathlib.Data.Set.Lattice
/-!
# Accumulate

The function `Accumulate` takes a set `s` and returns `⋃ y ≤ x, s y`.
The function `Accumulate` takes `s : α → Set β` with `LE α` and returns `⋃ y ≤ x, s y`.

In large parts, this file is parallel to `Mathlib.Data.Set.Dissipate`, where
`Dissipate s := ⋂ y ≤ x, s y` is defined.

-/


Expand Down
158 changes: 158 additions & 0 deletions Mathlib/Data/Set/Dissipate.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
/-
Copyright (c) 2025 Peter Pfaffelhuber. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Peter Pfaffelhuber
-/
import Mathlib.Data.Set.Lattice
import Mathlib.Order.Directed
import Mathlib.MeasureTheory.PiSystem

/-!
# Dissipate

The function `dissipate` takes `s : α → Set β` with `LE α` and returns `⋂ y ≤ x, s y`.

In large parts, this file is parallel to `Mathlib.Data.Set.Accumulate`, where
`Accumulate s := ⋃ y ≤ x, s y` is defined.

-/

open Nat

variable {α β : Type*} {s : α → Set β}

namespace Set

/-- `dissipate s` is the intersection of `s y` for `y ≤ x`. -/
def dissipate [LE α] (s : α → Set β) (x : α) : Set β :=
⋂ y ≤ x, s y

@[simp]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This shouldn't be @[simp]. Otherwise, there's no point in introducing the definition if you want to remove it whenever it is used.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Ok, this makes a lot of sense.

theorem dissipate_def [LE α] {x : α} : dissipate s x = ⋂ y ≤ x, s y := rfl

theorem dissipate_eq {s : ℕ → Set β} {n : ℕ} : dissipate s n = ⋂ k < n + 1, s k := by
simp_rw [Nat.lt_add_one_iff]
rfl

theorem mem_dissipate [LE α] {x : α} {z : β} : z ∈ dissipate s x ↔ ∀ y ≤ x, z ∈ s y := by
simp only [dissipate_def, mem_iInter]

theorem dissipate_subset [Preorder α] {x y : α} (hy : y ≤ x) : dissipate s x ⊆ s y :=
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Wouldn't [LE α] suffice here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes, it does. Changed.

biInter_subset_of_mem hy

theorem iInter_subset_dissipate [Preorder α] (x : α) : ⋂ i, s i ⊆ dissipate s x := by
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ditto

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Ditto.

simp only [dissipate, subset_iInter_iff]
exact fun x h ↦ iInter_subset_of_subset x fun ⦃a⦄ a ↦ a

theorem antitone_dissipate [Preorder α] : Antitone (dissipate s) :=
fun _ _ hab ↦ biInter_subset_biInter_left fun _ hz => le_trans hz hab

@[gcongr]
theorem dissipate_subset_dissipate [Preorder α] {x y} (h : y ≤ x) :
dissipate s x ⊆ dissipate s y :=
antitone_dissipate h

@[simp]
theorem dissipate_dissipate [Preorder α] {s : α → Set β} {x : α} :
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

if a lemma name contains dissipate, the statement should also contain dissipate.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

True, changed. (Since I had dissipate_def as simp before, I used the normal form in the lemma to start with.)

⋂ y, ⋂ (_ : y ≤ x), ⋂ y_1, ⋂ (_ : y_1 ≤ y), s y_1 = ⋂ y, ⋂ (_ : y ≤ x), s y := by
apply Subset.antisymm
· apply iInter_mono fun z y hy ↦ ?_
simp only [mem_iInter] at *
exact fun h ↦ hy h z <| le_refl z
· simp only [subset_iInter_iff]
exact fun i hi z hz ↦ biInter_subset_of_mem <| le_trans hz hi

@[simp]
theorem iInter_dissipate [Preorder α] : ⋂ x, ⋂ y, ⋂ (_ : y ≤ x), s y = ⋂ x, s x := by
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ditto

apply Subset.antisymm <;> simp_rw [subset_def, mem_iInter]
· exact fun z h x' ↦ h x' x' (le_refl x')
· exact fun z h x' y hy ↦ h y

lemma dissipate_bot [PartialOrder α] [OrderBot α] (s : α → Set β) : dissipate s ⊥ = s ⊥ := by
simp only [dissipate_def, le_bot_iff, iInter_iInter_eq_left]

open Nat

@[simp]
theorem dissipate_succ (s : ℕ → Set α) (n : ℕ) :
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

if you want to use dissipate in the lemma name, it should also appear in the statement.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Can you also use it on the left hand side?

Copy link
Copy Markdown
Contributor Author

@pfaffelh pfaffelh Jan 14, 2026

Choose a reason for hiding this comment

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

I will open a new PR with only the changes in Dissipate.lean as asked for below. My answers here apply to the new PR.
The new PR is here:
#33975

Now it is also on the left hand side.

⋂ i, ⋂ (_ : i ≤ n + 1), s i = (dissipate s n) ∩ s (n + 1)
:= by
ext x
simp_all only [dissipate_def, mem_iInter, mem_inter_iff]
refine ⟨fun a ↦ ?_, fun a i c ↦ ?_⟩
· simp_all only [le_refl, and_true]
intro i i_1
apply a i <| le_trans i_1 (le_succ n)
· obtain ⟨left, right⟩ := a
· by_cases h : i ≤ n
· exact left i h
· have h : i = n + 1 := by
simp only [not_le] at h
exact le_antisymm c h
exact h.symm ▸ right

lemma dissipate_zero (s : ℕ → Set β) : dissipate s 0 = s 0 := by
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This one should definitely be simp

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done.

simp [dissipate_def]

lemma exists_subset_dissipate_of_directed {s : ℕ → Set α}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Can you add a docstring explaining the content of the lemma?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done.

(hd : Directed (fun (x y : Set α) => y ⊆ x) s) (n : ℕ) : ∃ m, s m ⊆ dissipate s n := by
induction n with
| zero => use 0; simp
| succ n hn =>
obtain ⟨m, hm⟩ := hn
simp_rw [dissipate_def, dissipate_succ]
obtain ⟨k, hk⟩ := hd m (n+1)
simp at hk
use k
simp only [subset_inter_iff]
exact ⟨le_trans hk.1 hm, hk.2⟩

lemma exists_dissipate_eq_empty_iff {s : ℕ → Set α}
(hd : Directed (fun (x y : Set α) => y ⊆ x) s) :
(∃ n, dissipate s n = ∅) ↔ (∃ n, s n = ∅) := by
refine ⟨?_, fun ⟨n, hn⟩ ↦ ⟨n, ?_⟩⟩
· rw [← not_imp_not]
push_neg
intro h n
obtain ⟨m, hm⟩ := exists_subset_dissipate_of_directed hd n
exact Set.Nonempty.mono hm (h m)
· by_cases hn' : n = 0
· rw [hn']
exact Eq.trans (dissipate_zero s) (hn' ▸ hn)
· obtain ⟨k, hk⟩ := exists_eq_add_one_of_ne_zero hn'
rw [hk, dissipate_def, dissipate_succ, ← hk, hn, Set.inter_empty]

lemma directed_dissipate {s : ℕ → Set α} :
Directed (fun (x y : Set α) => y ⊆ x) (dissipate s) :=
antitone_dissipate.directed_ge
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
antitone_dissipate.directed_ge
antitone_dissipate.directed_ge

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done.


lemma exists_dissipate_eq_empty_iff_of_directed (C : ℕ → Set α)
(hd : Directed (fun (x y : Set α) => y ⊆ x) C) :
(∃ n, C n = ∅) ↔ (∃ n, dissipate C n = ∅) := by
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Could you exchange the two sides of the iff, to match the lemma statement? In general, the more complicated term in an iff is put to its left, because rw or simp operate from left to right.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks, done.

refine ⟨fun ⟨n, hn⟩ ↦ ⟨n, ?_⟩ , ?_⟩
· by_cases hn' : n = 0
· rw [hn', dissipate_zero]
exact hn' ▸ hn
· obtain ⟨k, hk⟩ := exists_eq_succ_of_ne_zero hn'
simp_rw [hk, succ_eq_add_one, dissipate_def, dissipate_succ,
← succ_eq_add_one, ← hk, hn, Set.inter_empty]
· rw [← not_imp_not]
push_neg
intro h n
obtain ⟨m, hm⟩ := exists_subset_dissipate_of_directed hd n
exact Set.Nonempty.mono hm (h m)

/-- For a ∩-stable set of sets `p` on `α` and a sequence of sets `s` with this attribute,
`p (dissipate s n)` holds. -/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
`p (dissipate s n)` holds. -/
`dissipate s n` belongs to `p`. -/

(The lemma is about a set of sets, not sets with some property)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done.

lemma IsPiSystem.dissipate_mem {s : ℕ → Set α} {p : Set (Set α)}
(hp : IsPiSystem p) (h : ∀ n, s n ∈ p) (n : ℕ) (h' : (dissipate s n).Nonempty) :
(dissipate s n) ∈ p := by
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
(dissipate s n) ∈ p := by
dissipate s n ∈ p := by

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done.

induction n with
| zero =>
simp only [dissipate_def, le_zero_eq, iInter_iInter_eq_left]
exact h 0
| succ n hn =>
rw [dissipate_def, dissipate_succ] at *
apply hp (dissipate s n) (hn (Nonempty.left h')) (s (n+1)) (h (n+1)) h'

end Set
8 changes: 8 additions & 0 deletions Mathlib/MeasureTheory/PiSystem.lean
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,14 @@ theorem IsPiSystem.insert_univ {S : Set (Set α)} (h_pi : IsPiSystem S) :
· simp [hs, ht]
· exact Set.mem_insert_of_mem _ (h_pi s hs t ht hst)

lemma IsPiSystem.iff_of_empty_mem (S : Set (Set α)) (hS : ∅ ∈ S) :
(IsPiSystem S) ↔ (∀ s ∈ S, ∀ t ∈ S, s ∩ t ∈ S) := by
refine ⟨fun h s hs t ht ↦ ?_, fun h s hs t ht _ ↦ h s hs t ht⟩
by_cases h' : (s ∩ t).Nonempty
· exact h s hs t ht h'
· push_neg at h'
exact h' ▸ hS

theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f : α → β) :
IsPiSystem { s : Set α | ∃ t ∈ S, f ⁻¹' t = s } := by
rintro _ ⟨s, hs_mem, rfl⟩ _ ⟨t, ht_mem, rfl⟩ hst
Expand Down
Loading