<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>proplang on Guy Freeman</title><link>https://gfrm.in/series/proplang/</link><description>Recent content in proplang on Guy Freeman</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 26 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://gfrm.in/series/proplang/index.xml" rel="self" type="application/rss+xml"/><item><title>The Agent That Prefers to Be Wrong</title><link>https://gfrm.in/posts/alignment-axiom/</link><pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate><guid>https://gfrm.in/posts/alignment-axiom/</guid><description>&lt;p&gt;The dominant approach to AI alignment involves training. You train a model to be helpful, then train it to be harmless, then apply some form of reinforcement learning from human feedback to bring it closer to what humans want. The result is a system that behaves well, usually, when it behaves in ways resembling its training distribution. What it does in novel situations is harder to predict.&lt;/p&gt;
&lt;p&gt;There is an alternative approach. Instead of training alignment in, you derive it from an axiom. The result is worth working through carefully, because the implications are not obvious until you do the mathematics &amp;mdash; and because the last of them undoes the first.&lt;/p&gt;</description></item><item><title>Think More, or Act Now</title><link>https://gfrm.in/posts/think-more-or-act-now/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><guid>https://gfrm.in/posts/think-more-or-act-now/</guid><description>&lt;p&gt;Ask an engineer how long an agent should deliberate before it commits, and the answer usually arrives as a number. A maximum iteration count. A step budget. A wall-clock timeout. The deliberation loop runs until the counter is spent, and then the agent acts on whatever it happens to hold. The number is so ordinary that it rarely registers as a decision at all. It looks like plumbing &amp;mdash; the &lt;code&gt;while&lt;/code&gt; had to stop somewhere, and this is where.&lt;/p&gt;</description></item><item><title>There Is No Forgetting</title><link>https://gfrm.in/posts/there-is-no-forgetting/</link><pubDate>Sat, 18 Jul 2026 00:00:00 +0000</pubDate><guid>https://gfrm.in/posts/there-is-no-forgetting/</guid><description>&lt;p&gt;In 2011, with Jim Smith, I published &amp;ldquo;A Bayesian approach to event trees&amp;rdquo; in &lt;em&gt;Bayesian Analysis&lt;/em&gt;. Among its moving parts was one I was quietly pleased with: a way for a non-stationary model to track a world that shifts underneath it. The models were conjugate — the well-behaved pairs where an update is a matter of adding to a count — and to keep old observations from tyrannising the present, I multiplied the conjugate parameters by a forgetting factor &lt;span class="katex"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;γ&lt;/mi&gt;&lt;mo&gt;&amp;lt;&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\gamma &amp;lt; 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; before each update. Yesterday&amp;rsquo;s evidence decayed geometrically. The agent stayed limber. When a regime changed, the tail of stale counts thinned fast enough that the posterior could move to meet it.&lt;/p&gt;</description></item><item><title>The Alphabet Is the Prior</title><link>https://gfrm.in/posts/the-alphabet-is-the-prior/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://gfrm.in/posts/the-alphabet-is-the-prior/</guid><description>&lt;p&gt;The &lt;a href="https://gfrm.in/posts/make-it-unsayable/"&gt;previous essay&lt;/a&gt; in this series ended on an identity and left most of the bill unpaid. The identity: in a Bayesian agent language, &lt;strong&gt;the alphabet is the prior&lt;/strong&gt;. The agent&amp;rsquo;s hypotheses are programs. Its prior over a hypothesis is the description length of that program under the grammar &amp;mdash; Solomonoff&amp;rsquo;s construction, in which a program of &lt;span class="katex"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;k&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; bits receives prior probability &lt;span class="katex"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mrow&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi&gt;k&lt;/mi&gt;&lt;/mrow&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;2^{-k}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;. This is not one prior among many. It is the unique prior that dominates every computable prior up to a multiplicative constant, which is as close to &amp;ldquo;the right answer&amp;rdquo; as inductive inference gets. And the length of a program is counted in the terminals of the language. So every terminal you admit into the alphabet is one bit charged against every hypothesis that uses it.&lt;/p&gt;</description></item><item><title>What You Cannot Say, You Cannot Get Wrong</title><link>https://gfrm.in/posts/make-it-unsayable/</link><pubDate>Fri, 10 Jul 2026 00:00:00 +0000</pubDate><guid>https://gfrm.in/posts/make-it-unsayable/</guid><description>&lt;p&gt;There is a familiar argument for why Rust is preferable to C++, or TypeScript to JavaScript, and it has nothing to do with syntax or speed. It is that the newer language makes a class of mistake &lt;em&gt;unsayable&lt;/em&gt;. You cannot dereference freed memory in safe Rust, not because you promise not to and a linter checks, but because the borrow checker will not compile a program that tries. You cannot silently add a number to &lt;code&gt;undefined&lt;/code&gt; in well-typed TypeScript, because the expression does not typecheck. The rule is not written in a style guide that the programmer is trusted to have read. It is enforced by the grammar, at the only moment that counts, against everyone — including the author on a bad day.&lt;/p&gt;</description></item></channel></rss>