<?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=TF</id>
	<title>TF - 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=TF"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=TF&amp;action=history"/>
	<updated>2026-07-19T09:43:38Z</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=TF&amp;diff=1265&amp;oldid=prev</id>
		<title>Mjoseh: Protegió «TF» ([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=TF&amp;diff=1265&amp;oldid=prev"/>
		<updated>2020-06-18T06:52:23Z</updated>

		<summary type="html">&lt;p&gt;Protegió «&lt;a href=&quot;/~jalonso/LMF2020/index.php/TF&quot; title=&quot;TF&quot;&gt;TF&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 06:52 18 jun 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=TF&amp;diff=1264&amp;oldid=prev</id>
		<title>Mjoseh: Página creada con «&lt;source lang = &quot;isabelle&quot;&gt; chapter ‹Expresiones booleanas y expresiones condicionales›  theory Trabajo_final imports Main  begin  text ‹El objetivo del trabajo es dem…»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=TF&amp;diff=1264&amp;oldid=prev"/>
		<updated>2020-06-18T06:52:13Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;source lang = &amp;quot;isabelle&amp;quot;&amp;gt; chapter ‹Expresiones booleanas y expresiones condicionales›  theory Trabajo_final imports Main  begin  text ‹El objetivo del trabajo es dem…»&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;
chapter ‹Expresiones booleanas y expresiones condicionales›&lt;br /&gt;
&lt;br /&gt;
theory Trabajo_final&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text ‹El objetivo del trabajo es demostrar las propiedades de los 5 &lt;br /&gt;
  ejercicios de la forma más detallada posible.›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Definición. La expresiones booleanas se definen por&lt;br /&gt;
  * las constantes booleanas son expresiones,&lt;br /&gt;
  * las variables son expresiones,&lt;br /&gt;
  * Si e es una expresión, entonces ¬e también lo es.&lt;br /&gt;
  * Si e1 y e2 son expresiones, entonces e1 ∧ e2 también lo es.&lt;br /&gt;
&lt;br /&gt;
  Definir exp_booleana como el tipo de las expresiones booleanas.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
datatype exp_booleana = Const bool &lt;br /&gt;
                      | Var nat &lt;br /&gt;
                      | Neg exp_booleana&lt;br /&gt;
                      | And exp_booleana exp_booleana&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Definición. Una interpretación es una función i que asigna a cada&lt;br /&gt;
  número natural un booleano de forma que el vlor de la variable&lt;br /&gt;
  &amp;#039;Var n&amp;#039; en la interpretación &amp;#039;i&amp;#039; es &amp;#039;i(n)&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
  Definir la función&lt;br /&gt;
     valor :: exp_booleana ⇒ (nat ⇒ bool) ⇒ bool&lt;br /&gt;
  tal que (valor e i) es el valor de la expresión booleana e en la&lt;br /&gt;
  interpretación i. Por ejemplo,&lt;br /&gt;
     value &amp;quot;(valor (Var 3) (λx. False)) &lt;br /&gt;
  es False&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
fun valor :: &amp;quot;exp_booleana ⇒ (nat ⇒ bool) ⇒ bool&amp;quot; where&lt;br /&gt;
   &amp;quot;valor (Const b) _   = b&amp;quot;&lt;br /&gt;
 | &amp;quot;valor (Var n) i     = i n &amp;quot;&lt;br /&gt;
 | &amp;quot;valor (Neg e) i     = (¬ (valor e i))&amp;quot;&lt;br /&gt;
 | &amp;quot;valor (And e1 e2) i = (valor e1 i ∧ valor e2 i)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Definición. La expresiones if se definen por&lt;br /&gt;
  * las constantes booleanas son expresiones,&lt;br /&gt;
  * las variables son expresiones,&lt;br /&gt;
  * Si e, e1 y e2 son expresiones, entonces (if e e1 e2) también lo es.&lt;br /&gt;
&lt;br /&gt;
  Definir exp_if como el tipo de las expresiones if.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
datatype exp_if = CIF bool &lt;br /&gt;
                | VIF nat &lt;br /&gt;
                | IF exp_if exp_if exp_if&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Definición. Definir la función&lt;br /&gt;
     valor_if :: exp_if ⇒ (nat ⇒ bool) ⇒ bool&lt;br /&gt;
  tal que (valor_if e i) es el valor de la expresión if e en la&lt;br /&gt;
  interpretación i.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
fun valor_if :: &amp;quot;exp_if ⇒ (nat ⇒ bool) ⇒ bool&amp;quot; where&lt;br /&gt;
   &amp;quot;valor_if (CIF b) _      = b&amp;quot;&lt;br /&gt;
 | &amp;quot;valor_if (VIF n) i      = i n&amp;quot;&lt;br /&gt;
 | &amp;quot;valor_if (IF e e1 e2) i = (if (valor_if e i) &lt;br /&gt;
                               then (valor_if e1 i) &lt;br /&gt;
                               else (valor_if e2 i))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Definición. Definir la función&lt;br /&gt;
     bool2if :: exp_booleana ⇒ exp_if&lt;br /&gt;
  tal que (bool2if e) es una expresión if equivalente a la expresión&lt;br /&gt;
  booleana e.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
fun bool2if :: &amp;quot;exp_booleana ⇒ exp_if&amp;quot; where&lt;br /&gt;
   &amp;quot;bool2if (Const b)   = CIF b&amp;quot;&lt;br /&gt;
 | &amp;quot;bool2if (Var n)     = VIF n&amp;quot;&lt;br /&gt;
 | &amp;quot;bool2if (Neg e)     = IF (bool2if e) (CIF False) (CIF True)&amp;quot;&lt;br /&gt;
 | &amp;quot;bool2if (And e1 e2) = IF (bool2if e1) (bool2if e2) (CIF False)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Ejercicio 1. Demostrar que para cualquier expresión boolena e, son&lt;br /&gt;
  equivalentes (bool2if e) y e.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
lemma valor_if_bool2if:&lt;br /&gt;
  &amp;quot;valor_if (bool2if e) ent = valor e ent&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Definición. Un expresión if, e, está en forma normal si para cada&lt;br /&gt;
  subexpresión de e de la forma (if c e1 e2) se tiene que c es una&lt;br /&gt;
  constante o una variable.&lt;br /&gt;
&lt;br /&gt;
  Definir la función&lt;br /&gt;
     es_normal :: exp_if ⇒ bool&lt;br /&gt;
  tal que (es_normal e) se verifica si e está en forma normal.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
fun es_normal :: &amp;quot;exp_if ⇒ bool&amp;quot; where&lt;br /&gt;
   &amp;quot;es_normal (CIF _)            = True&amp;quot;&lt;br /&gt;
 | &amp;quot;es_normal (VIF _)            = True&amp;quot;&lt;br /&gt;
 | &amp;quot;es_normal (IF (CIF _) e1 e2) = (es_normal e1 ∧ es_normal e2)&amp;quot;&lt;br /&gt;
 | &amp;quot;es_normal (IF (VIF _) e1 e2) = (es_normal e1 ∧ es_normal e2)&amp;quot;&lt;br /&gt;
 | &amp;quot;es_normal _                  = False&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Definición. Definir la función&lt;br /&gt;
     normal :: exp_if ⇒ exp_if&lt;br /&gt;
  tal que (normal e) es una expresión if en forma normal equivalente a&lt;br /&gt;
  la expresión e.&lt;br /&gt;
  --------------------------------------------------------------------- ›&lt;br /&gt;
&lt;br /&gt;
fun normalAux :: &amp;quot;exp_if ⇒ exp_if ⇒ exp_if ⇒ exp_if&amp;quot; where&lt;br /&gt;
   &amp;quot;normalAux (CIF b) e1 e2 = IF (CIF b) e1 e2&amp;quot;&lt;br /&gt;
 | &amp;quot;normalAux (VIF n) e1 e2 = IF (VIF n) e1 e2&amp;quot;&lt;br /&gt;
 | &amp;quot;normalAux (IF a a1 a2) e1 e2 = &lt;br /&gt;
      normalAux a (normalAux a1 e1 e2) (normalAux a2 e1 e2)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fun normal :: &amp;quot;exp_if ⇒ exp_if&amp;quot; where&lt;br /&gt;
   &amp;quot;normal (CIF b)      = CIF b&amp;quot;&lt;br /&gt;
 | &amp;quot;normal (VIF n)      = VIF n&amp;quot;&lt;br /&gt;
 | &amp;quot;normal (IF e e1 e2) = normalAux e (normal e1) (normal e2)&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 2. Demostrar que la forma normal de una expresión if es&lt;br /&gt;
  equivalente a la expresión; es decir,  &lt;br /&gt;
     valor_if (normal e) i = valor_if e i&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
lemma valor_if_normal:&lt;br /&gt;
  &amp;quot;valor_if (normal b) ent = valor_if b ent&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Ejercicio 3. Demostrar que para toda expresión if e, (normal e) está&lt;br /&gt;
  en forma normal.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
lemma es_normal_normal: &lt;br /&gt;
  &amp;quot;es_normal (normal b)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Definición. Definir la función&lt;br /&gt;
     bool2ifN :: exp_booleana ⇒ exp_if&lt;br /&gt;
  tal que (bool2ifN e) es una expresión if en forma normal equivalente a&lt;br /&gt;
  la expresión Booleana e.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
definition bool2ifN :: &amp;quot;exp_booleana ⇒ exp_if&amp;quot; where&lt;br /&gt;
  &amp;quot;bool2ifN e ≡ normal (bool2if e)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Ejercicio 4. Demostrar que para toda expresión booleana e, &lt;br /&gt;
  (bool2ifN e) está en forma normal.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
lemma es_normal_bool2ifN: &lt;br /&gt;
  &amp;quot;es_normal (bool2ifN e)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Ejercicio 5. Demostrar que para toda expresión booleana e, &lt;br /&gt;
  (bool2ifN e) es equivalente a e.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
lemma valor_if_bool2ifN: &lt;br /&gt;
  &amp;quot;valor_if (bool2ifN e) ent = valor e ent&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
</feed>