Acciones

T4

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

text ‹Ejercicio 4 de Lógica Matemática y Fundamentos (26-mayo-2020)›

theory uvus
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, incluida su
   entrega en la PEV, es de 15:30 a 16:30.› 

text ‹Nota 2: El segundo ejercicio se realizará de 16:00 a 17:00,
  estando disponible desde la PEV a partir de las 17:00 .› 

text ‹Nota 3: 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 4: 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 ‹------------------------------------------------------------------
  Ejercicio. Demostrar que 
     length (elimina n xs) ≤ length xs
  ---------------------------------------------------------------------›

― ‹Demostración en lenguaje natural

›

― ‹Demostración detallada›

lemma  "length (elimina n xs) ≤ length xs"
oops


text ‹------------------------------------------------------------------ 
  Ejercicio 2. Demostrar que si se verifica 
     ∀x. (P x ⟶ (∃y. Q y))
  entonces se verifica 
     ∀x. ∃y. (P x ⟶ Q y)

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

― ‹Demostración detallada›

lemma 
  fixes P Q :: "'b ⇒ bool" 
  assumes "∀x. (P x ⟶ (∃y. Q y))"
  shows   "∀x. ∃y. (P x ⟶ Q y)"
  oops

end