Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
452 commits
Select commit Hold shift + click to select a range
bb39487
feat(CategoryTheory/ObjectProperty): preservation of limits is closed…
joelriou Jun 25, 2026
d31b573
feat(AlgebraicGeometry): define algebraic cycles (#37901)
Raph-DG Jun 25, 2026
0cd556a
feat: generalize `ae_hasDerivAt_integral` to Banach spaces (#40976)
certik Jun 25, 2026
aea5d67
chore(MeasureTheory): minor clean up of seminorm lemmas (#40986)
mcdoll Jun 25, 2026
83a3797
chore: add star lemmas for congruence relations (#40919)
eric-wieser Jun 25, 2026
2071186
feat(Tactic): `polynomial(_nf)` tactics (#31513)
amellendijk Jun 25, 2026
4364cad
feat(Order/Hom/Basic): equivalences of `Order{Hom/Embedding/Iso}` (#3…
SnirBroshi Jun 25, 2026
5a07c5f
feat: add nthRootsFinset_eq_of_prime and related lemmas (#40662)
riccardobrasca Jun 25, 2026
609b527
feat: add isCoprime_of_not_zeta_sub_one_dvd and related lemmas (#40906)
riccardobrasca Jun 25, 2026
51801ad
chore(RingTheory/TensorProduct): remove left-over `noncomputable`s (#…
chrisflav Jun 25, 2026
1f12a57
chore: update Mathlib dependencies 2026-06-25 (#41044)
mathlib-update-dependencies[bot] Jun 25, 2026
7af6b0b
feat: add prime_units_mul and variants (#40220)
riccardobrasca Jun 25, 2026
12e0e35
feat(Algebra/Homology): applying an additive functor to the homotopy …
joelriou Jun 25, 2026
ac06f38
feat: add a `LawfulXor` typeclass (#37712)
eric-wieser Jun 25, 2026
68b30e5
feat: `NSMul`/`NPow` type class (#38036)
JovanGerb Jun 25, 2026
5c98554
feat(Algebra/Order/Antidiag/Prod): add HasMulAntidiagonal (#38623)
mariainesdff Jun 25, 2026
e7c715d
chore: fix non-reducible diamond in `StarRingEnd` (#41047)
sgouezel Jun 25, 2026
f503087
feat(CategoryTheory/Localization): small additions (#40884)
joelriou Jun 25, 2026
81bc606
feat(Logic/Function/Defs): Add dcomp lemmas (#39195)
wrenna-robson Jun 25, 2026
737969f
feat: PiLp.equivOfUnique (#40634)
grunweg Jun 25, 2026
99d6cda
fix: correct deprecation for `orthogonalProjection_mem_subspace_ortho…
grunweg Jun 25, 2026
3afead4
feat(Algebra/Homology): the injective derivability structure (#41000)
joelriou Jun 25, 2026
11b908e
feat(Combinatorics/SimpleGraph/Girth): add lemma `Walk.IsCircuit.egir…
IvanRenison Jun 25, 2026
490fac7
feat(RepresentationTheory/Homological): add more APIs to groupCohomol…
Whysoserioushah Jun 26, 2026
88f283c
chore(Algebra/Algebra/Basic): delete redundant `Algebra.ofSubring` in…
tb65536 Jun 26, 2026
087d8a2
feat(CategoryTheory/Presentable): the category of types is locally pr…
joelriou Jun 26, 2026
165cce0
feat: add lemmas about primitive roots (#40555)
riccardobrasca Jun 26, 2026
179c414
feat(RingTheory): etale local decomposition of finite extensions (#41…
erdOne Jun 26, 2026
31bbfaf
fix(ClickSuggestions): instantiate all metavariables in the local con…
JovanGerb Jun 26, 2026
d7d52d2
feat(Algebra/MvPolynomial/PDeriv): a coefficient formula for `pderiv`…
justus-springer Jun 26, 2026
cd86c80
feat(LinearAlgebra): preliminary APIs for symplectic matrices (#40449)
Yu-Misaka Jun 26, 2026
e2102ac
chore(Algebra/Ring/Periodic): automated extraction from #38483 (#40669)
mathlib-splicebot[bot] Jun 26, 2026
8f49886
feat(Algebra/Homology): the injective derivability structure on the h…
joelriou Jun 26, 2026
cce5343
feat(NumberTheory/Height/NumberField): Northcott property (#39744)
MichaelStollBayreuth Jun 26, 2026
96b5d75
feat: add zeta_sub_one_dvd_intCast_iff and related declarations (#40232)
riccardobrasca Jun 26, 2026
7e24eee
feat: the space of Schwartz maps is T3 (#40931)
luigi-massacci Jun 26, 2026
8afd8c5
feat(CategoryTheory/Preadditive/AdditiveFunctor): finite products in …
smorel394 Jun 26, 2026
44ae711
feat(RingTheory/MvPowerSeries/Trunc): generalize truncation lemmas (#…
justus-springer Jun 26, 2026
24434ef
feat(RepresentationTheory/Basic): add one API (#41076)
Whysoserioushah Jun 26, 2026
d6772ec
feat(Data/Nat): a number divides a power of its own radical (#40170)
SnirBroshi Jun 26, 2026
7f60f15
ci: bump actions/checkout to v7.0.0 (#41055)
marcelolynch Jun 26, 2026
7bc792d
feat(Topology/Sets): second-countability of `(Nonempty)Compacts` (#34…
gasparattila Jun 26, 2026
33633b7
ci: revert #41055 (#41078)
bryangingechen Jun 26, 2026
571b8a8
feat: more API for set integrals wrt vector measures (#40808)
sgouezel Jun 26, 2026
69b0edc
ci: bump actions/checkout to v7.0.0 (#41084)
marcelolynch Jun 26, 2026
8d0d1cf
feat(Analysis/Meromorphic): meromorphicOrderAt of derivative (#40080)
wwylele Jun 26, 2026
a592298
feat: introduce typeclass `LinearMap.IsWeak` for weak topologies indu…
j-loreaux Jun 26, 2026
ba1e3bb
chore: extract API from #38807 and golf (#39230)
bryangingechen Jun 26, 2026
0ee7df2
chore: use `NeBot` in left and right limits (#41079)
sgouezel Jun 27, 2026
6568acd
chore(AlgebraicGeometry): add `LocallyRingedSpace.residue` (#41087)
chrisflav Jun 27, 2026
3b9fc57
feat(RingTheory/IntegralClosure): add integrality of kerLift (#41058)
rshlyakh Jun 27, 2026
0f320b0
feat(Topology/MetricSpace): the L^p direct sum of metric spaces (#40212)
YaelDillies Jun 27, 2026
2899f15
perf(CategoryTheory/Triangulated/TriangleShift): replace `cat_disch` …
plp127 Jun 27, 2026
46c7419
feat(AlgebraicGeometry/Birational): Birationality and rationality of …
justus-springer Jun 27, 2026
e4bf531
feat(Combinatorics/SimpleGraph/Coloring): add lemmas about coloring a…
IvanRenison Jun 27, 2026
48fca28
chore(ci): bump pinned GitHub Actions to latest (#41089)
marcelolynch Jun 27, 2026
b2b4255
chore: use more `mkApp(Opt)M` in the differential geometry elaborator…
grunweg Jun 27, 2026
70ba12a
feat(SimpleGraph): `dropLast` of a cycle is a path (#35295)
Rida-Hamadani Jun 28, 2026
c8b35d4
feat(RingTheory): adjoining a root is preserved under base change (#4…
YaelDillies Jun 28, 2026
d74f9d3
Merge branch 'master' into model-theory/quantifier-elimination-extension
erdkocak Jun 28, 2026
b3efe7e
chore: adaptations for batteries#1863 (#40820)
grunweg Jun 28, 2026
8681f82
doc(Algebra/Group/Defs): fix typo in `NSMul`s docstring (#41059)
SnirBroshi Jun 28, 2026
0723fe7
chore(FieldTheory/IsGaloisGroup): move `mulEquivAlgEquiv` to ring the…
tb65536 Jun 28, 2026
c402beb
chore: remove redundant `backward.proofsInPublic` exceptions (#41096)
felixpernegger Jun 28, 2026
21c622e
chore: fix some adaption notes (#41117)
felixpernegger Jun 28, 2026
9e03f6c
feat(Algebra/Homology): the right derived functor `RF : D^+(C) ⥤ D^+(…
joelriou Jun 28, 2026
a730529
chore: remove unused `linter.unusedVariables` exception (#41003)
felixpernegger Jun 28, 2026
aaedc74
chore(RepresentationTheory): remove some set_option backwards (#41057)
Whysoserioushah Jun 28, 2026
6cc0969
doc: add wikidata attributes (#40970)
Deicyde Jun 29, 2026
41066cd
feat(ModularForms): SL2 action and Serre derivative (#36963)
seewoo5 Jun 29, 2026
e752928
feat(RingTheory): UFD criteria via height `1` prime ideals and locali…
mbkybky Jun 29, 2026
8fe98ac
feat: define multivariate restricted power series (#32692)
WilliamCoram Jun 29, 2026
f021562
feat(AlgebraicGeometry/Modules): `tilde` as an equivalence of categor…
chrisflav Jun 29, 2026
8857f7a
feat: more results on bounded variation functions (#41099)
sgouezel Jun 29, 2026
7a9fb52
feat: vector measures with density wrt vector measures (#41080)
sgouezel Jun 29, 2026
930ff26
chore(Algebra/Polynomial/Eval/Defs): `eval₂RingHom_comp_C` (#41124)
mathlib-splicebot[bot] Jun 29, 2026
872d8ee
chore(LinearAlgebra/Matrix): avoid defeq abuse in cRank (#40128)
wwylele Jun 29, 2026
20d9d3d
feat(Algebra/Category): `TensorAlgebra` as a left-adjoint to the forg…
chrisflav Jun 29, 2026
95fdbd6
chore: clean up `backward.privateInPublic` around `d₂₃` (#40228)
thorimur Jun 29, 2026
35ab429
feat(LinearAlgebra/SesquilinearForm): moving orthogonality to own fil…
martinwintermath Jun 29, 2026
d0c53be
feat(NumberTheory/NumberField/Discriminant): add `not_dvd_discr_iff_i…
xroblot Jun 29, 2026
cb4d969
feat(LinearAlgebra): fill two proof_wanted declarations (#39046)
adamtopaz Jun 29, 2026
0ba66b4
chore(RingTheory/Localization/Ideal): add `liesOver_map_of_isPrime_di…
tb65536 Jun 29, 2026
8406f7a
chore(RingTheory/Ideal/Norm/RelNorm): switch over to new definitions …
tb65536 Jun 29, 2026
01749d4
chore(Algebra/Category/Sheaf): remove superfluous `HasSheafCompose` a…
chrisflav Jun 29, 2026
f6d7788
chore(CategoryTheory): some API for `FormalCoproducts` (#41126)
chrisflav Jun 30, 2026
c7369ee
feat(MeasureTheory): use `IsApply` for `OuterMeasure` (#40945)
mcdoll Jun 30, 2026
6ffe5ea
chore(NumberTheory/Femat): fix defeq abuse (#41171)
felixpernegger Jun 30, 2026
c25a7b5
chore: delete deprecated modules to the end of 2025 (#41168)
Parcly-Taxel Jun 30, 2026
e695991
feat(FormalGroup): `F(X,0)=X` and `F(0,X)=X` (#38052)
WenrongZou Jun 30, 2026
717304d
chore(MeasureTheory/Measure/DiracProba): remove some defEq abuse (#40…
felixpernegger Jun 30, 2026
ed585ca
chore: unsimp `Set.coe_setOf` (#39582)
plp127 Jun 30, 2026
dc5088f
feat: Monotonicity of `setIntegral` for nonnegative functions (#25778)
thefundamentaltheor3m Jun 30, 2026
967fd0f
feat(CategoryTheory): add `shrinkCoyoneda` (#41150)
peabrainiac Jun 30, 2026
b53180c
feat: more API around enorms of operators (#41155)
sgouezel Jun 30, 2026
80c8d53
feat(Geometry/Manifold): models with corners are smooth embeddings (#…
peabrainiac Jun 30, 2026
c108fbd
chore(CategoryTheory): thin categories have strict initial and termin…
chrisflav Jun 30, 2026
4b0d022
feat(Data/Set/Basic,Data/Finset/Empty): forall_mem_const for nonempty…
teorth Jun 30, 2026
67b4a95
refactor(RingTheory/Localization/AtPrime/Extension): switch to new de…
tb65536 Jun 30, 2026
48b12e1
feat: tag the pointwise MeasureTheory operation families with to_fun …
teorth Jun 30, 2026
e5f4140
feat(MeasureTheory/MeasurableSpace/Constructions): add MeasurableSpac…
teorth Jun 30, 2026
c82fea1
feat(MeasureTheory/MeasurableSpace/Basic): add map_comap_eq_of_surjec…
teorth Jun 30, 2026
8a9a228
refactor(NumberTheory/NumberField/Ideal/KummerDedekind): switch to ne…
tb65536 Jun 30, 2026
caf2c7a
chore(MeasureTheory): remove redundant imports (#40832)
felixpernegger Jun 30, 2026
a866146
refactor(NumberTheory/RamificationInertia/Unramified): switch to new …
tb65536 Jun 30, 2026
b122ba8
chore: namespace `contMDiffAt_extend` and friends under `OpenPartialH…
grunweg Jun 30, 2026
0baa635
chore: deprime FiberBundle.contMDiffAt_extend' (#41175)
grunweg Jun 30, 2026
d0ae44e
feat(CategoryTheory): properties of objects in comma categories (#41182)
joelriou Jun 30, 2026
240b4d2
feat(Algebra/Category/ModuleCat): submodules of presheaves of modules…
chrisflav Jun 30, 2026
00249b1
feat(MeasureTheory.VectorMeasure): add lemma which shows that variati…
oliver-butterley Jun 30, 2026
2a3f6b9
doc: norm_num imports for primality testing (#41186)
loefflerd Jun 30, 2026
a788c76
feat(CI): check that Mathlib files have lean or md extension (#25473)
adomani Jun 30, 2026
8a75b5a
feat(Combinatorics/SimpleGraph/Paths): some cycle lemmas are true for…
SnirBroshi Jun 30, 2026
fd90ca9
refactor(Analysis): golf `Mathlib/Analysis/Normed/Unbundled/AlgebraNo…
yuanyi-350 Jun 30, 2026
f4c9070
chore: tag `(Continuous)LinearEquiv.prodCongr_symm` with `@[simp]` (#…
gasparattila Jun 30, 2026
b4d8056
chore(Tactic/Linarith/Parsing): remove local abbrev for `TreeMap` (#4…
JovanGerb Jun 30, 2026
8d4799b
doc(Combinatorics/SimpleGraph/Girth): fix incorrect TODO statement (#…
Mal-Pat Jun 30, 2026
f9c485b
feat(Combinatorics/SimpleGraph/Paths): `p.IsPath → p.bypass = p` (#40…
Mal-Pat Jun 30, 2026
957d4de
feat(NumberTheory/Primorial): a few simple facts (#40980)
thefundamentaltheor3m Jun 30, 2026
ef089a7
chore(downstream_repos): add Lean Machine Learning (#41020)
RemyDegenne Jun 30, 2026
f412ff5
feat(Analysis/InnerProductSpace): bounded point evaluation in an RKHS…
gnahz04 Jun 30, 2026
0ca2949
chore: rename MDifferentiable.smul and friends to fun_smul (#41173)
grunweg Jun 30, 2026
19c7b8c
feat(LinearAlgebra/AffineSpace): parallel cross-section of a simplex …
wwylele Jun 30, 2026
818de64
doc(1000.yaml): note more formalised theorems (#38358)
yuanyi-350 Jun 30, 2026
0596069
feat(Algebra/Group/Hom): upgrade a MulHom to a MonoidHomClass when co…
pechersky Jun 30, 2026
ca15854
refactor(Computability.Encoding): unbundle Γ and remove FinEncoding (…
AlexeyMilovanov Jun 30, 2026
e70da6c
chore(NumberTheory/RamificationInertia/Galois): remove hypotheses fro…
tb65536 Jun 30, 2026
09d0fe8
chore(Algebra/Algebra/Tower): upgrade `extendScalarsOfSurjective` to …
tb65536 Jun 30, 2026
23fb79f
chore(FieldTheory/Galois/IsGaloisGroup): remove redundant `have` stat…
tb65536 Jun 30, 2026
7d6ecd3
refactor(RepresentationTheory/Rep/Res): refactor resFunctor (#41054)
Whysoserioushah Jun 30, 2026
ebc5666
chore(Algebra/Polynomial/Splits): remove field hypothesis from `map_a…
tb65536 Jun 30, 2026
59a563a
chore(NumberTheory/*): remove last `ramificationIdx_eq_ramificationId…
tb65536 Jun 30, 2026
40b6a8f
chore(MathlibTest): move test files for linters into the Linter subdi…
grunweg Jun 30, 2026
3aa8562
feat: add TendstoCofinite lemma for polynomial functions (#40807)
Xmask19 Jun 30, 2026
c36598a
feat(Data/Nat/DivSequence): add divisibility sequences and strong div…
tb65536 Jun 30, 2026
a9ca7e2
fix(Tactic/Convert): support over-applications again (#40740)
JovanGerb Jun 30, 2026
2f5414e
feat(Combinatorics/SimpleGraph/Girth): `egirth ⊤ = 3` when there are …
SnirBroshi Jun 30, 2026
4e98488
perf: lower the priority of `Normed*.to*` instances (#40144)
astrainfinita Jun 30, 2026
39ba0f9
chore(Analysis/Calculus): generalize `HasDerivWithinAt.inv` etc (#40743)
roos-j Jun 30, 2026
4bf1dda
refactor: change definitions to avoid `ConvexCone` (#37420)
artie2000 Jun 30, 2026
4568a35
feat(Analysis/InnerProductSpace/TensorProduct): Add TensorProduct.map…
TJHeeringa Jun 30, 2026
8ac5928
chore(Combinatorics/SimpleGraph/Acyclic): golf `IsAcyclic.path_unique…
SnirBroshi Jun 30, 2026
d6e37a2
chore(SimpleGraph): move `cycleGraph` to its own file (#37930)
vlad902 Jun 30, 2026
1ce2796
chore(Analysis/Convex/Gauge): rename lemmas involving `{x | prop (gau…
khwilson Jun 30, 2026
8e2ecc9
feat(SimpleGraph): add universal vertex predicate (#38589)
vlad902 Jun 30, 2026
2ccc107
feat: pointwise limit of a sequence of monotone functions is monotone…
CoolRmal Jul 1, 2026
d52d26f
chore(Logic/Relation): use `≤` to spell subrelation (#30526)
SnirBroshi Jul 1, 2026
2fed563
refactor(Analysis/Convex/Cone): use `PointedCone` in Riesz extension …
artie2000 Jul 1, 2026
79841fc
feat: expand lemmas about `Function.prod` (#41148)
wrenna-robson Jul 1, 2026
256af21
feat(Analysis/Distribution/Support): version for D' of existing lemma…
luigi-massacci Jul 1, 2026
9dcbf32
feat(Order/ConditionallyCompleteLattice): `sSup (f '' s) ≤ f (sSup s)…
SnirBroshi Jul 1, 2026
28c4f6c
chore(Data/Matrix/Basic): mention `mopMatrix` in `transpose{Ring/Alg}…
SnirBroshi Jul 1, 2026
ad6b660
feat(Geometry/Euclidean/Sphere): add lemmas about points on a sphere …
Scarlett-le Jul 1, 2026
c8aed1a
feat(Combinatorics): set-valued pigeonhole principle (#37190)
cjrl Jul 1, 2026
73c4ee2
feat(Topology/Semicontinuity/Hemicontinuity): characterizations of he…
khwilson Jul 1, 2026
9ae96ab
feat(Analysis/Asymptotics): a function continuous at a point is bound…
teorth Jul 1, 2026
3e314e5
feat: Cartan's formula of Value Distribution Theory (#40696)
kebekus Jul 1, 2026
2ab24a1
feat: Bounded Range versus `IsBigO` Asymptotics (#40664)
kebekus Jul 1, 2026
f9c3ad4
feat(Order): `Ici (1 : α) = univ` when `IsBotOneClass α` (#40762)
YaelDillies Jul 1, 2026
a05b35b
refactor(CategoryTheory/Limits/Shape/Kernels): remove duplicate lemma…
smorel394 Jul 1, 2026
0cbbb17
chore(CategoryTheory/Limits): fix `simp` lemmas for `productUniqueIso…
mathlib-splicebot[bot] Jul 1, 2026
fef8766
feat: generalize a few measure theory lemmas (#41209)
sgouezel Jul 1, 2026
b4b33fa
feat: simplify proof of `IsAdjoinRootMonic.mkOfAdjoinEqTop'` (#38189)
artie2000 Jul 1, 2026
908c347
fix(Tactic/Linter/DocString): avoid false positive in syntax quotatio…
jeangud Jul 1, 2026
e5b7d95
feat(RingTheory/RamificationInertia/Inertia): add pow lemmas for new …
tb65536 Jul 1, 2026
a6949c0
feat: homeomorphisms are precisely bijective strict maps (#41231)
ADedecker Jul 1, 2026
bb27e21
chore(LinearAlgebra/Dimension/Free): naming consistency (#41211)
artie2000 Jul 1, 2026
b3b5cf9
feat(Geometry/Euclidean): unoriented angle addition along a ray (#40497)
Scarlett-le Jul 1, 2026
ceb4ceb
fix(Tactic/Push): ensure `push` is idempotent (#40760)
JovanGerb Jul 1, 2026
6813d57
feat(CategoryTheory/Limits/WeakLimits): weak limits (#41075)
smorel394 Jul 1, 2026
dc54c89
chore(NumberTheory/NumberField/Units/Basic): use `Nat.card` instead o…
tb65536 Jul 1, 2026
786a986
chore(CategoryTheory/Preadditive/LeftExact): fix doc strings (#41237)
smorel394 Jul 1, 2026
25ba496
chore(RingTheory/RamificationInertia/RamificationIdx): swap primes on…
tb65536 Jul 1, 2026
8405ede
feat(Order/Cover): intervals equal singletons iff (#37722)
SabrinaJewson Jul 1, 2026
aec4349
feat(CategoryTheory/Triangulated/WeakKernels): pretriangulated catego…
smorel394 Jul 1, 2026
a901d48
feat(Analysis/Complex/RealDeriv,CauchyIntegral): real and complex dif…
teorth Jul 1, 2026
66e0cf2
feat: submersions are `C^n` (#40547)
Marygold-Dusk Jul 1, 2026
3766750
feat: characterize when projections are almost 0 or almost id (#41038)
ADedecker Jul 1, 2026
b49d30f
feat(LinearAlgebra/Matrix/Nondegenerate): more API and generalize to …
SnirBroshi Jul 1, 2026
6eacf8d
feat: IMO 2000 Q2 (#40286)
menon-codes Jul 1, 2026
b39dd4b
chore: cleanup API around LinearMap.surjective_domRestrict_iff (#41235)
ADedecker Jul 1, 2026
24fff1c
chore(RepresentationTheory): invert ordering `FDRep` with `Representa…
Yu-Misaka Jul 1, 2026
a1566c2
feat(SimpleGraph): `cycleGraph` is contained in every graph with a cy…
vlad902 Jul 1, 2026
88d006a
feat: make the `dupNamespace` linter catch any duplicate namespace(s)…
grunweg Jul 1, 2026
af4123a
feat: lemmas about operations on EReal (#41246)
RemyDegenne Jul 2, 2026
a22faf7
doc(CategoryTheory/Preadditive/LeftExact): fix stale declaration name…
kim-em Jul 2, 2026
3061958
chore(CategoryTheory/Triangulated/WeakKernels): remove unused variabl…
kim-em Jul 2, 2026
42e335a
chore(CategoryTheory/Limits/WeakLimits): fix weak pullbacks theorem n…
kim-em Jul 2, 2026
564ff5a
chore(LinearAlgebra/Dimension/Free): fix docstring (#41257)
artie2000 Jul 2, 2026
db73cf1
feat(Algebra/Module/LinearMap/FiniteRange): iff version of isQuasiInv…
kim-em Jul 2, 2026
af2f0a4
feat(SetTheory/Cardinal/Finite): add a NeZero instance for Nat.card (…
kim-em Jul 2, 2026
40b45a0
feat: generalize some lemmas by using conditional Jensen (#36888)
CoolRmal Jul 2, 2026
42b23e7
chore(GroupTheory/*): remove more `NeZero (Nat.card G)` (#41287)
tb65536 Jul 2, 2026
b9df47b
feat(Combinatorics/SimpleGraph): prove the minimal-degree version of …
mitchell-horner Jul 2, 2026
52b549a
feat(Data/List/Chain): generalize `WellFounded.asymmetric₃` to chains…
SnirBroshi Jul 2, 2026
c19037a
fix(Translate): fix universe reorder inference (#40493)
JovanGerb Jul 2, 2026
5fe4bfd
doc(LinearAlgebra/FreeModule/StrongRankCondition): clarify context of…
artie2000 Jul 2, 2026
4f548c1
feat(Topology/Order/IntermediateValue): images of intervals under mon…
teorth Jul 2, 2026
48489ec
chore: add an empty line after module headers (#39428)
harahu Jul 2, 2026
765274a
feat(CategoryTheory/Limits): definition of weighted limits (#41163)
joelriou Jul 2, 2026
8f53319
chore(RepresentationTheory/Character): golf some results in FDRep (#4…
Yu-Misaka Jul 2, 2026
5284644
refactor(Order/OrdContinuous): redefine left and right order continui…
SabrinaJewson Jul 2, 2026
36d9c9f
feat(GRewrite): strict rewriting (#38868)
JovanGerb Jul 2, 2026
0574211
chore: generalize `instPosPart` to SubNegMonoid (#41247)
RemyDegenne Jul 2, 2026
d530c3a
chore(LinearAlgebra/Matrix/Nondegenerate): generalize lemmas to CommS…
kim-em Jul 2, 2026
6620bef
feat(AlgebraicGeometry): Order of vanishing of elements of the functi…
Raph-DG Jul 2, 2026
d155973
feat: same/opposite side of an affine subspace from scalar multiples …
Scarlett-le Jul 2, 2026
e653de1
chore: cleanup API around LinearMap.injective_domRestrict_iff (#41229)
ADedecker Jul 2, 2026
53781e1
chore(CategoryTheory/Adjunction/Basic): `to_dual` for `Adjunction.com…
JovanGerb Jul 2, 2026
b52778b
feat: linear map from `L^p (mu)` to `L^p (nu)` when `nu` is bounded b…
sgouezel Jul 2, 2026
944dc91
feat(NumberTheory/Harmonic/ZetaAsymp): asymptotics and representation…
teorth Jul 2, 2026
26ea127
feat(CategoryTheory/Sites): local sites (#41083)
peabrainiac Jul 2, 2026
3d85a6f
feat(RepresentationTheory/Homological): redefine continuous cohomolog…
Whysoserioushah Jul 2, 2026
6179d6d
feat(Category/Preadditive/FreydCategory/Homotopy): homotopies on the …
smorel394 Jul 2, 2026
2dd9994
feat: add normalization simproc for Bird's determinant algorithm (#41…
paulcadman Jul 2, 2026
103b83b
chore: fix `Additive`/`Multiplicative` order instances (#41298)
JovanGerb Jul 2, 2026
935eca8
chore: update Mathlib dependencies 2026-07-02 (#41049)
mathlib-update-dependencies[bot] Jul 2, 2026
6b95510
feat: more results on `Order.enum` (#39136)
vihdzp Jul 3, 2026
a98f92c
feat(Combinatorics/SimpleGraph/Paths): `Walk.map` preserves more prop…
SnirBroshi Jul 3, 2026
29fdc2c
feat(Algebra): the Rees theorem for depth (#26212)
Thmoas-Guan Jul 3, 2026
4d07630
feat(CategoryTheory/Presentable): sharply smaller regular cardinals (…
joelriou Jul 3, 2026
5c10b4b
feat(AlgebraicTopology): Reedy structures (#41141)
joelriou Jul 3, 2026
50b0278
feat(Analysis/Real): characterise when `√x ≤ x` and `x ≤ √x` (#41249)
YaelDillies Jul 3, 2026
857acd3
feat: add the set of compacts nhds of a compact and flavor of it towa…
ymonbru Jul 3, 2026
5286cbb
refactor(CategoryTheory): more data in the PushoutObjObj structure (#…
joelriou Jul 3, 2026
e62ffd5
chore: fix bad indentation (#40853)
grunweg Jul 3, 2026
ac8265f
chore: add `.git-blame-ignore-revs` file (#41023)
grunweg Jul 3, 2026
f7a05ed
feat(CategoryTheory/Preadditive/FreydCategory/RightFreyd): right Frey…
smorel394 Jul 3, 2026
ec4870d
chore: golf proofs with `grw` (#41307)
JovanGerb Jul 3, 2026
8842868
chore: fix differentiability of sums of sections lemmas (#41315)
PatrickMassot Jul 3, 2026
94f630c
feat(Combinatorics/Enumerative/Bell): sum over partition shapes (#39693)
yuanyi-350 Jul 3, 2026
daca285
chore: further tweaks for the title checks around capitalisation (#40…
grunweg Jul 3, 2026
4aaa962
fix(Translate): preserve binder names when reordering lambdas (#40946)
JovanGerb Jul 3, 2026
5f4b499
fix(scripts/create_deprecated_modules): produce deprecated modules ob…
grunweg Jul 3, 2026
313e59a
refactor(RingTheory/RamificationInertia/Inertia): remove last occuran…
tb65536 Jul 3, 2026
6fd5453
refactor: generalized weak approximation (#41157)
Oliiiiver Jul 3, 2026
9ff42dc
feat(ModularForm): the Eisenstein series E2 is bounded at ImInfty (#4…
seewoo5 Jul 3, 2026
cb2b8fd
chore(CategoryTheory/Limits/Shapes/Kernels): remove duplicate definit…
smorel394 Jul 3, 2026
ab4e75d
feat(RepresentationTheory/Homological/ContCohomology): add functorial…
Whysoserioushah Jul 3, 2026
5b558da
refactor(NumberTheory/NumberField/ExistsRamified): extract `Algebra.I…
tb65536 Jul 3, 2026
08fd0d0
feat(CategoryTheory/Preadditive/FreydCategory/RightFreyd): the right …
smorel394 Jul 3, 2026
96ec947
feat(SimpleRing/DivisionRing): simple module is preserved by ModuleCa…
Whysoserioushah Jul 3, 2026
a478520
ci: add tech debt label (#40601)
BoltonBailey Jul 3, 2026
8c60a81
chore: update Mathlib dependencies 2026-07-03 (#41330)
mathlib-update-dependencies[bot] Jul 3, 2026
9e73522
feat: import `#click_suggestions` in Mathlib.Tactic.Common (#40755)
JovanGerb Jul 3, 2026
5521c58
feat(Data/ZMod/QuotientRing): add an apply version for the single com…
Nicola9Falciola Jul 3, 2026
3850db6
chore: fix some diamonds around `Lex`/`Colex` (#41035)
JovanGerb Jul 3, 2026
c093eca
feat(scripts): export wikidata/stacks/kerodon cross-references as JSO…
jcommelin Jul 4, 2026
455edf8
chore: remove unnecessary deprecated alias
erdkocak Jul 4, 2026
b6b67a5
Merge branch 'master' into model-theory/quantifier-elimination-extension
erdkocak Jul 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# 2024-05-20 replace `refine'` with one underscore by `refine` (#13059)
7493b5f81b4c031b87877c5c124bea1ddc4e567d
# 2024-05-24 replace many `refine'` with `refine` (#13166)
fc48848e4374f13c796a7399bfccd2e228f776df
# 2025-11-19 move Mathlib to the module system (#31786)
6a54a80825b060ab20dc31751ebdce78b3a3b518
13 changes: 13 additions & 0 deletions .github/actions/cache-trust-dispatch/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,18 @@ runs:
# be 403'd by Azure regardless. The dispatch exists so the workflow
# does the right thing in the honest case; defence in depth is RBAC.

# Privileged containers (master, nightly-testing, pr-toolchain-tests) are
# writable only by a repo's own native CI, whose OIDC token is RBAC-scoped
# to match. A cross-repo pull request is built by build_fork.yml with
# fork-trust credentials whatever repo the PR head lives on (e.g. a `bump/*`
# branch on the mathlib4-nightly-testing fork), so it can only write
# `forks`. `GITHUB_REPOSITORY` is the repo the workflow runs as (the base
# repo for `pull_request_target`), i.e. the one whose credentials this job
# holds; when it differs from `$REPO`, the build is a fork and targets
# `forks` regardless of the head repo's own trust class.
if [ "$REPO" != "$GITHUB_REPOSITORY" ]; then
PRIMARY="forks"
else
case "$REPO" in
"leanprover-community/mathlib4")
case "$BRANCH" in
Expand Down Expand Up @@ -121,6 +133,7 @@ runs:
PRIMARY="forks"
;;
esac
fi

# Per-commit cache namespace, only for fork-trust uploads. Closes the
# within-fork temporal replay attack: each commit's CI run gets its
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/get-mathlib-ci/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ then use the local action:

```yaml
- name: Checkout local actions
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.workflow_sha }}
fetch-depth: 1
Expand Down
4 changes: 2 additions & 2 deletions .github/actions/get-mathlib-ci/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ inputs:
# Default pinned commit used by workflows unless they explicitly override.
# Update this ref as needed to pick up changes to mathlib-ci scripts
# This is also updated automatically by .github/workflows/update_dependencies.yml
default: 5aee9d4ce5a39050c72b4aa46015a824b0c189ac
default: 0cd6cbc879d9241f3b4f6cb7e8291e34128c5654
path:
description: Checkout destination path.
required: false
Expand All @@ -33,7 +33,7 @@ runs:
using: composite
steps:
- name: Get mathlib-ci
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
repository: leanprover-community/mathlib-ci
ref: ${{ inputs.ref }}
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/get-tools/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ runs:

- name: Checkout tools branch (source build)
if: ${{ steps.finalize.outputs.result == 'build' }}
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ inputs.tools_source_ref }}
path: ${{ inputs.path }}
Expand Down
160 changes: 160 additions & 0 deletions .github/actions/setup-build-env/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# Shared runner setup for the self-hosted `build` and `test_lint` jobs in
# build_template.yml. Both run on the same Hoskinson pool and need the same
# preparation before they diverge (build → build + stage, test_lint →
# fetch + test + lint): toolchain hygiene, jq, the cache-trust and get-tools
# wiring, the PR-branch checkout, the elan toolchain and LEAN_SRC_PATH
# environment, and the dependency download.
#
# The caller runs `Checkout local actions` (sparse `.github/actions` →
# `workflow-actions/`) before invoking this action: that checkout puts both this
# action and the sibling actions it calls (`cache-trust-dispatch`, `get-tools`)
# on disk under `workflow-actions/`, so the `uses: ./workflow-actions/...` paths
# below resolve relative to the workspace root, as in the calling workflow.
#
# Each `run:` step sets its own `shell:`, since composite steps do not inherit the
# job's landrun `defaults.run.shell`.
name: Set up build environment
description: Shared self-hosted runner setup for the build and test_lint jobs.

inputs:
pr_branch_ref:
description: Git ref of the PR branch to check out and build.
required: true
tools_branch_ref:
description: Git ref to build the CI tools from when not using the prebuilt artifact.
required: false
default: ''

runs:
using: composite
steps:
# Prune old toolchains from `~/.elan`. That directory is mounted from the host
# and shared across the ephemeral job containers, so toolchains accumulate and
# nothing else trims them (host-side housekeeping only trims the mathlib `.ltar`
# cache). Keep the 5 most recent plus `nightly`/`stable`.
- name: prune old toolchains
shell: bash # just deletes old files; safe to run outside landrun
run: |
# Make sure to delete both the `~/.elan/toolchains/X` directory and the `~/.elan/update-hashes/X` file.
# Skip symbolic links (`-type d`), the current directory (`! -name .`), and `nightly` and `stable`.
if cd ~/.elan/toolchains && find . -maxdepth 1 -type d ! -name . -print0 | xargs -0 ls -1td | grep -v 'nightly$' | grep -v 'stable$' | tail -n +6 | xargs -I {} sh -c 'echo {} && rm -rf "{}" && rm "../update-hashes/{}"'; then
: # Do nothing on success
else
: # Do nothing on failure, but suppress errors
fi

# The Hoskinson runners may not have jq installed, so do that now.
- name: 'Setup jq'
uses: dcarbone/install-jq-action@4fcb5062d7ce9bc4382d1a352d19ba3ba2c317c1 # v4.0.1

# Compute the trust-classified container target and read fallback for this
# job. Sets MATHLIB_CACHE_FROM / MATHLIB_CACHE_PRIMARY in env so every
# subsequent `cache get` inherits them without per-call flag plumbing. Loaded
# from the trust-rooted `workflow-actions/` checkout, not the PR branch.
- name: Compute cache trust dispatch
uses: ./workflow-actions/.github/actions/cache-trust-dispatch
with:
repo: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
branch: ${{ github.head_ref || github.ref_name }}
head-sha: ${{ github.event.pull_request.head.sha || github.sha }}

# Checkout the PR branch into a subdirectory. HEAD only (fetch-depth: 1) is
# enough: the cache is fetched HEAD-scoped and warmed from the master snapshot,
# so no parent-commit history is needed. This is untrusted (potentially fork)
# code we build, so don't leave the GITHUB_TOKEN in pr-branch/.git/config where
# that code could read it.
- name: Checkout PR branch
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ inputs.pr_branch_ref }}
fetch-depth: 1
path: pr-branch
persist-credentials: false
# The build runs this fork PR code sandboxed (landrun) with no persisted
# credentials, so checking it out under pull_request_target is safe.
allow-unsafe-pr-checkout: true

# Create empty directories so landrun doesn't complain.
- name: Create empty directories
shell: bash # We need to run this outside landrun, as it is a prerequisite for landrun!
run: |
mkdir -p pr-branch/.lake/
mkdir -p .cache/mathlib/
mkdir -p _work

# NOTE: if you copy this, consider using `leanprover/lean-action` instead.
# We install manually, to avoid running lean outside landrun.
- name: install elan
shell: bash
run: |
set -o pipefail
curl -o elan-init.sh -sSfL https://elan.lean-lang.org/elan-init.sh
chmod +x elan-init.sh
./elan-init.sh -y --default-toolchain none
echo "$HOME/.elan/bin" >> "${GITHUB_PATH}"

- name: set toolchain directory
shell: bash
run: |
cd pr-branch
# Get the lake binary path from elan and extract toolchain directory
LAKE_PATH=$(elan which lake)
echo "Lake path: $LAKE_PATH"

# Extract the toolchain directory by removing /bin/lake from the end
TOOLCHAIN_DIR=$(dirname "$LAKE_PATH")
TOOLCHAIN_DIR=$(dirname "$TOOLCHAIN_DIR")
echo "Toolchain directory: $TOOLCHAIN_DIR"

# Set it as an environment variable for subsequent steps
echo "TOOLCHAIN_DIR=$TOOLCHAIN_DIR" >> "$GITHUB_ENV"

- name: set LEAN_SRC_PATH
shell: bash
run: |
cd pr-branch

# Start with the base paths
LEAN_SRC_PATH=".:$TOOLCHAIN_DIR/src/lean/lake"

# Extract package names from lake-manifest.json and validate them
# Only allow A-Z, a-z, 0-9, _, and - characters
# Build the LEAN_SRC_PATH by appending each validated package
PACKAGE_NAMES=$(jq -r '.packages[].name' lake-manifest.json)
for pkg in $PACKAGE_NAMES; do
if [[ "$pkg" =~ ^[A-Za-z0-9_-]+$ ]]; then
LEAN_SRC_PATH="$LEAN_SRC_PATH:.lake/packages/$pkg"
else
echo "Warning: Skipping invalid package name: $pkg"
fi
done

echo "LEAN_SRC_PATH=$LEAN_SRC_PATH"

# Set it as an environment variable for subsequent steps
echo "LEAN_SRC_PATH=$LEAN_SRC_PATH" >> "$GITHUB_ENV"

# Populate `tools-branch/` with the trusted CI tooling (the `cache` binary and
# the `lake-build-*` helper scripts invoked by path). Fast path: download the
# prebuilt `tools-bin` artifact published from master (canonical mathlib4 only,
# and only when the branch under test doesn't change the cache tool — get-tools
# makes that comparison against `source_dir`). Source build otherwise. See the
# get-tools action for the full trust rationale.
- name: Get CI tools
uses: ./workflow-actions/.github/actions/get-tools
with:
use_artifact: ${{ inputs.tools_branch_ref == '' && github.repository == 'leanprover-community/mathlib4' }}
tools_source_ref: ${{ inputs.tools_branch_ref != '' && inputs.tools_branch_ref || (github.event.pull_request.head.repo.fork && 'master' || inputs.pr_branch_ref) }}
source_dir: ${{ github.event.pull_request.head.repo.fork != true && 'pr-branch' || '' }}
github_token: ${{ github.token }}

- name: download dependencies
# We need network access to download dependencies. We run this inside
# landrun, but restrict disk access:
# - --rox access to `~/.elan` and `~/actions-runner/_work` (GitHub CI needs this)
# - --unrestricted-network as we need this to download dependencies
# - git needs read only access to `/etc`.
shell: landrun --unrestricted-network --rox /etc --rox /usr --rw /dev --rox /home/lean/.elan --rox /home/lean/actions-runner/_work --rw pr-branch/.lake/ --env PATH --env HOME --env GITHUB_OUTPUT --env CI -- bash -euxo pipefail {0}
run: |
cd pr-branch
lake env
19 changes: 16 additions & 3 deletions .github/workflows/PR_summary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,19 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
path: pr-branch
# Untrusted (potentially fork) checkout: don't persist the GITHUB_TOKEN into its .git/config.
persist-credentials: false
# Only trusted base-repo scripts run against this checkout, so checking out
# fork PR code under pull_request_target is safe.
allow-unsafe-pr-checkout: true

- name: Checkout local actions
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.workflow_sha }}
fetch-depth: 1
Expand Down Expand Up @@ -64,7 +67,7 @@ jobs:
fi

- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: 3.12

Expand Down Expand Up @@ -230,6 +233,16 @@ jobs:
echo "Compute technical debt changes"
techDebtVar="$("${CI_SCRIPTS_DIR}/reporting/technical-debt-metrics.sh" pr_summary)"

# If the PR decreased technical debt, add the `tech debt` label.
# The metrics script emits a summary line "Decrease in <level> tech debt:" for each
# level (strong/weak) that went down (and "Increase ..."/"No changes ..." otherwise),
# so matching either of those two lines means the PR reduced some tech debt.
if grep -qE "Decrease in (strong|weak) tech debt" <<< "${techDebtVar}"
then
printf $'Adding "tech debt" label to PR %s\n' "${PR}"
gh pr edit "${PR}" --add-label "tech debt"
fi

echo "Compute documentation reminder"
workflowFilesChanged="$(grep '^\.github/workflows/' changed_files.txt || true)"
if [ -n "${workflowFilesChanged}" ]
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/actionlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

- name: suggester / actionlint
uses: reviewdog/action-actionlint@6fb7acc99f4a1008869fa8a0f09cfca740837d9d # v1.72.0
Expand All @@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

# Using our fork's PR branch until upstream merges the improved error reporting:
# https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions/pull/288
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/add_label_from_diff.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
if: github.repository == 'leanprover-community/mathlib4'
steps:
- name: Checkout master branch to build autolabel from
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: master
path: tools
Expand All @@ -38,13 +38,16 @@ jobs:
run: |
lake build autolabel
- name: Checkout branch to label
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
path: pr-branch
# Untrusted (potentially fork) checkout: don't persist the GITHUB_TOKEN into its .git/config.
persist-credentials: false
# autolabel is built from the trusted base checkout and only reads these files,
# so checking out fork PR code under pull_request_target is safe.
allow-unsafe-pr-checkout: true
- name: Run autolabel
working-directory: pr-branch
run: |
Expand Down
Loading
Loading