<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Mathematics on Programmer.ie: Modern AI programming</title>
		<link>http://programmer.ie/categories/mathematics/</link>
		<description>Recent content in Mathematics on Programmer.ie: Modern AI programming</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
		
			<lastBuildDate>Mon, 09 Nov 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="http://programmer.ie/categories/mathematics/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>The Claim Before the Proof</title>
				<link>http://programmer.ie/books/math/01-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/01-chapter/</guid>
				<description>&lt;p&gt;&amp;ldquo;Lorentz boosts preserve the interval.&amp;rdquo; Is that true?&lt;/p&gt;&#xA;&lt;p&gt;It depends on which sentence you mean.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;If $\gamma$ is any real number with $\gamma^2(1-v^2)=1$, yes, by a three-line&#xA;expansion.&lt;/li&gt;&#xA;&lt;li&gt;If $\gamma$ is &lt;em&gt;defined&lt;/em&gt; as $1/\sqrt{1-v^2}$, it takes an extra argument, and it&#xA;needs $\lvert v\rvert&lt;1$ so that the square root is real and nonzero.&lt;/li&gt;&#xA;&lt;li&gt;If &amp;ldquo;preserve&amp;rdquo; means that the physical world obeys the formula, no theorem&#xA;settles it.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;One sentence, three claims. A tool that reports &amp;ldquo;verified&amp;rdquo; for the sentence has&#xA;told you nothing until you know which claim it checked. The design record behind&#xA;the engine puts it plainly: the same sentence &amp;ldquo;can acquire materially different&#xA;meanings when translated to SymPy, Z3, Lean, Rocq, or Isabelle,&amp;rdquo; and &amp;ldquo;a proof may&#xA;also be correct under a stronger assumption than the prose disclosed.&amp;rdquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Definitions and Assumptions</title>
				<link>http://programmer.ie/books/math/02-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/02-chapter/</guid>
				<description>&lt;p&gt;Which of these does the algebraic Lorentz theorem need: $\lvert v\rvert&lt;1$,&#xA;$\gamma&gt;0$, $c=1$, or $\gamma=1/\sqrt{1-v^2}$?&lt;/p&gt;&#xA;&lt;p&gt;None of them. The Lean statement takes four real numbers and one hypothesis,&#xA;$\gamma^2(1-v^2)=1$:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lean&#34; data-lang=&#34;lean&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;theorem&lt;/span&gt; lorentzIntervalInvariantAlgebraic&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;t x v gamma &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; ℝ&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;hgamma &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; gamma ^ &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; * &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; - v ^ &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; = &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A reader who &amp;ldquo;knows&amp;rdquo; that boosts need $\lvert v\rvert&lt;1$ may assume the theorem&#xA;uses it. It does not. The opposite mistake is worse: the &lt;em&gt;physical&lt;/em&gt; theorem does&#xA;need $\lvert v\rvert&lt;1$, because without it $1-v^2$ can be zero or negative, and&#xA;then $\sqrt{1-v^2}$ is not a real number. Whether a condition carries weight is a&#xA;fact about one specific claim, and the claim contract from&#xA;&lt;a href=&#34;http://programmer.ie/books/math/01-chapter/&#34;&gt;Chapter 1&lt;/a&gt; is where that fact is written down.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What Counts as Proof?</title>
				<link>http://programmer.ie/books/math/03-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/03-chapter/</guid>
				<description>&lt;p&gt;Here are four artifacts. A reader might call each of them &amp;ldquo;proved&amp;rdquo;:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;A paragraph of algebra that expands the squares.&lt;/li&gt;&#xA;&lt;li&gt;A SymPy call that simplifies a residual to &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;A Z3 run that returns &lt;code&gt;unsat&lt;/code&gt; on the negation.&lt;/li&gt;&#xA;&lt;li&gt;A Lean file that compiles.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The fourth is the dangerous one. This file compiles:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lean&#34; data-lang=&#34;lean&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; Mathlib&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;theorem&lt;/span&gt; intentionallyIncomplete &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;x &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; ℝ&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; x = x &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;= &lt;span style=&#34;color:#66d9ef&#34;&gt;by&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sorry&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lean accepts it with a warning, because &lt;code&gt;sorry&lt;/code&gt; inserts an axiom (&lt;code&gt;sorryAx&lt;/code&gt;) that&#xA;proves anything. The repository keeps this file as&#xA;&lt;code&gt;formal/lean/fixtures/Incomplete.lean&lt;/code&gt; for exactly that reason: its header says&#xA;the adapter &amp;ldquo;must reject this placeholder even if Lean permits it with a&#xA;warning.&amp;rdquo; &lt;em&gt;It compiled&lt;/em&gt; is not &lt;em&gt;it was proved&lt;/em&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Mathematical Models and Physical Theories</title>
				<link>http://programmer.ie/books/math/04-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/04-chapter/</guid>
				<description>&lt;p&gt;The case-study claim is named &lt;code&gt;lorentz-interval-invariance-1d-physical&lt;/code&gt;. The word&#xA;&amp;ldquo;physical&amp;rdquo; in that name is a trap. What has been proved about it, in two kernels,&#xA;is a statement about real numbers:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forall t x v gamma in R, |v| &amp;lt; 1 -&amp;gt; gamma = 1/sqrt(1-v^2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; (gamma*(t - v*x))^2 - (gamma*(x - v*t))^2 = t^2 - x^2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nothing in that sentence mentions a clock, a rod or a light signal. It is true or&#xA;false of the real numbers whether or not the universe has any Lorentz symmetry. A&#xA;reader who sees &amp;ldquo;physical theorem verified&amp;rdquo; will hear &amp;ldquo;relativity verified&amp;rdquo;. The&#xA;claim&amp;rsquo;s own limitations say otherwise: it &amp;ldquo;remains a statement about the&#xA;mathematical model; it is not empirical validation of relativity.&amp;rdquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Counterexamples</title>
				<link>http://programmer.ie/books/math/05-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/05-chapter/</guid>
				<description>&lt;p&gt;You can test a false universal claim many times and watch it pass. Take the shear&lt;/p&gt;&#xA;$$&#xA;t&#39; = t, \qquad x&#39; = x + vt,&#xA;$$&lt;p&gt;and the claim that it preserves $t^2-x^2$. At $t=0$ it does, since $x&#39;=x$. At&#xA;$v=0$ it does. At $x=-vt/2$ it does too, because then $x&#39; = vt/2$ and&#xA;$x&#39;^2 = x^2$. A reader who tries a few convenient inputs may conclude that the&#xA;claim holds. The residual explains why it seems to:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Uncertainty Without Confidence Theatre</title>
				<link>http://programmer.ie/books/math/06-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/06-chapter/</guid>
				<description>&lt;p&gt;Imagine a dashboard that says &amp;ldquo;Algebraic Lorentz theorem: 94% verified.&amp;rdquo; What&#xA;would the number mean? That 94% of tools agreed? That a model is 94% sure? That&#xA;94% of the proof is done? Each reading is wrong for this kind of claim, because a&#xA;theorem is either checked or it is not. A number invites the reader to treat a&#xA;missing check as a small deduction.&lt;/p&gt;&#xA;&lt;p&gt;The design record (&lt;a href=&#34;ref:adr-0001&#34;&gt;ADR 0001&lt;/a&gt;) rejects the idea outright. It lists&#xA;&amp;ldquo;majority voting among tools&amp;rdquo; as a rejected alternative, because &amp;ldquo;a&#xA;mistranslation can make every tool agree on the wrong proposition.&amp;rdquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>AI as Proposer, Not Authority</title>
				<link>http://programmer.ie/books/math/07-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/07-chapter/</guid>
				<description>&lt;p&gt;A language model is asked to prove the algebraic Lorentz theorem. It produces&#xA;fluent, confident Lean:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lean&#34; data-lang=&#34;lean&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;theorem&lt;/span&gt; lorentzIntervalInvariantAlgebraic ... &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;= &lt;span style=&#34;color:#66d9ef&#34;&gt;by&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  simp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ring_nf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  done&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Three things can happen next. The proof is right. The proof is wrong, and Lean&#xA;rejects it. Or the model &amp;ldquo;explains&amp;rdquo; that the proof works, and nobody runs it. In&#xA;the third case a polished paragraph has been mistaken for a result.&lt;/p&gt;&#xA;&lt;p&gt;The engine&amp;rsquo;s position is that a model&amp;rsquo;s text is evidence in none of these cases.&#xA;Only the first two produce a verdict, and that verdict is the &lt;em&gt;kernel&amp;rsquo;s&lt;/em&gt;, not the&#xA;model&amp;rsquo;s. This chapter describes the typed boundary that marks model output as an&#xA;unverified candidate and gives it no path to becoming evidence. It builds on the&#xA;status ladder of &lt;a href=&#34;http://programmer.ie/books/math/03-chapter/&#34;&gt;Chapter 3&lt;/a&gt; and the bounded conclusions of&#xA;&lt;a href=&#34;http://programmer.ie/books/math/06-chapter/&#34;&gt;Chapter 6&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Provenance and Reproducibility</title>
				<link>http://programmer.ie/books/math/08-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/08-chapter/</guid>
				<description>&lt;p&gt;A theorem-prover result that exists only on one laptop is hard to trust. Here are&#xA;four ordinary ways it fails to travel:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The proof depended on a Mathlib version nobody wrote down.&lt;/li&gt;&#xA;&lt;li&gt;The source file hashes differently on Windows and Linux because of line&#xA;endings.&lt;/li&gt;&#xA;&lt;li&gt;A report was edited by hand &amp;ldquo;just to fix a typo&amp;rdquo; after the run.&lt;/li&gt;&#xA;&lt;li&gt;A stale result file from an earlier run is still in the output directory and&#xA;gets read as current.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The repository has a defence against each, and this chapter walks through them:&#xA;what every result records, how a fresh run is compared with the committed one,&#xA;and what has still not been reproduced. It builds on claims&#xA;(&lt;a href=&#34;http://programmer.ie/books/math/01-chapter/&#34;&gt;Chapter 1&lt;/a&gt;) and the evidence statuses&#xA;(&lt;a href=&#34;http://programmer.ie/books/math/03-chapter/&#34;&gt;Chapter 3&lt;/a&gt;). The project also keeps its own failed runs on&#xA;record, because a reproducibility story with no failures in it is probably&#xA;missing some.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Symbolic Algebra with SymPy</title>
				<link>http://programmer.ie/books/math/09-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/09-chapter/</guid>
				<description>&lt;p&gt;The accepted report says the physical Lorentz claim is&#xA;&lt;code&gt;computation_verified_within_stated_domain&lt;/code&gt;, and the recorded domain is &amp;ldquo;real t,&#xA;x, v with |v| &amp;lt; 1 and c = 1.&amp;rdquo; A reader naturally assumes SymPy checked the&#xA;condition $\lvert v\rvert&lt;1$.&lt;/p&gt;&#xA;&lt;p&gt;It did not. Executed:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gamma = 1/sqrt(1 - v^2)       (v declared real)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;simplify(gamma^2 (1 - v^2) - 1)               -&amp;gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;same expression with v = 2    (so 1 - v^2 = -3) -&amp;gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The residual is zero at $v=2$, where $\lvert v\rvert&lt;1$ is false and the square&#xA;root is not real. SymPy&amp;rsquo;s &lt;code&gt;sqrt(-3)&lt;/code&gt; is the imaginary number $i\sqrt3$, its square&#xA;is $-3$, and the algebra closes anyway. The simplifier proves an identity of&#xA;expressions; it has no idea what range of $v$ the physics wants. The adapter&amp;rsquo;s own&#xA;recorded limitation says as much: &amp;ldquo;SymPy&amp;rsquo;s simplifier does not itself prove that&#xA;physical side condition.&amp;rdquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Adversarial Math From First Principles</title>
				<link>http://programmer.ie/books/math/</link>
				<pubDate>Mon, 09 Nov 2026 00:00:00 +0000</pubDate>
				<guid>http://programmer.ie/books/math/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;A mathematical answer is only as trustworthy as the claim being tested, the assumptions behind it, and the evidence supporting it.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;AI can generate mathematical arguments, construct proofs, identify patterns, and propose solutions. But a convincing explanation is not necessarily a correct proof, and a formally verified theorem may not establish what its author intended.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Adversarial Math From First Principles&lt;/em&gt; explores a different approach: mathematics in which AI proposes, independent tools check, counterexamples challenge, and every conclusion remains connected to the evidence that supports it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Constraints and Models with Z3</title>
				<link>http://programmer.ie/books/math/10-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/10-chapter/</guid>
				<description>&lt;p&gt;A solver says &lt;code&gt;unsat&lt;/code&gt;. What has been shown?&lt;/p&gt;&#xA;&lt;p&gt;Not &amp;ldquo;the theorem is true.&amp;rdquo; What has been shown is that &lt;strong&gt;one specific formula&lt;/strong&gt;&#xA;has no model: the conjunction of the recorded assumptions and the &lt;em&gt;negation&lt;/em&gt; of the&#xA;goal. If that formula is the wrong encoding of the claim, &lt;code&gt;unsat&lt;/code&gt; is a true fact&#xA;about the wrong formula. The evidence policy states the rule: &amp;ldquo;Interpret Z3&#xA;&lt;code&gt;unsat&lt;/code&gt; only as unsatisfiability of the recorded negation and assumptions.&amp;rdquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Lean 4 and Mathlib</title>
				<link>http://programmer.ie/books/math/11-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/11-chapter/</guid>
				<description>&lt;p&gt;Put $v=2$ into $\gamma^2(1-v^2)$ with $\gamma = 1/\sqrt{1-v^2}$. What do you get?&lt;/p&gt;&#xA;&lt;p&gt;SymPy says $1$ (&lt;a href=&#34;http://programmer.ie/books/math/09-chapter/&#34;&gt;Chapter 9&lt;/a&gt;). Lean says $0$. Re-executed on&#xA;2026-11-09 with Lean 4.35.0 and Mathlib v4.35.0, using the example from&#xA;&lt;a href=&#34;http://programmer.ie/books/math/02-chapter/&#34;&gt;Chapter 2&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Real.sqrt (1 - 2^2) = 0                      (1 - 2^2 = -3, sqrt of a negative)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(1 / Real.sqrt (1 - 2^2))^2 * (1 - 2^2) = 0  (gamma = 1/0 = 0)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lean has a &lt;em&gt;junk value&lt;/em&gt; for division by zero and for the square root of a negative&#xA;number: both are $0$. SymPy instead takes $\sqrt{-3}$ to be the imaginary&#xA;$i\sqrt3$, and the algebra closes. Two tools disagree about the same expression at&#xA;the same point, because each defines the square root of a negative number&#xA;differently. Neither is wrong; they are different encodings. It is a small,&#xA;concrete case of the cross-system problem that &lt;a href=&#34;http://programmer.ie/books/math/15-chapter/&#34;&gt;Chapter 15&lt;/a&gt; takes&#xA;on.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rocq as an Independent Kernel</title>
				<link>http://programmer.ie/books/math/12-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/12-chapter/</guid>
				<description>&lt;p&gt;Two kernels accepted a theorem about the square root. Does that show the theorem&#xA;is right?&lt;/p&gt;&#xA;&lt;p&gt;Only if both are about the same square root. Lean&amp;rsquo;s &lt;code&gt;Real.sqrt&lt;/code&gt; comes from&#xA;Mathlib, built on one construction of the real numbers. Rocq&amp;rsquo;s &lt;code&gt;sqrt&lt;/code&gt; comes from&#xA;its standard library, built on another. If the two constructions differed on some&#xA;input, both kernels could accept their own statement and still disagree about the&#xA;physics. The project has not proved that they agree. The accepted report says so,&#xA;and attaches the conclusion &lt;code&gt;semantic_equivalence_not_established&lt;/code&gt; to the gamma&#xA;pair.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Isabelle/HOL and Countermodels</title>
				<link>http://programmer.ie/books/math/13-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/13-chapter/</guid>
				<description>&lt;p&gt;The first time the project&amp;rsquo;s Isabelle theory met a real Isabelle, it did not&#xA;build. Three defects appeared, one after another:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*** Malformed command syntax (line 5)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*** Undefined method: &amp;#34;ring&amp;#34; (line 18)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*** Inner lexical error at &amp;#34;… = t^2 - x^2&amp;#34; (line 19)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first is a portability problem: the UTF-8 text cartouche did not parse in this&#xA;image, while the portable &lt;code&gt;text \&amp;lt;open&amp;gt;...\&amp;lt;close&amp;gt;&lt;/code&gt; form does. The second had been&#xA;predicted in an earlier draft of this chapter: &lt;code&gt;ring&lt;/code&gt; is not a built-in&#xA;Isabelle/HOL proof method. The third is a typographic ellipsis character where&#xA;Isabelle expects its special &lt;code&gt;...&lt;/code&gt; fact. These are real failures of the candidate&#xA;file, not failures of the mathematics.&lt;/p&gt;</description>
			</item>
			<item>
				<title>SageMath and Scientific Computation</title>
				<link>http://programmer.ie/books/math/14-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/14-chapter/</guid>
				<description>&lt;p&gt;The engine&amp;rsquo;s host probe says SageMath is absent:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sagemath available: False | reason: none of sage was found on PATH&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And yet this chapter shows SageMath output. That is not a contradiction. The probe&#xA;checks the host &lt;code&gt;PATH&lt;/code&gt;; the run below happened inside the official Docker image.&#xA;Being available in a container is not the same as being integrated into the&#xA;engine. The engine&amp;rsquo;s &lt;code&gt;sagemath.probe.v1&lt;/code&gt; registry entry still says &amp;ldquo;SageMath&#xA;capability only; no evidence&amp;rdquo;, and the manual &lt;code&gt;sagemath-lane&lt;/code&gt; remains unrun in the&#xA;hosted record.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Cross-System Claim Contract</title>
				<link>http://programmer.ie/books/math/15-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/15-chapter/</guid>
				<description>&lt;p&gt;Here is what the engine reports when it compares three tools&amp;rsquo; versions of the&#xA;gamma-relation claim at version 1.1.0 (executed):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gamma-sympy-v1 &amp;lt;-&amp;gt; gamma-lean4-v1   declared_mismatch   [&amp;#39;quantifiers&amp;#39;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gamma-sympy-v1 &amp;lt;-&amp;gt; gamma-rocq-v1    declared_mismatch   [&amp;#39;quantifiers&amp;#39;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gamma-lean4-v1 &amp;lt;-&amp;gt; gamma-rocq-v1    semantic_equivalence_not_established&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The SymPy check and the Lean check are both of &amp;ldquo;the same&amp;rdquo; gamma claim, and the&#xA;engine says their contracts &lt;em&gt;do not match&lt;/em&gt;. The reason is concrete. The SymPy&#xA;binding substitutes the defining equation $\gamma = 1/\sqrt{1-v^2}$ into the&#xA;expression, so it quantifies only over $v$. The Lean and Rocq statements quantify&#xA;over $\gamma$ as a variable and take the definition as a hypothesis. The recorded&#xA;obligation reads: &amp;ldquo;gamma was eliminated by substituting the defining equation &amp;hellip;&#xA;this binding quantifies only v.&amp;rdquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Investigation Engine</title>
				<link>http://programmer.ie/books/math/16-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/16-chapter/</guid>
				<description>&lt;p&gt;The first version of almost any verification tool is a single script. Here it&#xA;would be &lt;code&gt;run_math01&lt;/code&gt;: import SymPy, call Z3, shell out to &lt;code&gt;lean&lt;/code&gt;, print the&#xA;results. It works. Then someone wants a second claim, and copying the script&#xA;duplicates the placeholder screening. A third claim needs Rocq; a fourth needs a&#xA;notebook. Each copy decides afresh what &amp;ldquo;success&amp;rdquo; means, and sooner or later one&#xA;of them reports a missing tool as a pass.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Events and Reference Frames</title>
				<link>http://programmer.ie/books/math/17-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/17-chapter/</guid>
				<description>&lt;p&gt;Two events, $A$ and $B$, happen at the same time in a frame $S$: $A$ at&#xA;$(t,x)=(0,0)$ and $B$ at $(0,1)$. Are they simultaneous?&lt;/p&gt;&#xA;&lt;p&gt;The question has no answer that does not depend on the frame. Take a second frame&#xA;$S&#39;$ moving at $v=3/5$ relative to $S$ (so $\gamma=5/4$, in units where $c=1$).&#xA;Executed with exact rationals:&lt;/p&gt;&#xA;$$&#xA;t&#39;_A = 0, \qquad t&#39;_B = \gamma(0 - v\cdot1) = \tfrac54\cdot\left(-\tfrac35\right) = -\tfrac34 .&#xA;$$&lt;p&gt;In $S&#39;$, $B$ happens three quarters of a time unit &lt;em&gt;before&lt;/em&gt; $A$. Both frames are&#xA;right. Simultaneity belongs to a frame&amp;rsquo;s way of assigning time coordinates, not to&#xA;the events. What both frames agree on is the interval:&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Postulates and Their Roles</title>
				<link>http://programmer.ie/books/math/18-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/18-chapter/</guid>
				<description>&lt;p&gt;&amp;ldquo;Special relativity follows from two postulates.&amp;rdquo; That sentence is a slogan, and a&#xA;derivation that takes it literally will not go through. A closer count of what a&#xA;standard derivation uses looks like this:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;The principle of relativity:&lt;/strong&gt; the laws of physics take the same form in all&#xA;inertial frames.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Constancy of the speed of light:&lt;/strong&gt; light travels at the same speed $c$ in all&#xA;inertial frames.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Homogeneity of space and time&lt;/strong&gt;, so that the transformation between frames is&#xA;linear.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Isotropy&lt;/strong&gt;, so that there is no preferred direction along the line.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;A synchronization convention&lt;/strong&gt; (&lt;a href=&#34;http://programmer.ie/books/math/17-chapter/&#34;&gt;Chapter 17&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Reciprocity:&lt;/strong&gt; if $S&#39;$ moves at $v$ relative to $S$, then $S$ moves at $-v$&#xA;relative to $S&#39;$, and the transformation depends only on $v$.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The first two are the famous ones. The others are routinely used in textbook&#xA;derivations without being called postulates. Which of them a given proof uses,&#xA;and which it quietly assumes, is exactly what a claim contract exists to record.&#xA;(The list is general background, not a repository record.)&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Lorentz Transformation</title>
				<link>http://programmer.ie/books/math/19-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/19-chapter/</guid>
				<description>&lt;p&gt;The standard boost is&lt;/p&gt;&#xA;$$&#xA;t&#39; = \gamma(t-vx), \qquad x&#39; = \gamma(x-vt), \qquad \gamma = \frac{1}{\sqrt{1-v^2}} .&#xA;$$&lt;p&gt;Why $\gamma$, and why &lt;em&gt;that&lt;/em&gt; $\gamma$? A reader can check that the formula&#xA;preserves the interval (&lt;a href=&#34;http://programmer.ie/books/math/20-chapter/&#34;&gt;Chapter 20&lt;/a&gt;), but that shows only that&#xA;the formula is &lt;em&gt;consistent&lt;/em&gt; with one requirement. It does not show that the&#xA;formula is &lt;em&gt;forced&lt;/em&gt;. The shear $t&#39;=t$, $x&#39;=x+vt$ is simple and plausible, and&#xA;wrong. Something has to say why the right answer is this one.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Invariant Interval</title>
				<link>http://programmer.ie/books/math/20-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/20-chapter/</guid>
				<description>&lt;h2 id=&#34;what-are-we-actually-proving&#34;&gt;What are we actually proving?&lt;/h2&gt;&#xA;&lt;p&gt;A Lorentz boost in one space and one time dimension is often introduced with a&#xA;formula and a promise: the formula preserves the interval between events. That&#xA;sentence compresses several different mathematical claims. Before any proof&#xA;assistant is asked to check one of them, we have to say which one we mean.&lt;/p&gt;&#xA;&lt;p&gt;This chapter separates four claims.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;An algebraic identity.&lt;/strong&gt; For real numbers $t,x,v,\gamma$ satisfying&#xA;$\gamma^2(1-v^2)=1$, the boost&#xA;$t&#39;=\gamma(t-vx)$, $x&#39;=\gamma(x-vt)$ preserves $t^2-x^2$.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;A gamma bridge.&lt;/strong&gt; For real $v$ with $\lvert v\rvert&lt;1$ and&#xA;$\gamma=1/\sqrt{1-v^2}$, the hypothesis of the algebraic identity holds.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;A physical composition.&lt;/strong&gt; Combining the two gives the interval-preserving&#xA;boost with the Lorentz factor defined by the positive square root.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;A deliberately false control.&lt;/strong&gt; The shear $t&#39;=t$, $x&#39;=x+vt$ does &lt;em&gt;not&lt;/em&gt;&#xA;preserve the interval. A rational witness refutes it.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The mathematical question is not whether special relativity is true. Special&#xA;relativity is a well-tested physical theory. The question here is narrower and&#xA;more useful for a book about verification: what exactly do the formal artifacts&#xA;establish, under which assumptions, and where does the verification stop?&lt;/p&gt;</description>
			</item>
			<item>
				<title>Time Dilation and Length Contraction</title>
				<link>http://programmer.ie/books/math/21-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/21-chapter/</guid>
				<description>&lt;p&gt;&amp;ldquo;Moving clocks run slow.&amp;rdquo; Let frame $S&#39;$ move at $v=3/5$ relative to $S$.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Clock $C&#39;$ rests in $S&#39;$. Its reading $\tau=4$ happens at $S$-coordinates&#xA;$(t,x)=(5,3)$. So $S$ sees $C&#39;$ advance $4$ while its own time advances $5$:&#xA;$C&#39;$ is slow in $S$.&lt;/li&gt;&#xA;&lt;li&gt;Clock $C$ rests in $S$ at $x=0$. Its reading $4$ happens at $S&#39;$-coordinates&#xA;$(5,-3)$. So $S&#39;$ sees $C$ advance $4$ while its own time advances $5$: $C$ is&#xA;slow in $S&#39;$.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;(Executed.) Each frame says the other&amp;rsquo;s clock is slow. If that were a&#xA;contradiction, relativity would be inconsistent. It is not. The two observations&#xA;compare &lt;em&gt;different pairs of events&lt;/em&gt;, and &amp;ldquo;slow&amp;rdquo; has a meaning only once you say&#xA;which pair. This chapter is about saying which.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Velocity, Light Cones, and Causality</title>
				<link>http://programmer.ie/books/math/22-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/22-chapter/</guid>
				<description>&lt;p&gt;Can a boost ever make an effect come before its cause? Take two events with&#xA;$\Delta t=1$ and $\Delta x=2$, and boost by $v=3/5$ ($\gamma=5/4$). Executed:&lt;/p&gt;&#xA;$$&#xA;\Delta t&#39; = \gamma(\Delta t - v\,\Delta x) = \tfrac54\left(1 - \tfrac65\right) = -\tfrac14 .&#xA;$$&lt;p&gt;The order reversed: event $B$ is &lt;em&gt;before&lt;/em&gt; $A$ in the new frame. If $A$ could cause&#xA;$B$, causality would depend on the frame, which is intolerable. Now take&#xA;$\Delta t=2$, $\Delta x=1$: $\Delta t&#39; = \tfrac54\left(2-\tfrac35\right) = \tfrac74 &gt; 0$,&#xA;and the order is intact. The difference is whether $\lvert\Delta x\rvert &lt; \Delta t$.&#xA;This chapter explains why that is the right dividing line.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Anatomy of a Challenge</title>
				<link>http://programmer.ie/books/math/23-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/23-chapter/</guid>
				<description>&lt;p&gt;A hypothetical critic writes:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;Lorentz boosts cannot preserve the interval, because γ blows up as v approaches&#xA;the speed of light.&amp;rdquo;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Is that true? The question cannot be answered until someone says what the&#xA;sentence claims. Here are three readings:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Reading&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Statement&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Status by inspection&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;R1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;As $v\to1$, the transformed coordinates $t&#39;$, $x&#39;$ are unbounded&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;True for fixed $(t,x)$ with $t\neq x$ (for example $t=1$, $x=0$ gives $t&#39;=\gamma\to\infty$)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;R2&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;For some $\lvert v\rvert&lt;1$, the interval is &lt;strong&gt;not&lt;/strong&gt; preserved because $\gamma$ is large&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;False: the algebraic theorem (&lt;a href=&#34;http://programmer.ie/books/math/20-chapter/&#34;&gt;Chapter 20&lt;/a&gt;) holds for every $\gamma$ with $\gamma^2(1-v^2)=1$&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;R3&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;The boost is undefined at $v=1$&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;True, and the claim contracts exclude it with the hypothesis $\lvert v\rvert&lt;1$&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;A check by hand: at $v=3/5$, $\gamma=5/4$; at $v=12/13$, $\gamma=13/5$. For&#xA;$(t,x)=(1,0)$ the boosted coordinates are $(5/4, -3/4)$ and $(13/5, -12/5)$. The&#xA;coordinates grow, while the intervals, $25/16 - 9/16 = 1$ and&#xA;$169/25 - 144/25 = 1$, do not change.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hidden-Assumption Audits</title>
				<link>http://programmer.ie/books/math/24-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/24-chapter/</guid>
				<description>&lt;p&gt;A theorem is stated with four hypotheses. Which of them does the proof actually&#xA;use?&lt;/p&gt;&#xA;&lt;p&gt;The question matters in both directions. A hypothesis the proof does not use is a&#xA;needless restriction. One the proof &lt;em&gt;quietly&lt;/em&gt; relies on without stating it is a&#xA;hole. Reading the proof is one way to find out. A mechanical test is another, and&#xA;it catches cases a reader misses.&lt;/p&gt;&#xA;&lt;p&gt;This chapter gives a repeatable test for which premises a conclusion really&#xA;depends on, and a catalogue of the related audits the engine already runs. It&#xA;builds on assumptions (&lt;a href=&#34;http://programmer.ie/books/math/02-chapter/&#34;&gt;Chapter 2&lt;/a&gt;), solvers&#xA;(&lt;a href=&#34;http://programmer.ie/books/math/10-chapter/&#34;&gt;Chapter 10&lt;/a&gt;) and the cross-system ladder&#xA;(&lt;a href=&#34;http://programmer.ie/books/math/15-chapter/&#34;&gt;Chapter 15&lt;/a&gt;).&lt;/p&gt;</description>
			</item>
			<item>
				<title>From a Source Page to a Checked Theorem</title>
				<link>http://programmer.ie/books/math/25-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/25-chapter/</guid>
				<description>&lt;p&gt;Someone says: &amp;ldquo;Euclid proved the Pythagorean theorem, Lean has now proved it, so&#xA;Euclid is verified.&amp;rdquo; Every part of that sentence slides between two things.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What Euclid wrote is a statement about &lt;em&gt;squares on sides&lt;/em&gt;, in synthetic&#xA;geometry.&lt;/li&gt;&#xA;&lt;li&gt;What Lean checked is a statement about six real numbers and a polynomial&#xA;identity.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A kernel&amp;rsquo;s acceptance cannot tell you whether those are the same claim. This&#xA;chapter keeps them apart on purpose, and the engine records the gap between them&#xA;as data.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Alternative Formulations</title>
				<link>http://programmer.ie/books/math/26-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/26-chapter/</guid>
				<description>&lt;p&gt;Is the physical Lorentz claim stronger than the algebraic one? One reader says&#xA;yes: it is &amp;ldquo;about physics&amp;rdquo;. Another says no: the physical claim is just the&#xA;algebraic claim with $\gamma$ filled in. Both are half right, and the loose word&#xA;&amp;ldquo;stronger&amp;rdquo; hides which half.&lt;/p&gt;&#xA;&lt;p&gt;Two true theorems are logically equivalent in a trivial sense: each implies the&#xA;other, because both are true. A useful comparison has to say what is being&#xA;compared: the &lt;strong&gt;hypotheses&lt;/strong&gt; each demands, the &lt;strong&gt;conclusions&lt;/strong&gt; each draws, or the&#xA;&lt;strong&gt;scope&lt;/strong&gt; of instances each covers.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Repairing a Refuted Claim</title>
				<link>http://programmer.ie/books/math/27-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/27-chapter/</guid>
				<description>&lt;p&gt;Start from the claim refuted in &lt;a href=&#34;http://programmer.ie/books/math/25-chapter/&#34;&gt;Chapter 25&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pythagorean-all-triangles-2d@1.0.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;d²(B,C) = d²(A,B) + d²(A,C)   for every three real points A, B, C&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Its witness is $A=(0,0)$, $B=(1,0)$, $C=(1,1)$, with residual $-2$. The tempting&#xA;move is to patch the claim until that witness stops being a counterexample. The&#xA;engine tests three patches, and one of them is a fix in name only.&lt;/p&gt;&#xA;&lt;p&gt;Given a claim already refuted by a validated counterexample&#xA;(&lt;a href=&#34;http://programmer.ie/books/math/05-chapter/&#34;&gt;Chapter 5&lt;/a&gt;), the engine can record proposed repairs as &lt;em&gt;new&#xA;claims&lt;/em&gt; with an explicit record of what changed, test whether each repair&amp;rsquo;s&#xA;premise can be satisfied, test a patch for overfitting, and compare the results as&#xA;a set of trade-offs with no automatic winner. This chapter builds on the negative&#xA;control of &lt;a href=&#34;http://programmer.ie/books/math/25-chapter/&#34;&gt;Chapter 25&lt;/a&gt; and the kernel evidence of&#xA;&lt;a href=&#34;http://programmer.ie/books/math/20-chapter/&#34;&gt;Chapter 20&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The `sorry` That Wasn&#39;t the Proof</title>
				<link>http://programmer.ie/books/math/28-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/28-chapter/</guid>
				<description>&lt;p&gt;Here are six facts about one Lean formalization of an action theorem related to&#xA;Cannon&amp;rsquo;s conjecture, all true at the pinned commit:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;the challenge file ends in sorry&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;the catalogue omits the result&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;the documentation says the formalization proves the theorem&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;the separate solution theorem passes the Lean kernel&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;the Comparator accepts the mapping&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;the human reviewer says the statement looks plausible but was not carefully checked&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A reader who sees only the first fact concludes that the proof is incomplete. A&#xA;reader who sees only the fourth concludes that it is done. Both are reading one&#xA;record as if it were the whole story.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Independent Reproduction</title>
				<link>http://programmer.ie/books/math/29-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/29-chapter/</guid>
				<description>&lt;p&gt;&amp;ldquo;Reproduced&amp;rdquo; can mean at least six different things:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I ran it again and got the same output.&lt;/li&gt;&#xA;&lt;li&gt;A fresh build on my machine produced the same hashes.&lt;/li&gt;&#xA;&lt;li&gt;A CI server I do not control ran it and it passed.&lt;/li&gt;&#xA;&lt;li&gt;Someone else downloaded the bundle and verified it.&lt;/li&gt;&#xA;&lt;li&gt;Someone else, with different tools, re-derived the result.&lt;/li&gt;&#xA;&lt;li&gt;Someone else wrote their own implementation from the specification.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The first is a weak check and the last a strong one, and they are not&#xA;interchangeable. A report that uses the word without saying which is making a&#xA;stronger claim than its author may realize.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What We Can Conclude</title>
				<link>http://programmer.ie/books/math/30-chapter/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0100</pubDate>
				<guid>http://programmer.ie/books/math/30-chapter/</guid>
				<description>&lt;p&gt;Thirty chapters ago, the book asked whether &amp;ldquo;Lorentz boosts preserve the&#xA;interval&amp;rdquo; is true, and answered that it depends on which sentence you mean. This&#xA;chapter collects what the book can now say, in the vocabulary of the earlier&#xA;chapters: the bounded findings, the obligations still open, and the question of&#xA;whether any of it is new. It adds no new capability.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-has-been-established&#34;&gt;What has been established&lt;/h2&gt;&#xA;&lt;h3 id=&#34;in-the-mathematics-kernel--or-computation-checked&#34;&gt;In the mathematics (kernel- or computation-checked)&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Claim&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Strongest recorded standing&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Where&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Algebraic Lorentz interval invariance (&lt;code&gt;γ²(1−v²)=1&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;formally_verified&lt;/code&gt; in Lean and Rocq; Z3 &lt;code&gt;unsat&lt;/code&gt; (computation); hosted dossier &lt;code&gt;source_claim_qualified&lt;/code&gt; for the project-owned source claim&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ch. &lt;a href=&#34;http://programmer.ie/books/math/20-chapter/&#34;&gt;20&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Gamma bridge (&lt;code&gt;γ = 1/√(1−v²)&lt;/code&gt;, &lt;code&gt;|v|&amp;lt;1&lt;/code&gt; ⟹ &lt;code&gt;γ²(1−v²)=1&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;formally_verified&lt;/code&gt; in Lean and Rocq (1.0.0 baseline); hosted dossier &lt;code&gt;formal_statement_verified&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ch. &lt;a href=&#34;http://programmer.ie/books/math/11-chapter/&#34;&gt;11&lt;/a&gt;, &lt;a href=&#34;http://programmer.ie/books/math/12-chapter/&#34;&gt;12&lt;/a&gt;, &lt;a href=&#34;http://programmer.ie/books/math/20-chapter/&#34;&gt;20&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Composed physical Lorentz theorem (1.1.0)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Kernel-accepted in Lean and Rocq (R4 source/audit bundle); &lt;strong&gt;not migrated&lt;/strong&gt; into the accepted report, which still records 1.0.0 as &lt;code&gt;computation_verified_within_stated_domain&lt;/code&gt; (SymPy only)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ch. &lt;a href=&#34;http://programmer.ie/books/math/20-chapter/&#34;&gt;20&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;The shear &lt;code&gt;t&#39;=t, x&#39;=x+vt&lt;/code&gt; preserves the interval&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;refuted_by_valid_counterexample&lt;/code&gt; (SymPy and Z3, residual &lt;code&gt;−1/4&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ch. &lt;a href=&#34;http://programmer.ie/books/math/05-chapter/&#34;&gt;5&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Coordinate Pythagorean theorem&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;formal_statement_verified&lt;/code&gt; (Lean and Rocq, SymPy and Z3 support)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ch. &lt;a href=&#34;http://programmer.ie/books/math/25-chapter/&#34;&gt;25&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Unconditioned Pythagorean claim&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;refuted_by_valid_counterexample&lt;/code&gt; (residual &lt;code&gt;−2&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ch. &lt;a href=&#34;http://programmer.ie/books/math/25-chapter/&#34;&gt;25&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Two repairs of it (A: add orthogonality; B: add the cross term)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;mathematically_qualified_candidate&lt;/code&gt;, neither selected (&lt;code&gt;not_decided&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ch. &lt;a href=&#34;http://programmer.ie/books/math/27-chapter/&#34;&gt;27&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;A third repair (premise &lt;code&gt;0 = 1&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rejected_vacuous&lt;/code&gt; despite kernel acceptance&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ch. &lt;a href=&#34;http://programmer.ie/books/math/27-chapter/&#34;&gt;27&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;about-process-engine-behaviours-that-held&#34;&gt;About process (engine behaviours that held)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Evidence is bound to an exact claim fingerprint, and a changed claim does not&#xA;inherit old evidence (Ch. &lt;a href=&#34;http://programmer.ie/books/math/01-chapter/&#34;&gt;1&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Missing tools are &lt;code&gt;not_installed&lt;/code&gt; / &lt;code&gt;not_evaluated&lt;/code&gt;, never a pass (Ch. &lt;a href=&#34;http://programmer.ie/books/math/03-chapter/&#34;&gt;3&lt;/a&gt;, &lt;a href=&#34;http://programmer.ie/books/math/13-chapter/&#34;&gt;13&lt;/a&gt;, &lt;a href=&#34;http://programmer.ie/books/math/14-chapter/&#34;&gt;14&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Placeholders, unexpected axioms, and kernel rejections are caught by three&#xA;independent guards (Ch. &lt;a href=&#34;http://programmer.ie/books/math/03-chapter/&#34;&gt;3&lt;/a&gt;, &lt;a href=&#34;http://programmer.ie/books/math/11-chapter/&#34;&gt;11&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Conclusions are recomputed by fixed precedence from the records, with no tool vote&#xA;and no score (Ch. &lt;a href=&#34;http://programmer.ie/books/math/06-chapter/&#34;&gt;6&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Failures, including the project&amp;rsquo;s own failed hosted runs and a corrected first&#xA;implementation (P5-R1), are preserved (Ch. &lt;a href=&#34;http://programmer.ie/books/math/08-chapter/&#34;&gt;8&lt;/a&gt;, &lt;a href=&#34;http://programmer.ie/books/math/25-chapter/&#34;&gt;25&lt;/a&gt;, &lt;a href=&#34;http://programmer.ie/books/math/28-chapter/&#34;&gt;28&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;about-an-external-record-p8&#34;&gt;About an external record (P8)&lt;/h3&gt;&#xA;&lt;p&gt;For one pinned external Lean formalization record, the engine established a vector,&#xA;not a verdict: the challenge wrapper has a &lt;code&gt;sorry&lt;/code&gt; (interface scope), the separate&#xA;solution theorem is kernel-accepted with a standard axiom set, the executed Comparator&#xA;accepts the configured mapping, the catalogue and documentation disagree, statement&#xA;correspondence is &lt;code&gt;qualified&lt;/code&gt;, and proof digestion and historical correspondence are&#xA;&lt;code&gt;not_evaluated&lt;/code&gt;. &lt;strong&gt;Neither dismissal nor full verification is justified&lt;/strong&gt; (Ch. &lt;a href=&#34;http://programmer.ie/books/math/28-chapter/&#34;&gt;28&lt;/a&gt;).&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
