<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/DAO/index.php?action=history&amp;feed=atom&amp;title=GLC_T2</id>
	<title>GLC T2 - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/DAO/index.php?action=history&amp;feed=atom&amp;title=GLC_T2"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2&amp;action=history"/>
	<updated>2026-09-20T01:12:56Z</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/DAO/index.php?title=GLC_T2&amp;diff=67&amp;oldid=prev</id>
		<title>Jalonso en 06:34 16 mar 2013</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2&amp;diff=67&amp;oldid=prev"/>
		<updated>2013-03-16T06:34:29Z</updated>

		<summary type="html">&lt;p&gt;&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 06:34 16 mar 2013&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;&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;&amp;lt;source lang=&amp;quot;isar&amp;quot;&amp;gt;&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;&amp;lt;source lang=&amp;quot;isar&amp;quot;&amp;gt;&lt;/div&gt;&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;header {* Tema &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;4&lt;/del&gt;: Deducción natural en lógica de primer orden *}&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;header {* Tema &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;2&lt;/ins&gt;: Deducción natural en lógica de primer orden *}&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;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;theory &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;T4&lt;/del&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;theory &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;T2&lt;/ins&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;imports Main &amp;#160;&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;imports Main &amp;#160;&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;begin&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;begin&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2&amp;diff=66&amp;oldid=prev</id>
		<title>Jalonso: Página creada con &#039;&lt;source lang=&quot;isar&quot;&gt; header {* Tema 4: Deducción natural en lógica de primer orden *}  theory T4 imports Main  begin  text {*   El objetivo de este tema es presentar la deducc...&#039;</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2&amp;diff=66&amp;oldid=prev"/>
		<updated>2013-03-16T06:34:15Z</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 4: Deducción natural en lógica de primer orden *}  theory T4 imports Main  begin  text {*   El objetivo de este tema es presentar la deducc...&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 4: Deducción natural en lógica de primer orden *}&lt;br /&gt;
&lt;br /&gt;
theory T4&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  El objetivo de este tema es presentar la deducción natural en &lt;br /&gt;
  lógica de primer orden con Isabelle/HOL. La presentación se &lt;br /&gt;
  basa en los ejemplos de tema 2 del curso LMF que se encuentra &lt;br /&gt;
  en http://goo.gl/uJj8d (que a su vez se basa en el libro de &lt;br /&gt;
  Huth y Ryan &amp;quot;Logic in Computer Science&amp;quot; http://goo.gl/qsVpY ). &lt;br /&gt;
&lt;br /&gt;
  La página al lado de cada ejemplo indica la página de las &lt;br /&gt;
  transparencias de LMF donde se encuentra la demostración. *}&lt;br /&gt;
&lt;br /&gt;
section {* Reglas del cuantificador universal *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Las reglas del cuantificador universal son&lt;br /&gt;
  · allE:    ⟦∀x. P x; P a ⟹ R⟧ ⟹ R&lt;br /&gt;
  · allI:    (⋀x. P x) ⟹ ∀x. P x&lt;br /&gt;
  *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 1 (p. 10). Demostrar que&lt;br /&gt;
     P(c), ∀x. (P(x) ⟶ ¬Q(x)) ⊢ ¬Q(c)&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(c)&amp;quot; and&lt;br /&gt;
          2: &amp;quot;∀x. (P(x) ⟶ ¬Q(x))&amp;quot;&lt;br /&gt;
  shows &amp;quot;¬Q(c)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 3: &amp;quot;P(c) ⟶ ¬Q(c)&amp;quot; using 2 by (rule allE)&lt;br /&gt;
  show 4: &amp;quot;¬Q(c)&amp;quot; using 3 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_1_2: &lt;br /&gt;
  assumes &amp;quot;P(c)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. (P(x) ⟶ ¬Q(x))&amp;quot;&lt;br /&gt;
  shows &amp;quot;¬Q(c)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;P(c) ⟶ ¬Q(c)&amp;quot; using assms(2) ..&lt;br /&gt;
  thus &amp;quot;¬Q(c)&amp;quot; using assms(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_1_3: &lt;br /&gt;
  assumes &amp;quot;P(c)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. (P(x) ⟶ ¬Q(x))&amp;quot;&lt;br /&gt;
  shows &amp;quot;¬Q(c)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 2 (p. 11). Demostrar que&lt;br /&gt;
     ∀x. (P x ⟶ ¬(Q x)), ∀x. P x ⊢ ∀x. ¬(Q x)&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;∀x. (P x ⟶ ¬(Q x))&amp;quot; and&lt;br /&gt;
          2: &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∀x. ¬(Q x)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  { fix a&lt;br /&gt;
    have 3: &amp;quot;P a ⟶ ¬(Q a)&amp;quot; using 1 by (rule allE)&lt;br /&gt;
    have 4: &amp;quot;P a&amp;quot; using 2 by (rule allE)&lt;br /&gt;
    have 5: &amp;quot;¬(Q a)&amp;quot; using 3 4 by (rule mp) }&lt;br /&gt;
  thus &amp;quot;∀x. ¬(Q x)&amp;quot; by (rule allI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada hacia atrás es&amp;quot;&lt;br /&gt;
lemma ejemplo_2_2: &lt;br /&gt;
  assumes 1: &amp;quot;∀x. (P x ⟶ ¬(Q x))&amp;quot; and&lt;br /&gt;
          2: &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∀x. ¬(Q x)&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix a&lt;br /&gt;
  have 3: &amp;quot;P a ⟶ ¬(Q a)&amp;quot; using 1 by (rule allE)&lt;br /&gt;
  have 4: &amp;quot;P a&amp;quot; using 2 by (rule allE)&lt;br /&gt;
  show 5: &amp;quot;¬(Q a)&amp;quot; using 3 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_2_3: &lt;br /&gt;
  assumes &amp;quot;∀x. (P x ⟶ ¬(Q x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∀x. ¬(Q x)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  fix a&lt;br /&gt;
  have &amp;quot;P a&amp;quot; using assms(2) ..&lt;br /&gt;
  have &amp;quot;P a ⟶ ¬(Q a)&amp;quot; using assms(1) ..&lt;br /&gt;
  thus &amp;quot;¬(Q a)&amp;quot; using `P a` ..&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_2_4: &lt;br /&gt;
  assumes &amp;quot;∀x. (P x ⟶ ¬(Q x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∀x. ¬(Q x)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
section {* Reglas del cuantificador existencial *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Las reglas del cuantificador existencial son&lt;br /&gt;
  · exI:     P a ⟹ ∃x. P x&lt;br /&gt;
  · exE:     ⟦∃x. P x; ⋀x. P x ⟹ Q⟧ ⟹ Q&lt;br /&gt;
&lt;br /&gt;
  En la regla exE la nueva variable se introduce mediante la declaración &lt;br /&gt;
  &amp;quot;obtain ... where ... by (rule exE)&amp;quot; &lt;br /&gt;
  *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo  (p. 12). Demostrar que&lt;br /&gt;
     ∀x. P x ⊢ ∃x. P x&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 &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  fix a&lt;br /&gt;
  have &amp;quot;P a&amp;quot; using assms by (rule allE)&lt;br /&gt;
  thus &amp;quot;∃x. P x&amp;quot; by (rule exI)&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;∀x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  fix a&lt;br /&gt;
  have &amp;quot;P a&amp;quot; using assms ..&lt;br /&gt;
  thus &amp;quot;∃x. P x&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada se puede simplificar&amp;quot;&lt;br /&gt;
lemma ejemplo_3_3:&lt;br /&gt;
  assumes &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
proof (rule exI)&lt;br /&gt;
  fix a&lt;br /&gt;
  show &amp;quot;P a&amp;quot; using assms ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada se puede simplificar aún más&amp;quot;&lt;br /&gt;
lemma ejemplo_3_4:&lt;br /&gt;
  assumes &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  fix a&lt;br /&gt;
  show &amp;quot;P a&amp;quot; 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_3_5:&lt;br /&gt;
  assumes &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. P x&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. 13). Demostrar&lt;br /&gt;
     ∀x. (P x ⟶ Q x), ∃x. P x ⊢ ∃x. Q x&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;∀x. (P x ⟶ Q x)&amp;quot; and&lt;br /&gt;
          2: &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. Q x&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where 3: &amp;quot;P a&amp;quot; using 2 by (rule exE)&lt;br /&gt;
  have 4: &amp;quot;P a ⟶ Q a&amp;quot; using 1 by (rule allE)&lt;br /&gt;
  have 5: &amp;quot;Q a&amp;quot; using 4 3 by (rule mp)&lt;br /&gt;
  thus 6: &amp;quot;∃x. Q x&amp;quot; by (rule exI)&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;∀x. (P x ⟶ Q x)&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. Q x&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;P a&amp;quot; using assms(2) ..&lt;br /&gt;
  have &amp;quot;P a ⟶ Q a&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;Q a&amp;quot; using `P a` ..&lt;br /&gt;
  thus &amp;quot;∃x. Q x&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_4_3:&lt;br /&gt;
  assumes &amp;quot;∀x. (P x ⟶ Q x)&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. Q x&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
section {* Reglas de la igualdad *}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Las reglas básicas de la igualdad son:&lt;br /&gt;
  · refl:  t = t&lt;br /&gt;
  · subst: ⟦s = t; P s⟧ ⟹ P t&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 5 (p. 27). Demostrar&lt;br /&gt;
     x+1 = 1+x, x+1 &amp;gt; 1 ⟶ x+1 &amp;gt; 0 ⊢ 1+x &amp;gt; 1 ⟶ 1+x &amp;gt; 0&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 &amp;quot;x+1 = 1+x&amp;quot; &lt;br /&gt;
          &amp;quot;x+1 &amp;gt; 1 ⟶ x+1 &amp;gt; 0&amp;quot;&lt;br /&gt;
  shows   &amp;quot;1+x &amp;gt; 1 ⟶ 1+x &amp;gt; 0&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;1+x &amp;gt; 1 ⟶ 1+x &amp;gt; 0&amp;quot; using assms by (rule subst)&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;
  &amp;quot;⟦x+1 = 1+x; x+1 &amp;gt; 1 ⟶ x+1 &amp;gt; 0⟧ ⟹ 1+x &amp;gt; 1 ⟶ 1+x &amp;gt; 0&amp;quot;&lt;br /&gt;
by (rule subst)&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;
  &amp;quot;⟦x+1 = 1+x; x+1 &amp;gt; 1 ⟶ x+1 &amp;gt; 0⟧ ⟹ 1+x &amp;gt; 1 ⟶ 1+x &amp;gt; 0&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 6 (p. 27). Demostrar&lt;br /&gt;
     x = y, y = z ⊢ x = z&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 &amp;quot;x = y&amp;quot; &lt;br /&gt;
          &amp;quot;y = z&amp;quot;&lt;br /&gt;
  shows   &amp;quot;x = z&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;x = z&amp;quot; using assms(2) assms(1) by (rule subst)&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;
  &amp;quot;⟦x = y; y = z⟧ ⟹ x = z&amp;quot;&lt;br /&gt;
by (rule subst)&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;⟦x = y; y = z⟧ ⟹ x = z&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 7 (p. 27). Demostrar&lt;br /&gt;
     s = t ⊢ t = s&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;
  &amp;quot;s = t ⟹ t = s&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  assume 1: &amp;quot;s = t&amp;quot;&lt;br /&gt;
  have 2: &amp;quot;s = s&amp;quot; by (rule refl)&lt;br /&gt;
  show &amp;quot;t = s&amp;quot; using 1 2 by (rule subst)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemlo_7_2:&lt;br /&gt;
  &amp;quot;s = t ⟹ t = s&amp;quot;&lt;br /&gt;
by (erule subst) (rule refl)&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejemlo_7_3:&lt;br /&gt;
  &amp;quot;s = t ⟹ t = s&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Algunas reglas derivadas de la igualdad son:&lt;br /&gt;
  · trans:      ⟦r = s; s = t⟧ ⟹ r = t&lt;br /&gt;
  · sym:        s = t ⟹ t = s&lt;br /&gt;
  · not_sym:    t ≠ s ⟹ s ≠ t&lt;br /&gt;
  · ssubst:     ⟦t = s; P s⟧ ⟹ P t&lt;br /&gt;
  · box_equals: ⟦a = b; a = c; b = d⟧ ⟹ c = d&lt;br /&gt;
  · arg_cong:   x = y ⟹ f x = f y&lt;br /&gt;
  · fun_cong:   f = g ⟹ f x = g x&lt;br /&gt;
  · cong:       ⟦f = g; x = y⟧ ⟹ f x = g y&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada de not_sym es&amp;quot;&lt;br /&gt;
lemma not_sym_1: &lt;br /&gt;
  assumes &amp;quot;t ≠ s&amp;quot;&lt;br /&gt;
  shows   &amp;quot;s ≠ t&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;s = t&amp;quot;&lt;br /&gt;
  hence &amp;quot;t = s&amp;quot; ..&lt;br /&gt;
  show False using assms(1) `t = s` .. &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada de not_sym es&amp;quot;&lt;br /&gt;
lemma not_sym_2: &lt;br /&gt;
  assumes &amp;quot;t ≠ s&amp;quot;&lt;br /&gt;
  shows   &amp;quot;s ≠ t&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;s = t&amp;quot;&lt;br /&gt;
  hence &amp;quot;t = s&amp;quot; by (rule sym)&lt;br /&gt;
  show False using assms(1) `t = s` by (rule notE) &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática de not_sym es&amp;quot;&lt;br /&gt;
lemma not_sym_3: &lt;br /&gt;
  &amp;quot;t ≠ s ⟹ s ≠ t&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada de ssubst es&amp;quot;&lt;br /&gt;
lemma sssubs_1:&lt;br /&gt;
  assumes &amp;quot;t = s&amp;quot;&lt;br /&gt;
          &amp;quot;P s&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P t&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;s = t&amp;quot; using assms(1) ..&lt;br /&gt;
  thus &amp;quot;P t&amp;quot; using assms(2) by (rule subst)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada de ssubst es&amp;quot;&lt;br /&gt;
lemma sssubs_2:&lt;br /&gt;
  assumes &amp;quot;t = s&amp;quot;&lt;br /&gt;
          &amp;quot;P s&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P t&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;s = t&amp;quot; using assms(1) by (rule sym)&lt;br /&gt;
  thus &amp;quot;P t&amp;quot; using assms(2) by (rule subst)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática de ssubst es&amp;quot;&lt;br /&gt;
lemma ssubst_3:&lt;br /&gt;
  &amp;quot;⟦t = s; P s⟧ ⟹ P t&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada de box_equals es&amp;quot;&lt;br /&gt;
lemma box_equals_1: &lt;br /&gt;
  assumes &amp;quot;a = b&amp;quot; &lt;br /&gt;
          &amp;quot;a = c&amp;quot; &lt;br /&gt;
          &amp;quot;b = d&amp;quot; &lt;br /&gt;
  shows   &amp;quot;c = d&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;c = b&amp;quot; using assms(2) assms(1) by (rule subst) &lt;br /&gt;
  with assms(3) show &amp;quot;c = d&amp;quot; by (rule subst) &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración semiautomática de box_equals es&amp;quot;&lt;br /&gt;
lemma box_equals_2: &lt;br /&gt;
  &amp;quot;⟦a = b; a = c; b = d⟧ ⟹ c = d&amp;quot;&lt;br /&gt;
by (rule box_equals)&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática de box_equals es&amp;quot;&lt;br /&gt;
lemma box_equals_3: &lt;br /&gt;
  &amp;quot;⟦a = b; a = c; b = d⟧ ⟹ c = d&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada de arg_cong es&amp;quot;&lt;br /&gt;
lemma arg_cong_1:   &lt;br /&gt;
  assumes &amp;quot;x = y&amp;quot; &lt;br /&gt;
  shows   &amp;quot;f x = f y&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;f x = f x&amp;quot; by (rule refl)&lt;br /&gt;
  with assms(1) show &amp;quot;f x = f y&amp;quot; by (rule subst)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración semiautomática de arg_cong es&amp;quot;&lt;br /&gt;
lemma arg_cong_2:   &lt;br /&gt;
  &amp;quot;x = y ⟹ f x = f y&amp;quot;&lt;br /&gt;
by (rule arg_cong)&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática de arg_cong es&amp;quot;&lt;br /&gt;
lemma arg_cong_3:   &lt;br /&gt;
  &amp;quot;x = y ⟹ f x = f y&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada de fun_cong es&amp;quot;&lt;br /&gt;
lemma fun_cong_1:   &lt;br /&gt;
  assumes &amp;quot;f = g&amp;quot;&lt;br /&gt;
  shows   &amp;quot;f x = g x&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;f x = f x&amp;quot; by (rule refl)&lt;br /&gt;
  with assms(1) show &amp;quot;f x = g x&amp;quot; by (erule_tac P = &amp;quot;λh. f x = h x&amp;quot; in subst)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración semiautomática de fun_cong es&amp;quot;&lt;br /&gt;
lemma fun_cong_2:   &lt;br /&gt;
  &amp;quot;f = g ⟹ f x = g x&amp;quot;&lt;br /&gt;
by (rule fun_cong)&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática de fun_cong es&amp;quot;&lt;br /&gt;
lemma fun_cong_3:   &lt;br /&gt;
  &amp;quot;f = g ⟹ f x = g x&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada de cong es&amp;quot;&lt;br /&gt;
lemma cong_1:       &lt;br /&gt;
  assumes &amp;quot;f = g&amp;quot; &lt;br /&gt;
          &amp;quot;x = y&amp;quot; &lt;br /&gt;
  shows   &amp;quot;f x = g y&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;f x = f x&amp;quot; by (rule refl)&lt;br /&gt;
  with assms(2) have &amp;quot;f x = f y&amp;quot; by (rule subst)&lt;br /&gt;
  with assms(1) show &amp;quot;f x = g y&amp;quot; by (erule_tac P = &amp;quot;λh. f x = h y&amp;quot; in subst)&lt;br /&gt;
qed&lt;br /&gt;
 &lt;br /&gt;
-- &amp;quot;La demostración semiautomática de cong es&amp;quot;&lt;br /&gt;
lemma cong_2:       &lt;br /&gt;
  &amp;quot;⟦f = g; x = y⟧ ⟹ f x = g y&amp;quot;&lt;br /&gt;
by (rule cong)&lt;br /&gt;
 &lt;br /&gt;
-- &amp;quot;La demostración automática de cong es&amp;quot;&lt;br /&gt;
lemma cong_3:       &lt;br /&gt;
  &amp;quot;⟦f = g; x = y⟧ ⟹ f x = g y&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
section {* Ejemplo de razonamiento sobre programa *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Definición. El número natural x divide al número natural y si existe&lt;br /&gt;
  un natural k tal que kx = y.&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
definition divide :: &amp;quot;nat ⇒ nat ⇒ bool&amp;quot; where &lt;br /&gt;
  &amp;quot;divide x y ≡ ∃k. k*x = y&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  La definición de divide se añade a las reglas de simplificación. &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
declare divide_def[simp]&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  Ejemplo 8 [Transitividad de la divisibilidad]. Sean a, b y c números&lt;br /&gt;
  naturales. Si b es divisible por a y c es divisible por b, entonces c&lt;br /&gt;
  es divisible por a.  &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejemplo_8_1: &lt;br /&gt;
  assumes &amp;quot;divide a b&amp;quot; &lt;br /&gt;
          &amp;quot;divide b c&amp;quot;&lt;br /&gt;
  shows   &amp;quot;divide a c&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  from assms(1) obtain m where &amp;quot;m*a = b&amp;quot; by auto&lt;br /&gt;
  from assms(2) obtain n where &amp;quot;n*b = c&amp;quot; by auto&lt;br /&gt;
  hence &amp;quot;m*n*a = c&amp;quot; using `m*a = b` by auto&lt;br /&gt;
  hence &amp;quot;∃k. k*a = c&amp;quot; by (rule exI)&lt;br /&gt;
  thus &amp;quot;divide a c&amp;quot; by simp&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración puede simplificarse&amp;quot;&lt;br /&gt;
lemma ejemplo_8_2: &lt;br /&gt;
  assumes &amp;quot;divide a b&amp;quot; &lt;br /&gt;
          &amp;quot;divide b c&amp;quot;&lt;br /&gt;
  shows   &amp;quot;divide a c&amp;quot;&lt;br /&gt;
proof simp&lt;br /&gt;
  from assms(1) obtain m where &amp;quot;m*a = b&amp;quot; by auto&lt;br /&gt;
  from assms(2) obtain n where &amp;quot;n*b = c&amp;quot; by auto&lt;br /&gt;
  hence &amp;quot;m*n*a = c&amp;quot; using `m*a = b` by auto&lt;br /&gt;
  thus &amp;quot;∃k. k*a = c&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_8_3: &lt;br /&gt;
  &amp;quot;⟦divide a b; divide b c⟧ ⟹ divide a c&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
section {* Razonamiento ecuacional *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  El razonamiento ecuacional se realiza usando la combinación de &amp;quot;also&amp;quot;&lt;br /&gt;
  (además) y &amp;quot;finally&amp;quot; (finalmente). &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  Ejemplo 9 [Razonamiento ecuacional]. Si a=b, b=c y c=d, entonces a=d.  &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 &amp;quot;a = b&amp;quot; &lt;br /&gt;
          &amp;quot;b = c&amp;quot; &lt;br /&gt;
          &amp;quot;c = d&amp;quot;&lt;br /&gt;
  shows   &amp;quot;a = d&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;a = b&amp;quot; by (rule assms(1))&lt;br /&gt;
  also have &amp;quot;… = c&amp;quot; by (rule assms(2))&lt;br /&gt;
  also have &amp;quot;… = d&amp;quot; by (rule assms(3))&lt;br /&gt;
  finally show &amp;quot;a = d&amp;quot; .&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  El lema anterior puede demostrarse automáticamente con la maza&lt;br /&gt;
  (&amp;quot;sledgehammer&amp;quot;). &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma  ejemplo_9_2:&lt;br /&gt;
  assumes &amp;quot;a = b&amp;quot; &lt;br /&gt;
          &amp;quot;b = c&amp;quot; &lt;br /&gt;
          &amp;quot;c = d&amp;quot;&lt;br /&gt;
  shows   &amp;quot;a = d&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;a=d&amp;quot; by (metis assms)&lt;br /&gt;
qed&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>