<?xml version="1.0" encoding="UTF-8" standalone="yes"?><oembed><version><![CDATA[1.0]]></version><provider_name><![CDATA[Ordinary Ideas]]></provider_name><provider_url><![CDATA[https://ordinaryideas.wordpress.com]]></provider_url><author_name><![CDATA[paulfchristiano]]></author_name><author_url><![CDATA[https://ordinaryideas.wordpress.com/author/paulfchristiano/]]></author_url><title><![CDATA[Confronting Incompleteness]]></title><type><![CDATA[link]]></type><html><![CDATA[<p>Consider the &#8220;Truth game&#8221;, played by an agent A:</p>
<blockquote><p>A outputs a sequence of mathematical assertions S1, S2, &#8230;</p>
<p>For each statement S, A receives exp(-|S|) utilons.</p>
<p>If A makes any false statements (regardless of how many it makes) it receives -infinity utilons (or just a constant larger than the largest possible reward).</p></blockquote>
<p><!--more--></p>
<p>We can view A&#8217;s output in this game as an operationalization of &#8220;facts about which A is certain.&#8221; I believe that some intuitive judgments about &#8220;belief&#8221; are probably poorly grounded, and that thinking about a more concrete situation can patch some of these issues.</p>
<p>Naturally, it seems like A&#8217;s output should obey certain axioms. For example:</p>
<ul>
<li>If A outputs X and Y, then A outputs &#8220;X and Y.&#8221;</li>
<li>If A outputs X and &#8220;X implies Y&#8221;, then A outputs Y.  (&#8220;Modus Ponens&#8221;)</li>
<li>If A outputs X, then A outputs &#8220;X or Y.&#8221;</li>
</ul>
<p>And so on. For example, we could let A output some axioms in first order logic and then all of their logical consequences: then the set of statements output by A are precisely the theorems for a certain first order theory.</p>
<p>Humans have a strong intuitive feeling that they can &#8220;go beyond&#8221; any particular first order theory, in a sense formalized by Goedel&#8217;s incompleteness results. In particular, humans can feel pretty confident about &#8216;Anything that humans feel pretty confident about is true,&#8217; which is impossible if their confidence were only justified by provability in some formal system.</p>
<p>But let&#8217;s consider agent A playing the Truth game. Should A output a statement of the form &#8220;Everything A outputs is true&#8221;? Well, if the game is played in some reasonable language (say, first order statements about the integers) then A probably can&#8217;t articulate this sentence. But it has some good-enough analogs, like &#8220;If A outputs a statement S, A doesn&#8217;t output (not S)&#8221; which are fair game. Should A output these sentences?</p>
<p>If A ever outputs S and (not S), then it doesn&#8217;t matter what A does&#8211;it is getting -infinity utilons anyway. So A might as well assert that A never outputs both S and not(S). Let this statement be Con(A).</p>
<p>Another natural class of statements for A to output are the results of finite computations: if phi is a delta_0 formula (ie, if we can determine whether phi(x) is true using a deterministic computation) then any true statement of the form &#8220;There is some x such that phi(x)&#8221; should get output by A eventually&#8211;after all, eventually A might as well try every possible candidate x, and if any of them work A can promptly output &#8220;There is some x such that phi(x).&#8221; Call this statement Exhaustive(A). It seems clear that A might as well output Exhaustive(A).</p>
<p>Finally, it seems like A should be able to output &#8220;X implies Y&#8221; when there is a simple (say, strict finitist) proof that X implies Y. I&#8217;m not going to dwell on this because it doesn&#8217;t seem like it is either controversial nor actually problematic. Call this statement Prover(A).</p>
<p>Unfortunately, we are about to get into some trouble.</p>
<p>Consider the statement G = &#8220;A never outputs G.&#8221; It is easy for A to reason as follows:</p>
<blockquote><p>If A outputs G, then by simulating A, A will eventually output &#8216;A outputs G.&#8217; Thus A will have output G and (not G). Thus not Con(A).</p></blockquote>
<p>So if Prover(A), then A outputs &#8220;If A outputs G, then not Con(A)&#8221; which is the same statement as &#8220;If not G, then not Con(A)&#8221; which is in turn the same as &#8220;Con(A) implies G.&#8221; We&#8217;ve already argued that A might as well output &#8220;Con(A)&#8221;. So if we accept modus ponens we are saying that A might as well output &#8220;G&#8221;, in which case A will certainly receive infinite negative utility.</p>
<p>Which one of these legs should be dropped? Should A fail to output Con(A), should A fail to output Exhaustive(A), or should we abandon Prover(A) or modus ponens? If you were in A&#8217;s position you almost certainly wouldn&#8217;t output G. Which would you drop?</p>
<p>I would drop modus ponens, and I suspect that this is the path towards a satisfying theoretical resolution of the problem. When we view mathematical truth as fixed in the background, with A simply trying to discover it, modus ponens is easily justified (and decision-theoretic considerations make no difference). But A is itself made of math, and this seems like an extremely confused perspective, which we might seriously clarify mathematical logic by modifying (or we might not). A TDT agent in A&#8217;s shoes seems likely to output Con(A) and &#8220;Con(A) implies G&#8221; without outputting G, realizing that although G is true outputting it still isn&#8217;t advisable.</p>
<p>I will discuss this more in posts to come, but I should say that the real problem to me at this point seems to be: if you don&#8217;t have modus ponens, how do you do any reasoning at all?</p>
<p>(Also, let me say in passing that this analysis will carry over quite directly to the case of agents manipulating subjective uncertainties.)</p>
]]></html></oembed>