<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LMF2019/index.php?action=history&amp;feed=atom&amp;title=Sol_8</id>
	<title>Sol 8 - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LMF2019/index.php?action=history&amp;feed=atom&amp;title=Sol_8"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2019/index.php?title=Sol_8&amp;action=history"/>
	<updated>2026-07-19T01:01:25Z</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/LMF2019/index.php?title=Sol_8&amp;diff=565&amp;oldid=prev</id>
		<title>Mjoseh en 10:52 9 abr 2019</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2019/index.php?title=Sol_8&amp;diff=565&amp;oldid=prev"/>
		<updated>2019-04-09T10:52:54Z</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;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 10:52 9 abr 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2019/index.php?title=Sol_8&amp;diff=564&amp;oldid=prev</id>
		<title>Mjoseh en 10:52 9 abr 2019</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2019/index.php?title=Sol_8&amp;diff=564&amp;oldid=prev"/>
		<updated>2019-04-09T10:52:44Z</updated>

		<summary type="html">&lt;p&gt;&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;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
chapter {* R8: Argumentación en lógica de primer orden *}&lt;br /&gt;
&lt;br /&gt;
theory R8_sol&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  El objetivo de esta relación es formalizar en lógica de primer orden&lt;br /&gt;
  argumentos expresados en lenguaje natural.&lt;br /&gt;
 &lt;br /&gt;
  Antes de escribir la soluciones, comprobar con APLI2 la corrección de &lt;br /&gt;
  la formalización. &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Formalizar el siguiente argumento &lt;br /&gt;
     Hay estudiantes inteligentes y hay estudiantes trabajadores. Por&lt;br /&gt;
     tanto, hay estudiantes inteligentes y trabajadores.&lt;br /&gt;
  Usar I(x) para x es inteligente&lt;br /&gt;
       T(x) para x es trabajador&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La refutación automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_1:&lt;br /&gt;
  assumes &amp;quot;(∃x. I(x)) ∧ (∃x. T(x))&amp;quot; &lt;br /&gt;
  shows   &amp;quot;∃x. I(x) ∧ T(x)&amp;quot;&lt;br /&gt;
quickcheck&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  El argumento es incorrecto como muestra el siguiente contraejemplo:&lt;br /&gt;
     I = {a1}&lt;br /&gt;
     T = {a2}&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Formalizar el siguiente argumento &lt;br /&gt;
     Todos los participantes son vencedores. Hay como máximo un&lt;br /&gt;
     vencedor. Hay como máximo un participante. Por lo tanto, hay&lt;br /&gt;
     exactamente un participante. &lt;br /&gt;
  Usar P(x) para x es un participante&lt;br /&gt;
       V(x) para x es un vencedor&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La refutación automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_2: &lt;br /&gt;
  assumes &amp;quot;∀x. P(x) ⟶ V(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. V(x) ∧ V(y) ⟶ x=y&amp;quot; &lt;br /&gt;
          &amp;quot;∀x y. P(x) ∧ P(y) ⟶ x=y&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. P(x) ∧ (∀y. P(y) ⟶ x=y)&amp;quot;&lt;br /&gt;
quickcheck  &lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  El argumento es incorrecto como muestra el siguiente contraejemplo:&lt;br /&gt;
     V = {}&lt;br /&gt;
     P = {}&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Formalizar el siguiente argumento &lt;br /&gt;
     Ningún aristócrata debe ser condenado a galeras a menos que sus&lt;br /&gt;
     crímenes sean vergonzosos y lleve una vida licenciosa. En la ciudad&lt;br /&gt;
     hay aristócratas que han cometido crímenes vergonzosos aunque su&lt;br /&gt;
     forma de vida no sea licenciosa. Por tanto, hay algún aristócrata&lt;br /&gt;
     que no está condenado a galeras. &lt;br /&gt;
  Usar A(x)  para x es aristócrata&lt;br /&gt;
       G(x)  para x está condenado a galeras&lt;br /&gt;
       L(x)  para x lleva una vida licenciosa&lt;br /&gt;
       V(x)  para x ha cometido crímenes vergonzoso&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_3_a:&lt;br /&gt;
  assumes &amp;quot;∀x. A(x) ∧ G(x) ⟶ L(x) ∧ V(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. A(x) ∧ V(x) ∧ ¬L(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. A(x) ∧ ¬G(x)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by metis&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_3_d:&lt;br /&gt;
  assumes &amp;quot;∀x. A(x) ∧ G(x) ⟶ L(x) ∧ V(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. A(x) ∧ V(x) ∧ ¬L(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. A(x) ∧ ¬G(x)&amp;quot;&lt;br /&gt;
proof-&lt;br /&gt;
  from assms(2) obtain a where 1:&amp;quot;A(a) ∧ V(a) ∧ ¬L(a)&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;A(a)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;¬G(a)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;G(a)&amp;quot;&lt;br /&gt;
      with `A(a)` have 2: &amp;quot;A(a) ∧ G(a)&amp;quot; ..&lt;br /&gt;
      have &amp;quot;A(a) ∧ G(a) ⟶ L(a) ∧ V(a)&amp;quot; using assms(1) ..&lt;br /&gt;
      hence &amp;quot;L(a) ∧ V(a)&amp;quot; using 2 ..&lt;br /&gt;
      hence &amp;quot;L(a)&amp;quot; ..&lt;br /&gt;
      have &amp;quot;V(a) ∧ ¬L(a)&amp;quot; using 1 ..&lt;br /&gt;
      hence &amp;quot;¬L(a)&amp;quot; ..&lt;br /&gt;
      thus False using `L(a)`..&lt;br /&gt;
    qed&lt;br /&gt;
  with `A(a)` have &amp;quot;A(a) ∧ ¬G(a)&amp;quot; ..&lt;br /&gt;
  thus  &amp;quot;∃x. A(x) ∧ ¬G(x)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_3_e:&lt;br /&gt;
  &amp;quot;⟦∀x. A(x) ∧ G(x) ⟶ L(x) ∧ V(x);&lt;br /&gt;
          ∃x. A(x) ∧ V(x) ∧ ¬L(x)⟧ ⟹ ∃x. A(x) ∧ ¬G(x)&amp;quot;  &lt;br /&gt;
  apply (erule exE)&lt;br /&gt;
  apply (erule_tac x = x in allE)&lt;br /&gt;
  apply (rule_tac x = x in exI)&lt;br /&gt;
  apply (rule conjI)&lt;br /&gt;
   apply (erule conjunct1)&lt;br /&gt;
  apply (rule notI)&lt;br /&gt;
  apply (drule mp)&lt;br /&gt;
   apply (rule conjI)&lt;br /&gt;
    apply (erule conjunct1, assumption)&lt;br /&gt;
  apply (drule conjunct2)&lt;br /&gt;
  apply (drule conjunct1)&lt;br /&gt;
  apply (drule conjunct2)&lt;br /&gt;
  apply (erule notE, assumption)&lt;br /&gt;
    done&lt;br /&gt;
  &lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Formalizar el siguiente argumento &lt;br /&gt;
     Todos los robots obedecen a los amigos del programador jefe.&lt;br /&gt;
     Alvaro es amigo del programador jefe, pero Benito no le&lt;br /&gt;
     obedece. Por tanto, Benito no es un robot.&lt;br /&gt;
  Usar R(x)    para x es un robot&lt;br /&gt;
       Ob(x,y) para x obedece a y&lt;br /&gt;
       A(x)    para x es amigo del programador jefe&lt;br /&gt;
       b       para Benito&lt;br /&gt;
       a       para Alvaro&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_4_a:&lt;br /&gt;
  assumes &amp;quot;∀x y. R(x) ∧ A(y) ⟶ Ob(x,y)&amp;quot;&lt;br /&gt;
          &amp;quot;A(a)&amp;quot;&lt;br /&gt;
          &amp;quot;¬Ob(b,a)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬R(b)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by metis&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_4_b:&lt;br /&gt;
  assumes &amp;quot;∀x y. R(x) ∧ A(y) ⟶ Ob(x,y)&amp;quot;&lt;br /&gt;
          &amp;quot;A(a)&amp;quot;&lt;br /&gt;
          &amp;quot;¬Ob(b,a)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬R(b)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;R(b)&amp;quot; &lt;br /&gt;
  have &amp;quot;∀y. R(b) ∧ A(y) ⟶ Ob(b,y)&amp;quot; using assms(1) ..&lt;br /&gt;
  hence 1: &amp;quot;R(b) ∧ A(a) ⟶ Ob(b,a)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;R(b) ∧ A(a)&amp;quot; using `R(b)` assms(2) ..&lt;br /&gt;
  with 1 have &amp;quot;Ob(b,a)&amp;quot; ..&lt;br /&gt;
  with assms(3) show False ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_4_c:&lt;br /&gt;
  &amp;quot;⟦∀x y. R(x) ∧ A(y) ⟶ Ob(x,y);&lt;br /&gt;
          A(a);¬Ob(b,a)⟧⟹ ¬R(b)&amp;quot;&lt;br /&gt;
  apply (rule notI)&lt;br /&gt;
  apply (erule_tac x = b in allE)&lt;br /&gt;
  apply (erule notE)&lt;br /&gt;
  apply (erule allE)&lt;br /&gt;
  apply (erule mp)&lt;br /&gt;
  apply (rule conjI, assumption+)&lt;br /&gt;
    done&lt;br /&gt;
  &lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Formalizar el siguiente argumento&lt;br /&gt;
     Ningún socio del club está en deuda con el tesorero del club. Si&lt;br /&gt;
     un socio del club no paga su cuota está en deuda con el tesorero&lt;br /&gt;
     del club. Por tanto, si el tesorero del club es socio del club,&lt;br /&gt;
     entonces paga su cuota. &lt;br /&gt;
  Usar P(x) para x es socio del club&lt;br /&gt;
       Q(x) para x paga su cuota&lt;br /&gt;
       R(x) para x está en deuda con el tesorero&lt;br /&gt;
       a    para el tesorero del club&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_5_a:&lt;br /&gt;
  assumes &amp;quot;¬(∃x. P(x) ∧ R(x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. P(x) ∧ ¬Q(x) ⟶ R(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P(a) ⟶ Q(a)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_5_b:&lt;br /&gt;
  assumes &amp;quot;¬(∃x. P(x) ∧ R(x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. P(x) ∧ ¬Q(x) ⟶ R(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P(a) ⟶ Q(a)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;P(a)&amp;quot; &lt;br /&gt;
  show &amp;quot;Q(a)&amp;quot; &lt;br /&gt;
   proof (rule ccontr)&lt;br /&gt;
     assume &amp;quot;¬Q(a)&amp;quot;&lt;br /&gt;
     with `P(a)` have 1: &amp;quot;P(a) ∧ ¬Q(a)&amp;quot; ..&lt;br /&gt;
     have &amp;quot;P(a) ∧ ¬Q(a) ⟶ R(a)&amp;quot; using assms(2) ..&lt;br /&gt;
     hence &amp;quot;R(a)&amp;quot; using 1 ..&lt;br /&gt;
     with `P(a)` have &amp;quot;P(a) ∧ R(a)&amp;quot; ..&lt;br /&gt;
     hence &amp;quot;∃x. P(x) ∧ R(x)&amp;quot; ..&lt;br /&gt;
     with assms(1) show False ..&lt;br /&gt;
   qed&lt;br /&gt;
 qed&lt;br /&gt;
   &lt;br /&gt;
lemma ejercicio_5_c:&lt;br /&gt;
   &amp;quot;⟦¬(∃x. P(x) ∧ R(x));&lt;br /&gt;
          ∀x. P(x) ∧ ¬Q(x) ⟶ R(x)⟧ ⟹ P(a) ⟶ Q(a)&amp;quot;   &lt;br /&gt;
  apply (rule impI)&lt;br /&gt;
  apply (erule_tac x = a in allE)&lt;br /&gt;
  apply (rule ccontr)&lt;br /&gt;
  apply (erule notE)&lt;br /&gt;
  apply (rule_tac x = a in exI)&lt;br /&gt;
  apply (rule conjI, assumption)&lt;br /&gt;
  apply (erule mp)&lt;br /&gt;
  apply (rule conjI, assumption+)&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Formalizar el siguiente argumento &lt;br /&gt;
     Los aficionados al fútbol aplauden a cualquier futbolista&lt;br /&gt;
     extranjero. Juanito no aplaude a futbolistas extranjeros. Por&lt;br /&gt;
     tanto, si hay algún futbolista extranjero nacionalizado español,&lt;br /&gt;
     Juanito no es aficionado al fútbol.&lt;br /&gt;
  Usar Af(x)   para x es aficicionado al fútbol&lt;br /&gt;
       Ap(x,y) para x aplaude a y&lt;br /&gt;
       E(x)    para x es un futbolista extranjero&lt;br /&gt;
       N(x)    para x es un futbolista nacionalizado español&lt;br /&gt;
       j       para Juanito&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_6_a:&lt;br /&gt;
  assumes &amp;quot;∀x. Af(x) ⟶ (∀y. E(y) ⟶ Ap(x,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. E(x) ⟶ ¬Ap(j,x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∃x. E(x) ∧ N(x)) ⟶ ¬Af(j)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by metis&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_6_d:&lt;br /&gt;
  assumes &amp;quot;∀x. Af(x) ⟶ (∀y. E(y) ⟶ Ap(x,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. E(x) ⟶ ¬Ap(j,x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∃x. E(x) ∧ N(x)) ⟶ ¬Af(j)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∃x. E(x) ∧ N(x)&amp;quot; &lt;br /&gt;
  then obtain a where &amp;quot;E(a) ∧ N(a)&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;E(a)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;E(a) ⟶ ¬Ap(j,a)&amp;quot; using assms(2) ..&lt;br /&gt;
  hence &amp;quot;¬Ap(j,a)&amp;quot; using `E(a)` ..&lt;br /&gt;
  show &amp;quot;¬Af(j)&amp;quot;&lt;br /&gt;
     proof&lt;br /&gt;
       assume &amp;quot;Af(j)&amp;quot;&lt;br /&gt;
       have &amp;quot;Af(j) ⟶ (∀y. E(y) ⟶ Ap(j,y))&amp;quot; using assms(1) ..&lt;br /&gt;
       hence &amp;quot;∀y. E(y) ⟶ Ap(j,y)&amp;quot; using `Af(j)` ..&lt;br /&gt;
       hence &amp;quot;E(a) ⟶ Ap(j,a)&amp;quot; ..&lt;br /&gt;
       hence &amp;quot;Ap(j,a)&amp;quot; using `E(a)` ..&lt;br /&gt;
       with `¬Ap(j,a)` show False ..&lt;br /&gt;
     qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_6_c:&lt;br /&gt;
  &amp;quot;⟦∀x. Af(x) ⟶ (∀y. E(y) ⟶ Ap(x,y));&lt;br /&gt;
          ∀x. E(x) ⟶ ¬Ap(j,x)⟧ ⟹&lt;br /&gt;
         (∃x. E(x) ∧ N(x)) ⟶ ¬Af(j)&amp;quot;&lt;br /&gt;
  apply (rule impI)&lt;br /&gt;
  apply (erule exE)&lt;br /&gt;
  apply (erule_tac x = x in allE)&lt;br /&gt;
  apply (erule_tac x = j in allE)&lt;br /&gt;
  apply (rule notI)&lt;br /&gt;
  apply (drule mp)&lt;br /&gt;
   apply (erule conjunct1)&lt;br /&gt;
  apply (drule mp, assumption)&lt;br /&gt;
  apply (erule notE)&lt;br /&gt;
  apply (drule conjunct1)&lt;br /&gt;
  apply (erule_tac x = x in allE)&lt;br /&gt;
  apply (erule mp, assumption)&lt;br /&gt;
  done&lt;br /&gt;
    &lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Formalizar el siguiente argumento &lt;br /&gt;
     Todo aquel que entre en el país y no sea un VIP será cacheado por&lt;br /&gt;
     un aduanero. Hay un contrabandista que entra en el país y que solo&lt;br /&gt;
     podrá ser cacheado por contrabandistas. Ningún contrabandista es un&lt;br /&gt;
     VIP. Por tanto, algún aduanero es contrabandista.&lt;br /&gt;
  Usar A(x)    para x es aduanero&lt;br /&gt;
       Ca(x,y) para x cachea a y&lt;br /&gt;
       Co(x)   para x es contrabandista&lt;br /&gt;
       E(x)    para x entra en el pais&lt;br /&gt;
       V(x)    para x es un VIP&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_7_a:&lt;br /&gt;
  assumes &amp;quot;∀x. E(x) ∧ ¬V(x) ⟶ (∃y. A(y) ∧ Ca(y,x))&amp;quot;&lt;br /&gt;
           &amp;quot;∃x. Co(x) ∧ E(x) ∧ (∀y. Ca(y,x) ⟶ Co(y))&amp;quot;&lt;br /&gt;
           &amp;quot;¬(∃x. Co(x) ∧ V(x))&amp;quot;&lt;br /&gt;
  shows    &amp;quot;∃x. A(x) ∧ Co(x)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by metis&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_7_d:&lt;br /&gt;
  assumes &amp;quot;∀x. E(x) ∧ ¬V(x) ⟶ (∃y. A(y) ∧ Ca(y,x))&amp;quot;&lt;br /&gt;
           &amp;quot;∃x. Co(x) ∧ E(x) ∧ (∀y. Ca(y,x) ⟶ Co(y))&amp;quot;&lt;br /&gt;
           &amp;quot;¬(∃x. Co(x) ∧ V(x))&amp;quot;&lt;br /&gt;
  shows    &amp;quot;∃x. A(x) ∧ Co(x)&amp;quot;&lt;br /&gt;
proof-&lt;br /&gt;
  from assms(2) obtain a where 1: &amp;quot;Co(a) ∧ E(a) ∧ (∀y. Ca(y,a) ⟶ Co(y))&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;Co(a)&amp;quot; ..&lt;br /&gt;
  have 2:&amp;quot; E(a) ∧ (∀y. Ca(y,a) ⟶ Co(y))&amp;quot; using 1 ..&lt;br /&gt;
  hence &amp;quot;E(a)&amp;quot; ..&lt;br /&gt;
  have 3: &amp;quot;∀y. Ca(y,a) ⟶ Co(y)&amp;quot; using 2 ..&lt;br /&gt;
  have &amp;quot;¬V(a) ∨ V(a)&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃x. A(x) ∧ Co(x)&amp;quot;&lt;br /&gt;
     proof&lt;br /&gt;
       assume &amp;quot;¬V(a)&amp;quot;&lt;br /&gt;
         with `E(a)` have 4: &amp;quot;E(a) ∧ ¬V(a)&amp;quot; ..&lt;br /&gt;
         have &amp;quot;E(a) ∧ ¬V(a) ⟶ (∃y. A(y) ∧ Ca(y,a))&amp;quot; using assms(1) ..&lt;br /&gt;
         hence &amp;quot;∃y. A(y) ∧ Ca(y,a)&amp;quot; using 4 ..&lt;br /&gt;
         then obtain b where &amp;quot;A(b) ∧ Ca(b,a)&amp;quot; ..&lt;br /&gt;
         hence &amp;quot;A(b)&amp;quot; ..&lt;br /&gt;
         have &amp;quot;Ca(b,a)&amp;quot; using `A(b) ∧ Ca(b,a)` ..&lt;br /&gt;
         have &amp;quot;Ca(b,a) ⟶ Co(b)&amp;quot; using 3 ..&lt;br /&gt;
         hence &amp;quot;Co(b)&amp;quot; using `Ca(b,a)`..&lt;br /&gt;
         with `A(b)` have &amp;quot;A(b) ∧ Co(b)&amp;quot; ..&lt;br /&gt;
         thus &amp;quot;∃x. A(x) ∧ Co(x)&amp;quot; ..&lt;br /&gt;
       next &lt;br /&gt;
       assume &amp;quot;V(a)&amp;quot;&lt;br /&gt;
       with `Co(a) ` have &amp;quot;Co(a) ∧ V(a)&amp;quot; ..&lt;br /&gt;
       hence &amp;quot;∃x. Co(x) ∧ V(x)&amp;quot; ..&lt;br /&gt;
       with assms(3) show &amp;quot;∃x. A(x) ∧ Co(x)&amp;quot; ..&lt;br /&gt;
     qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_7_c:&lt;br /&gt;
  &amp;quot;⟦∀x. E(x) ∧ ¬V(x) ⟶ (∃y. A(y) ∧ Ca(y,x));&lt;br /&gt;
      ∃x. Co(x) ∧ E(x) ∧ (∀y. Ca(y,x) ⟶ Co(y));&lt;br /&gt;
           ¬(∃x. Co(x) ∧ V(x)) ⟧ ⟹ ∃x. A(x) ∧ Co(x)&amp;quot;  &lt;br /&gt;
  apply (erule exE)&lt;br /&gt;
  apply (erule_tac x = x in allE)&lt;br /&gt;
  apply (drule mp)&lt;br /&gt;
   apply (rule conjI)&lt;br /&gt;
    apply (drule conjunct2)&lt;br /&gt;
    apply (drule conjunct1, assumption)&lt;br /&gt;
   apply (rule notI)&lt;br /&gt;
   apply (erule notE)&lt;br /&gt;
   apply (drule conjunct1)&lt;br /&gt;
   apply (rule_tac x = x in exI)&lt;br /&gt;
   apply (rule conjI, assumption+)&lt;br /&gt;
  apply (erule exE)&lt;br /&gt;
  apply (rule_tac x = y in exI)&lt;br /&gt;
  apply (rule conjI)&lt;br /&gt;
    apply (erule conjunct1)+&lt;br /&gt;
  apply (drule conjunct2)+&lt;br /&gt;
  apply (erule_tac x = y in allE)&lt;br /&gt;
  apply (drule mp, assumption+)&lt;br /&gt;
    done&lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
section {* Ejercicios con igualdad *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Formalizar el siguiente argumento &lt;br /&gt;
     Rosa ama a Curro. Paco no simpatiza con Ana. Quien no simpatiza con&lt;br /&gt;
     Ana ama a Rosa. Si una persona ama a otra, la segunda ama a la&lt;br /&gt;
     primera. Hay como máximo una persona que ama a Rosa. Por tanto,&lt;br /&gt;
     Paco es Curro. &lt;br /&gt;
  Usar A(x,y) para x ama a y &lt;br /&gt;
       S(x,y) para x simpatiza con y &lt;br /&gt;
       a      para Ana&lt;br /&gt;
       c      para Curro&lt;br /&gt;
       p      para Paco &lt;br /&gt;
       r      para Rosa&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8_a:&lt;br /&gt;
  assumes &amp;quot;A(r,c)&amp;quot; &lt;br /&gt;
          &amp;quot;¬S(p,a)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ¬S(x,a) ⟶ A(x,r)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. A(x,y) ⟶ A(y,x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. A(x,r) ∧ A(y,r) ⟶ x=y&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p = c&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8_b:&lt;br /&gt;
  assumes &amp;quot;A(r,c)&amp;quot; &lt;br /&gt;
          &amp;quot;¬S(p,a)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ¬S(x,a) ⟶ A(x,r)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. A(x,y) ⟶ A(y,x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. A(x,r) ∧ A(y,r) ⟶ x=y&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p = c&amp;quot;&lt;br /&gt;
proof-&lt;br /&gt;
  have &amp;quot;∀y. A(r,y) ⟶ A(y,r)&amp;quot; using assms(4) ..&lt;br /&gt;
  hence &amp;quot;A(r,c) ⟶ A(c,r)&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;A(c,r)&amp;quot; using assms(1) ..&lt;br /&gt;
  have &amp;quot;¬S(p,a) ⟶ A(p,r)&amp;quot; using assms(3) ..&lt;br /&gt;
  hence &amp;quot;A(p,r)&amp;quot; using assms(2) ..&lt;br /&gt;
  hence 1: &amp;quot;A(p,r) ∧ A(c,r)&amp;quot; using `A(c,r)`..&lt;br /&gt;
  have &amp;quot;∀y. A(p,r) ∧ A(y,r) ⟶ p=y&amp;quot; using assms(5) ..&lt;br /&gt;
  hence &amp;quot;A(p,r) ∧ A(c,r) ⟶ p=c&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;p=c&amp;quot; using 1 ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8_c:&lt;br /&gt;
  &amp;quot;⟦A(r,c);&lt;br /&gt;
    ¬S(p,a);&lt;br /&gt;
     ∀x. ¬S(x,a) ⟶ A(x,r);&lt;br /&gt;
     ∀x y. A(x,y) ⟶ A(y,x);&lt;br /&gt;
     ∀x y. A(x,r) ∧ A(y,r) ⟶ x=y ⟧ ⟹ p = c&amp;quot;  &lt;br /&gt;
  apply (drule_tac x = p in spec)&lt;br /&gt;
  apply (drule mp, assumption) &lt;br /&gt;
  apply (drule_tac x = r in spec)&lt;br /&gt;
  apply (drule_tac x = p in spec)&lt;br /&gt;
  apply (frule_tac x = c in spec)&lt;br /&gt;
  apply (drule mp, assumption)&lt;br /&gt;
  apply (drule_tac x = c in spec)+&lt;br /&gt;
  apply (rule mp, assumption)&lt;br /&gt;
    apply (rule conjI, assumption+)&lt;br /&gt;
    done&lt;br /&gt;
  &lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Formalizar el siguiente argumento &lt;br /&gt;
     Todos los filósofos se han preguntado qué es la filosofía. Los que&lt;br /&gt;
     se preguntan qué es la filosofía se vuelven locos. Nietzsche es&lt;br /&gt;
     filósofo. El maestro de Nietzsche no acabó loco. Por tanto,&lt;br /&gt;
     Nietzsche y su maestro son diferentes personas. &lt;br /&gt;
  Usar F(x) para x es filósofo&lt;br /&gt;
       L(x) para x se vuelve loco&lt;br /&gt;
       P(x) para x se ha preguntado qué es la filosofía.&lt;br /&gt;
       m    para el maestro de Nietzsche&lt;br /&gt;
       n    para Nietzsche&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_9_a:&lt;br /&gt;
  assumes &amp;quot;∀x. F(x) ⟶ P(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. P(x) ⟶ L(x)&amp;quot;&lt;br /&gt;
          &amp;quot;F(n)&amp;quot;&lt;br /&gt;
          &amp;quot;¬L(m)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;n ≠ m&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_9_b:&lt;br /&gt;
  assumes &amp;quot;∀x. F(x) ⟶ P(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. P(x) ⟶ L(x)&amp;quot;&lt;br /&gt;
          &amp;quot;F(n)&amp;quot;&lt;br /&gt;
          &amp;quot;¬L(m)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;n ≠ m&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;n = m&amp;quot; &lt;br /&gt;
  hence &amp;quot;F(m)&amp;quot; using assms(3) by (rule subst)&lt;br /&gt;
  have &amp;quot;F(m) ⟶ P(m)&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;P(m)&amp;quot; using `F(m)` ..&lt;br /&gt;
  have &amp;quot;P(m) ⟶ L(m)&amp;quot; using assms(2) ..&lt;br /&gt;
  hence &amp;quot;L(m)&amp;quot; using `P(m)` ..&lt;br /&gt;
  with assms(4) show False ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_9_c:&lt;br /&gt;
  &amp;quot;⟦∀x. F(x) ⟶ P(x);&lt;br /&gt;
    ∀x. P(x) ⟶ L(x);&lt;br /&gt;
    F(n);&lt;br /&gt;
    ¬L(m) ⟧ ⟹ n ≠ m&amp;quot;  &lt;br /&gt;
  apply (rule notI)&lt;br /&gt;
  apply (erule_tac x = n in allE)&lt;br /&gt;
  apply (drule mp, assumption)&lt;br /&gt;
  apply (erule_tac x = m in allE)&lt;br /&gt;
    apply (erule notE)&lt;br /&gt;
  apply (erule mp)&lt;br /&gt;
  apply (erule subst, assumption)&lt;br /&gt;
    done&lt;br /&gt;
  &lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Formalizar el siguiente argumento &lt;br /&gt;
     Eduardo pudo haber visto al asesino. Antonio fue el primer testigo&lt;br /&gt;
     de la defensa. O Eduardo estaba en clase o Antonio dio falso&lt;br /&gt;
     testimonio. Nadie en clase pudo haber visto al asesino. Luego, el&lt;br /&gt;
     primer testigo de la defensa dio falso testimonio. &lt;br /&gt;
  Usar C(x) para x estaba en clase&lt;br /&gt;
       F(x) para x dio falso testimonio&lt;br /&gt;
       V(x) para x pudo haber visto al asesino&lt;br /&gt;
       a    para Antonio&lt;br /&gt;
       e    para Eduardo&lt;br /&gt;
       p    para el primer testigo de la defensa&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_10_a:&lt;br /&gt;
  assumes &amp;quot;V(e)&amp;quot;&lt;br /&gt;
          &amp;quot;a = p&amp;quot;&lt;br /&gt;
          &amp;quot;C(e) ∨ F(a)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. C(x) ⟶ ¬V(x)&amp;quot;&lt;br /&gt;
   shows  &amp;quot;F(p)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_10_b:&lt;br /&gt;
  assumes &amp;quot;V(e)&amp;quot;&lt;br /&gt;
          &amp;quot;a = p&amp;quot;&lt;br /&gt;
          &amp;quot;C(e) ∨ F(a)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. C(x) ⟶ ¬V(x)&amp;quot;&lt;br /&gt;
   shows  &amp;quot;F(p)&amp;quot;&lt;br /&gt;
using assms(3)&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;C(e)&amp;quot;&lt;br /&gt;
    have &amp;quot;C(e) ⟶ ¬V(e)&amp;quot; using assms(4) ..&lt;br /&gt;
    hence &amp;quot;¬V(e)&amp;quot; using `C(e)` ..&lt;br /&gt;
    thus  &amp;quot;F(p)&amp;quot; using assms(1) ..&lt;br /&gt;
  next&lt;br /&gt;
  assume &amp;quot;F(a)&amp;quot;&lt;br /&gt;
   with assms(2) show &amp;quot;F(p)&amp;quot; by (rule subst)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_10_c:&lt;br /&gt;
  &amp;quot;⟦ V(e);&lt;br /&gt;
     a = p;&lt;br /&gt;
     C(e) ∨ F(a);&lt;br /&gt;
     ∀x. C(x) ⟶ ¬V(x) ⟧ ⟹ F(p)&amp;quot;  &lt;br /&gt;
  apply (erule disjE)&lt;br /&gt;
   apply (erule_tac x = e in allE)&lt;br /&gt;
   apply (drule mp, assumption)&lt;br /&gt;
   apply (erule notE, assumption)&lt;br /&gt;
  apply (erule subst, assumption)&lt;br /&gt;
    done&lt;br /&gt;
  &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
</feed>