<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/RA2013/index.php?action=history&amp;feed=atom&amp;title=R12</id>
	<title>R12 - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/RA2013/index.php?action=history&amp;feed=atom&amp;title=R12"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/RA2013/index.php?title=R12&amp;action=history"/>
	<updated>2026-07-17T08:31:01Z</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/RA2013/index.php?title=R12&amp;diff=656&amp;oldid=prev</id>
		<title>WikiSysop: Texto reemplazado: «isar» por «isabelle»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/RA2013/index.php?title=R12&amp;diff=656&amp;oldid=prev"/>
		<updated>2018-07-16T15:46:09Z</updated>

		<summary type="html">&lt;p&gt;Texto reemplazado: «isar» por «isabelle»&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 15:46 16 jul 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Línea 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;isar&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;isabelle&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;header {* R12: Representación de fórmulas proposicionales mediante&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;header {* R12: Representación de fórmulas proposicionales mediante&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; polinomios *}&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; polinomios *}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/RA2013/index.php?title=R12&amp;diff=522&amp;oldid=prev</id>
		<title>Jalonso: Protegió «R12» ([edit=sysop] (indefinido) [move=sysop] (indefinido))</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/RA2013/index.php?title=R12&amp;diff=522&amp;oldid=prev"/>
		<updated>2014-02-07T04:51:11Z</updated>

		<summary type="html">&lt;p&gt;Protegió «&lt;a href=&quot;/~jalonso/RA2013/index.php/R12&quot; title=&quot;R12&quot;&gt;R12&lt;/a&gt;» ([edit=sysop] (indefinido) [move=sysop] (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 04:51 7 feb 2014&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>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/RA2013/index.php?title=R12&amp;diff=520&amp;oldid=prev</id>
		<title>Jalonso: Página creada con &#039;&lt;source lang=&quot;isar&quot;&gt; header {* R12: Representación de fórmulas proposicionales mediante   polinomios *}  theory R12 imports Main  begin   text {*   El objetivo de esta relaci...&#039;</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/RA2013/index.php?title=R12&amp;diff=520&amp;oldid=prev"/>
		<updated>2014-02-07T04:49:51Z</updated>

		<summary type="html">&lt;p&gt;Página creada con &amp;#039;&amp;lt;source lang=&amp;quot;isar&amp;quot;&amp;gt; header {* R12: Representación de fórmulas proposicionales mediante   polinomios *}  theory R12 imports Main  begin   text {*   El objetivo de esta relaci...&amp;#039;&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;isar&amp;quot;&amp;gt;&lt;br /&gt;
header {* R12: Representación de fórmulas proposicionales mediante&lt;br /&gt;
  polinomios *}&lt;br /&gt;
&lt;br /&gt;
theory R12&lt;br /&gt;
imports Main &lt;br /&gt;
begin &lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  El objetivo de esta relación es definir un procedimiento para&lt;br /&gt;
  transformar fórmulas proposicionales (construidas con ⊤, ∧ y ⊕) en&lt;br /&gt;
  polinomios de la forma&lt;br /&gt;
     (p₁ ∧ … ∧ pₙ) ⊕ … ⊕ (q₁ ∧ … ∧ qₘ)&lt;br /&gt;
  y demostrar que, para cualquier interpretación I, el valor de las&lt;br /&gt;
  fórmulas coincide con la de su correspondiente polinomio. *}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Las fórmulas proposicionales pueden definirse mediante&lt;br /&gt;
  las siguientes reglas:&lt;br /&gt;
  · ⊤ es una fórmula proposicional&lt;br /&gt;
  · Las variables proposicionales p_1, p_2, … son fórmulas&lt;br /&gt;
    proposicionales,&lt;br /&gt;
  · Si F y G son fórmulas proposicionales, entonces (F ∧ G) y (F ⊕ G)&lt;br /&gt;
    también lo son. &lt;br /&gt;
  donde ⊤ es una fórmula que siempre es verdadera, ∧ es la conjunción y&lt;br /&gt;
  ⊕ es la disyunción exclusiva. &lt;br /&gt;
&lt;br /&gt;
  Definir el tipo de datos form para representar las fórmulas&lt;br /&gt;
  proposicionales usando &lt;br /&gt;
  · T en lugar de ⊤,&lt;br /&gt;
  · (Var i) en lugar de p_i,&lt;br /&gt;
  · (And F G) en lugar de (F ∧ G) y&lt;br /&gt;
  · (Xor F G) en lugar de (F ⊕ G).&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
datatype form = T | Var nat | And form form | Xor form form&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Los siguientes ejemplos de fórmulas&lt;br /&gt;
     form1 = p0 ⊕ ⊤&lt;br /&gt;
     form2 = (p0 ⊕ p1) ⊕ (p0 ∧ p1)&lt;br /&gt;
  es usará en lo que sigue.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
abbreviation form1 :: &amp;quot;form&amp;quot; where&lt;br /&gt;
  &amp;quot;form1 ≡ Xor (Var 0) T&amp;quot;&lt;br /&gt;
abbreviation form2 :: &amp;quot;form&amp;quot; where&lt;br /&gt;
  &amp;quot;form2 ≡ Xor (Xor (Var 0) (Var 1)) (And (Var 0) (Var 1))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Definir la función&lt;br /&gt;
     xor :: bool ⇒ bool ⇒ bool&lt;br /&gt;
  tal que (xor p q) es el valor de la disyunción exclusiva de p y q. Por&lt;br /&gt;
  ejemplo,&lt;br /&gt;
     xor False True = True&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
definition xor :: &amp;quot;bool ⇒ bool ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;xor x y ≡ undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Una interpretación es una aplicación de los naturales en&lt;br /&gt;
  los booleanos. Definir las siguientes interpretaciones&lt;br /&gt;
          | p0 | p1 | p2 | p3 | ...&lt;br /&gt;
     int1 | F  | F  | F  | F  | ...&lt;br /&gt;
     int2 | F  | V  | F  | F  | ...&lt;br /&gt;
     int3 | V  | F  | F  | F  | ...&lt;br /&gt;
     int3 | V  | V  | F  | F  | ...&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
abbreviation int1 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int1 x ≡ False&amp;quot;&lt;br /&gt;
abbreviation int2 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int2 ≡ int1 (1 := True)&amp;quot;&lt;br /&gt;
abbreviation int3 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int3 ≡ int1 (0 := True)&amp;quot;&lt;br /&gt;
abbreviation int4 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int4 ≡ int1 (0 := True, 1 := True)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Dada una interpretación I, el valor de de una fórmula F&lt;br /&gt;
  repecto de I, I(F), se define por&lt;br /&gt;
  · T, si F es ⊤;&lt;br /&gt;
  · I(n), si F es p_n;&lt;br /&gt;
  · I(G) ∧ I(H), si F es (G ∧ H);&lt;br /&gt;
  · I(G) ⊕ I(H), si F es (G ⊕ H).&lt;br /&gt;
&lt;br /&gt;
  Definir la función&lt;br /&gt;
     valorF :: (nat ⇒ bool) ⇒ form ⇒ bool&lt;br /&gt;
  tal que (valorF i f) es el valor de la fórmula f respecto de la&lt;br /&gt;
  interpretación i. Por ejemplo, &lt;br /&gt;
     valorF int1 form1 = True&lt;br /&gt;
     valorF int3 form1 = False&lt;br /&gt;
     valorF int1 form2 = False&lt;br /&gt;
     valorF int2 form2 = True&lt;br /&gt;
     valorF int3 form2 = True&lt;br /&gt;
     valorF int4 form2 = True&lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun valorF :: &amp;quot;(nat ⇒ bool) ⇒ form ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;valorF i f = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Un monomio es una lista de números naturales y se puede&lt;br /&gt;
  interpretar como la conjunción de variables proposionales cuyos&lt;br /&gt;
  índices son los números de la lista. Por ejemplo, el monomio [0,2,1]&lt;br /&gt;
  se interpreta como la fórmula (p0 ∧ p2 ∧ p1).  &lt;br /&gt;
&lt;br /&gt;
  Definir la función&lt;br /&gt;
     formM :: nat list ⇒ form&lt;br /&gt;
  tal que (formM m) es la fórmula correspondiente al monomio. Por&lt;br /&gt;
  ejemplo,  &lt;br /&gt;
     formM [0,2,1] = And (Var 0) (And (Var 2) (And (Var 1) T))&lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun formM :: &amp;quot;nat list ⇒ form&amp;quot; where&lt;br /&gt;
  &amp;quot;formM ns = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Definir, por recursión, la función&lt;br /&gt;
     valorM :: (nat ⇒ bool) ⇒ nat list ⇒ bool&lt;br /&gt;
  tal que (valorM i m) es el valor de la fórmula representada por el&lt;br /&gt;
  monomio m en la interpretación i. Por ejemplo, &lt;br /&gt;
     valorM int1 [0,2,1]                            = False&lt;br /&gt;
     valorM (int1(0:=True,1:=True,2:=True)) [0,2,1] = True&lt;br /&gt;
  Demostrar que, para toda interpretación i y todo monomio m, se tiene&lt;br /&gt;
  que &lt;br /&gt;
     valorM i m = valorF i (formM m)&lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun valorM :: &amp;quot;(nat ⇒ bool) ⇒ nat list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;valorM i ns = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lemma correccion_valorM:&lt;br /&gt;
  &amp;quot;valorM i m = valorF i (formM m)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Un polinomio es una lista de monomios y se puede&lt;br /&gt;
  interpretar como la disyunción exclusiva de los monomios. Por ejemplo, &lt;br /&gt;
  el polinomio [[0,2,1],[1,3]] se interpreta como la fórmula&lt;br /&gt;
  (p0 ∧ p2 ∧ p1) ⊕ (p1 ∧ p3).&lt;br /&gt;
&lt;br /&gt;
  Definir la función&lt;br /&gt;
     formP :: nat list list ⇒ form&lt;br /&gt;
  tal que (formP p) es la fórmula correspondiente al polinomio p. Por&lt;br /&gt;
  ejemplo, &lt;br /&gt;
     formP [[1,2],[3]]&lt;br /&gt;
     = Xor (And (Var 1) (And (Var 2) T)) (Xor (And (Var 3) T) (Xor T T))&lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun formP :: &amp;quot;nat list list ⇒ form&amp;quot; where&lt;br /&gt;
  &amp;quot;formP ms = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Definir la función&lt;br /&gt;
     valorP :: (nat ⇒ bool) ⇒ nat list list ⇒ bool&lt;br /&gt;
  tal que (valorP i p) es el valor de la fórmula representada por el&lt;br /&gt;
  polinomio p en la interpretación i. Por ejemplo, &lt;br /&gt;
     valorP (int1(1:=True,3:=True)) [[0,2,1],[1,3]] = True&lt;br /&gt;
  Demostrar que, para toda interpretación i y todo polinomio p, se tiene&lt;br /&gt;
  que &lt;br /&gt;
     valorM i p = valorF i (formP p)&lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun valorP :: &amp;quot;(nat ⇒ bool) ⇒ nat list list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;valorP i ms = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lemma correccion_valorP:&lt;br /&gt;
  &amp;quot;valorP i p = valorF i (formP p)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Definir la función&lt;br /&gt;
     productoM :: nat list ⇒ nat list list ⇒ nat list list&lt;br /&gt;
  tal que (productoM m p) es el producto del monomio p por el polinomio&lt;br /&gt;
  p. Por  ejemplo, &lt;br /&gt;
     productoM [1,3] [[1,2,4],[7],[4,1]] &lt;br /&gt;
     = [[1,3,1,2,4],[1,3,7],[1,3,4,1]]&lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun productoM :: &amp;quot;nat list ⇒ nat list list ⇒ nat list list&amp;quot; where&lt;br /&gt;
  &amp;quot;productoM m ns = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Demostrar que, en cualquier interpretación i, el valor &lt;br /&gt;
  de la concatenación de dos monomios es la conjunción de sus valores.&lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma valorM_conc: &lt;br /&gt;
  &amp;quot;valorM i (xs @ ys) = (valorM i xs ∧ valorM i ys)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar que, en cualquier interpretación i, el valor &lt;br /&gt;
  del producto de un monomio por un polinomio es la conjunción de sus&lt;br /&gt;
  valores. &lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma correccion_productoM: &lt;br /&gt;
  &amp;quot;valorP i (productoM m p) = (valorM i m ∧ valorP i p)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Definir la función&lt;br /&gt;
     producto :: nat list list ⇒ nat list list ⇒ nat list list&lt;br /&gt;
  tal que (producto p q) es el producto de los polinomios p y q. Por &lt;br /&gt;
  ejemplo, &lt;br /&gt;
     producto [[1,3],[2]] [[1,2,4],[7],[4,1]]&lt;br /&gt;
     = [[1,3,1,2,4],[1,3,7],[1,3,4,1],[2,1,2,4],[2,7],[2,4,1]]&lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun producto :: &amp;quot;nat list list ⇒ nat list list ⇒ nat list list&amp;quot; where&lt;br /&gt;
  &amp;quot;producto p q = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 14. Demostrar que, en cualquier interpretación i, el valor &lt;br /&gt;
  de la concatenación de dos polinomios es la disyunción exclusiva de &lt;br /&gt;
  sus valores. &lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma valorP_conc: &lt;br /&gt;
  &amp;quot;valorP i (xs @ ys) = (xor (valorP i xs) (valorP i ys))&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 15. Demostrar que, en cualquier interpretación i, el valor &lt;br /&gt;
  del producto de dos polinomios es la conjunción de sus valores. &lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma correccion_producto: &lt;br /&gt;
  &amp;quot;valorP i (producto p q) = (valorP i p ∧ valorP i q)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 16. Definir la función&lt;br /&gt;
     polinomio :: form ⇒ nat list list&lt;br /&gt;
  tal que (polinomio f) es el polinomio que representa la fórmula f. Por &lt;br /&gt;
  ejemplo, &lt;br /&gt;
     polinomio (Xor (Var 1) (Var 2))               = [[1],[2]]&lt;br /&gt;
     polinomio (And (Var 1) (Var 2))               = [[1,2]]&lt;br /&gt;
     polinomio (Xor (Var 1) T)                     = [[1],[]]&lt;br /&gt;
     polinomio (And (Var 1) T)                     = [[1]]]&lt;br /&gt;
     polinomio (And (Xor (Var 1) (Var 2)) (Var 3)) = [[1,3],[2,3]]&lt;br /&gt;
     polinomio (Xor (And (Var 1) (Var 2)) (Var 3)) = [[1,2],[3]]&lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun polinomio :: &amp;quot;form ⇒ nat list list&amp;quot; where&lt;br /&gt;
  &amp;quot;polinomio f = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 17. Demostrar que, en cualquier interpretación i, el valor &lt;br /&gt;
  de f es igual que el de su polinomio. &lt;br /&gt;
  --------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
theorem correccion_polinomio: &lt;br /&gt;
  &amp;quot;valorF i f = valorP i (polinomio f)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
</feed>