Lean community bloghttps://leanprover-community.github.io/blog/This is the blog of the Lean prover community.enContents © 2022 <a href="mailto:">The Lean prover community</a> Sat, 15 Oct 2022 11:58:51 GMTNikola (getnikola.com)http://blogs.law.harvard.edu/tech/rss- 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
- Classification of one-dimensional isocrystalshttps://leanprover-community.github.io/blog/posts/classification-of-one-dimensional-isocrystals/Robert Y. Lewis, Heather Macbeth<div><p>Last year, there was a <a href="https://leanprover-community.github.io/blog/posts/semilinear-maps">big mathlib refactor</a> to replace linear maps throughout the library with <em>semilinear maps</em>,
a more abstract concept which, importantly, unifies linear and conjugate-linear maps.</p>
<p>But this is not the full extent of the generalization! Our number theorist friends here in mathlib told us that we should
make sure we chose this full generality of <em>semilinear</em> maps, maps $f:M \to N$ such that $f(ax)=\sigma(a)f(x)$ for some ring homomorphism $\sigma$ between the scalar rings of the modules $M$ and $N$. So we and our coauthor Frédéric Dupuis implemented this full generality, and then asked them for an example to illustrate their need for this more abstract definition. This blog post tells the story of our little adventure in number theory.</p>
<p>It turns out that the standard use of semilinear maps in number theory is for <em>Frobenius-semilinearity</em>, semilinearity with
respect to the ring homomorphism of the fraction field of the $p$-typical Witt vectors over a perfect characteristic-$p$ integral domain which is induced by the Frobenius
automorphism of that domain. Let's backtrack to catch everyone up...</p>
<p><a href="https://leanprover-community.github.io/blog/posts/classification-of-one-dimensional-isocrystals/">Read more…</a> (13 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/classification-of-one-dimensional-isocrystals/Sat, 06 Aug 2022 04:30:08 GMT
- Introducing Mathlib Changeloghttps://leanprover-community.github.io/blog/posts/mathlib-changelog/David Chanin<div><p><img alt="mathlib-changelog sample page" src="https://leanprover-community.github.io/blog/images/changelog_lemma.png"></p>
<p>Tldr; check out <a href="https://mathlib-changelog.org">mathlib-changelog.org</a> to explore the historical changes to mathlib, and find out what happened to that lemma you were using.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/mathlib-changelog/">Read more…</a> (3 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/mathlib-changelog/Thu, 28 Jul 2022 07:35:23 GMT
- Completion of the Liquid Tensor Experimenthttps://leanprover-community.github.io/blog/posts/lte-final/Mathlib community<div><p>We are proud to announce that as of 15:46:13 (EST) on Thursday, July 14 2022 the Liquid Tensor Experiment has been
<a href="https://github.com/leanprover-community/lean-liquid/commits/completed">completed</a>.
A year and a half after the
<a href="https://xenaproject.wordpress.com/2020/12/05/liquid-tensor-experiment/">challenge</a>
was posed by Peter Scholze we have finally formally verified the main theorem of liquid vector spaces using the Lean proof assistant.
The blueprint for the project can be found <a href="https://leanprover-community.github.io/liquid/">here</a> and the formalization itself is available on <a href="https://github.com/leanprover-community/lean-liquid">GitHub</a>.</p>
<p>The first major milestone was
<a href="https://xenaproject.wordpress.com/2021/06/05/half-a-year-of-the-liquid-tensor-experiment-amazing-developments/">announced</a>
in June last year. The achievement was described in
<a href="https://www.nature.com/articles/d41586-021-01627-2">Nature</a>
and
<a href="https://www.quantamagazine.org/lean-computer-program-confirms-peter-scholze-proof-20210728/">Quanta</a>.</p>
<p>For more information about Lean and formalization of mathematics, see the
<a href="https://leanprover-community.github.io/">Lean community website</a>.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/lte-final/">Read more…</a> (2 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/lte-final/Fri, 15 Jul 2022 13:00:00 GMT
- The ring of integers of a cyclotomic fieldhttps://leanprover-community.github.io/blog/posts/the-ring-of-integers-of-a-cyclotomic-field/Riccardo Brasca<div><p>In <a href="https://github.com/leanprover-community/mathlib/pull/13585">PR #13585</a> we compute the
discriminant of cyclotomic fields. This is an important result, usually treated in a first year
graduate course in number theory. In this post we would like to explain why it is an important
result, and briefly explain how we proved it.</p>
<p><a href="https://leanprover-community.github.io/blog/posts/the-ring-of-integers-of-a-cyclotomic-field/">Read more…</a> (3 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/the-ring-of-integers-of-a-cyclotomic-field/Fri, 17 Jun 2022 20:24:12 GMT
- This month in mathlib (May 2022)https://leanprover-community.github.io/blog/posts/month-in-mathlib-may-2022/Mathlib community<div><p>In May 2022 there were 606 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-may-2022/">Read more…</a> (3 min remaining to read)</p></div>https://leanprover-community.github.io/blog/posts/month-in-mathlib-may-2022/Tue, 14 Jun 2022 13:35:21 GMT