Skip to content

Commit

Permalink
a11y - 5.4.2 changing five H3s to H4s
Browse files Browse the repository at this point in the history
  • Loading branch information
maryfries committed Aug 10, 2024
1 parent 581363e commit 30cb49c
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ <h2>Un problema indecidible</h2>


<h3>Suposición de que existe una función <code>¿detener?</code></h3>
<h3 class="box-head">Realizar la suposición</h3>
<h4 class="box-head">Realizar la suposición</h4>
<p>
<div class="sidenote">No podemos mostrar el código dentro de <code>¿detener?</code>; estamos demostrando que no se puede escribir en absoluto, sin importar qué código lo implemente.</div>
Primero, <em>asumimos</em> que existe una función llamada <code>¿detener?</code> que determina si dado un reportero reportará un valor en un tiempo finito. (Si es así, decimos que el reportero <em>se detiene.</em>) Se necesitan dos entradas: una función y un valor de entrada para esa función. Reporta <code>verdadero</code> si la función reportase un valor cuando se le da esa entrada; y reporta <code>falso</code> si la función se ejecutase para siempre (en un bucle infinito).<br />
Expand All @@ -43,7 +43,7 @@ <h3 class="box-head">Realizar la suposición</h3>
<p class="indent"><img class="inline" src="/bjc-r/img/5-algorithms/halts-reporting-false.es.png" alt="¿detener?(programa con un bucle infinito ())(foo) reporta falso" title="¿detener?(programa con un bucle infinito ())(foo) reporta falso" /> porque <img class="inline" src="/bjc-r/img/5-algorithms/program-with-loop(foo).es.png" alt="programa con un bucle infinito (foo)" title="programa con un bucle infinito (foo)" /> bucles infinitamente.</p>


<h3 class="box-head">Revisión del plan para la prueba</h3>
<h4 class="box-head">Revisión del plan para la prueba</h4>
<p>Usaremos prueba por contradicción para mostrar que la siguiente pregunta <em>no se puede</em> responder<em>en general</em>:</p>
<p class="center"><strong>¿Un determinado programa de computadora, dada una determinada entrada, reportara un resultado en un tiempo finito?</strong></p>
<div class="endnote">
Expand Down Expand Up @@ -87,7 +87,7 @@ <h3 class="box-head">Revisión del plan para la prueba</h3>

<h3>Muestra de cómo esto crea una contradicción</h3>

<h3 class="box-head">Construir un programa para el cual <code>¿detener?</code> no funcionará</h3>
<h4 class="box-head">Construir un programa para el cual <code>¿detener?</code> no funcionará</h4>
<p>
Para demostrar que no puede existir tal función, necesitamos crear una contradicción. Necesitamos demostrar que tiene que haber al menos una función y una entrada a esa función para la cual <code>¿detener?</code> no funciona de la manera que asumimos. Por lo tanto, podemos hacer un bloque <code>prueba</code>, específicamente con el propósito de romper <code>¿detener?</code>:<br />
<div class="sidenoteBig">
Expand All @@ -105,7 +105,7 @@ <h3 class="box-head">Construir un programa para el cual <code>¿detener?</code>
Este <em>es</em> desafiante. ¡Quédate con eso! Estamos <em>creando una contradicción</em> para demostrar que no puede existir la función <code>¿detener?</code> a la que se llama dentro de <code>prueba</code>.
</div>

<h3 class="box-head">Uso de autorreferencia para conducir a la contradicción</h3>
<h4 class="box-head">Uso de autorreferencia para conducir a la contradicción</h4>
<p>
Para hacer que la situación sea <em>exactamente</em> como lo que dijo Betsy ("La declaración que estoy haciendo <em>en este momento</em> es falsa"), llamaremos a <code>prueba</code> dentro de <em>sí mismo</em>:<br />
<img class="indent" src="/bjc-r/img/5-algorithms/testertester.es.png" alt="prueba(prueba())" title="prueba(prueba())" /><br />
Expand All @@ -117,7 +117,7 @@ <h3 class="box-head">Uso de autorreferencia para conducir a la contradicción</h
<p class="indent"><img class="inline" src="/bjc-r/img/5-algorithms/halts-tester-tester-reporting-true.es.png" alt="¿detener? (prueba) (prueba) reporta verdadero" title="¿detener? (prueba) (prueba) reporta verdadero" /> significaría que <img class="inline" src="/bjc-r/img/5-algorithms/testertester.es.png" alt="prueba(prueba())" title="prueba(prueba())" /> devuelve un valor.</p>
<p class="indent"><img class="inline" src="/bjc-r/img/5-algorithms/halts-tester-tester-reporting-false.es.png" alt="¿detener? (prueba) (prueba) reporta falso" title="¿detener? (prueba) (prueba) reporta falso" /> significaría que <img class="inline" src="/bjc-r/img/5-algorithms/testertester.es.png" alt="prueba(prueba())" title="prueba(prueba())" /> bucles infinitamente.</p>

<h3 class="box-head">Entender la contradicción</h3>
<h4 class="box-head">Entender la contradicción</h4>
<p>
Cuando llamamos <img class="inline" src="/bjc-r/img/5-algorithms/testertester.es.png" alt="prueba(prueba())" title="prueba(prueba())" />, nos encontramos con la contradicción. Para ver cómo, mire hacia atrás en la definición de <code>prueba</code>:<br />
<img class="indent" src="/bjc-r/img/5-algorithms/tester-halting.es.png" alt="prueba(reportero){si(¿detener?(reportero)(reportero){por siempre{}}sino{reportar(verdadero)}}" title="prueba(reportero){si(¿detener?(reportero)(reportero){por siempre{}}sino{reportar(verdadero)}}">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ <h2>An Undecidable Problem</h2>


<h3>Assuming That a <code>Halts?</code> Function Exists</h3>
<h3 class="box-head">Making the Assumption</h3>
<h4 class="box-head">Making the Assumption</h4>
<p>
<div class="sidenote">We can't show the code inside <code>halts?</code>; we are proving that it can't be written at all, no matter what code implements it.</div>
First, we <em>assume</em> there exists a function called <code>halts?</code> that determines whether a given reporter will report a value in a finite time. (If so, we say that the reporter <em>halts.</em>) It takes two inputs: a function and an input value for that function. It reports <code>true</code> if the function would report a value when given that input; it reports <code>false</code> if the function would run forever (in an infinite loop).<br />
Expand All @@ -43,7 +43,7 @@ <h3 class="box-head">Making the Assumption</h3>
<p class="indent"><img class="inline" src="/bjc-r/img/5-algorithms/halts-reporting-false.png" alt="halts?(program with an infinite loop ())(foo) reporting false" title="halts?(program with an infinite loop ())(foo) reporting false" /> because <img class="inline" src="/bjc-r/img/5-algorithms/program-with-loop(foo).png" alt="program with an infinite loop (foo)" title="program with an infinite loop (foo)" /> loops infinitely.</p>


<h3 class="box-head">Reviewing the Plan for the Proof</h3>
<h4 class="box-head">Reviewing the Plan for the Proof</h4>
<p>We'll use proof by contradiction to show that the following question <em>can't</em> be answered <em>in general</em>:</p>
<p class="center"><strong>Will a certain computer program, given a certain input, report a result in a finite amount of time?</strong></p>
<div class="endnote">
Expand Down Expand Up @@ -87,7 +87,7 @@ <h3 class="box-head">Reviewing the Plan for the Proof</h3>

<h3>Showing How This Creates a Contradiction</h3>

<h3 class="box-head">Constructing a Program For Which <code>Halts?</code> Won't Work</h3>
<h4 class="box-head">Constructing a Program For Which <code>Halts?</code> Won't Work</h4>
<p>
To prove there can be no such function, we need to create a contradiction. We need to show that there has to be at least one function and one input to that function for which <code>halts?</code> fails to work the way we assumed it does. So, we can make up a block, <code>tester</code>, specifically for the purpose of breaking <code>halts?</code>:<br />
<div class="sidenoteBig">
Expand All @@ -105,7 +105,7 @@ <h3 class="box-head">Constructing a Program For Which <code>Halts?</code> Won't
This <em>is</em> challenging. Stick with it! We are <em>creating a contradiction</em> to prove that the <code>halts?</code> function called inside <code>tester</code> can't exist.
</div>

<h3 class="box-head">Using Self-Reference to Lead to Contradiction</h3>
<h4 class="box-head">Using Self-Reference to Lead to Contradiction</h4>
<p>
To make the situation <em>exactly</em> like what Betsy said ("The statement I'm making <em>right now </em>is false."), we'll call <code>tester</code> on <em>itself</em>:<br />
<img class="indent" src="/bjc-r/img/5-algorithms/testertester.png" alt="tester(tester())" title="tester(tester())" /><br />
Expand All @@ -117,7 +117,7 @@ <h3 class="box-head">Using Self-Reference to Lead to Contradiction</h3>
<p class="indent"><img class="inline" src="/bjc-r/img/5-algorithms/halts-tester-tester-reporting-true.png" alt="halts (tester) (tester) reporting true" title="halts (tester) (tester) reporting true" /> would mean that <img class="inline" src="/bjc-r/img/5-algorithms/testertester.png" alt="tester(tester())" title="tester(tester())" /> returns a value.</p>
<p class="indent"><img class="inline" src="/bjc-r/img/5-algorithms/halts-tester-tester-reporting-false.png" alt="halts (tester) (tester) reporting false" title="halts (tester) (tester) reporting false" /> would mean that <img class="inline" src="/bjc-r/img/5-algorithms/testertester.png" alt="tester(tester())" title="tester(tester())" /> loops infinitely.</p>

<h3 class="box-head">Understanding the Contradiction</h3>
<h4 class="box-head">Understanding the Contradiction</h4>
<p>
When we call <img class="inline" src="/bjc-r/img/5-algorithms/testertester.png" alt="tester(tester())" title="tester(tester())" />, we run into the contradiction. To see how, look back at the <code>tester</code> definition:<br />
<img class="indent" src="/bjc-r/img/5-algorithms/tester-halting.png" alt="tester(reporter){if(halts?(reporter)(reporter){forever{}}else{report(true)}}" title="tester(reporter){if(halts?(reporter)(reporter){forever{}}else{report(true)}}">
Expand Down

0 comments on commit 30cb49c

Please sign in to comment.