# Formulas of arithmetic that behave like decision agents

I wrote this post in the course of working through Vladimir Slepnev's [A model of UDT with a halting oracle](/lw/8wc/a_model_of_udt_with_halting_oracles/). This post contains some of the ideas of Slepnev's post, with all the proofs written out. The main formal difference is that while Slepnev's post is about programs with access to a halting oracle, the "decision agents" in this post are formulas in Peano arithmetic. They are generally uncomputable and do not reason under uncertainty.

These ideas are due to Vladimir Slepnev and Vladimir Nesov. (Please let me know if I should credit anyone else.) I'm pretty sure none of this is original material on my part. It is possible that I have misinterpreted Slepnev's post or introduced errors.

We are going to define a world function ![](http://latex.codecogs.com/gif.latex?U() "U()"), a ![](http://latex.codecogs.com/gif.latex?0 "0")-ary function^[1](#1b)^ that outputs an ordered pair ![](http://latex.codecogs.com/gif.latex?(a,b) \in \mathbb{Q}^2 "(a,b) \in \mathbb{Q}^2") of payoff values. There are functions ![](http://latex.codecogs.com/gif.latex?\pi_i "\pi_i") such that ![](http://latex.codecogs.com/gif.latex?\pi_0(a,b) = a "\pi_0(a,b) = a") and ![](http://latex.codecogs.com/gif.latex?\pi_1(a,b) = b "\pi_1(a,b) = b") for any ![](http://latex.codecogs.com/gif.latex?a,b "a,b"). In fact ![](http://latex.codecogs.com/gif.latex?\pi_i(a,b) "\pi_i(a,b)") is a function in the three variables ![](http://latex.codecogs.com/gif.latex?i, a, "i, a,") and ![](http://latex.codecogs.com/gif.latex?b "b").

We are also going to define an agent function ![](http://latex.codecogs.com/gif.latex?A(x,i) "A(x,i)") that outputs the symbol ![](http://latex.codecogs.com/gif.latex?C "C") or ![](http://latex.codecogs.com/gif.latex?D "D"). The argument ![](http://latex.codecogs.com/gif.latex?x "x") is supposed to be the Gödel number of the world function, and ![](http://latex.codecogs.com/gif.latex?i \in \mathbb{N} "i \in \mathbb{N}") is some sort of indexical information.

We want to define our agent such that

![](http://latex.codecogs.com/gif.latex?A(\ulcorner \chi \urcorner,i) = \left\{ \begin{array}{ll}D & \mbox{if } \vdash A(\ulcorner \chi \urcorner, \underline{i}) = C \mbox{; else}\\C & \mbox{if } \vdash A(\ulcorner \chi \urcorner, \underline{i}) = D \mbox{; else}\\C & \mbox{if } \exists a,b ( \vdash ( A(\ulcorner \chi \urcorner,\underline{i}) = C \to \pi_{\underline{i}}(\chi()) = \underline{a})\\ & \mbox{\quad} \wedge \mbox{\quad} (A(\ulcorner \chi \urcorner,\underline{i}) = D \to \pi_{\underline{i}}(\chi()) = \underline{b} ))\\ & \mbox{\quad} \wedge \mbox{\quad}a > b \mbox{; else}\\ D &\end{array} \right. "A(\ulcorner \chi \urcorner,i) = \left\{ \begin{array}{ll}D & \mbox{if } \vdash A(\ulcorner \chi \urcorner, \underline{i}) = C \mbox{; else}\\C & \mbox{if } \vdash A(\ulcorner \chi \urcorner, \underline{i}) = D \mbox{; else}\\C & \mbox{if } \exists a,b ( \vdash ( A(\ulcorner \chi \urcorner,\underline{i}) = C \to \pi_{\underline{i}}(\chi()) = \underline{a})\\ & \mbox{\quad} \wedge \mbox{\quad} (A(\ulcorner \chi \urcorner,\underline{i}) = D \to \pi_{\underline{i}}(\chi()) = \underline{b} ))\\ & \mbox{\quad} \wedge \mbox{\quad}a > b \mbox{; else}\\ D &\end{array} \right.")

(![](http://latex.codecogs.com/gif.latex?\ulcorner \omega \urcorner "\ulcorner \omega \urcorner") denotes the Gödel number of ![](http://latex.codecogs.com/gif.latex?\omega "\omega"). ![](http://latex.codecogs.com/gif.latex?\vdash \omega "\vdash \omega") means that ![](http://latex.codecogs.com/gif.latex?\omega "\omega") is provable in Peano arithmetic. ![](http://latex.codecogs.com/gif.latex?\underline{i} "\underline{i}") represents the numeral for ![](http://latex.codecogs.com/gif.latex?i "i"). I don't care what value ![](http://latex.codecogs.com/gif.latex?A(x,i) "A(x,i)") has when ![](http://latex.codecogs.com/gif.latex?x "x") isn't the Gödel number of an appropriate ![](http://latex.codecogs.com/gif.latex?0 "0")-ary function.)

There is some circularity in this tentative definition, because a formula standing for ![](http://latex.codecogs.com/gif.latex?A "A") appears in the definition of ![](http://latex.codecogs.com/gif.latex?A "A") itself. We get around this by using diagonalization. We'll describe how this works just this once: First define the function ![](http://latex.codecogs.com/gif.latex?\phi "\phi") as follows:

![](http://latex.codecogs.com/gif.latex?\phi(\ulcorner \chi \urcorner,i,\ulcorner \psi \urcorner) = \left\{ \begin{array}{ll}D & \mbox{if } \vdash \psi(\ulcorner \chi \urcorner, \underline{i}) = C \mbox{; else}\\C & \mbox{if } \vdash \psi(\ulcorner \chi \urcorner, \underline{i}) = D \mbox{; else}\\C & \mbox{if } \exists a,b ( \vdash ( \psi(\ulcorner \chi \urcorner,\underline{i}) = C \to \pi_{\underline{i}}(\chi()) = \underline{a})\\ & \mbox{\quad} \wedge \mbox{\quad} (\psi(\ulcorner \chi \urcorner,\underline{i}) = D \to \pi_{\underline{i}}(\chi()) = \underline{b} ))\\ & \mbox{\quad} \wedge \mbox{\quad}a > b \mbox{; else}\\ D &\end{array} \right. "\phi(\ulcorner \chi \urcorner,i,\ulcorner \psi \urcorner) = \left\{ \begin{array}{ll}D & \mbox{if } \vdash \psi(\ulcorner \chi \urcorner, \underline{i}) = C \mbox{; else}\\C & \mbox{if } \vdash \psi(\ulcorner \chi \urcorner, \underline{i}) = D \mbox{; else}\\C & \mbox{if } \exists a,b ( \vdash ( \psi(\ulcorner \chi \urcorner,\underline{i}) = C \to \pi_{\underline{i}}(\chi()) = \underline{a})\\ & \mbox{\quad} \wedge \mbox{\quad} (\psi(\ulcorner \chi \urcorner,\underline{i}) = D \to \pi_{\underline{i}}(\chi()) = \underline{b} ))\\ & \mbox{\quad} \wedge \mbox{\quad}a > b \mbox{; else}\\ D &\end{array} \right.")

This function can be defined by a formula. Then the diagonal lemma gives us a formula ![](http://latex.codecogs.com/gif.latex?A "A") such that ![](http://latex.codecogs.com/gif.latex?\vdash A(x,i) = \phi(x,i,\ulcorner A \urcorner) "\vdash A(x,i) = \phi(x,i,\ulcorner A \urcorner)").

This is our (somewhat) rational decision agent. If it can prove it will do one thing, it does another; this is what Slepnev calls "playing chicken with the universe". If it can prove that ![](http://latex.codecogs.com/gif.latex?C "C") is an optimal strategy, it chooses ![](http://latex.codecogs.com/gif.latex?C "C"); and otherwise it chooses ![](http://latex.codecogs.com/gif.latex?D "D").

First, a lemma about the causes and consequences of playing chicken:

**Lemma 1.** _For any ![](http://latex.codecogs.com/gif.latex?\chi "\chi"),_

1.  _![](http://latex.codecogs.com/gif.latex?\vdash \operatorname{Prv}( A(\ulcorner \chi \urcorner, \underline{i}) = C) \to \neg \operatorname{Con}(\operatorname{PA}) "\vdash \operatorname{Prv}( A(\ulcorner \chi \urcorner, \underline{i}) = C) \to \neg \operatorname{Con}(\operatorname{PA})")_
2.  _![](http://latex.codecogs.com/gif.latex?\vdash \neg \operatorname{Con}(\operatorname{PA}) \to A(\ulcorner \chi \urcorner, \underline{i}) = D "\vdash \neg \operatorname{Con}(\operatorname{PA}) \to A(\ulcorner \chi \urcorner, \underline{i}) = D")_
3.  _![](http://latex.codecogs.com/gif.latex?\vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i})=D) \to \neg\operatorname{Con}(\operatorname{PA}+\operatorname{Con}(\operatorname{PA})) "\vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i})=D) \to \neg\operatorname{Con}(\operatorname{PA}+\operatorname{Con}(\operatorname{PA}))")_
4.  _![](http://latex.codecogs.com/gif.latex?\vdash \operatorname{Con}(\operatorname{PA}) \wedge \neg\operatorname{Con}(\operatorname{PA}+\operatorname{Con}(\operatorname{PA})) \to A(\ulcorner \chi \urcorner,\underline{i}) = C "\vdash \operatorname{Con}(\operatorname{PA}) \wedge \neg\operatorname{Con}(\operatorname{PA}+\operatorname{Con}(\operatorname{PA})) \to A(\ulcorner \chi \urcorner,\underline{i}) = C")_

(![](http://latex.codecogs.com/gif.latex?\operatorname{Prv} "\operatorname{Prv}") is a binary-valued function such that ![](http://latex.codecogs.com/gif.latex?\operatorname{Prv}(\ulcorner \omega \urcorner) "\operatorname{Prv}(\ulcorner \omega \urcorner)") is true exactly when there is a proof of ![](http://latex.codecogs.com/gif.latex?\omega "\omega") in Peano arithmetic. For brevity we write ![](http://latex.codecogs.com/gif.latex?\operatorname{Prv}(\omega) "\operatorname{Prv}(\omega)") instead. ![](http://latex.codecogs.com/gif.latex?\operatorname{Con}(\operatorname{PA}+\operatorname{Con}(\operatorname{PA})) "\operatorname{Con}(\operatorname{PA}+\operatorname{Con}(\operatorname{PA}))") is the proposition that Peano arithmetic, plus the axiom that Peano arithmetic is consistent, is a consistent theory.)

_Proof._ (1) By definition of ![](http://latex.codecogs.com/gif.latex?A "A"),

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) & \to A(\ulcorner \chi \urcorner,i) = D &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) & \to A(\ulcorner \chi \urcorner,i) = D &\end{align*}")

So

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C)) & \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,i) = D) &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C)) & \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,i) = D) &\end{align*}")  
![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) & \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C)) &\\& \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) &\\& \to \neg \operatorname{Con}(\operatorname{PA}) &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) & \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C)) &\\& \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) &\\& \to \neg \operatorname{Con}(\operatorname{PA}) &\end{align*}")

(2) By the principle of explosion,

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \neg \operatorname{Con}(\operatorname{PA}) & \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) &\\ & \to A(\ulcorner \chi \urcorner,\underline{i}) = D &\end{align*} "\begin{align*}\quad\quad \vdash \neg \operatorname{Con}(\operatorname{PA}) & \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) &\\ & \to A(\ulcorner \chi \urcorner,\underline{i}) = D &\end{align*}")

(3) By the definition of ![](http://latex.codecogs.com/gif.latex?A "A"),

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \neg \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) & \to A(\ulcorner \chi \urcorner,\underline{i}) = C &\end{align*} "\begin{align*}\quad\quad \vdash \neg \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) & \to A(\ulcorner \chi \urcorner,\underline{i}) = C &\end{align*}")  
![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) & \to \biggl( \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) \biggr) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C &\\& \to \neg \operatorname{Con}(\operatorname{PA}) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) & \to \biggl( \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) \biggr) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C &\\& \to \neg \operatorname{Con}(\operatorname{PA}) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C\end{align*}")  
![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D)) & \to \operatorname{Prv} \biggl( \neg\operatorname{Con}(\operatorname{PA}) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C \biggr) &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D)) & \to \operatorname{Prv} \biggl( \neg\operatorname{Con}(\operatorname{PA}) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C \biggr) &\end{align*}")  
![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) & \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) \wedge \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D)) &\\& \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) \wedge \operatorname{Prv} \biggl(\neg \operatorname{Con}(\operatorname{PA}) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C \biggr) &\\& \to \operatorname{Prv} \biggl( A(\ulcorner \chi \urcorner,\underline{i}) = D \wedge \biggl(\neg\operatorname{Con}(\operatorname{PA}) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C \biggr) \biggr) &\\& \to \operatorname{Prv}(\neg\operatorname{Con}(\operatorname{PA})) &\\& \to \neg\operatorname{Con}(PA + \operatorname{Con}(\operatorname{PA})) &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) & \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) \wedge \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D)) &\\& \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) \wedge \operatorname{Prv} \biggl(\neg \operatorname{Con}(\operatorname{PA}) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C \biggr) &\\& \to \operatorname{Prv} \biggl( A(\ulcorner \chi \urcorner,\underline{i}) = D \wedge \biggl(\neg\operatorname{Con}(\operatorname{PA}) \vee A(\ulcorner \chi \urcorner,\underline{i}) = C \biggr) \biggr) &\\& \to \operatorname{Prv}(\neg\operatorname{Con}(\operatorname{PA})) &\\& \to \neg\operatorname{Con}(PA + \operatorname{Con}(\operatorname{PA})) &\end{align*}")

(4)

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \neg\operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) & \to \operatorname{Prv}(\neg\operatorname{Con}(\operatorname{PA})) &\\& \to \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C)) &\\& \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) &\end{align*} "\begin{align*}\quad\quad \vdash \neg\operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) & \to \operatorname{Prv}(\neg\operatorname{Con}(\operatorname{PA})) &\\& \to \operatorname{Prv}(\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C)) &\\& \to \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) &\end{align*}")  
![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Con}(\operatorname{PA}) \wedge \neg\operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) & \to \operatorname{Con}(\operatorname{PA}) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) &\\& \to \neg\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) &\\& \to A(\ulcorner \chi \urcorner,\underline{i}) = C &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Con}(\operatorname{PA}) \wedge \neg\operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) & \to \operatorname{Con}(\operatorname{PA}) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) &\\& \to \neg\operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = C) \wedge \operatorname{Prv}(A(\ulcorner \chi \urcorner,\underline{i}) = D) &\\& \to A(\ulcorner \chi \urcorner,\underline{i}) = C &\end{align*}")

![](http://www.codecogs.com/gif.latex?\square)

If we assume consistency of ![](http://latex.codecogs.com/gif.latex?\operatorname{PA} + \operatorname{Con}(\operatorname{PA}) "\operatorname{PA} + \operatorname{Con}(\operatorname{PA})") (which entails consistency of ![](http://latex.codecogs.com/gif.latex?\operatorname{PA} "\operatorname{PA}")), then parts (1) and (3) of Lemma 1 tell us that for any ![](http://latex.codecogs.com/gif.latex?i "i"), ![](http://latex.codecogs.com/gif.latex?\nvdash A(\ulcorner \chi \urcorner,\underline{i}) = C "\nvdash A(\ulcorner \chi \urcorner,\underline{i}) = C") and ![](http://latex.codecogs.com/gif.latex?\nvdash A(\ulcorner \chi \urcorner,\underline{i}) = D "\nvdash A(\ulcorner \chi \urcorner,\underline{i}) = D"). So the agent never actually plays chicken.

Now let's see how our agent fares on a straightforward decision problem:

**Proposition 2.** _Let ![](http://latex.codecogs.com/gif.latex?\alpha, \beta \in \mathbb{Q}) and s__uppose_

_![](http://latex.codecogs.com/gif.latex?U() = \left\{ \begin{array}{ll}(\alpha, 0) & \mbox{\rm if } A(\ulcorner U \urcorner,0) = C\\ (\beta, 0) & \mbox{\rm if } A(\ulcorner U \urcorner,0) = D\end{array} \right. "U() = \left\{ \begin{array}{ll}(\alpha, 0) & \mbox{\rm if } A(\ulcorner U \urcorner,0) = C\\ (\beta, 0) & \mbox{\rm if } A(\ulcorner U \urcorner,0) = D\end{array} \right.")_

_Assume consistency of ![](http://latex.codecogs.com/gif.latex?\operatorname{PA}+\operatorname{Con}(\operatorname{PA}) "\operatorname{PA}+\operatorname{Con}(\operatorname{PA})"). Then ![](http://latex.codecogs.com/gif.latex?A(\ulcorner U \urcorner,0) = C "A(\ulcorner U \urcorner,0) = C") if and only if ![](http://latex.codecogs.com/gif.latex?\alpha > \beta "\alpha > \beta")._

_Proof._ If we assume consistency of ![](http://latex.codecogs.com/gif.latex?\operatorname{PA} + \operatorname{Con}(\operatorname{PA}) "\operatorname{PA} + \operatorname{Con}(\operatorname{PA})"), then Lemma 1 tells us that the agent doesn't play chicken. So the agent will choose ![](http://latex.codecogs.com/gif.latex?C "C") if and only if it determines that choosing ![](http://latex.codecogs.com/gif.latex?C "C") is optimal.

We have

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \biggl( A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{\alpha} \biggr) \wedge \biggl( A(\ulcorner U \urcorner,0) = D \to \pi_0 U() = \underline{\beta} \biggr) &&\end{align*} "\begin{align*}\quad\quad \vdash \biggl( A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{\alpha} \biggr) \wedge \biggl( A(\ulcorner U \urcorner,0) = D \to \pi_0 U() = \underline{\beta} \biggr) &&\end{align*}")

Suppose ![](http://latex.codecogs.com/gif.latex?\alpha > \beta "\alpha > \beta"). Then clearly

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \exists a,b \vdash \biggl( A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{a} \biggr) \wedge \biggl( A(\ulcorner U \urcorner,0) = D \to \pi_0 U() = \underline{b} \biggr) \wedge a > b &&\end{align*} "\begin{align*}\quad\quad \exists a,b \vdash \biggl( A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{a} \biggr) \wedge \biggl( A(\ulcorner U \urcorner,0) = D \to \pi_0 U() = \underline{b} \biggr) \wedge a > b &&\end{align*}")

So ![](http://latex.codecogs.com/gif.latex?A(\ulcorner U \urcorner,0) = C "A(\ulcorner U \urcorner,0) = C").

As for the converse: We have ![](http://latex.codecogs.com/gif.latex?\vdash (A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{\alpha}) "\vdash (A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{\alpha})"). If also

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash (A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{a}) &&\end{align*} "\begin{align*}\quad\quad \vdash (A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{a}) &&\end{align*}")

and ![](http://latex.codecogs.com/gif.latex?a \neq \alpha "a \neq \alpha"), then ![](http://latex.codecogs.com/gif.latex?\vdash(A(\ulcorner U \urcorner,0) = D) "\vdash(A(\ulcorner U \urcorner,0) = D)"). By Lemma 1(3) and consistency of ![](http://latex.codecogs.com/gif.latex?\operatorname{PA} + \operatorname{Con}(\operatorname{PA}) "\operatorname{PA} + \operatorname{Con}(\operatorname{PA})"), this cannot happen. So

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \nvdash (A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{a}) &&\end{align*} "\begin{align*}\quad\quad \nvdash (A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{a}) &&\end{align*}")

Similarly, we have

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \nvdash (A(\ulcorner U \urcorner,0) = D \to \pi_0 U() = \underline{b}) &&\end{align*} "\begin{align*}\quad\quad \nvdash (A(\ulcorner U \urcorner,0) = D \to \pi_0 U() = \underline{b}) &&\end{align*}")

for all ![](http://latex.codecogs.com/gif.latex?b \neq \beta "b \neq \beta"). So

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \nexists a,b \vdash(A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{a}) \wedge (A(\ulcorner U \urcorner,0) = D \to \pi_0 U() = \underline{b}) \wedge a>b &&\end{align*} "\begin{align*}\quad\quad \nexists a,b \vdash(A(\ulcorner U \urcorner,0) = C \to \pi_0 U() = \underline{a}) \wedge (A(\ulcorner U \urcorner,0) = D \to \pi_0 U() = \underline{b}) \wedge a>b &&\end{align*}")

So the agent doesn't decide that ![](http://latex.codecogs.com/gif.latex?C "C") is optimal, and ![](http://latex.codecogs.com/gif.latex?A(\ulcorner U \urcorner,0) = D "A(\ulcorner U \urcorner,0) = D").

![](http://www.codecogs.com/gif.latex?\square)

Now let's see how ![](http://latex.codecogs.com/gif.latex?A "A") fares on a symmetric Prisoner's Dilemma with itself:

**Proposition 3.** _Let_

_![](http://latex.codecogs.com/gif.latex?U() = \left\{ \begin{array}{ll}(1,1) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=C \wedge A(\ulcorner U \urcorner,1)=C\\ (-1,2) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=C \wedge A(\ulcorner U \urcorner,1)=D\\ (2,-1) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=D \wedge A(\ulcorner U \urcorner,1)=C\\ (0,0) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=D \wedge A(\ulcorner U \urcorner,1)=D\end{array} \right. "U() = \left\{ \begin{array}{ll}(1,1) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=C \wedge A(\ulcorner U \urcorner,1)=C\\ (-1,2) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=C \wedge A(\ulcorner U \urcorner,1)=D\\ (2,-1) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=D \wedge A(\ulcorner U \urcorner,1)=C\\ (0,0) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=D \wedge A(\ulcorner U \urcorner,1)=D\end{array} \right.")_

_Then, assuming consistency of ![](http://latex.codecogs.com/gif.latex?\operatorname{PA} + \operatorname{Con}(\operatorname{PA}) "\operatorname{PA} + \operatorname{Con}(\operatorname{PA})"), we have ![](http://latex.codecogs.com/gif.latex?A(\ulcorner U \urcorner,0) = C = A(\ulcorner U \urcorner,1) "A(\ulcorner U \urcorner,0) = C = A(\ulcorner U \urcorner,1)")._

_Proof._

(This proof uses Löb's theorem, and that makes it confusing. Vladimir Slepnev points out that Löb's theorem is not really necessary here; a [simpler proof](/lw/9o7/formulas_of_arithmetic_that_behave_like_decision/696s) appears in the comments.)

  
![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1) & \to \biggl(\biggl( A(\ulcorner U \urcorner,0)=C \to \pi_0 U() = 1 \biggr) \wedge \biggl( A(\ulcorner U \urcorner,0)=D \to \pi_0 U() = 0 \biggr)\biggr) &\end{align*} "\begin{align*}\quad\quad \vdash A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1) & \to \biggl(\biggl( A(\ulcorner U \urcorner,0)=C \to \pi_0 U() = 1 \biggr) \wedge \biggl( A(\ulcorner U \urcorner,0)=D \to \pi_0 U() = 0 \biggr)\biggr) &\end{align*}")  
![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \exists a,b. \operatorname{Prv}\biggl((A(\ulcorner U \urcorner,0)=C \to \pi_0 U() = \underline{a}) &\\& \quad\quad \wedge (A(\ulcorner U \urcorner,0)=D \to \pi_0 U() = \underline{b})\biggr) \wedge a > b &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \exists a,b. \operatorname{Prv}\biggl((A(\ulcorner U \urcorner,0)=C \to \pi_0 U() = \underline{a}) &\\& \quad\quad \wedge (A(\ulcorner U \urcorner,0)=D \to \pi_0 U() = \underline{b})\biggr) \wedge a > b &\end{align*}")  
Looking at the definition of ![](http://latex.codecogs.com/gif.latex?A "A"), we see that

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \operatorname{Prv}(A(\ulcorner U \urcorner,0)=C) \vee \operatorname{Prv}(A(\ulcorner U \urcorner,0)=D) &\\&\quad\quad \vee A(\ulcorner U \urcorner,0)=C &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \operatorname{Prv}(A(\ulcorner U \urcorner,0)=C) \vee \operatorname{Prv}(A(\ulcorner U \urcorner,0)=D) &\\&\quad\quad \vee A(\ulcorner U \urcorner,0)=C &\end{align*}")  
By Lemma 1, (1) and (3),

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \neg \operatorname{Con}(\operatorname{PA}) \vee \neg \operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) \vee A(\ulcorner U \urcorner,0)=C &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \neg \operatorname{Con}(\operatorname{PA}) \vee \neg \operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) \vee A(\ulcorner U \urcorner,0)=C &\end{align*}")

Similarly,

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \neg \operatorname{Con}(\operatorname{PA}) \vee \neg \operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) \vee A(\ulcorner U \urcorner,1)=C &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \neg \operatorname{Con}(\operatorname{PA}) \vee \neg \operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) \vee A(\ulcorner U \urcorner,1)=C &\end{align*}")

So

![](http://latex.codecogs.com/gif.latex?\begin{align*} \label{ast}(*)\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \neg \operatorname{Con}(\operatorname{PA}) \vee \biggl(\operatorname{Con}(\operatorname{PA}) \wedge \neg \operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) \biggr) &\\&\quad\quad \vee A(\ulcorner U \urcorner,0)=C=A(\ulcorner U \urcorner,1) &\end{align*} "\begin{align*} \label{ast}(*)\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to \neg \operatorname{Con}(\operatorname{PA}) \vee \biggl(\operatorname{Con}(\operatorname{PA}) \wedge \neg \operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) \biggr) &\\&\quad\quad \vee A(\ulcorner U \urcorner,0)=C=A(\ulcorner U \urcorner,1) &\end{align*}")

Applying Lemma 1(2) and (4),

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to A(\ulcorner U \urcorner,0) = D = A(\ulcorner U \urcorner,1) &\\&\quad\quad \vee A(\ulcorner U \urcorner,0) = C = A(\ulcorner U \urcorner,1) &\\&\quad\quad \vee A(\ulcorner U \urcorner,0)=C=A(\ulcorner U \urcorner,1) &\\& \to A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1) &\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) & \to A(\ulcorner U \urcorner,0) = D = A(\ulcorner U \urcorner,1) &\\&\quad\quad \vee A(\ulcorner U \urcorner,0) = C = A(\ulcorner U \urcorner,1) &\\&\quad\quad \vee A(\ulcorner U \urcorner,0)=C=A(\ulcorner U \urcorner,1) &\\& \to A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1) &\end{align*}")

By Löb's theorem,

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1) &&\end{align*} "\begin{align*}\quad\quad \vdash A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1) &&\end{align*}")  
![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) &&\end{align*} "\begin{align*}\quad\quad \vdash \operatorname{Prv}(A(\ulcorner U \urcorner,0) = A(\ulcorner U \urcorner,1)) &&\end{align*}")

By ![](http://latex.codecogs.com/gif.latex?(*) "(*)"), we have

![](http://latex.codecogs.com/gif.latex?\begin{align*}\quad\quad \vdash \neg \operatorname{Con}(\operatorname{PA}) \vee \biggl(\operatorname{Con}(\operatorname{PA}) \wedge \neg \operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) \biggr) \vee A(\ulcorner U \urcorner,0)=C=A(\ulcorner U \urcorner,1) &&\end{align*} "\begin{align*}\quad\quad \vdash \neg \operatorname{Con}(\operatorname{PA}) \vee \biggl(\operatorname{Con}(\operatorname{PA}) \wedge \neg \operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) \biggr) \vee A(\ulcorner U \urcorner,0)=C=A(\ulcorner U \urcorner,1) &&\end{align*}")

So, assuming ![](http://latex.codecogs.com/gif.latex?\operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA})) "\operatorname{Con}(\operatorname{PA} + \operatorname{Con}(\operatorname{PA}))"), we conclude that ![](http://latex.codecogs.com/gif.latex?A(\ulcorner U \urcorner,0)=C=A(\ulcorner U \urcorner,1) "A(\ulcorner U \urcorner,0)=C=A(\ulcorner U \urcorner,1)").

![](http://www.codecogs.com/gif.latex?\square)

The definition of ![](http://latex.codecogs.com/gif.latex?A "A") treats the choices ![](http://latex.codecogs.com/gif.latex?C "C") and ![](http://latex.codecogs.com/gif.latex?D "D") differently; so it is worth checking that ![](http://latex.codecogs.com/gif.latex?A "A") behaves correctly in the Prisoner's Dilemma when the effects of ![](http://latex.codecogs.com/gif.latex?C "C") and ![](http://latex.codecogs.com/gif.latex?D "D") are switched:

**Proposition 4.** _Let_

_![](http://latex.codecogs.com/gif.latex?U() = \left\{ \begin{array}{ll}(0,0) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=C \wedge A(\ulcorner U \urcorner,1)=C\\ (2,-1) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=C \wedge A(\ulcorner U \urcorner,1)=D\\ (-1,2) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=D \wedge A(\ulcorner U \urcorner,1)=C\\ (1,1) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=D \wedge A(\ulcorner U \urcorner,1)=D\end{array} \right. "U() = \left\{ \begin{array}{ll}(0,0) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=C \wedge A(\ulcorner U \urcorner,1)=C\\ (2,-1) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=C \wedge A(\ulcorner U \urcorner,1)=D\\ (-1,2) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=D \wedge A(\ulcorner U \urcorner,1)=C\\ (1,1) & \mbox{\rm if } A(\ulcorner U \urcorner,0)=D \wedge A(\ulcorner U \urcorner,1)=D\end{array} \right.")_

_Then, assuming consistency of ![](http://latex.codecogs.com/gif.latex?\operatorname{PA} + \operatorname{Con}(\operatorname{PA}) "\operatorname{PA} + \operatorname{Con}(\operatorname{PA})"), we have ![](http://latex.codecogs.com/gif.latex?A(\ulcorner U \urcorner,0) = D = A(\ulcorner U \urcorner,1) "A(\ulcorner U \urcorner,0) = D = A(\ulcorner U \urcorner,1)")._

A [proof](/lw/9o7/formulas_of_arithmetic_that_behave_like_decision/696t) appears in the comments.

There are a number of questions one can explore with this formalism: What is the correct generalization of ![](http://latex.codecogs.com/gif.latex?A "A") that can choose between ![](http://latex.codecogs.com/gif.latex?n "n") actions, and not just two? How about infinitely many actions? What about [theories other than Peano arithmetic](/lw/8wc/a_model_of_udt_with_halting_oracles/)? How do we accomodate payoffs that are [real numbers](/r/discussion/lw/9mq/rational_vs_real_utilities_in_the_cousin_itnesov/)? How do we make agents that can reason under uncertainty? How do we make [agents](/lw/2l2/what_a_reduction_of_could_could_look_like/) that are [computable algorithms](/lw/2ip/ai_cooperation_in_practice/) rather than arithmetic formulas? How does ![](http://latex.codecogs.com/gif.latex?A "A") fare on a Prisoner's Dilemma with [asymmetric payoff matrix](/r/discussion/lw/8wc/a_model_of_udt_with_a_halting_oracle/5nnq)? In a two-person game where the payoff to player ![](http://latex.codecogs.com/gif.latex?A_0 "A_0") is independent of the behavior of ![](http://latex.codecogs.com/gif.latex?A_1 "A_1"), can ![](http://latex.codecogs.com/gif.latex?A_1 "A_1") deduce the behavior of ![](http://latex.codecogs.com/gif.latex?A_0 "A_0")? What happens when we replace the third line of the definition of ![](http://latex.codecogs.com/gif.latex?A "A") with

![\begin{align*} \quad\quad \vdash \exists a,b & (A(\ulcorner U\urcorner,\underline{i})=C \to \pi_{\underline{i}} U() = a) \\& \wedge ( A(\ulcorner U \urcorner,\underline{i})=D \to \pi_{\underline{i}} U() = b) \\& \wedge a > b \end{align*}](http://latex.codecogs.com/gif.latex?\begin{align*} \quad\quad \vdash \exists a,b & (A(\ulcorner U\urcorner,\underline{i})=C \to \pi_{\underline{i}} U() = a) \\& \wedge ( A(\ulcorner U \urcorner,\underline{i})=D \to \pi_{\underline{i}} U() = b) \\& \wedge a > b \end{align*})

? What is a (good) definition of "decision problem"? Is there a theorem that says that our agent ![](http://latex.codecogs.com/gif.latex?A "A") is, in a certain sense, optimal?

^[1](#1a)^Every ![](http://latex.codecogs.com/gif.latex?k "k")-ary function ![](http://latex.codecogs.com/gif.latex?U "U") in this article is defined by a formula ![](http://latex.codecogs.com/gif.latex?\phi(x_1, \dots, x_k, y) "\phi(x_1, \dots, x_k, y)") with ![](http://latex.codecogs.com/gif.latex?k+1 "k+1") free variables such that ![](http://latex.codecogs.com/gif.latex?\vdash \exists y. \phi(x_1, \dots, x_k, y) "\vdash \exists y. \phi(x_1, \dots, x_k, y)") and ![](http://latex.codecogs.com/gif.latex?\vdash \phi(x_1, \dots, x_k, y) \wedge \phi(x_1, \dots, x_k, y') \to y = y' "\vdash \phi(x_1, \dots, x_k, y) \wedge \phi(x_1, \dots, x_k, y') \to y = y'"). By a standard abuse of notation, when the name of a function like ![](http://latex.codecogs.com/gif.latex?U "U") appears in a formula of arithmetic, what we really mean is the formula ![](http://latex.codecogs.com/gif.latex?\phi "\phi") that defines it.