Professional Documents
Culture Documents
Qué es la lógica
Uno de los objetivos centrales de la lógica es la teoría de la demostra-
ción, que intuitivamente se puede ver como el estudio de los argumentos
correctos. Sin embargo, la corrección de un argumento (al menos para la
lógica) no depende del contenido de éste, sino de su forma. Consideremos
el ejemplo clásico de argumento correcto:
5
6 ÍNDICE GENERAL
Sócrates es un hombre.
En consecuencia
Sócrates es mortal.
El Jabberwock es un borogovo.
En consecuencia
El Jabberwock es frumoso.
Una sintaxis formal, es decir, con reglas precisas que permiten deter-
minar sin ambigüedad qué cadenas de símbolos de un alfabeto dado
pertenecen al lenguaje.
Lógica y computación
Sin embargo, hasta el momento no se ha explicado de manera más pre-
cisa cuál es la relación entre la lógica y la computación. Esta relación la
podemos ver en tres niveles al menos:
1. Ambas tratan de lenguajes formales.
2. Como ya se dijo, la lógica se aplica en áreas específicas de la com-
putación: especificación, verificación y transformación de programas;
programación lógica y bases de datos; sistemas expertos e inteligencia
artificial, etc.
8 ÍNDICE GENERAL
Inducción y recursión
R0 = f(a, a) j a 2 ag
R1 = R
9
10 CAPÍTULO 1. INDUCCIÓN Y RECURSIÓN
R+ =
[
Rn+1 = Rn [ f(a, c) j 9b . (a, b) 2 Rn ^ (b, c) 2 Rn g
Rn+1
R =
n[2N R n
n 2N
En matemáticas hay un tipo de relaciones muy comunes llamadas órde-
nes. Sin embargo, los órdenes vienen en distintos sabores.
1. mínimo sii 8 y 2 X . x 6= y ) x y.
2. máximo sii 8 y 2 X . x 6= y ) y x.
3. minimal sii :9 y 2 X . x 6= y ^ y x.
4. maximal sii :9 y 2 X . x 6= y ^ x y.
pre sii 9
. =
^
6= .
Puede verificarse fácilmente que pre es un orden bien fundado y que su
mínimo en es , mientras que en + no tiene mínimo sino varios mini-
males, a saber, los elementos de .
Teorema 1.1.6 Sea una relación bien fundada. Entonces: (a) no es refle-
xiva ni simétrica; (b) su cerradura transitiva es bien fundada; (c) los órdenes
lexicográfico y por coordenadas basados en son bien fundados; (d) es un
orden parcial.
a a.
Del mismo modo, si fuera simétrica, basta con tomar dos elementos a y
b tales que a b:
b a b,
para tener otra cadena infinita.
(b) Supongamos que la relación es bien fundada. Si tenemos una
cadena
+ ai + + a0,
y suponemos que es descendente infinita, entonces para todo i existen ai0 =
ai , . . . , aim = ai+1 tales que
aim ai
1.1. RELACIONES E INDUCCIÓN BIEN FUNDADAS 13
b1 b0 ,
lo cual no es posible. Por otro lado, suponer que podemos encontrar un
número infinito de diferentes ai nos lleva a otra cadena infinita
a1 a0 ,
lo que tampoco es posible. Por lo tanto, lex tampoco contiene cadenas
infinitas descendentes.
(d) Es claro que la cerradura transitiva y reflexiva tiene dos de las pro-
piedades de un orden parcial. La antisimetría viene del hecho de que si
tenemos que a b y b a y no fuera el caso que a = b, se podría formar
una cadena descendente infinita en siguiendo el método de (a).
ai a0 ,
basta con que tomemos el conjunto de elementos en la cadena que por
hipótesis debe de tener un elemento minimal y, en consecuencia, la cadena
no puede descender infinitamente.
(i) 9b 2 A . b m;
(ii) :9b 2 A . b m.
En el primer caso, por hipótesis b m ) P(b) y, dada la hipótesis prin-
cipal, P(m), lo que contradice la suposición. En el segundo, el enunciado
((8b 2 A . b a ) P(b))
sería verdadero por vacuidad, y como P(m) es falso, entonces todo el enun-
ciado sería falso. Pero en ese caso, sabemos que no existiría a 2 A tal que
P( A) y, en consecuencia,
(8a 2 A . P(a))
1.2. CONJUNTOS DEFINIDOS INDUCTIVAMENTE 15
X0 = X
X+ =
[
Xi+1 = Xi [ f fkn ( x1 , : : : , xn ) j fkn
Xi .
2 F ^ x 1 , : : : , x n 2 Xi g
i2N
Definición 1.2.3 Sea X U y sea F = f fin : U n ! U g un conjunto de
funciones y sea X la familia de conjuntos inductivos en X bajo F. La cerradura
\ Y.
inductiva de X bajo F, construida de arriba hacia abajo es el conjunto
X+ =
Y 2X
Los dos métodos se usan con frecuencia. El teorema 1.2.4 nos dice que
son equivalentes.
:S () = :
_S ( , ) = ( _ ).
Sea Pa = f p, q, r, p1 , : : :g el conjunto básico. Entonces el conjunto fórmulas
del cálculo de proposiciones, P, se puede definir usando los dos métodos:
P0 = Pa
1.2. CONJUNTOS DEFINIDOS INDUCTIVAMENTE 17
P+ =
\
P = P+ = P+
Y,
Y 2P
A ::= N j X j A + A j A A j A A
X ::= x j y j z j xN j yN j zN
con N 2 Z. Este último conjunto no es inductivo en realidad (su construc-
ción se realiza en un solo paso), pero Z y EA sí lo son. Veamos el caso de
EA. Nuevamente, se comienza con un conjunto básico: EA0 = Z [ Var y un
conjunto de funciones que nos dan nuevas expresiones a partir de otras ya
existentes:
+ S ( , ) = +
S ( , ) =
S ( , ) = .
y se obtienen así las expresiones aritméticas EA = EA+ = EA+ .
En algunos casos, el conjunto inductivo se genera a partir de un con-
junto básico y otro conjunto ajeno. Un ejemplo es el conjunto de listas de
naturales L(N ). En este caso partimos de un conjunto básico con un solo
elemento, la lista vacía: [ ℄ y las funciones de agregación de elementos y
concatenación de listas:
n :: [n1 : : : nn ℄ = [n n1 : : : nn ℄
[ ℄ ++ l = l ++ [ ℄ = l
18 CAPÍTULO 1. INDUCCIÓN Y RECURSIÓN
(n :: l) ++ l0 + l0 )
= n :: (l +
f ( x) = x2
o varias ecuaciones
!0 = 1
1.3. FUNCIONES RECURSIVAS Y CONJUNTOS INDUCTIVOS 19
!(n + 1) = !n (n + 1)
El último ejemplo ilustra además una posibilidad más: las definiciones pue-
den ser recursivas, es decir, la función definida puede aparecer no sólo del
lado izquierdo, sino también del lado derecho de la ecuación que la define.
Sin embargo, es muy fácil cometer “errores” en las definiciones recursivas:
g( x) = g( x + 1)
y también
= 5 Z 2 = 10
Aunque no hay condiciones necesarias para saber si una función recursiva
está bien definida, la definición 1.3.1 y el teorema 1.3.2 nos dan condi-
ciones suficientes. El concepto clave es la generación libre de un conjunto
inductivo:
Definición 1.3.1 Sean A un conjunto, X A y F = f fin : An ! Ag un
conjunto de funciones. Se dice que X+ (o X + ) es generado libremente por X y
F sii se cumplen las siguientes condiciones:
(i) La restricción de toda f n 2 F a X+n es inyectiva.
(ii) Para todas fkm y fin 2 F, si fkm = 6 fin entonces fkm( X+ ) \ fin ( X+) = ;.
(iii) Los elementos de X son realmente básicos, es decir, para toda fin 2 F y
para todas x1 , . . . , xn 2 X+ , se tiene que fin ( x1 , : : : , xn ) 62 X.
En el caso de EA, el conjunto no se generó libremente, pues no se cum-
ple con la condición (ii). Por ejemplo, la expresión 2 + 3 2 se puede
generar de dos maneras, a saber, +S (2, 3 2) y S (2 + 3, 2), por lo que
las imágenes de +S y S no son ajenas. Este problema es muy común cuan-
do se trata de evaluar operaciones con más de un argumento. La solución
más general consiste en encerrar entre paréntesis las expresiones genera-
das por las funciones de tal forma que se impone un orden de evaluación.
De esta manera, se redefinen las funciones para expresiones aritméticas:
+ S ( , ) = ( + )
S ( , ) = ( )
S ( , ) = ( )
y la ambigüedad desaparece. Se deja como ejercicio para el lector que la
nueva definición cumple con las condiciones (i)–(iii) de la definición 1.3.1.
En cuanto a las listas, la definición que se dio no cumple ni con (i) ni
con (ii):
+[
l+ ℄ = [ ℄ ++ l = l
0 :: [ ℄ = [ ℄ ++ [0℄
Aquí el problema es la función + +. Una nueva definición de listas en la que
la única función constructora es :: resuelve el problema (y el lector puede
verificarlo en un ejercicio fácil).
1.3. FUNCIONES RECURSIVAS Y CONJUNTOS INDUCTIVOS 21
donde Æ ( fin ) = gm
k.
X X+
ĥ
h
Que quiere decir que para llegar al vértice marcado con B partiendo del
vértice X se puede ir directamente a través de h o indirectamente a través
de i, primero, y ĥ, después, y el resultado será el mismo. La cláusula (ii)
del teorema dice, a su vez:
22 CAPÍTULO 1. INDUCCIÓN Y RECURSIÓN
fin
X+n X+
ĥn ĥ
Bn X+
Æ ( fin )
h0 = h
ĥ = hi
[
hi+1 = hi [ f( fin ( x1 , : : : , xn), gnk (hi ( x1 ), : : : , hi ( xn ))) j x1 , : : : , xn 2 dom(hi)g
2N
i
1.3. FUNCIONES RECURSIVAS Y CONJUNTOS INDUCTIVOS 23
, S ( + ), ( ), ( ).
Supóngase que ( + ) tiene más paréntesis que se abren de los que se cie-
rran. Dado que el primer paréntesis y el último de la expresión se cancelan
1.3. FUNCIONES RECURSIVAS Y CONJUNTOS INDUCTIVOS 25
Lenguajes de programación
27
28 CAPÍTULO 2. LENGUAJES DE PROGRAMACIÓN
a ::= n j x j (a + a0 ) j (a a0 ) j (a a0 )
!
La forma concreta de las expresiones y , así como las transiciones acep-
tables, se definirán más adelante.
IMP es un lenguaje imperativo típico: el comando básico es la asignación
de valor a las variables de la memoria de la computadora. Para definir
2.1. PROGRAMACIÓN IMPERATIVA 29
hn, i ! n h x, i ! ( X )
ha0, i ! n0 ha1, i ! n1 n0 op n1 = n
ha0 op a1, i ! n
En esta regla op puede ser +, o y op, +Z, Z o Z (por conveniencia,
ambos operadores deben coincidir).
En las expresiones booleanas, una transición es hb, i ! T, con b 2 EB,
2 y T 2 fV, Fg. Las reglas operacionales son:
hV, i ! V hF, i ! F
ha0, i ! n ha1, i ! m
ha0 = a1, i ! V sii n y m son iguales
ha0, i ! n ha1, i ! m
ha0 = a1, i ! F sii n y m no son iguales
30 CAPÍTULO 2. LENGUAJES DE PROGRAMACIÓN
ha0, i ! n ha1, i ! m
ha0 a1, i ! V sii n es menor o igual a m
ha0, i ! n ha1, i ! m
ha0 a1, i ! F sii n no es menor o igual a m
hb, i ! V hb, i ! F
h:b, i ! F h:b, i ! V
hb0, i ! T0 hb1, i ! T1 con T = V si T0 , T1 = V y T = F
hb0 ^ b1, i ! T en caso contrario
hskip, i ! ha, i ! m
h X := a, i ! m= X
[ ℄
Composición secuencial
hc0, i ! 00 hc1, 00i ! 0
hc0 ; c1, i ! 0
Condicionales
hb, i ! V hc0, i ! 0 hb, i ! F hc1, i ! 0
hif b then c0 else c1 , i ! 0 hif b then c0 else c1 , i ! 0
Ciclos
hb, i ! F
hwhile b do c, i !
hb, i ! V hc, i ! 00 hwhile b do c, 00i ! 0
hwhile b do c, i ! 0
2.1. PROGRAMACIÓN IMPERATIVA 31
2.1.2. No determinismo
Como primera aproximación a la computación, IMP es bastante bueno.
No obstante, hay una serie de “fenómenos” computacionales que no pue-
den modelarse con IMP. Uno de estos es el no determinismo, es decir, la
posibilidad de que la ejecución de un programa (o un conjunto de ellos) dé
resultados distintos en distintas ocasiones a pesar de que recibe los mismos
datos de entrada siempre.
El no determinismo puede surgir en diversas situaciones. La más común
es la concurrencia de procesos (como se verá más adelante), pero también
puede presentarse por una decisión en el diseño mismo de los lenguajes
de programación. En este caso, el lector que se enfrenta por primera vez
al no determinismo podrá pensar que se trata de una maniobra artificial
sin justificación. Pero sí hay un motivo para introducir voluntariamente
no determinismo en un lenguaje: al presentarlo al margen de sus causas
(como la concurrencia) es mucho más fácil entender su naturaleza pues no
aparece entremezclada con características propias de otras situaciones (de
nuevo, como en la concurrencia).
Así que ahora se presentará un lenguaje imperativo con no determinis-
mo explícito. Para esto necesitaremos una categoría especial de comandos
llamados comandos resguardados (guarded commands). La sintaxis es
g ::= b ! c j g g0
hskip, i ! ha, i ! m
h X := a, i ! m= X
[ ℄
y > x ! y := y x
od
2.2. UN LENGUAJE FUNCIONAL 33
valor v (llamada por valor) o n (llamada por nombre), que designan a dos
estilos semánticos posibles. En el estilo de llamada por valor, los argumen-
tos de las funciones son evaluados antes de evaluar la función misma. En
el estilo de llamado por nombre, la evaluación se pospone hasta que se
evalúa el cuerpo mismo de la función. La diferencia entre los dos estilos
se manifiestan sólo en una regla de evaluación de términos y, por este mo-
tivo, es mejor pasar directamente a las reglas antes de profundizar en las
diferencias semánticas:
Números
n !dv n
Operadores
t0 !dv n0 t1 !dv n1
t0 op t1 !dv n0 op n1
Condicional verdadero
t0 !dv 0 t1 !dv n1
if t0 then t1 else t2 !dv n1
Condicional falso
t0 !dv n0 t2 !dv n2 n0 6= 0
if t0 then t1 else t2 !dv n2
Funciones
t1 !dv n1 tmi !dv nm i
di [n1 = x1 ,:::,nmi = xmi ℄ !dv n
fi (t1 , : : : , tmi ) !dv n
Conviene prestar atención a la última regla, pues es la que varía con res-
pecto a la llamada por nombre.
2.2. UN LENGUAJE FUNCIONAL 35
Números
n !dn n
Operadores
t0 !dn n0 t1 !dn n1
t0 op t1 !dn n0 op n1
Condicional verdadero
t0 !dn 0 t1 !dn n1
if t0 then t1 else t2 !dn n1
Condicional falso
t0 !dn n0 t2 !dn n2 n0 6= 0
if t0 then t1 else t2 !dn n2
Funciones
!dn n
di [t1 = x1 ,:::,tmi = xmi ℄
fi (t1 , : : : , tm ) !dn n
i
que, de acuerdo con la regla para números, nos da 2. En cambio, las reglas
de llamada por valor nos piden que primero evaluemos los términos
2 y f3 (1)
Un operador de “elección”
es una acción;
P es la elección arbitraria de un proceso tomado del conjunto de
procesos indexado por I;
P def p
Las ideas anteriores se pueden expresar con más claridad por medio de
reglas SOE:
Procesos resguardados
. p !p
Sumas
38 CAPÍTULO 2. LENGUAJES DE PROGRAMACIÓN
P 2 p!!q q
j2I
pj
i I i
Composición
p0 ! p00
p1 ! p01
p0 ! p00 p1 !
¯
p01
p0 k p1 ! p00 k p01
p0 k p1 ! p00 k p1
p0 k p1 ! p0 k p01
Restricción
! q 62 L [ L̄
p
pn L ! qn L
Reetiquetamiento
p !q
p[ f ℄ ! q[ f ℄
f ( )
Identificadores
p !q
donde P def p.
P !q