<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Miguel Rebollo &#187; Lógicas y métodos formales</title>
	<atom:link href="http://www.mrebollo.es/category/logicas-y-metodos-formales/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mrebollo.es</link>
	<description>Cuaderno de investigación</description>
	<lastBuildDate>Thu, 26 Jan 2012 08:33:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Lógica de predicados</title>
		<link>http://www.mrebollo.es/2009/04/logica-de-predicados/</link>
		<comments>http://www.mrebollo.es/2009/04/logica-de-predicados/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 22:16:48 +0000</pubDate>
		<dc:creator>mrebollo</dc:creator>
				<category><![CDATA[Lógicas y métodos formales]]></category>
		<category><![CDATA[indecidible]]></category>
		<category><![CDATA[logica]]></category>
		<category><![CDATA[modelo]]></category>
		<category><![CDATA[primer orden]]></category>
		<category><![CDATA[proposicional]]></category>

		<guid isPermaLink="false">http://www.mrebollo.es/?p=245</guid>
		<description><![CDATA[La lógica proposicional falla cuando desaeamos expresar cosas como todos&#8230;, sólo&#8230;, existe&#8230; La lógica de predicados, o lógica de primer orden, incluye los conceptos de predicado, variable y cuantificadores para poder representar con mayor exactitud enunciados declarativos, extendiendo así la lógica proposicional. Los predicados representan propiedades que son ciertas y se representan con letras mayúsculas, [...]]]></description>
			<content:encoded><![CDATA[<p>La <a href="http://www.mrebollo.es/2009/04/logica-proposicional/">lógica proposicional</a> falla cuando desaeamos expresar cosas como <em>todos&#8230;, sólo&#8230;, existe&#8230;</em> La <em>lógica de predicados</em>, o <em>lógica de primer orden</em>, incluye los conceptos de predicado, variable y cuantificadores para poder representar con mayor exactitud enunciados declarativos, extendiendo así la lógica proposicional. Los predicados representan propiedades que son ciertas y se representan con letras mayúsculas, <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=P%2C+Q%2C+R%2C+%5Cldots&bg=FFFFFF&fg=000000'  alt="P, Q, R, \ldots" /> Las variables son los conceptos que recojen valores concretos y se representan con letras minúsculas <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=x%2C+y%2C+z%2C+%5Cldots&bg=FFFFFF&fg=000000'  alt="x, y, z, \ldots" /> Las variables pueden ser cuantificadas usando los cuantificadores universal <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cforall&bg=FFFFFF&fg=000000'  alt="\forall" /> y existencial <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cexists&bg=FFFFFF&fg=000000'  alt="\exists" />, que se leen <em>&#8220;para todo&#8221;</em> y <em>&#8220;existe&#8221;</em> respectivamente.</p>
<p>Por ejemplo, para expresar el típico enunciado lógico (y políticamente correcto ;-) &#8220;Los humanos son mortales&#8221; necesitamos dos predicados:</p>
<p><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=H%28x%29%3A+x&bg=FFFFFF&fg=000000'  alt="H(x): x" /> es un humano</p>
<p><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M%28x%29%3A+x&bg=FFFFFF&fg=000000'  alt="M(x): x" /> es mortal.</p>
<p>Y con ellos podemos construir el enunciado</p>
<p style="text-align: center;"><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cforall+x%28H%28x%29+%5Cto+M%28x%29%29&bg=FFFFFF&fg=000000'  alt="\forall x(H(x) \to M(x))" /></p>
<p>que se leería <em>&#8220;para todo </em>x<em>, si </em>x<em> es humano entonces </em>x<em> es mortal&#8221;</em>.</p>
<p>Además de los símbolos de predicado, es posbible emplear otros símbolos adicionales, llamados funciones, que permiten escribir expresiones más compactas y más sencillas de comprender. Las funciones se representan mediante letras minúsculas. Por ejemplo, el predicado <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M%28x%2Cy%29&bg=FFFFFF&fg=000000'  alt="M(x,y)" /> significa que <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=x&bg=FFFFFF&fg=000000'  alt="x" /> es la madre de <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=y&bg=FFFFFF&fg=000000'  alt="y" />. Pero realmente estamos diciendo que <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=x&bg=FFFFFF&fg=000000'  alt="x" /> es una de las madres de <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=y&bg=FFFFFF&fg=000000'  alt="y" />, lo cual no es muy elegante porque sabemos que una persona sólo puede tener una madre (biológica). En ese caso, puede emplearse un símbolo de función <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=m%28x%29&bg=FFFFFF&fg=000000'  alt="m(x)" /> para representar a la madre de <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=x&bg=FFFFFF&fg=000000'  alt="x" />. Veamos la diferencia. Las dos expresiones siguientes:</p>
<p><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cforall+x+%5Cforall+y+%28H%28x%29+%5Cland+M%28x%2Cy%29+%5Cto+J%28x%2Cy%29%29&bg=FFFFFF&fg=000000'  alt="\forall x \forall y (H(x) \land M(x,y) \to J(x,y))" /></p>
<p><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cforall+x+%28H%28x%29+%5Cto+J%28x%2C+m%28x%29%29%29&bg=FFFFFF&fg=000000'  alt="\forall x (H(x) \to J(x, m(x)))" /></p>
<p>se leen igual: un hijo -H(x)- es más joven -J(x,y)- que su madre -M(x,y) o m(x)-.</p>
<p>Esta representación es válida sólo para denotar un único objeto; no podría usarse, por ejemplo, para representar el concepto de &#8220;hermano&#8221;. H(x) es un predicado <em>unario</em> (sólo tiene un argumento) y J(x,y) es un predicado <em>binario</em>. En general, los predicados (y también las funciones) pueden tener <em>n</em> argumentos. Al número de argumentos se le denomina <em>aridad</em>.</p>
<p>Las reglas de formación de las expresiones en lógica de primer orden son las siguientes</p>
<p><strong>Términos</strong></p>
<ul>
<li>una variable es un término</li>
<li>una constante es un término</li>
<li>si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=t_1%2C+t_2%2C+%5Cldots%2C+t_n&bg=FFFFFF&fg=000000'  alt="t_1, t_2, \ldots, t_n" /> son términos y <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=f&bg=FFFFFF&fg=000000'  alt="f" /> es una función de aridad <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=n&bg=FFFFFF&fg=000000'  alt="n" /> &gt; 0, entonces <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=f%28t_1%2C+t_2%2C+%5Cldots%2C+t_n%29&bg=FFFFFF&fg=000000'  alt="f(t_1, t_2, \ldots, t_n)" /> es un término</li>
</ul>
<p><strong>Fórmulas</strong></p>
<ul>
<li>si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=P&bg=FFFFFF&fg=000000'  alt="P" /> es un símbolo de predicado de aridad <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=n+%5Cgeq+1&bg=FFFFFF&fg=000000'  alt="n \geq 1" /> y <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=t_1%2C+t_2%2C+%5Cldots%2C+t_n&bg=FFFFFF&fg=000000'  alt="t_1, t_2, \ldots, t_n" /> son términos, entonces <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=P%28t_1%2C+t_2%2C+%5Cldots%2C+t_n%29&bg=FFFFFF&fg=000000'  alt="P(t_1, t_2, \ldots, t_n)" /> es una f.b.f.</li>
<li>si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi&bg=FFFFFF&fg=000000'  alt="\phi" /> es una f.b.f., también lo es <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28%5Cneg+%5Cphi%29&bg=FFFFFF&fg=000000'  alt="(\neg \phi)" /></li>
<li>si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi&bg=FFFFFF&fg=000000'  alt="\phi" /> y <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cpsi&bg=FFFFFF&fg=000000'  alt="\psi" /> son f.b.f., también lo son <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28%5Cphi+%5Cland+%5Cpsi%29&bg=FFFFFF&fg=000000'  alt="(\phi \land \psi)" />,</li>
<li>si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi&bg=FFFFFF&fg=000000'  alt="\phi" /> es una f.b.f. y <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=x&bg=FFFFFF&fg=000000'  alt="x" /> es una variable, entonces <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28%5Cforall+x+%5Cphi%29&bg=FFFFFF&fg=000000'  alt="(\forall x \phi)" /> y <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28%5Cexists+x+%5Cphi%29&bg=FFFFFF&fg=000000'  alt="(\exists x \phi)" /> también son f.b.f.</li>
</ul>
<p>Una variable <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=x&bg=FFFFFF&fg=000000'  alt="x" /> que aparece en una fórmula <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi&bg=FFFFFF&fg=000000'  alt="\phi" /> es una <em>variable ligada</em> si y sólo si están dentro del ámbito de un cuantificador. En otro caso diremos que es una variable <em>libre</em>.</p>
<p>De la misma forma que la semántica de la lógica proposicional se daba mediante tablas de verdad, en el caso de la lógica de predicados se hace necesario un mecanismo diferente debido a la existencia de las varaibles y la necesidad de realizar sustituciones. De manera que los símbolos de predicado y de función no se pueden evaluar simplemente a verdadero o falso, sino que es necesario disponer de un <em>modelo</em>.</p>
<p><strong>Definición 1.</strong> Sea <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=F&bg=FFFFFF&fg=000000'  alt="F" /> un conjunto de símbolos de función y <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=Pred&bg=FFFFFF&fg=000000'  alt="Pred" /> un conjunto de símbolos de predicado. Un modelo <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M&bg=FFFFFF&fg=000000'  alt="M" /> del par <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28F%2CPred%29&bg=FFFFFF&fg=000000'  alt="(F,Pred)" /> está formado por</p>
<ul>
<li>un conjunto <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=A&bg=FFFFFF&fg=000000'  alt="A" /> de valores concretos del universo</li>
<li>para cada símbolo de función 0-ario <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=f+%5Cin+F&bg=FFFFFF&fg=000000'  alt="f \in F" />, un valor concreto <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=f%5EM&bg=FFFFFF&fg=000000'  alt="f^M" /> de <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=A&bg=FFFFFF&fg=000000'  alt="A" />. <em>Nota: una función 0-aria es una constante.</em></li>
<li>para cada el resto de símbolos de función <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=f+%5Cin+F&bg=FFFFFF&fg=000000'  alt="f \in F" />, una función concreta <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=f%5EM%3AA%5En+%5Cto+A&bg=FFFFFF&fg=000000'  alt="f^M:A^n \to A" /></li>
<li>para cada símbolo de predicado <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=P+%5Cin+Pred&bg=FFFFFF&fg=000000'  alt="P \in Pred" /> un subconjunto <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=P%5EM+%5Csubseteq+A%5En&bg=FFFFFF&fg=000000'  alt="P^M \subseteq A^n" /> de n-tuplas de <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=A&bg=FFFFFF&fg=000000'  alt="A" />.</li>
</ul>
<p>De esta forma podemos calcular el valor de verdad de cualquier f.b.f. compuesta por símbolos de función y de predicado, pero todavía no podemos analizar qué ocurre cuando aparecen variables cuantificadas, que nos obligan a interpretar fórmulas de forma relativa a un entorno. Lo haremos mediante tablas de búsqueda <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=l&bg=FFFFFF&fg=000000'  alt="l" /> que asocian a cada variable <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=x&bg=FFFFFF&fg=000000'  alt="x" />  un valor <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=l%28x%29&bg=FFFFFF&fg=000000'  alt="l(x)" /> del modelo</p>
<p><strong>Definición 2. </strong>Una tabla de búsqueda o un entorno para un universo <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=A&bg=FFFFFF&fg=000000'  alt="A" /> de valores concretos es una función <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=l%3Avar+%5Cto+A&bg=FFFFFF&fg=000000'  alt="l:var \to A" /> definido del conjunto de variables <em>var</em> sobre <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=A&bg=FFFFFF&fg=000000'  alt="A" />. Denotamos con <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=l%5Bx+%5Cmapsto+a%5D&bg=FFFFFF&fg=000000'  alt="l[x \mapsto a]" /> la tabla que mapea <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=x&bg=FFFFFF&fg=000000'  alt="x" /> en <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=a&bg=FFFFFF&fg=000000'  alt="a" />.</p>
<p>Con todo esto ya se puede dar una semántica a la lógica de primer orden. Dado un modelo <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M&bg=FFFFFF&fg=000000'  alt="M" /> para un par <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28F%2CPred%29&bg=FFFFFF&fg=000000'  alt="(F,Pred)" /> y dado un entorno <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=l&bg=FFFFFF&fg=000000'  alt="l" />, se define la satisfacibilidad <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi&bg=FFFFFF&fg=000000'  alt="M \models_l \phi" /> para cada f.b.f. <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi&bg=FFFFFF&fg=000000'  alt="\phi" /> y entorno <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=l&bg=FFFFFF&fg=000000'  alt="l" />.</p>
<ul>
<li><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+P%28t_1%2Ct_2%2C%5Cldots%2Ct_n%29%3A&bg=FFFFFF&fg=000000'  alt="M \models_l P(t_1,t_2,\ldots,t_n):" /> sii <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=P%28a_1%2Ca_2%2C%5Cldots%2Ca_n%29+%5Cin+P%5EM&bg=FFFFFF&fg=000000'  alt="P(a_1,a_2,\ldots,a_n) \in P^M" />, donde los términos <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=t_1%2Ct_2%2C%5Cldots%2Ct_n&bg=FFFFFF&fg=000000'  alt="t_1,t_2,\ldots,t_n" />  se interpretan sobre <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=A&bg=FFFFFF&fg=000000'  alt="A" /> reemplazando todas las variables por sus valores de acuerdo con el entorno <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=l&bg=FFFFFF&fg=000000'  alt="l" />.</li>
<li><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cforall+x+%5Cphi%3A&bg=FFFFFF&fg=000000'  alt="M \models_l \forall x \phi:" />sii <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_%7Bl+%5Bx%5Cmapsto+a%5D%7D+%5Cphi&bg=FFFFFF&fg=000000'  alt="M \models_{l [x\mapsto a]} \phi" /> se cumple para todo <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=a+%5Cin+A&bg=FFFFFF&fg=000000'  alt="a \in A" /></li>
<li><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cexists+x+%5Cphi%3A&bg=FFFFFF&fg=000000'  alt="M \models_l \exists x \phi:" /> sii <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_%7Bl+%5Bx%5Cmapsto+a%5D%7D+%5Cphi&bg=FFFFFF&fg=000000'  alt="M \models_{l [x\mapsto a]} \phi" /> se cumple para algún <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=a+%5Cin+A&bg=FFFFFF&fg=000000'  alt="a \in A" /></li>
<li><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cneg+%5Cphi%3A&bg=FFFFFF&fg=000000'  alt="M \models_l \neg \phi:" /> sii no se da el caso de que se cumpla <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi&bg=FFFFFF&fg=000000'  alt="M \models_l \phi" />.</li>
<li><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi_1+%5Cland+%5Cphi_2%3A&bg=FFFFFF&fg=000000'  alt="M \models_l \phi_1 \land \phi_2:" /> sii se cumple  <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi_1&bg=FFFFFF&fg=000000'  alt="M \models_l \phi_1" /> y se cumple  <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi_2&bg=FFFFFF&fg=000000'  alt="M \models_l \phi_2" />.</li>
<li> <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi_1+%5Clor+%5Cphi_2%3A&bg=FFFFFF&fg=000000'  alt="M \models_l \phi_1 \lor \phi_2:" /> sii se cumple  <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi_1&bg=FFFFFF&fg=000000'  alt="M \models_l \phi_1" /> o se cumple  <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi_2&bg=FFFFFF&fg=000000'  alt="M \models_l \phi_2" />.</li>
<li><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi_1+%5Cto+%5Cphi_2%3A&bg=FFFFFF&fg=000000'  alt="M \models_l \phi_1 \to \phi_2:" /> sii <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi_2&bg=FFFFFF&fg=000000'  alt="M \models_l \phi_2" /> se cumple siempre que se cumpla  <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=M+%5Cmodels_l+%5Cphi_1&bg=FFFFFF&fg=000000'  alt="M \models_l \phi_1" />.</li>
</ul>
<p>El problema que aparece en la lógica de primer orden es que no se puede comprobar mecánicamente que <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C+%5Cldots%2C+%5Cphi_n+%5Cmodels+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2, \ldots, \phi_n \models \psi" /> en el caso general (sí que puede hacerse cuando los predicados son sólo unarios). Por eso se dice que la lógica proposicional es <strong>indecidible</strong>., porque no hay un algoritmo que tome come entrada una f.b.f. <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi&bg=FFFFFF&fg=000000'  alt="\phi" />  y termine <em>siempre</em> con una respuesta correcta que sea <em>verdadero</em> si la f.b.f. es correcta (se evalua a cierto) o <em>falso</em> en caso contrario.</p>
<p>Este mismo problema de indecidibilidad es el que tienen <acronym title="Resource Description Framework">RDF</acronym> y OWL-Full: no se puede garantizar que un proceso de razonamiento que trata de determinar la veracidad de una fórmula termine en todos los casos. Por eso se emplea habitualmente OWL-DL para razonar en la web semántica y porque la prefiero personalmente: porque es una lógica decidible y suple la pérdida de expresividad (que yo no he notado hasta ahora) con algoritmos de razonamiento que garanbtizan su terminación.</p>]]></content:encoded>
			<wfw:commentRss>http://www.mrebollo.es/2009/04/logica-de-predicados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lógica proposicional</title>
		<link>http://www.mrebollo.es/2009/04/logica-proposicional/</link>
		<comments>http://www.mrebollo.es/2009/04/logica-proposicional/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 19:50:32 +0000</pubDate>
		<dc:creator>mrebollo</dc:creator>
				<category><![CDATA[Lógicas y métodos formales]]></category>
		<category><![CDATA[logica]]></category>
		<category><![CDATA[proposicional]]></category>
		<category><![CDATA[soundness]]></category>
		<category><![CDATA[tabla de verdad]]></category>

		<guid isPermaLink="false">http://www.mrebollo.es/?p=175</guid>
		<description><![CDATA[Empecemos por el principio. La lógica proposicional es la más sencilla. El lenguaje está basado en proposiciones o enunciados declarativos que  son enunciados que pueden evaluarse como ciertos o falsos. Normalmente, se emplean símbolos distintos p, q, r,&#8230; para cada enunciado y a partir de ellos se pueden generar expresiones más complejas con operadores lógicos de la forma habitual, usando . [...]]]></description>
			<content:encoded><![CDATA[<p>Empecemos por el principio. La lógica proposicional es la más sencilla. El lenguaje está basado en proposiciones o enunciados declarativos que  son enunciados que pueden evaluarse como ciertos o falsos. Normalmente, se emplean símbolos distintos <em>p, q, r,&#8230;</em> para cada enunciado y a partir de ellos se pueden generar expresiones más complejas con operadores lógicos de la forma habitual, usando <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cland%2C+%5Clor%2C+%5Cneg%2C+%5Cto&bg=FFFFFF&fg=000000'  alt="\land, \lor, \neg, \to" />. Por ejemplo, <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28p+%5Cland+q%29+%5Cto+%28%5Cneg+r+%5Clor+q%29&bg=FFFFFF&fg=000000'  alt="(p \land q) \to (\neg r \lor q)" />. Una fórmula bien formada (f.b.f.) se construye empleando exclusivamente las reglas siguientes:</p>
<ul>
<li>cualquier átomo <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=p%2C+q%2C+r%2C+%5Cldots&bg=FFFFFF&fg=000000'  alt="p, q, r, \ldots" /> es una f.b.f.</li>
<li>si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi&bg=FFFFFF&fg=000000'  alt="\phi" /> es una f.b.f., también lo es <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28%5Cneg%5Cphi%29&bg=FFFFFF&fg=000000'  alt="(\neg\phi)" /></li>
<li>si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi%2C+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi, \psi" /> son f.b.f., también lo es <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28%5Cphi+%5Cland+%5Cpsi+%29&bg=FFFFFF&fg=000000'  alt="(\phi \land \psi )" /></li>
<li>si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi%2C+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi, \psi" /> son f.b.f., también lo es <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28%5Cphi+%5Clor+%5Cpsi+%29&bg=FFFFFF&fg=000000'  alt="(\phi \lor \psi )" /></li>
<li>si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi%2C+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi, \psi" /> son f.b.f., también lo es <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28%5Cphi+%5Cto+%5Cpsi+%29&bg=FFFFFF&fg=000000'  alt="(\phi \to \psi )" /></li>
</ul>
<p>Otra forma de indicar estas reglas de construcción es usar una gramática BNF, de la forma</p>
<p style="text-align: center;"><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi+%3A%3A%3D+p+%5Cmid+%28%5Cneg+%5Cphi%29+%5Cmid+%28%5Cphi+%5Cland+%5Cphi%29+%5Cmid+%28%5Cphi+%5Clor+%5Cphi%29%5Cmid+%28%5Cphi+%5Cto+%5Cphi%29&bg=FFFFFF&fg=000000'  alt="\phi ::= p \mid (\neg \phi) \mid (\phi \land \phi) \mid (\phi \lor \phi)\mid (\phi \to \phi)" /></p>
<p style="text-align: left; ">La semántica de las expresiones anteriores viene dada por la <a href="http://es.wikipedia.org/wiki/Tabla_de_valores_de_verdad">tabla de verdad</a> correspondiente, que examina el valor de verdad de la expresión <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi&bg=FFFFFF&fg=000000'  alt="\phi" /> a partir de todas las combinaciones posibles de los valores de verdad de las proposiciones atómicas. Por ejemplo, para la expresión anterior  <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28p+%5Cland+q%29+%5Cto+%28%5Cneg+r+%5Clor+q%29&bg=FFFFFF&fg=000000'  alt="(p \land q) \to (\neg r \lor q)" />, la tabla de verdad equivalente sería <h2 class="wp-table-reloaded-table-name-id-1 wp-table-reloaded-table-name">Tabla de verdad</h2>

<table id="wp-table-reloaded-id-1-no-1" class="wp-table-reloaded wp-table-reloaded-id-1">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">p</th><th class="column-2">q</th><th class="column-3">r</th><th class="column-4">¬r</th><th class="column-5">p∧q</th><th class="column-6">¬r∨q</th><th class="column-7">(p∧q)→(¬r∨q)</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">T</td><td class="column-2">T</td><td class="column-3">T</td><td class="column-4">F</td><td class="column-5">T</td><td class="column-6">T</td><td class="column-7">T</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">T</td><td class="column-2">T</td><td class="column-3">F</td><td class="column-4">T</td><td class="column-5">T</td><td class="column-6">T</td><td class="column-7">T</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">T</td><td class="column-2">F</td><td class="column-3">T</td><td class="column-4">F</td><td class="column-5">F</td><td class="column-6">F</td><td class="column-7">T</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">T</td><td class="column-2">F</td><td class="column-3">F</td><td class="column-4">T</td><td class="column-5">F</td><td class="column-6">T</td><td class="column-7">T</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">F</td><td class="column-2">T</td><td class="column-3">T</td><td class="column-4">F</td><td class="column-5">F</td><td class="column-6">T</td><td class="column-7">T</td>
	</tr>
	<tr class="row-7 odd">
		<td class="column-1">F</td><td class="column-2">T</td><td class="column-3">F</td><td class="column-4">T</td><td class="column-5">F</td><td class="column-6">T</td><td class="column-7">T</td>
	</tr>
	<tr class="row-8 even">
		<td class="column-1">F</td><td class="column-2">F</td><td class="column-3">T</td><td class="column-4">F</td><td class="column-5">F</td><td class="column-6">F</td><td class="column-7">T</td>
	</tr>
	<tr class="row-9 odd">
		<td class="column-1">F</td><td class="column-2">F</td><td class="column-3">F</td><td class="column-4">T</td><td class="column-5">F</td><td class="column-6">T</td><td class="column-7">T</td>
	</tr>
</tbody>
</table>
</p>
<p style="text-align: left;">Las reglas de deducción nos permiten construir sistemas de argumentación basados en la lógica, de modo que podemos llegar a una conclusión <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cpsi&bg=FFFFFF&fg=000000'  alt="\psi" /> (podemos deducir <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cpsi&bg=FFFFFF&fg=000000'  alt="\psi" />) a partir de una serie de proposiones <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n+&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n " />. Lo representaremos como </p>
<p style="text-align: center;"><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n+%5Cvdash+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n \vdash \psi" /></p>
<p style="text-align: left; ">Por otro lado, si además para todas las valuaciones en las que las proposiciones <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n+&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n " /> se evalúan a T, <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cpsi&bg=FFFFFF&fg=000000'  alt="\psi" /> también se evalúa a T, entonces se cumple </p>
<p style="text-align: center;"><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n+%5Cmodels+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n \models \psi" /></p>
<p style="text-align: left;">donde <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cmodels+&bg=FFFFFF&fg=000000'  alt="\models " /> es la relación de equivalencia semántica. A partir de estos dos conceptos, deducción y equivalencia semántica, puede estudiarse la corrección <em>(soundness)</em> y la completitud <em>(completeness)</em> de la lógica proposicional. Suelen definirse a partir de estos teoremas</p>
<p style="text-align: left; "><strong>Teorema 1 (corrección)</strong>. Sean <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n" /> y <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cpsi+&bg=FFFFFF&fg=000000'  alt="\psi " /> fórmulas proposicionales. Si <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n+%5Cvdash+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n \vdash \psi" /> es válido entonces se cumple <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n+%5Cmodels+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n \models \psi" />.</p>
<p style="text-align: left; ">Básicamente, el Teorema 1 quiere decir que todo aquello que se puede deducir a partir de las proposiciones utilizando las reglas de inferencia mantiene el valor de verdad de las proposiciones. O dicho de otra manera, todo lo que se puede deducir es cierto.</p>
<p style="text-align: left; "><strong>Teorema 2 (completitud)</strong>. Sean <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n" /> y <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cpsi+&bg=FFFFFF&fg=000000'  alt="\psi " /> fórmulas proposicionales. Si se cumple <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n+%5Cmodels+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n \models \psi" /> entonces existe una prueba que permite deducir <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cphi_1%2C+%5Cphi_2%2C%5Cldots%2C%5Cphi_n+%5Cvdash+%5Cpsi&bg=FFFFFF&fg=000000'  alt="\phi_1, \phi_2,\ldots,\phi_n \vdash \psi" />.</p>
<p style="text-align: left; ">De la misma forma, el Teorema 2 quiere decir que si dos expresiones tienen el mismo valor de verdad, podríamos encontrar una argumentación que nos permita deducir una de la otra. O dicho de otra forma, todo lo que es cierto puede deducirse.</p>]]></content:encoded>
			<wfw:commentRss>http://www.mrebollo.es/2009/04/logica-proposicional/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lógica para informáticos</title>
		<link>http://www.mrebollo.es/2009/04/logica-para-informaticos/</link>
		<comments>http://www.mrebollo.es/2009/04/logica-para-informaticos/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 18:29:30 +0000</pubDate>
		<dc:creator>mrebollo</dc:creator>
				<category><![CDATA[Lógicas y métodos formales]]></category>

		<guid isPermaLink="false">http://www.mrebollo.es/?p=172</guid>
		<description><![CDATA[Con esta anotación voy a empezar una serie sobre lógicas y métodos formales a modo de resumen, porque luego siempre me ocurre lo mismo: cuando necesito algo tengo que rebuscar en libros y apuntes cosas que ya he leído mil veces. Y si además esto te sirve para algo, pues me alegraré enormemente :-) La [...]]]></description>
			<content:encoded><![CDATA[<p>Con esta anotación voy a empezar una serie sobre lógicas y métodos formales a modo de resumen, porque luego siempre me ocurre lo mismo: cuando necesito algo tengo que rebuscar en libros y apuntes cosas que ya he leído mil veces. Y si además esto te sirve para algo, pues me alegraré enormemente :-)</p>
<p>La es ir hablando de lógica proposicional, lógica de predicados, lógica modal (en general y también algo sobre LTL, CTL y CTL*) y lógica de descripción.</p>
<p>Pero si no puedes esperar al resumen o quieres saber más cosas, te recomiendo que te leas el libro</p>
<p>Huth, Michael y Mark Ryan: <a href="http://www.cambridge.org/catalogue/catalogue.asp?isbn=052154310X" target="_blank">Logic in Computer Science. Modelling and Reasoning about Systems</a>.- Cambridge University Press, 2004.</p>]]></content:encoded>
			<wfw:commentRss>http://www.mrebollo.es/2009/04/logica-para-informaticos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Temporal Logic of Rewriting</title>
		<link>http://www.mrebollo.es/2009/01/the-temporal-logic-of-rewriting/</link>
		<comments>http://www.mrebollo.es/2009/01/the-temporal-logic-of-rewriting/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 11:31:51 +0000</pubDate>
		<dc:creator>mrebollo</dc:creator>
				<category><![CDATA[Conferencias/Charlas]]></category>
		<category><![CDATA[Lógicas y métodos formales]]></category>
		<category><![CDATA[ctl]]></category>
		<category><![CDATA[logica]]></category>
		<category><![CDATA[meseguer]]></category>
		<category><![CDATA[rewriting]]></category>
		<category><![CDATA[tlr]]></category>

		<guid isPermaLink="false">http://www.mrebollo.es/?p=89</guid>
		<description><![CDATA[Charla invitada de José Meseguer en el DSIC. Puede que sea útil para la formalización que queremos hacer de los servicios semánticos para Thomas incluyendo aspectos normativos. Como aún no ha empezado, os dejo el resumen. In this talk, we present the temporal logic of rewriting TLR*. Syntactically, TLR* is a very simple extension of [...]]]></description>
			<content:encoded><![CDATA[<p>Charla invitada de <a href="http://formal.cs.uiuc.edu/meseguer/" target="_blank">José Meseguer</a> en el <a href="http://www..dsic.upv.es" target="_blank">DSIC</a>. Puede que sea útil para la formalización que queremos hacer de los servicios semánticos para Thomas incluyendo aspectos normativos. Como aún no ha empezado, os dejo el resumen.</p>
<blockquote><p><em>In this talk, we present the temporal logic of rewriting TLR*. Syntactically, TLR* is a very simple extension of CTL* which just adds action atoms, in the form of spatial action patterns, to CTL*. Semantically and pragmatically, however, when used together with rewriting logic as a &#8220;tandem&#8221; of system specification and property specification logics, it has substantially more expressive power than purely state-based logics like CTL* , or purely action-based logics like A-CTL*. Furthermore, it avoids the system/property mismatch problem experienced in state-based or action-based logics, which makes many useful properties inexpressible in those frameworks without unnatural changes to a system&#8217;s specification. The advantages in expresiveness of TLR* are gained without losing the ability to use existing tools and algorithms to model check its properties: a faithful translation of models and formulas is given that allows verifying TLR* properties with CTL* model checkers.</em></p></blockquote>
<p>El model checking se ha usado con éxito sobre lógicas modales (LTL, CTL y CTL*) basadas en estados. Por otro lado, las lógicas de acción como HML ó A-CTL* permiten superar algunas de sus limitaciones, pero sin poder expresar propiedades sobre estados.</p>
<p>Las especificaciones formales tienen dos tareas:</p>
<ol>
<li>especificación del sistema</li>
<li>especificación de las propiedades</li>
</ol>
<p>Y la verificación trata de demostrar que una especificación satisface una determinada propiedad <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cmathcal%7BS%7D+%5Cmodels+%5Cvarphi&bg=FFFFFF&fg=000000'  alt="\mathcal{S} \models \varphi" />. El problema es que las lógicas usadas en cada parte no &#8220;encajan&#8221; bien, de forma que en ocasiones es necesario inventarse unas especificaciones y unas fórmulas distintas. Por ejemplo, en una lógica basada en estados como CTL no se puede hablar de acciones, por lo que es necesario añadir artificialmente variables con historia para realizar una traza de las acciones que se han aplicado. Los tandems de lógicas, como Kripke/CTL*, ó LTS/HML son muy utilizados pero adolecen de este problema. Se busca un tandem <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cmathcal%7BL%7D%2F+%5Cmathcal%7BL%7D&bg=FFFFFF&fg=000000'  alt="\mathcal{L}/ \mathcal{L}" />&#8217; más expresivo que permita en ambos casos expresar propiedades basadas en estados y en acciones. La propuesta es usar un tandem RewritingLogic/TLR*. Con una teoría de reescritura <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cmathcal%7BR%7D%3D%28%5CSigma%2C+E%2C+R%29&bg=FFFFFF&fg=000000'  alt="\mathcal{R}=(\Sigma, E, R)" /> que generaliza la representación de estados y acciones además de concurrencia real. Y por otra parte TRL* es una generalización de CTL* y A-CTL*.</p>
<p>TRL* es una lógica muy sencilla y muy semejante a CTL*. Simplemente añade una acción espacial <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cdelta&bg=FFFFFF&fg=000000'  alt="\delta" /> que indica cómo y donde se aplican las reglas (reglas de reescritura etiquetadas) <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=l%3At%28x_1%2C%5Cldots%2Cx_n%29+%5Crightarrow+t&bg=FFFFFF&fg=000000'  alt="l:t(x_1,\ldots,x_n) \rightarrow t" />&#8217;<img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28x_1%2C%5Cldots%2Cx_n%29&bg=FFFFFF&fg=000000'  alt="(x_1,\ldots,x_n)" />.</p>
<p>Los modelos de TRL* se interpretan sobre una teoría de reescritura <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cmathcal%7BR%7D&bg=FFFFFF&fg=000000'  alt="\mathcal{R}" />. Las fórmulas de camino se interpretan sobre computaciones <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%28%5Cpi%2C%5Cgamma%29&bg=FFFFFF&fg=000000'  alt="(\pi,\gamma)" /> de la forma</p>
<p><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cpi%280%29+%5Cxrightarrow%7B%5Cgamma%280%29_1%7D+%5Cpi%281%29+%5Cxrightarrow%7B%5Cgamma%281%29_1%7D%5Cpi%282%29&bg=FFFFFF&fg=000000'  alt="\pi(0) \xrightarrow{\gamma(0)_1} \pi(1) \xrightarrow{\gamma(1)_1}\pi(2)" /> <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cldots+%5Cpi%28n%29+%5Cxrightarrow%7B%5Cgamma%28n%29_1%7D+%5Cpi%28n%2B1%29&bg=FFFFFF&fg=000000'  alt="\ldots \pi(n) \xrightarrow{\gamma(n)_1} \pi(n+1)" /> <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cldots&bg=FFFFFF&fg=000000'  alt="\ldots" /></p>
<p>La semántica de nuevo es la misma que CTL*, añadiendo la interpretación de la nueva primitiva <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cdelta&bg=FFFFFF&fg=000000'  alt="\delta" />. La expresividad se muestra con un ejemplo simple: un protocolo cliente-servidor con paso de mensajes asíncrono y tolerante a fallos. Por ejemplo, con una lógica como CTL* no se puede demostrar una propiedad de equidad <em>(fairness)</em> como que eventualmente un cliente <em>b</em> va a recibir un mensaje de confirmación del servidor <em>a</em>. Con lógicas basadas en estados no podemos hablar de qué reglas se han aplicado para llegar hasta allí (de forma directa).</p>
<p>Pero el model checking sobre CTL* es muy eficiente, así que es interesante poder reducir automáticamente las propiedades en TRL* a una lógica temporal basada en estados. Muestra de nuevo el ejemplo anterior, adaptado al nuevo sistema de reescritura. Lo interesante es cómo añade una componente con &#8220;memoria&#8221; que indica quién ha realizado la última acción.</p>
<p><img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cmathcal%7BR%7D%2Ct+%5Cmodels+%5Cvarphi&bg=FFFFFF&fg=000000'  alt="\mathcal{R},t \models \varphi" /> <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Ciff&bg=FFFFFF&fg=000000'  alt="\iff" /> <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cmathcal%7BR%7D_w%2C+%28t%2C%5Cdelta%29+%5Cmodels+&bg=FFFFFF&fg=000000'  alt="\mathcal{R}_w, (t,\delta) \models " /> <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cwidetilde%7B%5Cvarphi%7D&bg=FFFFFF&fg=000000'  alt="\widetilde{\varphi}" /></p>
<p>Básicamente, lo que hace es sustituir las acciones por un <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cbigcirc&bg=FFFFFF&fg=000000'  alt="\bigcirc" /> <em>(next)</em> con un predicado del mismo nombre que se considera no como la ejecución de la acción, sino como una comprobación de que la acción se ha ejecutado. Este sistema genera estados infinitos, pero puede solucionarse mediante una abstracción ecuacional que lo reduzca a un sistema de estados finitos (eliminando la &#8220;recursividad&#8221;). Pero esto puede hacer que el sistema colapse determinados estados que hagan que el sistema ya no sea coherente, por lo que será necesario añadir <strong>manualmente</strong> algunas reglas (en el ejemplo, acerca de la posible pérdida de los mensajes.</p>
<p>Esta no es la única aproximación que permite integrar estados y acciones. Nombra</p>
<ul>
<li>modal <img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Cmu&bg=FFFFFF&fg=000000'  alt="\mu" />-calculus</li>
<li>extensiones de A-CTL* (Fantechi y también Pecheur y Raimondi)</li>
<li>Propositional dynamic logic</li>
<li>VLRL</li>
<li>Spacial logic for concurrency (Caires y Cardelli)</li>
<li>Temporal Action Logic (Lamport)</li>
</ul>
<p>Uno de los trabajos pendientes es poder comprobar las propiedades directamente sobre TRL*. Con eso se eliminarían las etiquetas que ahora es necesario incluir en los estados de CTL*. Además, sería mucho más eficiente y se podrían eliminar también los problemas/transformaciones necesarias para tratar con los estados infinitos. Por cierto, que los demostradores están escritos en C++.</p>
<p>Después de oirlo (y de recordar muchas cosas que casi se me habían olvidado), se me ocurren muchas cosas, y no todas aplicables a la especificación de servicios.</p>
<p>Una de ellas es ver cómo &#8220;casa&#8221; esta forma de especificar los problemas con la TBox y la ABox de las lógicas DL. Posiblemente sea suficiente con usar LTL como extensión temporal. ¿Y qué tal un sistema de reescritura que pase de TRL al formalismo de SWRL-Tab?</p>
<p><strong>Para saber más&#8230;</strong></p>
<p>J. Meseguer: <a href="http://www.cs.uiuc.edu/research/techreports.php?report=UIUCDCS-R-2007-2815&amp;download=pdf" target="_blank">The Temporal Logic of Rewriting</a>.- Tech. Report UIUCDCS-R-2007-2815. Dept of Computer Science. Univ. Illinois. Feb.  2007: Urbana-Champaign</p>]]></content:encoded>
			<wfw:commentRss>http://www.mrebollo.es/2009/01/the-temporal-logic-of-rewriting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

