<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Kim Morrison</title>
  <description>Notes on Lean, tactics, and making the theorem prover do more work.</description>
  <link>https://kim-em.github.io</link>
  <atom:link href="https://kim-em.github.io/feed.xml" rel="self" type="application/rss+xml" />
  <lastBuildDate>Fri, 24 Jul 2026 00:00:00 +0000</lastBuildDate>
  <item>
    <title>Why Lean is faster than Rust</title>
    <link>https://kim-em.github.io/blog/2026-7-24-why-lean-is-faster-than-rust/</link>
    <guid isPermaLink="true">https://kim-em.github.io/blog/2026-7-24-why-lean-is-faster-than-rust/</guid>
    <pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate>
    <category>performance</category>
    <category>lean</category>
    <description>I can&apos;t possibly be serious, can I, claiming that Lean is faster than Rust? Let me show you something: # silesia.tar: the 212 MB standard corpus. Each tool compresses at level 6 # and prints the resulting size in bytes; `time` reports wall-clock. $ time deflate-rust silesia.tar # miniz_oxide (pure Rust, no &apos;unsafe&apos;) 68112144 real 0m5.77s $ time deflate-lean silesia.tar # lean-zip 67944712 real 0m5.24s What&apos;s going on here? This is the lean-zip implementation of DEFLATE compressing the standard s…</description>
  </item>
  <item>
    <title>Lattice basis reduction using the Hex Lean library</title>
    <link>https://kim-em.github.io/blog/2026-7-7-lattice-basis-reduction-using-the-hex-lean-library/</link>
    <guid isPermaLink="true">https://kim-em.github.io/blog/2026-7-7-lattice-basis-reduction-using-the-hex-lean-library/</guid>
    <pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate>
    <category>computer algebra</category>
    <category>lean</category>
    <description>We&apos;re starting work on a computational algebra library for Lean, called Hex. We&apos;ve just released the first collection of packages, providing dense matrices, row reduction, Gram-Schmidt, and lattice basis reduction. These packages have a primarily computational focus (i.e. calculations on concrete inputs, rather than symbolic algebra), and are optimized first for runtime performance, and secondarily for performance during kernel reduction.</description>
  </item>
  <item>
    <title>Verified linear programming</title>
    <link>https://kim-em.github.io/blog/2026-6-14-verified-linear-programming/</link>
    <guid isPermaLink="true">https://kim-em.github.io/blog/2026-6-14-verified-linear-programming/</guid>
    <pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate>
    <category>tactics</category>
    <category>lean</category>
    <description>I&apos;ve released leanprover/lp: verified linear programming in Lean 4. It&apos;s two things at once — a proof-carrying solver you can call from your own algorithms, and a tactic frontend that behaves a bit like linarith but reaches some goals linarith can&apos;t. The examples below are all elaborated by Lean when this page is built, using the actual tactic. Nothing here is a screenshot.</description>
  </item>
  <item>
    <title>A sum of squares tactic</title>
    <link>https://kim-em.github.io/blog/2026-5-13-a-sum-of-squares-tactic/</link>
    <guid isPermaLink="true">https://kim-em.github.io/blog/2026-5-13-a-sum-of-squares-tactic/</guid>
    <pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate>
    <category>tactics</category>
    <category>lean</category>
    <description>I&apos;ve put together an sos tactic: a sum-of-squares decision procedure for nonlinear real arithmetic, closely following John Harrison&apos;s implementation in HOL Light. It closes a range of polynomial-inequality goals over the reals that we don&apos;t otherwise have good tactics for. Every example below is elaborated by Lean when this page is built — the tactic really runs, CSDP and all.</description>
  </item>
</channel>
</rss>
