17.06.2014 Views

Notes for the Lifebox, the Seashell, and the Soul - Rudy Rucker

Notes for the Lifebox, the Seashell, and the Soul - Rudy Rucker

Notes for the Lifebox, the Seashell, and the Soul - Rudy Rucker

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Notes</strong> <strong>for</strong> The <strong>Lifebox</strong>, <strong>the</strong> <strong>Seashell</strong>, <strong>and</strong> <strong>the</strong> <strong>Soul</strong>, by <strong>Rudy</strong> <strong>Rucker</strong><br />

In <strong>the</strong> case where a general recursive function does happen to return an output <strong>for</strong><br />

each input, we call it a total recursive function. When I say a computation is recursive in <strong>the</strong><br />

sense of having a solvable halting problem, we really mean that it resembles a total recursive<br />

function ⎯ in <strong>the</strong> sense that, by combining P <strong>and</strong> its halt detector HP, we can create a<br />

computation P* which halts with an output <strong>for</strong> every input. P* acts <strong>the</strong> same as P on P’s<br />

halting inputs, <strong>and</strong> it returns False <strong>for</strong> P’s non-halting inputs. P* uses HP to decide which<br />

case to follow.<br />

The Unsolvable Production Problem<br />

Suppose I have a computation P <strong>and</strong> I’d like to find a way, given an In <strong>and</strong> an Out, to<br />

find out if P(In) ever produces Out. As with <strong>the</strong> halting question, we can’t distinguish <strong>the</strong><br />

two possibilities simply by running P(In) <strong>and</strong> waiting <strong>for</strong> Out to appear.<br />

P(In) produces Out. In this case, we’ll be successful, <strong>and</strong> we know after a finite time<br />

that, yes, Out appears among <strong>the</strong> states produced by P(In).<br />

P(In) doesn’t produce Out. In this case, running P(In) never leads to an answer,<br />

because we’ll never be sure if we’ve waited long enough <strong>for</strong> Out to appear.<br />

The cases where P(In) doesn’t produce Out lead to an unsuccessful search. We’d like<br />

to find a way to short circuit <strong>the</strong> endless wait <strong>for</strong> Out to turn up among <strong>the</strong> states produced by<br />

P(In). That is, we’d like to have an non-production detector computation PFailsToProduce.<br />

Definition. Given a computation P, we say <strong>the</strong> computation PFailsToProduce is a<br />

non-production detector if PFailsToProduce has a special state True, <strong>and</strong> <strong>the</strong> following two<br />

conditions are equivalent<br />

PFailsToProduce (In, Out) produces True<br />

P(In) doesn’t produce Out.<br />

Definition. A computation P has a solvable production problem iff it has a nonproduction<br />

detector. O<strong>the</strong>rwise we say P has an unsolvable production problem.<br />

Turing’s Theorem (Variation 2). If U is a universal computation, <strong>the</strong>n U has an<br />

unsolvable production problem.<br />

Degrees of Unsolvability<br />

It’s convenient to use <strong>the</strong> notion of emulation to compare <strong>the</strong> power of computations.<br />

Definition. Let P <strong>and</strong> Q be computations. If Q can emulate P, we say P has an<br />

emulation degree less than or equal to Q, <strong>and</strong> write P ≤ e Q.<br />

If Q can emulate P <strong>and</strong> P can emulate Q, we say P has <strong>the</strong> same emulation degree as<br />

Q, <strong>and</strong> we write P = e Q.<br />

If Q can emulate P <strong>and</strong> P can’t emulate Q, we say P has a smaller emulation degree<br />

than Q, <strong>and</strong> we write P < e Q.<br />

It’s not hard to prove that having <strong>the</strong> same degree is a transitive relationship; that is,<br />

If P = e Q <strong>and</strong> Q = e R, <strong>the</strong>n P = e R.<br />

This means we can use = e to divide <strong>the</strong> set of all possible computations into<br />

equivalence classes of computations such that all <strong>the</strong> computations in a given class can<br />

emulate each o<strong>the</strong>r.<br />

One can also prove that = e preserves <strong>the</strong> property of having a solvable halting<br />

p. 101

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!