<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?action=history&amp;feed=atom&amp;title=T3_sol</id>
	<title>T3 sol - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?action=history&amp;feed=atom&amp;title=T3_sol"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=T3_sol&amp;action=history"/>
	<updated>2026-07-18T23:50:47Z</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/LMF2020/index.php?title=T3_sol&amp;diff=1245&amp;oldid=prev</id>
		<title>Mjoseh: Protegió «T3 sol» ([Editar=Solo administradores] (indefinido) [Trasladar=Solo administradores] (indefinido))</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=T3_sol&amp;diff=1245&amp;oldid=prev"/>
		<updated>2020-05-28T09:39:28Z</updated>

		<summary type="html">&lt;p&gt;Protegió «&lt;a href=&quot;/~jalonso/LMF2020/index.php/T3_sol&quot; title=&quot;T3 sol&quot;&gt;T3 sol&lt;/a&gt;» ([Editar=Solo administradores] (indefinido) [Trasladar=Solo administradores] (indefinido))&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 09:39 28 may 2020&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/LMF2020/index.php?title=T3_sol&amp;diff=1244&amp;oldid=prev</id>
		<title>Mjoseh: Página creada con «&lt;source lang = &quot;isabelle&quot;&gt;  text ‹Ejercicio 3 de Lógica Matemática y Fundamentos (19-mayo-2020)›  theory uvus_3_sol imports Main  begin  text ‹   Apellidos:   Nombr…»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=T3_sol&amp;diff=1244&amp;oldid=prev"/>
		<updated>2020-05-28T09:39:19Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;source lang = &amp;quot;isabelle&amp;quot;&amp;gt;  text ‹Ejercicio 3 de Lógica Matemática y Fundamentos (19-mayo-2020)›  theory uvus_3_sol imports Main  begin  text ‹   Apellidos:   Nombr…»&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;
&lt;br /&gt;
text ‹Ejercicio 3 de Lógica Matemática y Fundamentos (19-mayo-2020)›&lt;br /&gt;
&lt;br /&gt;
theory uvus_3_sol&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  Apellidos:&lt;br /&gt;
  Nombre: &lt;br /&gt;
› &lt;br /&gt;
&lt;br /&gt;
text ‹Sustituye la palabra uvus por tu usuario de la Universidad de&lt;br /&gt;
  Sevilla y graba el fichero con dicho usuario.thy› &lt;br /&gt;
&lt;br /&gt;
text ‹Nota 1: El tiempo de realización del ejercicio es de 15:30 a 17:00.&lt;br /&gt;
  A continuación, se dispone de 30 minutos para su entrega en la PEV.› &lt;br /&gt;
&lt;br /&gt;
text ‹Nota 2: Además de las reglas básicas de deducción natural de la &lt;br /&gt;
  lógica proposicional y de primer orden, también se pueden usar las &lt;br /&gt;
  reglas notnotI y mt que demostramos a  continuación.›&lt;br /&gt;
&lt;br /&gt;
text ‹Nota 3: En el proceso de corrección del ejercicio, y antes de la&lt;br /&gt;
  publicación de las calificaciones del mismo, se podrá requerir&lt;br /&gt;
  aclaraciones sobre su respuesta. Estas aclaraciones se harán por &lt;br /&gt;
  alguno de los procedimientos virtuales previstos en la PEV.›&lt;br /&gt;
&lt;br /&gt;
lemma notnotI: &amp;quot;P ⟹ ¬¬ P&amp;quot;&lt;br /&gt;
  by auto&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;
  Se define la función&lt;br /&gt;
     elimina :: nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (elimina n xs) es la lista obtenida eliminando los n primeros&lt;br /&gt;
  elementos de xs. Por ejemplo, &lt;br /&gt;
     elimina 2 [a,c,d,b,e] = [d,b,e]&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
fun elimina :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;elimina n []             = []&amp;quot;&lt;br /&gt;
| &amp;quot;elimina 0 xs             = xs&amp;quot;&lt;br /&gt;
| &amp;quot;elimina (Suc n) (x # xs) = elimina n xs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;elimina 2 [a,c,d,b,e] = [d,b,e]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Se define la función&lt;br /&gt;
     estaEn :: &amp;#039;a ⇒ &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (estaEn x xs) se verifica si el elemento x está en la lista&lt;br /&gt;
  xs. Por ejemplo, &lt;br /&gt;
     estaEn (2::nat) [3,2,4] = True&lt;br /&gt;
     estaEn (1::nat) [3,2,4] = False&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
fun estaEn :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn x []       = False&amp;quot;&lt;br /&gt;
| &amp;quot;estaEn x (a # xs) = (a = x ∨ estaEn x xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 1: Demostrar que&lt;br /&gt;
     estaEn x (elimina n xs) ⟶ estaEn x xs&lt;br /&gt;
&lt;br /&gt;
  + En lenguaje natural&lt;br /&gt;
  + En Isabelle/HOL, de forma detallada. Es opcional hacerlo de forma&lt;br /&gt;
    declarativa o aplicativa.&lt;br /&gt;
&lt;br /&gt;
  Nota: Es recomendable pasar de la demostración en lenguaje natural a la &lt;br /&gt;
  demostración estructurada. Y, a continuación, detallar los pasos de &lt;br /&gt;
  simplificación hasta llegar a usar sólo el método (simp only:..).&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa detallada›&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;estaEn x (elimina n xs) ⟶ estaEn x xs&amp;quot;&lt;br /&gt;
proof (induct rule: elimina.induct)&lt;br /&gt;
  fix n &lt;br /&gt;
  show &amp;quot;estaEn x (elimina n []) ⟶ estaEn x []&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;estaEn x (elimina n [])&amp;quot;&lt;br /&gt;
    then show &amp;quot;estaEn x []&amp;quot; &lt;br /&gt;
      by (simp only: elimina.simps(1))&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  fix y ys&lt;br /&gt;
  show &amp;quot;estaEn x (elimina 0 (y # ys)) ⟶ estaEn x (y # ys)&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;estaEn x (elimina 0 (y # ys))&amp;quot;&lt;br /&gt;
    then show &amp;quot;estaEn x (y # ys)&amp;quot; &lt;br /&gt;
      by (simp only: elimina.simps(2))&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  fix n y ys&lt;br /&gt;
  assume 1: &amp;quot;estaEn x (elimina n ys) ⟶ estaEn x ys&amp;quot;&lt;br /&gt;
  show &amp;quot;estaEn x (elimina (Suc n) (y # ys)) ⟶ estaEn x (y # ys)&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;estaEn x (elimina (Suc n) (y # ys))&amp;quot;&lt;br /&gt;
    then have &amp;quot;estaEn x (elimina n ys)&amp;quot; &lt;br /&gt;
      by (simp only: elimina.simps(3))&lt;br /&gt;
    with 1 have &amp;quot;estaEn x ys&amp;quot; &lt;br /&gt;
      by (rule mp)&lt;br /&gt;
    then have &amp;quot;y = x ∨ estaEn x ys&amp;quot; &lt;br /&gt;
      by (rule disjI2)&lt;br /&gt;
    then show &amp;quot;estaEn x (y # ys)&amp;quot; &lt;br /&gt;
      by (simp only: estaEn.simps(2))&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa detallada (1)›&lt;br /&gt;
lemma eliminaEsta:&lt;br /&gt;
  &amp;quot;estaEn x (elimina n xs) ⟹ estaEn x xs&amp;quot;&lt;br /&gt;
  apply (induct rule: elimina.induct)&lt;br /&gt;
    apply (simp only: elimina.simps(1))&lt;br /&gt;
   apply (simp only: elimina.simps(2) estaEn.simps(1))&lt;br /&gt;
  apply (simp only: elimina.simps(3))&lt;br /&gt;
  apply (simp only: estaEn.simps(2))&lt;br /&gt;
  apply (rule disjI2)&lt;br /&gt;
  apply (simp only: implies_True_equals)&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;estaEn x (elimina n xs) ⟶ estaEn x xs&amp;quot;&lt;br /&gt;
  apply (rule impI)&lt;br /&gt;
  apply (simp only: eliminaEsta)&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa detallada (2)›&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;estaEn x (elimina n xs) ⟶ estaEn x xs&amp;quot;&lt;br /&gt;
  apply (induct rule: elimina.induct)&lt;br /&gt;
    apply (simp only: elimina.simps(1) estaEn.simps(1))&lt;br /&gt;
    apply (rule impI, assumption)&lt;br /&gt;
   apply (simp only: elimina.simps(2) estaEn.simps(1))&lt;br /&gt;
   apply (rule impI, assumption)&lt;br /&gt;
  apply (simp only: elimina.simps(3))&lt;br /&gt;
  apply (simp only: estaEn.simps(2))&lt;br /&gt;
  apply (rule impI)&lt;br /&gt;
  apply (rule disjI2)&lt;br /&gt;
  apply (erule mp, assumption)&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Ejercicio 2. Demostrar que si la relación binaria R verifica la &lt;br /&gt;
  siguiente condición&lt;br /&gt;
     ∃y z. (∀x. ¬R(x, y)) ∨ (∀x. ¬R(x, z)))&lt;br /&gt;
  entonces no se verifica que&lt;br /&gt;
    ∀y z. ∃x. (R(x,y) ∧ R(x,z)))&lt;br /&gt;
  --------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa detallada›&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;(∃y z. ((∀x. ¬R(x, y)) ∨ (∀x. ¬R(x, z))))&lt;br /&gt;
  ⟶ ¬ (∀y z. ∃x. (R(x,y) ∧ R(x,z)))&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 0: &amp;quot;∃y z. ((∀x. ¬R(x, y)) ∨ (∀x. ¬R(x, z)))&amp;quot;&lt;br /&gt;
  show &amp;quot;¬ (∀y z. ∃x. (R(x,y) ∧ R(x,z)))&amp;quot;&lt;br /&gt;
  proof (rule notI)&lt;br /&gt;
    assume 1: &amp;quot;∀y. ∀z. ∃x. (R(x,y) ∧ R(x,z))&amp;quot;&lt;br /&gt;
    obtain b where &amp;quot;∃z. ((∀x. ¬R(x, b)) ∨ (∀x. ¬R(x, z)))&amp;quot; &lt;br /&gt;
      using 0 by (rule exE)&lt;br /&gt;
    then obtain c where 2: &amp;quot;((∀x. ¬R(x, b)) ∨ (∀x. ¬R(x, c)))&amp;quot; &lt;br /&gt;
      by (rule exE)&lt;br /&gt;
    have &amp;quot;∀z. ∃x. (R(x,b) ∧ R(x,z))&amp;quot; &lt;br /&gt;
      using 1 by (rule allE)&lt;br /&gt;
    then have &amp;quot;∃x. (R(x,b) ∧ R(x,c))&amp;quot; &lt;br /&gt;
      by (rule allE)&lt;br /&gt;
    then obtain a where 3 :&amp;quot;R(a,b) ∧ R(a,c)&amp;quot; &lt;br /&gt;
      by (rule exE)&lt;br /&gt;
    show False&lt;br /&gt;
      using 2&lt;br /&gt;
    proof (rule disjE)&lt;br /&gt;
      assume &amp;quot;∀x. ¬ R (x, b)&amp;quot;&lt;br /&gt;
      then have &amp;quot;¬R(a,b)&amp;quot; &lt;br /&gt;
        by (rule allE)&lt;br /&gt;
      have &amp;quot;R(a,b)&amp;quot; &lt;br /&gt;
        using 3 by (rule conjunct1)&lt;br /&gt;
      with `¬R(a,b)` show False&lt;br /&gt;
        by (rule notE)&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;∀x. ¬ R (x, c)&amp;quot;&lt;br /&gt;
      then have &amp;quot;¬R(a,c)&amp;quot; &lt;br /&gt;
        by (rule allE)&lt;br /&gt;
      have &amp;quot;R(a,c)&amp;quot; &lt;br /&gt;
        using 3 by (rule conjunct2)&lt;br /&gt;
      with `¬R(a,c)` show False &lt;br /&gt;
        by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa detallada›&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;(∃y z. ((∀x. ¬R(x,y)) ∨ (∀x. ¬R(x,z)))) &lt;br /&gt;
  ⟶ ¬( ∀y z. ∃x. (R(x,y) ∧ R(x,z)))&amp;quot;&lt;br /&gt;
  apply (rule impI)&lt;br /&gt;
  apply (rule notI)&lt;br /&gt;
  apply (erule exE)+&lt;br /&gt;
  apply (erule_tac x = y in allE)&lt;br /&gt;
  apply (erule_tac x = z in allE)&lt;br /&gt;
  apply (erule disjE)&lt;br /&gt;
   apply (erule exE)&lt;br /&gt;
   apply (erule_tac x = x in allE)&lt;br /&gt;
   apply (erule notE)&lt;br /&gt;
   apply (erule conjunct1)&lt;br /&gt;
  apply (erule exE)&lt;br /&gt;
  apply (erule_tac x = x in allE)&lt;br /&gt;
  apply (erule notE)&lt;br /&gt;
  apply (erule conjunct2)&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
</feed>