<p><spanclass="sc"><abbrtitle="Too long; don't read">tl;dr</abbr>: </span> I pretend to create a world to give examples of different meanings behind the word <em>undecidability</em>:</p>
<ul>
<li>Undecidability due to measure errors, </li>
<li>Big errors resulting from small initial measure error,</li>
<p>Consider some GPS coordinates on a point around the cost of the “Bretagne” in France.
The coordinates are 3 feet precise.
Is the point in the water or on Earth?</p>
<p>For some coordinates it is not possible to know.
Even if we are authorize to move a bit to dodge the borders.
Because there are some zone in which all point could be a “border” for any size of the zone.</p>
<p>We can even imagine some mathematical structure where <em>all</em> points are at the border<supid="fnref:2"><ahref="#fn:2"rel="footnote">1</a></sup>. </p>
<p>Until there all problem were undecidable because of measure <em>errors</em>.
May be in a controlled world without any <em>error</em> we should be able to predict anything.<br/>
I’m sorry to say no.
Even in a self-contained mathematical world it can be possible to create object with an unpredictable behaviour.</p>
<p>It is the <em>halting problem</em>.</p>
<p>Theorem: It is undecidable given a description of a program, whether the program finishes running or will run forever.
The idea of the proof is simple enough to be part of this article.
And this is with pleasure I give you one here.</p>
<blockquote>
<p>Suppose a program able to decide if any program halt exists.
More precisely:</p>
<p>Hypothesis: there exists a program <code>P</code> such that:</p>
<ul>
<li><code>P(x,y)</code> return “stop” in a finite amount of time if <code>x(y)</code><supid="fnref:1"><ahref="#fn:1"rel="footnote">2</a></sup> will stop running.</li>
<li><code>P(x,y)</code> return “loop” in a finite amount of time if <code>x(y)</code> will never stop running.</li>
</ul>
<p>Remark: Any program can be represented as a string. Therefore, a program can be used as the input of another program.
It is authorized to write <code>P(x,x)</code>.</p>
<p>Let <code>Q</code> be the following program using the return value of <code>P</code>.</p>
<preclass="twilight">
Q(x) :
if P(x,x)="stop" then I enter in an infinite loop
if P(x,x)="loop" then I stop
</pre>
<p>Now, what is the value of <code>P(Q,Q)</code>?</p>
<ul>
<li>if <code>P(Q,Q)</code> returns “stop” that imply by construction of <code>Q</code> that <code>P(Q,Q)</code> returns “loop”.</li>
<li>if <code>P(Q,Q)</code> returns “loop” that means by construction of <code>Q</code> that <code>P(Q,Q)</code> return “stop”.</li>
</ul>
<p>Therefore there is a contradiction the only way to handle is by the non existence of the program <code>P</code>.</p>
</blockquote>
<p>I am the demiurge of this imaginary world.
And I cannot know the future of this world.
Therefore, creative power isn’t equivalent to omnipotence.</p>
</div>
<divclass="corps">
<p>After all this, it becomes difficult to know what we can believe.
But it would be another error to throw away all our knowledge.
In a future next part, I’ll explain what we can hope and what attitude we should have once we’ve realized most of truth are unaccessible.</p>
<hr/><divclass="footnotes">
<ol>
<liid="fn:2">
<p>The set R\Q has this property.<ahref="#fnref:2"rev="footnote">↩</a></p>
</li>
<liid="fn:1">
<p>Meaning <code>x</code> taking <code>y</code> as input.<ahref="#fnref:1"rev="footnote">↩</a></p>