Acciones

T3

De Lógica matemática y fundamentos [Curso 2019-20]

text Ejercicio 3 de Lógica Matemática y Fundamentos (19-mayo-2020)

theory uvus_3
imports Main 
begin

text 
  Apellidos:
  Nombre: 
 

text Sustituye la palabra uvus por tu usuario de la Universidad de
  Sevilla y graba el fichero con dicho usuario.thy 

text Nota 1: El tiempo de realización del ejercicio es de 15:30 a 17:00.
  A continuación, se dispone de 30 minutos para su entrega en la PEV. 

text Nota 2: Además de las reglas básicas de deducción natural de la 
  lógica proposicional y de primer orden, también se pueden usar las 
  reglas notnotI y mt que demostramos a  continuación.

text Nota 3: En el proceso de corrección del ejercicio, y antes de la
  publicación de las calificaciones del mismo, se podrá requerir
  aclaraciones sobre su respuesta. Estas aclaraciones se harán por 
  alguno de los procedimientos virtuales previstos en la PEV. 

lemma notnotI: "P ⟹ ¬¬ P"
  by auto

lemma mt: "⟦F ⟶ G; ¬G⟧ ⟹ ¬F"
  by auto

text ------------------------------------------------------------------
  Se define la función
     elimina :: nat  'a list  'a list
  tal que (elimina n xs) es la lista obtenida eliminando los n primeros
  elementos de xs. Por ejemplo, 
     elimina 2 [a,c,d,b,e] = [d,b,e]
  ---------------------------------------------------------------------

fun elimina :: "nat ⇒ 'a list ⇒ 'a list" where
  "elimina n []             = []"
| "elimina 0 xs             = xs"
| "elimina (Suc n) (x # xs) = elimina n xs"

text ------------------------------------------------------------------ 
  Se define la función
     estaEn :: 'a  'a list  bool
  tal que (estaEn x xs) se verifica si el elemento x está en la lista
  xs. Por ejemplo, 
     estaEn (2::nat) [3,2,4] = True
     estaEn (1::nat) [3,2,4] = False
  ---------------------------------------------------------------------

fun estaEn :: "'a ⇒ 'a list ⇒ bool" where
  "estaEn x []       = False"
| "estaEn x (a # xs) = (a = x ∨ estaEn x xs)"

text ------------------------------------------------------------------
  Ejercicio: Demostrar que
     estaEn x (elimina n xs)  estaEn x xs

  + En lenguaje natural
  + En Isabelle/HOL, de forma detallada. Es opcional hacerlo de forma
    declarativa o aplicativa.

  Nota: Es recomendable pasar de la demostración en lenguaje natural a la 
  demostración estructurada. Y, a continuación, detallar los pasos de 
  simplificación hasta llegar a usar sólo el método (simp only:..).
 ----------------------------------------------------------------------

 Demostración en lenguaje natural



 Demostración detallada

lemma 
  "estaEn x (elimina n xs) ⟶ estaEn x xs"
  oops

text ------------------------------------------------------------------ 
  Ejercicio 2. Demostrar que si la relación binaria R verifica la 
  siguiente condición
     y z. (x. ¬R(x, y))  (x. ¬R(x, z)))
  entonces no se verifica que
    y z. x. (R(x,y)  R(x,z)))

  Nota: Hacer la demostración de forma detallada. Es opcional hacerla 
  de forma declarativa o aplicativa.
  --------------------------------------------------------------------

 Demostración detallada
lemma 
  "(∃y z. ((∀x. ¬R(x, y)) ∨ (∀x. ¬R(x, z))))
  ⟶ ¬ (∀y z. ∃x. (R(x,y) ∧ R(x,z)))"
  oops
end