Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lógica Dinámica
Semántica de programas
En lógica clásica –y muy especialmente en teoría de modelos– se parte de
una realidad matemática conocida y para hablar de ella se introduce un lenguaje
formal. El puente entre el lenguaje formal y la realidad matemática es la noción
semántica de verdad y, basado en ella, la noción de consecuencia. El cálculo
deductivo, un conjunto de reglas de deducción, es una réplica mecanizable del
concepto intuitivo de consecuencia.
En el caso de la semántica de los lenguajes de programación, pensad que a
diferencia de lo que sucede en la lógica clásica, especialmente si se la mira desde
la perspectiva de la teoría de modelos, el formalismo y sus reglas constituyen la
realidad inmediata y en lo que hay que aplicarse es en buscarle una semántica,
unos modelos. Es evidente que el modelo real de lo que sucede, el «mundo» al
que se refieren las fórmulas de nuestros programas no es otro que el constituido
233
234 CAPÍTULO 9. LÓGICA DINÁMICA
{x = 0} W HILE x  o DO x : x − 1 OD {x = 0}
Tres preguntas fundamentales se plantean:
WHILE b DO S OD
{p ∧ b} S {p}
–––––––––––––––––—
{p} W HILE b DO S OD {p ∧ ¬b}
236 CAPÍTULO 9. LÓGICA DINÁMICA
Enfoques de este tipo son los que fructificaron a raíz de los trabajos de
Floyd y de Hoare a finales de los años sesenta. El que ellos iniciaron es posi-
blemente el programa de investigación en informática teórica más importante
que ha existido, ha sido enormemente prolífico y son incontables los métodos
–lógicas, se suelen llamar– de corrección de programas que han aflorado pues,
frecuentemente, se diseñaba una lógica específica para cada tipo de programa
–asignaciones, composición, programas tipo while, etc.– Desde los métodos
particulares y relativamente rupestres, hasta las lógicas dinámicas o las tempo-
rales, todos pueden considerarse enmarcados en el programa de Hoare-Floyd.
Su programa de investigación está basado en la lógica formal y tiene la pre-
tensión de encarar los fundamentos de la programación –hay quienes lo compa-
ran al programa de Hilbert, y no maliciosamente, pensando en su irrealizabilidad–
. Su propuesta suele presentarse diciendo que definen la semántica de los len-
guajes de programación axiomáticamente; esto es, mediante unas lógicas de co-
rrección de programas. En estas lógicas el comportamiento de los programas se
expresa mediante fórmulas adecuadas y se usan los axiomas y reglas del cálculo
de la lógica creada para demostrar la corrección de los programas, como un
teorema de cálculo introducido.
El cálculo retorna al software como un programa verificador de programas
para así ayudar al programador a comprobar si su programa original, el escrito
primitivamente en lenguaje de programación, se comporta como se esperaba.
De este programa de investigación han surgido ideas muy interesantes, útiles y
bonitas sobre construcción de lenguajes de programación lógica, y sobre espe-
cificación y verificación de software. También han contribuido notablemente a
fomentar el interés por los métodos de la lógica formal en el diseño del software.
(a ∪ b) significa «Haz a o b»
del lenguaje se hace de manera que toda fórmula represente el conjunto de los
estados en donde es verdad y que cada programa se interprete como el conjunto
de pares de estados iniciales y finales entre los que el programa nos lleva.
En particular, la interpretación del loop es la menor clausura reflexiva y
transitiva de la relación sobre la que se aplica.
∗
hprogramai := hATOM.PROGi | ⊥ | hprogramai∪hprogramai | hprogramai |
Es decir, además de las atómicas (regla F1), tenemos las fórmulas formadas
mediante la regla F2: ⊥, ¬ϕ, (ϕ ∧ ψ), (ϕ ∨ ψ), (ϕ → ψ), (ϕ ↔ ψ) y las que
usan la regla modal F3: Si ϕ es una fórmula y a es un programa, también
son fórmulas [a] ϕ y hai ϕ.
Estipulamos que son programas: (1) los programas atómicos (regla P1), (2)
los que se forman mediante la regla P2: Si a y b son programas, también lo
son: (a ∪ b), a∗ y (a; b) y (3) los obtenidos a partir de fórmulas usando la regla
del operador de test P3: Si ϕ es una fórmula, entonces (ϕ?) es un programa
242 CAPÍTULO 9. LÓGICA DINÁMICA
FÓRMULAS
ATOMOS
pª
⊥ª
ϕ
ϕ α hai α (ϕ ∧ ψ)
ψ
CONECT OPER.PROG
TEST MODAL
¬, ∨, ∧ ∪, ;
? [ ], hi
→, ↔ ∗
b
(ϕ?) a a∗ (b ∪ c)
c
ATOM
Qª
Rª
PROGRAMAS
9.4.1. Interpretación
Dada una estructura de Kripke A inductivamente se define la función
F1: =(p) = pA
P1: =(Q) = QA
9.4.2. Ejemplos
D ® ® E
1. Sea (ver figura: 9.1) A = W, QA Q∈ATOM.PROG , pA p∈ATOM.PROP con
W = {b, e} , QA A
1 = {hb, bi} y Q2 = {hb, ei}
es consecuencia global de Γ
Definición 343 ϕ \
Γ |=G ϕ ⇐⇒Df Si =(γ) = W entonces =(ϕ) = W
γ∈Γ
9.6. Cálculo
PDL es una lógica modal normal que contiene a la lógica K –esto es, las
tautologías, K, Df♦, MP y N– y los siguientes axiomas:
Ejercicio 344 Usando las reglas del cálculo es sencillo demostrar los siguientes
teoremas:
1. `P DL [([a] ϕ)?; a] ϕ
7. `P DL ¬([a] ϕ) ∨ [a] ϕ
8. `P DL [([a] ϕ)?; a] ϕ
0 =⇒ 1 =⇒ 2 =⇒ ··· =⇒ n =⇒ n+1 =⇒
|{z} |{z} |{z} |{z} |{z} |{z}
p p p p p ¬p
\
Se ve fácilmente que 0 ∈ =(σ), para cada σ ∈ Σ∗ 0 ∈ =(σ) pero
σ∈Σ∗
/ =([Q∗ ] p)
0∈
Se ve fácilmente que
A, s 1 q → [Qn ] p
9.7.2. Completud
Para demostrar la completud lo natural sería construir el modelo canónico
D ® ® E
AP DL = WP DL , QP DL Q∈ATOM.PROG pP DL p∈ATOM.PROP
tomando como universo el conjunto formado por todos los conjuntos máxima-
mente consistentes y como relaciones las definidas así
siendo
pP DL = {s ∈ WP DL | p ∈ s}
Pero esta estructura es un modelo no estándar de PDL pues aunque todos
los teoremas de PDL son verdaderos en él y falsas las fórmulas que no son
teoremas, la interpretación del loop no es la estándar; esto es, no es la menor
clausura reflexiva y transitiva sobre la relación.
Q∗AP DL ⊆ (QAP DL )∗
9.7. METATEORÍA DE LA LÓGICA DINÁMICA 249
Para demostrar completud se usará la técnica del filtrado, pero antes modi-
ficaremos el modelo canónico para obtener uno estándar, que haga falsa cierta
fórmula ϕ ∈ FORM. Para conseguirlo colapsaremos AP DL usando un con-
junto Γ adecuado, que contiene a ϕ. Las reglas de clausura de Γ son
2. [ϕ?] ψ ∈ Γ =⇒ ϕ ∈ Γ
4. [a ∪ b] ϕ ∈ Γ =⇒ [a] ϕ ∈ Γ y [b] ϕ ∈ Γ
cumple lo deseado.
AP DL , s ° ϕ syss AΓ , |s| ° ϕ
[1] van Benthem, J. [1991]. Language in Action. Categories, Lambdas and Dy-
namic Logic, Amsterdam, North-Holland.
[5] Goldblatt, R. [1992]. Logics of Time and Computation, Center for the Study
of Language and Information. Stanford. USA
[13] van Benthem, J. [1996] Exploring Logical Dynamics, CSLI, Stanford. USA
251
252 BIBLIOGRAFÍA