Lean community bloghttps://leanprover-community.github.io/blog/This is the blog of the Lean prover community.enContents © 2023 <a href="mailto:">The Lean prover community</a> Fri, 08 Sep 2023 07:35:24 GMTNikola (getnikola.com)http://blogs.law.harvard.edu/tech/rss- The first official release of Lean 4https://leanprover-community.github.io/blog/posts/first-lean-release/Scott Morrison<div><p>Lean 4 has just made its first official stable release, with the arrival of <a href="https://github.com/leanprover/lean4/releases/tag/v4.0.0"><code>v4.0.0</code></a>.
We're excited to transition from only providing nightly releases to having regular stable releases.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/first-lean-release/">Read more…</a> (1 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/first-lean-release/Fri, 08 Sep 2023 05:58:40 GMT
- My Experience at the Machine-Checked Mathematics workshophttps://leanprover-community.github.io/blog/posts/lorentz-center-meeting/Jana Göken<div><p>Hello, everyone! My name is Jana Göken, a master's student in mathematics from Bremen. Today, I want to share with you my experiences at the <a href="https://www.lorentzcenter.nl/machine-checked-mathematics.html">Machine-Checked Mathematics workshop</a> that introduced me to the world of proof assistants, specifically Lean.
The workshop took place in Leiden from July 10th to July 14th 2023, and it was an amazing and educational journey.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/lorentz-center-meeting/">Read more…</a> (4 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/lorentz-center-meeting/Sat, 26 Aug 2023 14:30:00 GMT
- Formalising cohomology theorieshttps://leanprover-community.github.io/blog/posts/banff-cohomology/Kevin Buzzard<div><p>Kevin Buzzard rounds up the BIRS conference on formalising cohomology theories.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/banff-cohomology/">Read more…</a> (6 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/banff-cohomology/Mon, 12 Jun 2023 05:42:45 GMT
- Modular formshttps://leanprover-community.github.io/blog/posts/modular-forms/Chris Birkbeck<div><p>In <a href="https://github.com/leanprover-community/mathlib/pull/13250">PR# 13250</a> we define modular forms and cusp forms, and prove that they form complex vector spaces. These are analytic functions of number theoretic interest with strong links to geometry, representation theory and analysis. Most famously they are a key ingredient in the proof of Fermat's Last Theorem. In this post we discuss the formalization process, motivate some design choices and map out some future work.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/modular-forms/">Read more…</a> (7 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/modular-forms/Wed, 21 Dec 2022 11:41:21 GMT
- This month in mathlib (Oct and Nov 2022)https://leanprover-community.github.io/blog/posts/this-month-in-mathlib-oct-and-nov-2022/The Lean prover community<div><p>In October and November 2022 there were 512 and 453 PRs merged into mathlib. We list some of the highlights below.</p>
<ul>
<li>
<p>Measure theory.</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16830">PR #16830</a> improves Vitali families and Lebesgue density theorem.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16762">PR #16762</a> adds a version of Lebesgue's density theorem.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16906">PR #16906</a> proves Lebesgue differentiation theorem.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16836">PR #16836</a> relates integrals over <code>add_circle</code> with integrals upstairs in <code>ℝ</code>.</li>
</ul>
</li>
<li>
<p>Algebra.</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/14672">PR #14672</a> defines mixed/equal characteristic zero.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17018">PR #17018</a>, <a href="https://github.com/leanprover-community/mathlib/pull/16849">PR #16849</a> and <a href="https://github.com/leanprover-community/mathlib/pull/17011">PR #17011</a> show the Kähler differential module is functorial and that $S/R$ is formally unramified if and only if $\Omega^1_{S/R} = 0$. They also give the standard presentation of the Kähler differential module.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16000">PR #16000</a> proves Artin-Rees lemma and Krull's intersection theorems.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16317">PR #16317</a> adds the multinomial theorem.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17295">PR #17295</a> proves the Jordan-Hölder theorem for modules.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17311">PR #17311</a> proves that a group with finitely many commutators has finite commutator subgroup.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17243">PR #17243</a> proves the Third Isomorphism theorem for rings.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/13749">PR #13749</a> introduces non-unital subsemirings.</li>
</ul>
</li>
<li>
<p>Analysis</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16723">PR #16723</a> shows that two analytic functions that coincide locally coincide globally.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16683">PR #16683</a> and <a href="https://github.com/leanprover-community/mathlib/pull/16680">PR #16680</a> introduce functions of bounded variation and prove that they are almost everywhere differentiable. As a corollary, <a href="https://github.com/leanprover-community/mathlib/pull/16549">PR #16549</a> shows that a monotone function is differentiable almost everywhere.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17119">PR #17119</a> defines and gives basic properties of the complex unit disc.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16780">PR #16780</a> proves the open mapping theorem for holomorphic functions.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16487">PR #16487</a> constructs the volume form.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16796">PR #16796</a> generalizes the Hahn-Banach separation theorem to (locally convex) topological vector spaces.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16835">PR #16835</a> proves functoriality of the character space.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16638">PR #16638</a> introduces the Dirac delta distribution.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17110">PR #17110</a> proves smoothness of series of functions.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16201">PR #16201</a> and <a href="https://github.com/leanprover-community/mathlib/pull/17598">PR #17598</a> define the additive circle and develop Fourier analysis on it.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17543">PR #17543</a> computes $\Gamma(1/2)$.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16053">PR #16053</a> introduces the strong operator topology.</li>
</ul>
</li>
<li>
<p>Number theory.</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/15405">PR #15405</a> introduces the Selmer group of a Dedekind domain.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17677">PR #17677</a> defines slash-invariant forms, a step towards the definition of modular forms.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17203">PR #17203</a> defines the absolute ideal norm.</li>
</ul>
</li>
<li>
<p>Representation theory.</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17005">PR #17005</a> is about exactness properties of resolutions.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16043">PR #16043</a> proves the orthogonality of characters.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/13794">PR #13794</a> proves Schur's lemma.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17443">PR #17443</a> adds the construction of a projective resolution of a representation.</li>
</ul>
</li>
<li>
<p>Topology.</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16677">PR #16677</a> constructs the Galois correspondence between closed ideals in $C(X, 𝕜)$ and open sets in $X$.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16719">PR #16719</a> shows that maximal ideals of $C(X, 𝕜)$ correspond to (complements of) singletons.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16087">PR #16087</a> defines covering spaces.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16797">PR #16797</a> proves that the stalk functor preserves monomorphism.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17015">PR #17015</a> proves that Noetherian spaces have finite irreducible components.</li>
</ul>
</li>
<li>
<p>Probability theory.</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16882">PR #16882</a> proves the second Borel-Cantelli lemma.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16648">PR #16648</a> shows Kolmogorov's 0-1 law.</li>
</ul>
</li>
<li>
<p>Algebraic and differential geometry.</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16124">PR #16124</a>, <a href="https://github.com/leanprover-community/mathlib/pull/17117">PR #17117</a>, <a href="https://github.com/leanprover-community/mathlib/pull/17080">PR #17080</a> and <a href="https://github.com/leanprover-community/mathlib/pull/17184">PR #17184</a> develop various properties for morphisms of schemes.</li>
</ul>
</li>
<li>
<p>Linear algebra.</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/11468">PR #11468</a> shows that the clifford algebra is isomorphic as a module to the exterior algebra.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16150">PR #16150</a> proves that the inverse of a block triangular matrix is block triangular.</li>
</ul>
</li>
<li>
<p>Category theory.</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16969">PR #16969</a> adds basic results about localization of categories.</li>
</ul>
</li>
<li>
<p>Combinatorics</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16195">PR #16195</a> adds the definition and some basic results about semistandard Young tableaux.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17445">PR #17445</a> adds an equivalence between Young diagrams and weakly decreasing lists of positive natural numbers.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/17306">PR #17306</a> and <a href="https://github.com/leanprover-community/mathlib/pull/17213">PR #17213</a> define bridge edges, acyclic graphs, and trees for simple graphs, and provide some characterizations. </li>
</ul>
</li>
<li>
<p>Tactics</p>
<ul>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16313">PR #16313</a> introduces the <code>qify</code> tactic, to move from $\mathbb{Z}$ to $\mathbb{Q}$.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/13483">PR #13483</a> adds a tactic for moving around summands.</li>
<li><a href="https://github.com/leanprover-community/mathlib/pull/16911">PR #16911</a> adds a tactic to find declarations that use <code>sorry</code>. This tactic is intended for projects that depend on mathlib.</li>
</ul>
</li>
</ul>
<p>During these two months, we got two new versions of Lean. We also started to systematically port mathlib to Lean4, see the <a href="https://github.com/leanprover-community/mathlib4/wiki">wiki</a>.</p></div>https://leanprover-community.github.io/blog/posts/this-month-in-mathlib-oct-and-nov-2022/Thu, 01 Dec 2022 13:56:21 GMT
- Definitions in the liquid tensor experimenthttps://leanprover-community.github.io/blog/posts/lte-examples/Adam Topaz<div><p>A few weeks ago, we announced the <a href="https://leanprover-community.github.io/blog/posts/lte-final/">completion of the liquid tensor experiment</a> (<strong>LTE</strong> for short).
What this means is that we stated and (completely) proved the following result in Lean:</p>
<pre class="code literal-block"><span class="kd">variables</span> <span class="o">(</span><span class="n">p'</span> <span class="n">p</span> <span class="o">:</span> <span class="n">ℝ</span><span class="bp">≥</span><span class="mi">0</span><span class="o">)</span> <span class="o">[</span><span class="n">fact</span> <span class="o">(</span><span class="mi">0</span> <span class="bp"><</span> <span class="n">p'</span><span class="o">)]</span> <span class="o">[</span><span class="n">fact</span> <span class="o">(</span><span class="n">p'</span> <span class="bp"><</span> <span class="n">p</span><span class="o">)]</span> <span class="o">[</span><span class="n">fact</span> <span class="o">(</span><span class="n">p</span> <span class="bp">≤</span> <span class="mi">1</span><span class="o">)]</span>
<span class="kd">theorem</span> <span class="n">liquid_tensor_experiment</span>
<span class="o">(</span><span class="n">S</span> <span class="o">:</span> <span class="n">Profinite</span><span class="o">)</span> <span class="o">(</span><span class="n">V</span> <span class="o">:</span> <span class="n">pBanach</span> <span class="n">p</span><span class="o">)</span> <span class="o">:</span>
<span class="bp">∀</span> <span class="n">i</span> <span class="bp">></span> <span class="mi">0</span><span class="o">,</span> <span class="n">Ext</span> <span class="n">i</span> <span class="o">(</span><span class="n">ℳ_</span><span class="o">{</span><span class="n">p'</span><span class="o">}</span> <span class="n">S</span><span class="o">)</span> <span class="n">V</span> <span class="bp">≅</span> <span class="mi">0</span> <span class="o">:=</span>
<span class="c1">-- the proof ...</span>
</pre>
<p>The code block above, which is taken directly from the file <a href="https://github.com/leanprover-community/lean-liquid/blob/92f188bd17f34dbfefc92a83069577f708851aec/src/challenge.lean"><code>challenge.lean</code></a> in the main <a href="https://github.com/leanprover-community/lean-liquid">LTE repository</a>, uses some custom notation to make the statement appear as close as possible to the main theorem mentioned in
<a href="https://xenaproject.wordpress.com/2020/12/05/liquid-tensor-experiment/">Scholze's original challenge</a>.
Fortunately, it's relatively straightforward to unravel the notation to see the underlying definitions themselves.
But there is a bigger issue: How can we convince ourselves (and others) that the <em>definitions</em> we introduced in LTE are actually <em>correct</em>? </p>
<p>For instance, we could have <em>defined</em> <code>Ext</code> to be $0$ (spoiler: we didn't).
Or, we could have made some subtle innocent mistake in setting up the definitions that somehow <em>implies</em> that <code>Ext</code> is always $0$, or that all condensed abelian groups are trivial, or one of several other pitfalls that renders the statement above meaningless.</p>
<p>To answer this question, we built a new <a href="https://github.com/leanprover-community/lean-liquid/tree/92f188bd17f34dbfefc92a83069577f708851aec/src/examples"><code>examples</code> folder</a> in the repository which contains several files corresponding to the main players in the statement above.
These examples can be considered as centralized "sanity checks" that the definitions we wrote using Lean actually behave as expected.</p>
<p>We tried to write the files in this folder in a way which should be (approximately) readable by mathematicians who have minimal experience with Lean.
The goal is to make it easy for non-experts to look through the examples folder, then look through the concise final statement in <code>challenge.lean</code>, and be reasonably confident that the challenge was accomplished.</p>
<p>This blog post gives a detailed overview of this folder and its contents, and how it relates to the definitions used in the main statement of the <a href="https://github.com/leanprover-community/lean-liquid">liquid tensor experiment</a>.
It is meant to be read <em>alongside</em> the actual files from the <a href="https://github.com/leanprover-community/lean-liquid/tree/92f188bd17f34dbfefc92a83069577f708851aec/src/examples">examples folder</a>.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/lte-examples/">Read more…</a> (29 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/lte-examples/Fri, 14 Oct 2022 17:00:00 GMT
- This month in mathlib (Sep 2022)https://leanprover-community.github.io/blog/posts/month-in-mathlib-sep-2022/Mathlib community<div><p>In September 2022 there were 361 PRs merged into mathlib. We list some of the highlights below.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/month-in-mathlib-sep-2022/">Read more…</a> (1 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/month-in-mathlib-sep-2022/Sat, 08 Oct 2022 04:01:27 GMT
- This month in mathlib (Aug 2022)https://leanprover-community.github.io/blog/posts/month-in-mathlib-aug-2022/Mathlib community<div><p>In August 2022 there were 506 PRs merged into mathlib. We list some of the highlights below.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/month-in-mathlib-aug-2022/">Read more…</a> (1 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/month-in-mathlib-aug-2022/Thu, 01 Sep 2022 04:05:28 GMT
- This month in mathlib (Jul 2022)https://leanprover-community.github.io/blog/posts/month-in-mathlib-jul-2022/Mathlib community<div><p>In July 2022 there were 611 PRs merged into mathlib. We list some of the highlights below.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/month-in-mathlib-jul-2022/">Read more…</a> (2 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/month-in-mathlib-jul-2022/Thu, 11 Aug 2022 05:42:53 GMT
- This month in mathlib (Jun 2022)https://leanprover-community.github.io/blog/posts/month-in-mathlib-jun-2022/Mathlib community<div><p>We apologize for the delay in posting this overview.
In June 2022 there were 460 PRs merged into mathlib. We list some of the highlights below.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/month-in-mathlib-jun-2022/">Read more…</a> (1 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/month-in-mathlib-jun-2022/Thu, 11 Aug 2022 05:42:45 GMT