<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LMF2015/index.php?action=history&amp;feed=atom&amp;title=Tema_2</id>
	<title>Tema 2 - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LMF2015/index.php?action=history&amp;feed=atom&amp;title=Tema_2"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2015/index.php?title=Tema_2&amp;action=history"/>
	<updated>2026-07-19T22:56:44Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2015/index.php?title=Tema_2&amp;diff=354&amp;oldid=prev</id>
		<title>WikiSysop: Texto reemplazado: «isar» por «isabelle»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2015/index.php?title=Tema_2&amp;diff=354&amp;oldid=prev"/>
		<updated>2018-07-16T12:27:12Z</updated>

		<summary type="html">&lt;p&gt;Texto reemplazado: «isar» por «isabelle»&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 12:27 16 jul 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Línea 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;isar&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;isabelle&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;header {* Tema 2: Deducción natural proposicional con Isabelle/HOL *}&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;header {* Tema 2: Deducción natural proposicional con Isabelle/HOL *}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2015/index.php?title=Tema_2&amp;diff=164&amp;oldid=prev</id>
		<title>Jalonso: Página creada con &#039;&lt;source lang=&quot;isar&quot;&gt; header {* Tema 2: Deducción natural proposicional con Isabelle/HOL *}  theory T2 imports Main  begin  text {*   En este tema se presentan los ejemplos del ...&#039;</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2015/index.php?title=Tema_2&amp;diff=164&amp;oldid=prev"/>
		<updated>2015-03-05T07:38:43Z</updated>

		<summary type="html">&lt;p&gt;Página creada con &amp;#039;&amp;lt;source lang=&amp;quot;isar&amp;quot;&amp;gt; header {* Tema 2: Deducción natural proposicional con Isabelle/HOL *}  theory T2 imports Main  begin  text {*   En este tema se presentan los ejemplos del ...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;isar&amp;quot;&amp;gt;&lt;br /&gt;
header {* Tema 2: Deducción natural proposicional con Isabelle/HOL *}&lt;br /&gt;
&lt;br /&gt;
theory T2&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  En este tema se presentan los ejemplos del tema de deducción natural&lt;br /&gt;
  proposicional siguiendo la presentación de Huth y Ryan en su libro&lt;br /&gt;
  &amp;quot;Logic in Computer Science&amp;quot; http://goo.gl/qsVpY y, más concretamente,&lt;br /&gt;
  a la forma como se explica en la asignatura.&lt;br /&gt;
 &lt;br /&gt;
  La página al lado de cada ejemplo indica la página de las transparencias &lt;br /&gt;
  donde se encuentra la demostración. *}&lt;br /&gt;
&lt;br /&gt;
subsection {* Reglas de la conjunción *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 1 (p. 4). Demostrar que&lt;br /&gt;
     p ∧ q, r ⊢ q ∧ r.&lt;br /&gt;
  *}     &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_1_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∧ q&amp;quot; and&lt;br /&gt;
          2: &amp;quot;r&amp;quot; &lt;br /&gt;
  shows &amp;quot;q ∧ r&amp;quot;     &lt;br /&gt;
proof -&lt;br /&gt;
  have 3: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  show 4: &amp;quot;q ∧ r&amp;quot; using 3 2 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
thm ejemplo_1_1&lt;br /&gt;
text {*&lt;br /&gt;
  Notas sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;assumes&amp;quot; para indicar las hipótesis,&lt;br /&gt;
  · &amp;quot;and&amp;quot; para separar las hipótesis,&lt;br /&gt;
  · &amp;quot;shows&amp;quot; para indicar la conclusión,&lt;br /&gt;
  · &amp;quot;proof&amp;quot; para iniciar la prueba,&lt;br /&gt;
  · &amp;quot;qed&amp;quot; para terminar la pruebas,&lt;br /&gt;
  · &amp;quot;-&amp;quot; (después de &amp;quot;proof&amp;quot;) para no usar el método por defecto,&lt;br /&gt;
  · &amp;quot;have&amp;quot; para establecer un paso,&lt;br /&gt;
  · &amp;quot;using&amp;quot; para usar hechos en un paso,&lt;br /&gt;
  · &amp;quot;by (rule ..)&amp;quot; para indicar la regla con la que se peueba un hecho,&lt;br /&gt;
  · &amp;quot;show&amp;quot; para establecer la conclusión.&lt;br /&gt;
&lt;br /&gt;
  Notas sobre la lógica: Las reglas de la conjunción son&lt;br /&gt;
  · conjI:      ⟦P; Q⟧ ⟹ P ∧ Q&lt;br /&gt;
  · conjunct1:  P ∧ Q ⟹ P&lt;br /&gt;
  · conjunct2:  P ∧ Q ⟹ Q  &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* Se pueden dejar implícitas las reglas como sigue *}&lt;br /&gt;
&lt;br /&gt;
lemma ejemplo_1_2:&lt;br /&gt;
  assumes 1: &amp;quot;p ∧ q&amp;quot; and &lt;br /&gt;
          2: &amp;quot;r&amp;quot; &lt;br /&gt;
  shows &amp;quot;q ∧ r&amp;quot;     &lt;br /&gt;
proof -&lt;br /&gt;
  have 3: &amp;quot;q&amp;quot; using 1 .. &lt;br /&gt;
  show 4: &amp;quot;q ∧ r&amp;quot; using 3 2 ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;..&amp;quot; para indicar que se prueba por la regla correspondiente. *}&lt;br /&gt;
&lt;br /&gt;
text {* Se pueden eliminar las etiquetas como sigue *}&lt;br /&gt;
&lt;br /&gt;
lemma ejemplo_1_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
          &amp;quot;r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q ∧ r&amp;quot;     &lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;q&amp;quot; using assms(1) ..&lt;br /&gt;
  thus &amp;quot;q ∧ r&amp;quot; using assms(2) ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;assms(n)&amp;quot; para indicar la hipótesis n y&lt;br /&gt;
  · &amp;quot;thus&amp;quot; para demostrar la conclusión usando el hecho anterior.&lt;br /&gt;
  Además, no es necesario usar and entre las hipótesis. *}&lt;br /&gt;
&lt;br /&gt;
text {* Se puede automatizar la demostración como sigue *}&lt;br /&gt;
  &lt;br /&gt;
lemma ejemplo_1_4:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
          &amp;quot;r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q ∧ r&amp;quot;     &lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;assms&amp;quot; para indicar las hipótesis y&lt;br /&gt;
  · &amp;quot;by auto&amp;quot; para demostrar la conclusión automáticamente. *}&lt;br /&gt;
&lt;br /&gt;
text {* Se puede automatizar totalmente la demostración como sigue *}&lt;br /&gt;
&lt;br /&gt;
lemma ejemplo_1_5:&lt;br /&gt;
  &amp;quot;⟦p ∧ q; r⟧ ⟹ q ∧ r&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;⟦ ... ⟧&amp;quot; para representar las hipótesis,&lt;br /&gt;
  · &amp;quot;;&amp;quot; para separar las hipótesis y&lt;br /&gt;
  · &amp;quot;⟹&amp;quot; para separar las hipótesis de la conclusión. *}&lt;br /&gt;
&lt;br /&gt;
text {* Se puede hacer la demostración por razonamiento hacia atrás,&lt;br /&gt;
  como sigue *}&lt;br /&gt;
&lt;br /&gt;
lemma ejemplo_1_6:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
      and &amp;quot;r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q ∧ r&amp;quot;     &lt;br /&gt;
proof (rule conjI)&lt;br /&gt;
  show &amp;quot;q&amp;quot; using assms(1) by (rule conjunct2)&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;r&amp;quot; using assms(2) by this&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;proof (rule r)&amp;quot; para indicar que se hará la demostración con la&lt;br /&gt;
    regla r,&lt;br /&gt;
  · &amp;quot;next&amp;quot; para indicar el comienzo de la prueba del siguiente&lt;br /&gt;
    subobjetivo,&lt;br /&gt;
  · &amp;quot;this&amp;quot; para indicar el hecho actual. *}&lt;br /&gt;
&lt;br /&gt;
text {* Se pueden dejar implícitas las reglas como sigue *}&lt;br /&gt;
&lt;br /&gt;
lemma ejemplo_1_7:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
          &amp;quot;r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q ∧ r&amp;quot;     &lt;br /&gt;
proof &lt;br /&gt;
  show &amp;quot;q&amp;quot; using assms(1) ..&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;r&amp;quot; using assms(2) . &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;.&amp;quot; para indicar por el hecho actual. *}&lt;br /&gt;
&lt;br /&gt;
subsection {* Reglas de la doble negación *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  La regla de eliminación de la doble negación es&lt;br /&gt;
  · notnotD: ¬¬ P ⟹ P&lt;br /&gt;
&lt;br /&gt;
  Para ajustarnos al tema de LI vamos a introducir la siguiente regla de&lt;br /&gt;
  introducción de la doble negación&lt;br /&gt;
  · notnotI: P ⟹ ¬¬ P&lt;br /&gt;
  aunque, de momento, no detallamos su demostración.&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma notnotI [intro!]: &amp;quot;P ⟹ ¬¬ P&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Ejemplo 2. (p. 5)&lt;br /&gt;
       p, ¬¬(q ∧ r) ⊢ ¬¬p ∧ r&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_2_1:&lt;br /&gt;
  assumes 1: &amp;quot;p&amp;quot; and&lt;br /&gt;
          2: &amp;quot;¬¬(q ∧ r)&amp;quot; &lt;br /&gt;
  shows      &amp;quot;¬¬p ∧ r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 3: &amp;quot;¬¬p&amp;quot; using 1 by (rule notnotI)&lt;br /&gt;
  have 4: &amp;quot;q ∧ r&amp;quot; using 2 by (rule notnotD)&lt;br /&gt;
  have 5: &amp;quot;r&amp;quot; using 4 by (rule conjunct2)&lt;br /&gt;
  show 6: &amp;quot;¬¬p ∧ r&amp;quot; using 3 5 by (rule conjI)&lt;br /&gt;
qed        &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_2_2:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot; &lt;br /&gt;
          &amp;quot;¬¬(q ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬¬p ∧ r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have  &amp;quot;¬¬p&amp;quot; using assms(1) ..&lt;br /&gt;
  have  &amp;quot;q ∧ r&amp;quot; using assms(2) by (rule notnotD)&lt;br /&gt;
  hence &amp;quot;r&amp;quot; ..&lt;br /&gt;
  with `¬¬p` show  &amp;quot;¬¬p ∧ r&amp;quot; ..&lt;br /&gt;
qed        &lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;hence&amp;quot; para indicar que se tiene por el hecho anterior,&lt;br /&gt;
  · `...` para referenciar un hecho y&lt;br /&gt;
  · &amp;quot;with P show Q&amp;quot; para indicar que con el hecho anterior junto con el&lt;br /&gt;
    hecho P se demuestra Q. *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_2_3:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot; &lt;br /&gt;
          &amp;quot;¬¬(q ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬¬p ∧ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* Se puede demostrar hacia atrás *}&lt;br /&gt;
&lt;br /&gt;
lemma ejemplo_2_4:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot; &lt;br /&gt;
          &amp;quot;¬¬(q ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬¬p ∧ r&amp;quot;&lt;br /&gt;
proof  (rule conjI)&lt;br /&gt;
  show &amp;quot;¬¬p&amp;quot; using assms(1) by (rule notnotI)&lt;br /&gt;
next&lt;br /&gt;
  have &amp;quot;q ∧ r&amp;quot; using assms(2) by (rule notnotD) &lt;br /&gt;
  thus &amp;quot;r&amp;quot; by (rule conjunct2)&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
text {* Se puede eliminar las reglas en la demostración anterior, como&lt;br /&gt;
  sigue: *}&lt;br /&gt;
&lt;br /&gt;
lemma ejemplo_2_5:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot; &lt;br /&gt;
          &amp;quot;¬¬(q ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬¬p ∧ r&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  show &amp;quot;¬¬p&amp;quot; using assms(1) ..&lt;br /&gt;
next&lt;br /&gt;
  have &amp;quot;q ∧ r&amp;quot; using assms(2) by (rule notnotD) &lt;br /&gt;
  thus &amp;quot;r&amp;quot; .. &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
subsection {* Regla de eliminación del condicional *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  La regla de eliminación del condicional es la regla del modus ponens&lt;br /&gt;
  · mp: ⟦P ⟶ Q; P⟧ ⟹ Q &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 3. (p. 6) Demostrar que&lt;br /&gt;
     ¬p ∧ q, ¬p ∧ q ⟶ r ∨ ¬p ⊢ r ∨ ¬p&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_3_1:&lt;br /&gt;
  assumes 1: &amp;quot;¬p ∧ q&amp;quot; and &lt;br /&gt;
          2: &amp;quot;¬p ∧ q ⟶ r ∨ ¬p&amp;quot; &lt;br /&gt;
  shows      &amp;quot;r ∨ ¬p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;r ∨ ¬p&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_3_2:&lt;br /&gt;
  assumes &amp;quot;¬p ∧ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬p ∧ q ⟶ r ∨ ¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;r ∨ ¬p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;r ∨ ¬p&amp;quot; using assms(2,1) ..&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_3_3:&lt;br /&gt;
  assumes &amp;quot;¬p ∧ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬p ∧ q ⟶ r ∨ ¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;r ∨ ¬p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 4 (p. 6) Demostrar que&lt;br /&gt;
     p, p ⟶ q, p ⟶ (q ⟶ r) ⊢ r&lt;br /&gt;
 *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_4_1:&lt;br /&gt;
  assumes 1: &amp;quot;p&amp;quot; and &lt;br /&gt;
          2: &amp;quot;p ⟶ q&amp;quot; and &lt;br /&gt;
          3: &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows &amp;quot;r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
  have 5: &amp;quot;q ⟶ r&amp;quot; using 3 1 by (rule mp)&lt;br /&gt;
  show 6: &amp;quot;r&amp;quot; using 5 4 by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_4_2:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
          &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows &amp;quot;r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;q&amp;quot; using assms(2,1) .. &lt;br /&gt;
  have &amp;quot;q ⟶ r&amp;quot; using assms(3,1) ..&lt;br /&gt;
  thus &amp;quot;r&amp;quot; using `q` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_4_3:&lt;br /&gt;
  &amp;quot;⟦p; p ⟶ q; p ⟶ (q ⟶ r)⟧ ⟹ r&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsection {* Regla derivada del modus tollens *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Para ajustarnos al tema de LI vamos a introducir la regla del modus&lt;br /&gt;
  tollens&lt;br /&gt;
  · mt: ⟦F ⟶ G; ¬G⟧ ⟹ ¬F &lt;br /&gt;
  aunque, de momento, sin detallar su demostración.&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma mt: &amp;quot;⟦F ⟶ G; ¬G⟧ ⟹ ¬F&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Ejemplo 5 (p. 7). Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ r), p, ¬r ⊢ ¬q&lt;br /&gt;
 *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_5_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ (q ⟶ r)&amp;quot; and &lt;br /&gt;
          2: &amp;quot;p&amp;quot; and &lt;br /&gt;
          3: &amp;quot;¬r&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 4: &amp;quot;q ⟶ r&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
  show &amp;quot;¬q&amp;quot; using 4 3 by (rule mt)&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_5_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
          &amp;quot;¬r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;q ⟶ r&amp;quot; using assms(1,2) ..&lt;br /&gt;
  thus &amp;quot;¬q&amp;quot; using assms(3) by (rule mt)&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_5_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
          &amp;quot;¬r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 6. (p. 7) Demostrar &lt;br /&gt;
     ¬p ⟶ q, ¬q ⊢ p&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_6_1:&lt;br /&gt;
  assumes 1: &amp;quot;¬p ⟶ q&amp;quot; and &lt;br /&gt;
          2: &amp;quot;¬q&amp;quot; &lt;br /&gt;
  shows &amp;quot;p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 3: &amp;quot;¬¬p&amp;quot; using 1 2 by (rule mt)&lt;br /&gt;
  show &amp;quot;p&amp;quot; using 3 by (rule notnotD)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_6_2:&lt;br /&gt;
  assumes &amp;quot;¬p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬¬p&amp;quot; using assms(1,2) by (rule mt)&lt;br /&gt;
  thus &amp;quot;p&amp;quot; by (rule notnotD)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_6_3:&lt;br /&gt;
  &amp;quot;⟦¬p ⟶ q; ¬q⟧ ⟹ p&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 7. (p. 7) Demostrar&lt;br /&gt;
     p ⟶ ¬q, q ⊢ ¬p&lt;br /&gt;
  *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_7_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ ¬q&amp;quot; and &lt;br /&gt;
          2: &amp;quot;q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 3: &amp;quot;¬¬q&amp;quot; using 2 by (rule notnotI)&lt;br /&gt;
  show &amp;quot;¬p&amp;quot; using 1 3 by (rule mt)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_7_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ ¬q&amp;quot;&lt;br /&gt;
          &amp;quot;q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬¬q&amp;quot; using assms(2) by (rule notnotI)&lt;br /&gt;
  with assms(1) show &amp;quot;¬p&amp;quot; by (rule mt)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_7_3:&lt;br /&gt;
  &amp;quot;⟦p ⟶ ¬q; q⟧ ⟹ ¬p&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsection {* Regla de introducción del condicional *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  La regla de introducción del condicional es&lt;br /&gt;
  · impI: (P ⟹ Q) ⟹ P ⟶ Q&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 8. (p. 8) Demostrar&lt;br /&gt;
     p ⟶ q ⊢ ¬q ⟶ ¬p&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_8_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  { assume 2: &amp;quot;¬q&amp;quot;&lt;br /&gt;
    have &amp;quot;¬p&amp;quot; using 1 2 by (rule mt) } &lt;br /&gt;
  thus &amp;quot;¬q ⟶ ¬p&amp;quot; by (rule impI)&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;{ ... }&amp;quot; para representar una caja. *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_8_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
  with assms show &amp;quot;¬p&amp;quot; by (rule mt)&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_8_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 9. (p. 9) Demostrar&lt;br /&gt;
     ¬q ⟶ ¬p ⊢ p ⟶ ¬¬q&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_9_1: &lt;br /&gt;
  assumes 1: &amp;quot;¬q ⟶ ¬p&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ⟶ ¬¬q&amp;quot;   &lt;br /&gt;
proof -&lt;br /&gt;
  { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
    have 3: &amp;quot;¬¬p&amp;quot; using 2 by (rule notnotI)&lt;br /&gt;
    have &amp;quot;¬¬q&amp;quot; using 1 3 by (rule mt) } &lt;br /&gt;
  thus &amp;quot;p ⟶ ¬¬q&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_9_2:&lt;br /&gt;
  assumes &amp;quot;¬q ⟶ ¬p&amp;quot; &lt;br /&gt;
  shows    &amp;quot;p ⟶ ¬¬q&amp;quot;   &lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  hence &amp;quot;¬¬p&amp;quot; by (rule notnotI)&lt;br /&gt;
  with assms show &amp;quot;¬¬q&amp;quot; by (rule mt)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_9_3:&lt;br /&gt;
  assumes &amp;quot;¬q ⟶ ¬p&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ⟶ ¬¬q&amp;quot;   &lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 10 (p. 9). Demostrar&lt;br /&gt;
     ⊢ p ⟶ p&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_10_1:&lt;br /&gt;
  &amp;quot;p ⟶ p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  { assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p&amp;quot; using 1 by this }&lt;br /&gt;
  thus &amp;quot;p ⟶ p&amp;quot; by (rule impI) &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_10_2:&lt;br /&gt;
  &amp;quot;p ⟶ p&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_10_3:&lt;br /&gt;
  &amp;quot;p ⟶ p&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Ejemplo 11 (p. 10) Demostrar&lt;br /&gt;
     ⊢ (q ⟶ r) ⟶ ((¬q ⟶ ¬p) ⟶ (p ⟶ r))&lt;br /&gt;
 *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_11_1:&lt;br /&gt;
  &amp;quot;(q ⟶ r) ⟶ ((¬q ⟶ ¬p) ⟶ (p ⟶ r))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  { assume 1: &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
    { assume 2: &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
      { assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
        have 4: &amp;quot;¬¬p&amp;quot; using 3 by (rule notnotI)&lt;br /&gt;
        have 5: &amp;quot;¬¬q&amp;quot; using 2 4 by (rule mt)&lt;br /&gt;
        have 6: &amp;quot;q&amp;quot; using 5 by (rule notnotD)&lt;br /&gt;
        have &amp;quot;r&amp;quot; using 1 6 by (rule mp) } &lt;br /&gt;
      hence &amp;quot;p ⟶ r&amp;quot; by (rule impI) } &lt;br /&gt;
    hence &amp;quot;(¬q ⟶ ¬p) ⟶ p ⟶ r&amp;quot; by (rule impI) } &lt;br /&gt;
  thus &amp;quot;(q ⟶ r) ⟶ ((¬q ⟶ ¬p) ⟶ p ⟶ r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración hacia atrás es&amp;quot;&lt;br /&gt;
lemma ejemplo_11_2:&lt;br /&gt;
  &amp;quot;(q ⟶ r) ⟶ ((¬q ⟶ ¬p) ⟶ (p ⟶ r))&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 1: &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  show &amp;quot;(¬q ⟶ ¬p) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume 2: &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
    show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
    proof (rule impI)&lt;br /&gt;
      assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
      have 4: &amp;quot;¬¬p&amp;quot; using 3 by (rule notnotI)&lt;br /&gt;
      have 5: &amp;quot;¬¬q&amp;quot; using 2 4 by (rule mt)&lt;br /&gt;
      have 6: &amp;quot;q&amp;quot; using 5 by (rule notnotD)&lt;br /&gt;
      show &amp;quot;r&amp;quot; using 1 6 by (rule mp)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración hacia atrás con reglas implícitas es&amp;quot;&lt;br /&gt;
lemma ejemplo_11_3:&lt;br /&gt;
  &amp;quot;(q ⟶ r) ⟶ ((¬q ⟶ ¬p) ⟶ (p ⟶ r))&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume 1: &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  show &amp;quot;(¬q ⟶ ¬p) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume 2: &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
    show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
      have 4: &amp;quot;¬¬p&amp;quot; using 3 ..&lt;br /&gt;
      have 5: &amp;quot;¬¬q&amp;quot; using 2 4 by (rule mt)&lt;br /&gt;
      have 6: &amp;quot;q&amp;quot; using 5 by (rule notnotD)&lt;br /&gt;
      show &amp;quot;r&amp;quot; using 1 6 ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración sin etiquetas es&amp;quot; &lt;br /&gt;
lemma ejemplo_11_4:&lt;br /&gt;
  &amp;quot;(q ⟶ r) ⟶ ((¬q ⟶ ¬p) ⟶ (p ⟶ r))&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  show &amp;quot;(¬q ⟶ ¬p) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
    show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      hence &amp;quot;¬¬p&amp;quot; ..&lt;br /&gt;
      with `¬q ⟶ ¬p` have &amp;quot;¬¬q&amp;quot; by (rule mt)&lt;br /&gt;
      hence &amp;quot;q&amp;quot; by (rule notnotD)&lt;br /&gt;
      with `q ⟶ r` show &amp;quot;r&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_11_5:&lt;br /&gt;
  &amp;quot;(q ⟶ r) ⟶ ((¬q ⟶ ¬p) ⟶ (p ⟶ r))&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsection {* Reglas de la disyunción *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Las reglas de la introducción de la disyunción son&lt;br /&gt;
  · disjI1: P ⟹ P ∨ Q&lt;br /&gt;
  · disjI2: Q ⟹ P ∨ Q&lt;br /&gt;
  La regla de elimación de la disyunción es&lt;br /&gt;
  · disjE:  ⟦P ∨ Q; P ⟹ R; Q ⟹ R⟧ ⟹ R &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 12 (p. 11). Demostrar&lt;br /&gt;
     p ∨ q ⊢ q ∨ p&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_12_1:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;q ∨ p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p ∨ q&amp;quot; using assms by this&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2) }&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 3 by (rule disjI1) }&lt;br /&gt;
  ultimately show &amp;quot;q ∨ p&amp;quot; by (rule disjE) &lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;moreover&amp;quot; para separar los bloques y&lt;br /&gt;
  · &amp;quot;ultimately&amp;quot; para unir los resultados de los bloques. *}&lt;br /&gt;
 &lt;br /&gt;
-- &amp;quot;La demostración detallada con reglas implícitas es&amp;quot;&lt;br /&gt;
lemma ejemplo_12_2:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;q ∨ p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  note `p ∨ q`&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume &amp;quot;p&amp;quot;&lt;br /&gt;
    hence &amp;quot;q ∨ p&amp;quot; .. }&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume &amp;quot;q&amp;quot;&lt;br /&gt;
    hence &amp;quot;q ∨ p&amp;quot; .. }&lt;br /&gt;
  ultimately show &amp;quot;q ∨ p&amp;quot; ..&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Nota sobre el lenguaje: En la demostración anterior se ha usado&lt;br /&gt;
  · &amp;quot;note&amp;quot; para copiar un hecho. *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración hacia atrás es&amp;quot;&lt;br /&gt;
lemma ejemplo_12_3:&lt;br /&gt;
  assumes 1: &amp;quot;p ∨ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;q ∨ p&amp;quot;&lt;br /&gt;
using 1&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2) }&lt;br /&gt;
next&lt;br /&gt;
  { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 3 by (rule disjI1) }&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración hacia atrás con reglas implícitas es&amp;quot;&lt;br /&gt;
lemma ejemplo_12_4:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;q ∨ p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
proof &lt;br /&gt;
  { assume  &amp;quot;p&amp;quot;&lt;br /&gt;
    thus &amp;quot;q ∨ p&amp;quot; .. }&lt;br /&gt;
next&lt;br /&gt;
  { assume &amp;quot;q&amp;quot;&lt;br /&gt;
    thus &amp;quot;q ∨ p&amp;quot; .. }&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_12_5:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;q ∨ p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 13. (p. 12) Demostrar&lt;br /&gt;
     q ⟶ r ⊢ p ∨ q ⟶ p ∨ r&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot; &lt;br /&gt;
lemma ejemplo_13_1:&lt;br /&gt;
  assumes 1: &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  shows &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus &amp;quot;p ∨ r&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    { assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
      show &amp;quot;p ∨ r&amp;quot; using 3 by (rule disjI1) }&lt;br /&gt;
  next&lt;br /&gt;
    { assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
      have 5: &amp;quot;r&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
      show &amp;quot;p ∨ r&amp;quot; using 5 by (rule disjI2) }&lt;br /&gt;
  qed&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot; &lt;br /&gt;
lemma ejemplo_13_2:&lt;br /&gt;
  assumes &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  shows &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus &amp;quot;p ∨ r&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    { assume &amp;quot;p&amp;quot;&lt;br /&gt;
      thus &amp;quot;p ∨ r&amp;quot; .. }&lt;br /&gt;
  next&lt;br /&gt;
    { assume &amp;quot;q&amp;quot;&lt;br /&gt;
      have &amp;quot;r&amp;quot; using assms `q` ..&lt;br /&gt;
      thus &amp;quot;p ∨ r&amp;quot; .. }&lt;br /&gt;
  qed&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot; &lt;br /&gt;
lemma ejemplo_13_3:&lt;br /&gt;
  assumes &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  shows &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsection {* Regla de copia *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 14 (p. 13). Demostrar&lt;br /&gt;
     ⊢ p ⟶ (q ⟶ p)&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_14_1:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q ⟶ p&amp;quot; &lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 1 by this&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_14_2:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  thus &amp;quot;q ⟶ p&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_14_3:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsection {* Reglas de la negación *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  La regla de eliminación de lo falso es&lt;br /&gt;
  · FalseE: False ⟹ P&lt;br /&gt;
  La regla de eliminación de la negación es&lt;br /&gt;
  · notE: ⟦¬P; P⟧ ⟹ R&lt;br /&gt;
  La regla de introducción de la negación es&lt;br /&gt;
  · notI: (P ⟹ False) ⟹ ¬P&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Ejemplo 15 (p. 15). Demostrar&lt;br /&gt;
     ¬p ∨ q ⊢ p ⟶ q&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_15_1:&lt;br /&gt;
  assumes 1: &amp;quot;¬p ∨ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
  note 1&lt;br /&gt;
  thus &amp;quot;q&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    { assume 3: &amp;quot;¬p&amp;quot;&lt;br /&gt;
      show &amp;quot;q&amp;quot; using 3 2 by (rule notE) }&lt;br /&gt;
  next&lt;br /&gt;
    { assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
      show &amp;quot;q&amp;quot; using 4 by this}&lt;br /&gt;
  qed&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_15_2:&lt;br /&gt;
  assumes &amp;quot;¬p ∨ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  note `¬p ∨ q`&lt;br /&gt;
  thus &amp;quot;q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    { assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
      thus &amp;quot;q&amp;quot; using `p` .. }&lt;br /&gt;
  next&lt;br /&gt;
    { assume &amp;quot;q&amp;quot;&lt;br /&gt;
      thus &amp;quot;q&amp;quot; . }&lt;br /&gt;
  qed&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_15_3:&lt;br /&gt;
  assumes &amp;quot;¬p ∨ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 16 (p. 16). Demostrar&lt;br /&gt;
     p ⟶ q, p ⟶ ¬q ⊢ ¬p&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_16_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ q&amp;quot; and &lt;br /&gt;
          2: &amp;quot;p ⟶ ¬q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬p&amp;quot;    &lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
  have 5: &amp;quot;¬q&amp;quot; using 2 3 by (rule mp)&lt;br /&gt;
  show False using 5 4 by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_16_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;p ⟶ ¬q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬p&amp;quot;    &lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  have &amp;quot;q&amp;quot; using assms(1) `p` ..&lt;br /&gt;
  have &amp;quot;¬q&amp;quot; using assms(2) `p` ..&lt;br /&gt;
  thus False using `q` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_16_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;p ⟶ ¬q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬p&amp;quot;    &lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsection {* Reglas del bicondicional *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  La regla de introducción del bicondicional es&lt;br /&gt;
  · iffI: ⟦P ⟹ Q; Q ⟹ P⟧ ⟹ P ⟷ Q&lt;br /&gt;
  Las reglas de eliminación del bicondicional son&lt;br /&gt;
  · iffD1: ⟦Q ⟷ P; Q⟧ ⟹ P &lt;br /&gt;
  · iffD2: ⟦P ⟷ Q; Q⟧ ⟹ P&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 17 (p. 17) Demostrar&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_17_1:&lt;br /&gt;
  &amp;quot;(p ∧ q) ⟷ (q ∧ p)&amp;quot;&lt;br /&gt;
proof (rule iffI)&lt;br /&gt;
  { assume 1: &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
    have 2: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
    have 3: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
    show &amp;quot;q ∧ p&amp;quot; using 3 2 by (rule conjI) }&lt;br /&gt;
next&lt;br /&gt;
  { assume 4: &amp;quot;q ∧ p&amp;quot;&lt;br /&gt;
    have 5: &amp;quot;q&amp;quot; using 4 by (rule conjunct1)&lt;br /&gt;
    have 6: &amp;quot;p&amp;quot; using 4 by (rule conjunct2)&lt;br /&gt;
    show &amp;quot;p ∧ q&amp;quot; using 6 5 by (rule conjI) }&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_17_2:&lt;br /&gt;
  &amp;quot;(p ∧ q) ⟷ (q ∧ p)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  { assume 1: &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
    have &amp;quot;p&amp;quot; using 1 ..&lt;br /&gt;
    have &amp;quot;q&amp;quot; using 1 ..&lt;br /&gt;
    show &amp;quot;q ∧ p&amp;quot; using `q` `p` .. }&lt;br /&gt;
next&lt;br /&gt;
  { assume 2: &amp;quot;q ∧ p&amp;quot;&lt;br /&gt;
    have &amp;quot;q&amp;quot; using 2 ..&lt;br /&gt;
    have &amp;quot;p&amp;quot; using 2 ..&lt;br /&gt;
    show &amp;quot;p ∧ q&amp;quot; using `p` `q`  .. }&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_17_3:&lt;br /&gt;
  &amp;quot;(p ∧ q) ⟷ (q ∧ p)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Ejemplo 18 (p. 18). Demostrar&lt;br /&gt;
     p ⟷ q, p ∨ q ⊢ p ∧ q&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_18_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟷ q&amp;quot; and &lt;br /&gt;
          2: &amp;quot;p ∨ q&amp;quot;  &lt;br /&gt;
  shows &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
using 2&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  { assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
    have 4: &amp;quot;q&amp;quot; using 1 3 by (rule iffD1)&lt;br /&gt;
    show &amp;quot;p ∧ q&amp;quot; using 3 4 by (rule conjI) }&lt;br /&gt;
next&lt;br /&gt;
  { assume 5: &amp;quot;q&amp;quot;&lt;br /&gt;
    have 6: &amp;quot;p&amp;quot; using 1 5 by (rule iffD2)&lt;br /&gt;
    show &amp;quot;p ∧ q&amp;quot; using 6 5 by (rule conjI) }&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_18_2:&lt;br /&gt;
  assumes &amp;quot;p ⟷ q&amp;quot;&lt;br /&gt;
          &amp;quot;p ∨ q&amp;quot;  &lt;br /&gt;
  shows  &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
using assms(2)&lt;br /&gt;
proof&lt;br /&gt;
  { assume &amp;quot;p&amp;quot;&lt;br /&gt;
    with assms(1) have &amp;quot;q&amp;quot; ..&lt;br /&gt;
    with `p` show &amp;quot;p ∧ q&amp;quot; .. }&lt;br /&gt;
next&lt;br /&gt;
  { assume &amp;quot;q&amp;quot;&lt;br /&gt;
    with assms(1) have &amp;quot;p&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;p ∧ q&amp;quot; using `q` .. }&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_18_3:&lt;br /&gt;
  assumes &amp;quot;p ⟷ q&amp;quot;&lt;br /&gt;
          &amp;quot;p ∨ q&amp;quot;  &lt;br /&gt;
  shows &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsection {* Reglas derivadas *}&lt;br /&gt;
&lt;br /&gt;
subsubsection {* Regla del modus tollens *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 19 (p. 20) Demostrar la regla del modus tollens a partir de&lt;br /&gt;
  las reglas básicas. &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_20_1:&lt;br /&gt;
  assumes 1: &amp;quot;F ⟶ G&amp;quot; and &lt;br /&gt;
          2: &amp;quot;¬G&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬F&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume 3: &amp;quot;F&amp;quot;&lt;br /&gt;
  have 4: &amp;quot;G&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
  show False using 2 4 by (rule notE)&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_20_2:&lt;br /&gt;
  assumes &amp;quot;F ⟶ G&amp;quot;&lt;br /&gt;
          &amp;quot;¬G&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬F&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;F&amp;quot;&lt;br /&gt;
  with assms(1) have &amp;quot;G&amp;quot; ..&lt;br /&gt;
  with assms(2) show False ..&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_20_3:&lt;br /&gt;
  assumes &amp;quot;F ⟶ G&amp;quot;&lt;br /&gt;
          &amp;quot;¬G&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬F&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsubsection {* Regla de la introducción de la doble negación *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Ejemplo 21 (p. 21) Demostrar la regla de introducción de la doble&lt;br /&gt;
  negación a partir de las reglas básicas.&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_21_1:&lt;br /&gt;
  assumes 1: &amp;quot;F&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬¬F&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume 2: &amp;quot;¬F&amp;quot;&lt;br /&gt;
  show False using 2 1 by (rule notE)&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_21_2:&lt;br /&gt;
  assumes &amp;quot;F&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬¬F&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;¬F&amp;quot;&lt;br /&gt;
  thus False using assms ..&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_21_3:&lt;br /&gt;
  assumes &amp;quot;F&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬¬F&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsubsection {* Regla de reducción al absurdo *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  La regla de reducción al absurdo en Isabelle se correponde con la&lt;br /&gt;
  regla clásica de contradicción &lt;br /&gt;
  · ccontr: (¬P ⟹ False) ⟹ P&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
subsubsection {* Ley del tercio excluso *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  La ley del tercio excluso es &lt;br /&gt;
  · excluded_middle: ¬P ∨ P&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Ejemplo 22 (p. 23). Demostrar la ley del tercio excluso a partir de&lt;br /&gt;
  las reglas básicas.  &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_22_1:&lt;br /&gt;
  &amp;quot;F ∨ ¬F&amp;quot;&lt;br /&gt;
proof (rule ccontr)&lt;br /&gt;
  assume 1: &amp;quot;¬(F ∨ ¬F)&amp;quot;&lt;br /&gt;
  thus False&lt;br /&gt;
  proof (rule notE)&lt;br /&gt;
    show &amp;quot;F ∨ ¬F&amp;quot;&lt;br /&gt;
    proof (rule disjI2)&lt;br /&gt;
      show &amp;quot;¬F&amp;quot;&lt;br /&gt;
      proof (rule notI)&lt;br /&gt;
        assume 2: &amp;quot;F&amp;quot;&lt;br /&gt;
        hence 3: &amp;quot;F ∨ ¬F&amp;quot; by (rule disjI1)&lt;br /&gt;
        show False using 1 3 by (rule notE)&lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
    &lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_22_2:&lt;br /&gt;
  &amp;quot;F ∨ ¬F&amp;quot;&lt;br /&gt;
proof (rule ccontr)&lt;br /&gt;
  assume &amp;quot;¬(F ∨ ¬F)&amp;quot;&lt;br /&gt;
  thus False&lt;br /&gt;
  proof (rule notE)&lt;br /&gt;
    show &amp;quot;F ∨ ¬F&amp;quot;&lt;br /&gt;
    proof (rule disjI2)&lt;br /&gt;
      show &amp;quot;¬F&amp;quot;&lt;br /&gt;
      proof (rule notI)&lt;br /&gt;
        assume &amp;quot;F&amp;quot;&lt;br /&gt;
        hence &amp;quot;F ∨ ¬F&amp;quot; ..&lt;br /&gt;
        with `¬(F ∨ ¬F)`show False ..&lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
    &lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_22_3:&lt;br /&gt;
  &amp;quot;F ∨ ¬F&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 23 (p. 24). Demostrar&lt;br /&gt;
     p ⟶ q ⊢ ¬p ∨ q&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_23_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬p ∨ q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;¬p ∨ q&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    { assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
      thus &amp;quot;¬p ∨ q&amp;quot; by (rule disjI1) }&lt;br /&gt;
  next&lt;br /&gt;
    { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
      have &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
      thus &amp;quot;¬p ∨ q&amp;quot; by (rule disjI2) }&lt;br /&gt;
  qed&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_23_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬p ∨ q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬p ∨ p&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;¬p ∨ q&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    { assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
      thus &amp;quot;¬p ∨ q&amp;quot; .. }&lt;br /&gt;
  next&lt;br /&gt;
    { assume &amp;quot;p&amp;quot;&lt;br /&gt;
      with assms have &amp;quot;q&amp;quot; ..&lt;br /&gt;
      thus &amp;quot;¬p ∨ q&amp;quot; .. }&lt;br /&gt;
  qed&lt;br /&gt;
qed    &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_23_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows &amp;quot;¬p ∨ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
subsection {* Demostraciones por contradicción *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 24. Demostrar que &lt;br /&gt;
     ¬p, p ∨ q ⊢ q&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejemplo_24_1:&lt;br /&gt;
  assumes &amp;quot;¬p&amp;quot;&lt;br /&gt;
          &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
using `p ∨ q`&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  with assms(1) show &amp;quot;q&amp;quot; by contradiction &lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  thus &amp;quot;q&amp;quot; by assumption&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_24_2:&lt;br /&gt;
  assumes &amp;quot;¬p&amp;quot;&lt;br /&gt;
          &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  shows &amp;quot;q&amp;quot;&lt;br /&gt;
using `p ∨ q`&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  with assms(1) show &amp;quot;q&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  thus &amp;quot;q&amp;quot; .&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemplo_24_3:&lt;br /&gt;
  assumes &amp;quot;¬p&amp;quot;&lt;br /&gt;
          &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  shows &amp;quot;q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
</feed>