con Isabelle/Isar - Dpto. Ciencias de la Computación e Inteligencia ...
con Isabelle/Isar - Dpto. Ciencias de la Computación e Inteligencia ...
con Isabelle/Isar - Dpto. Ciencias de la Computación e Inteligencia ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
10 Capítulo 1. <strong>Isabelle</strong> como un lenguaje funcional<br />
by simp<br />
lemma ¬ True = (False::bool)<br />
by simp<br />
lemma False −→ True<br />
by simp<br />
lemma ∀ x. x = x<br />
by simp<br />
lemma ∃ x. x = 1<br />
by simp<br />
1.3 Definiciones no recursivas<br />
Definición 1.3.1 (Ejemplo <strong>de</strong> <strong>de</strong>finición no recursiva). La disyunción exclusiva <strong>de</strong> A y B se<br />
verifica si una es verda<strong>de</strong>ra y <strong>la</strong> otra no lo es.<br />
<strong>de</strong>finition xor :: bool ⇒ bool ⇒ bool where<br />
xor A B ≡ (A ∧ ¬ B) ∨ (¬ A ∧ B)<br />
Lema 1.3.2 (Ejemplo <strong>de</strong> <strong>de</strong>mostración <strong>con</strong> <strong>de</strong>finiciones no recursivas). La disyunción exclusiva<br />
<strong>de</strong> dos fórmu<strong>la</strong>s verda<strong>de</strong>ras es falsa.<br />
Demostración: Por simplificación, usando <strong>la</strong> <strong>de</strong>finición <strong>de</strong> <strong>la</strong> disyunción exclusiva.<br />
lemma xor True True = False<br />
by (simp add: xor-<strong>de</strong>f )<br />
□<br />
Nota 1.3.3 (Ejemplo <strong>de</strong> ampliación <strong>de</strong> <strong>la</strong>s reg<strong>la</strong>s <strong>de</strong> simplificación). Se aña<strong>de</strong> <strong>la</strong> <strong>de</strong>finición<br />
<strong>de</strong> <strong>la</strong> disyunción exlusiva al <strong>con</strong>junto <strong>de</strong> reg<strong>la</strong>s <strong>de</strong> simplificación automáticas.<br />
<strong>de</strong>c<strong>la</strong>re xor-<strong>de</strong>f [simp]<br />
1.4 Definiciones locales<br />
Nota 1.4.1 (Variables locales). Se pue<strong>de</strong> asignar valores a variables locales mediante ’let’<br />
y usarlo en <strong>la</strong>s expresiones <strong>de</strong>ntro <strong>de</strong> ’in’.