Skip to main content

Celebración del día mundial de la lógica


Decidir si es cierto que

"Existe una Universidad tal que si en dicha Universidad se celebra el Día Mundial de la Lógica (DML), entonces en todas las Universidades se celebra el DML."

En la formalización usar C(x) para representar que en la Universidad x se celebra el DML.


Soluciones

theory Celebracion_del_DML
imports Main

begin

(* 1ª solución (automática) *)
lemma "∃x. (C x ⟶ (∀y. C y))"
  by simp

(* 2ª solución (estructurada) *)
lemma "∃x. (C x ⟶ (∀y. C y))"
proof -
  have "¬ (∀y. C y) ∨ (∀y. C y)" ..
  then show "∃x. (C x ⟶ (∀y. C y))"
  proof
    assume "¬ (∀y. C y)"
    then have "∃y. ¬(C y)" by simp
    then obtain a where "¬ C a" ..
    then have "C a ⟶ (∀y. C y)" by simp
    then show "∃x. (C x ⟶ (∀y. C y))" ..
  next
    assume "∀y. C y"
    then show "∃x. (C x ⟶ (∀y. C y))" by simp
  qed
qed

(* 3ª solución (detallada con lemas auxiliares) *)

lemma aux1:
  assumes "¬ (∀y. C y)"
  shows "∃y. ¬(C y)"
proof (rule ccontr)
  assume "∄y. ¬ C y"
  have "∀y. C y"
  proof
    fix a
    show "C a"
    proof (rule ccontr)
      assume "¬ C a"
      then have "∃y. ¬ C y" by (rule exI)
      with ‹∄y. ¬ C y› show False by (rule notE)
    qed
  qed
  with assms show False by (rule notE)
qed

lemma aux2:
  assumes "¬P"
  shows   "P ⟶ Q"
proof
  assume "P"
  with assms show "Q" by (rule notE)
qed

lemma aux3:
  assumes "∄x. P x"
  shows   "∀x. ¬ P x"
proof
  fix a
  show "¬ P a"
  proof
    assume "P a"
    then have "∃x. P x" by (rule exI)
    with assms show False by (rule notE)
  qed
qed

lemma aux4:
  assumes "Q"
  shows   "∃x. (P x ⟶ Q)"
proof (rule ccontr)
  assume "∄x. (P x ⟶ Q)"
  then have "∀x. ¬ (P x ⟶ Q)" by (rule aux3)
  then have "¬ (P a ⟶ Q)" by (rule allE)
  moreover
  have "P a ⟶ Q"
  proof
    assume "P a"
    show "Q" using assms by this
  qed
  ultimately show False by (rule notE)
qed

lemma "∃x. (C x ⟶ (∀y. C y))"
proof -
  have "¬ (∀y. C y) ∨ (∀y. C y)" ..
  then show "∃x. (C x ⟶ (∀y. C y))"
  proof
    assume "¬ (∀y. C y)"
    then have "∃y. ¬(C y)" by (rule aux1)
    then obtain a where "¬ C a" by (rule exE)
    then have "C a ⟶ (∀y. C y)" by (rule aux2)
    then show "∃x. (C x ⟶ (∀y. C y))" by (rule exI)
  next
    assume "∀y. C y"
    then show "∃x. (C x ⟶ (∀y. C y))" by (rule aux4)
  qed
qed

end