Documente Academic
Documente Profesional
Documente Cultură
13 de marzo de 2014
Instituto de Computación Facultad de Ingenierı́a Lógica
A modo de prefacio
Estas notas han sido escritas pensando en cómo me gustarı́a presentar Lógica para Informática a lo
largo de un curso. El lector notará que es muy poco material; esa es mi responsabilidad directa, ya que
solamente me animo a aportar estas carillas como un texto mı́nimamente aceptable. La posibilidad de este
modesto aporte resulta de mi participación en el proyecto LATin, red colaborativa para la creación de
textos abiertos, que ofreció un marco donde iniciar la sistematización de una propuesta esbozada durante
mucho tiempo.
Restan muchas cosas por hacer desde un punto de vista conceptual; una sección con referencias
bibliográficas comentadas, más ejercicios, y ejercicios que vinculen este tema con lenguajes de programación
reales, vinculación del texto con herramientas asociadas a la enseñanza de la lógica y la matemática.
Restan aún más cosas desde el punto de vista de contenido; funciones recursivas y programación, lógica
proposicional, lógica de primer orden, nociones de computabilidad, lógicas de conocimiento. Espero que
este material pueda crecer con el tiempo, tanto con nuevo contenido como con correcciones y mejoras a
lo hoy presentado.
Agradezco a quienes me han acercado observaciones, correcciones y comentarios, que me permiten ir
mejorando el material presentado. Naturalmente, aquellos aspectos desafortunados de la escritura y even-
tuales errores formales o conceptuales son de mi entera responsabilidad. En particular, quiero agradecer
a los compañeros docentes que durante los años han criticado y discutido mis puntos de vista y opinio-
nes. La lista, seguramente incompleta, incluye a los siguientes: Mauro Blanco, Lucı́a Bouza, Guillermo
Calderón, Juan Diego Campo, Fernando Carpani, Alejandro Chmiel, Cristina Cornes, Lorena Etcheverry,
Carlos Luna, Juan Machado, Benjamı́n Machı́n, Mónica Martı́nez, Luis Pablo Michelena, Joana Miller,
Guillermo Pacheco, Alberto Pardo, Julio Saráchaga, Nora Szasz, y Álvaro Tasistro. También agradezco
a quienes me convencieron de participar en el proyecto LATin y a aquellos con quienes interactué: Raul
Kantor, Carlos Luna, y Regina Motz.
Tampoco olvido todas aquellas acciones que apuntan a diluı́r las nociones de la matemática invo-
lucradas en la enseñanza y el aprendizaje de la informática en el marasmo de las tecnologı́as concretas.
Seguramente resulte desagradable plantearlo en estos términos, pero el impulso a ciertas acciones y desa-
rrollos acompaña el desaliento de otras. Es mi opinión que importantes esfuerzos polı́ticos e institucionales,
tanto a nivel estatal como universitario, desalientan los esfuerzos para mejorar la enseñanza y divulgación
de la informática en nuestro paı́s. Sin duda, mejores tiempos vendrán; habrá que prepararles la bienvenida.
Luis Sierra
2
Capı́tulo 1
3
Instituto de Computación Facultad de Ingenierı́a Lógica
(∀n :: 00 + n = n) y (∀m :: m + 0 = m)
⇒ (tomando n = 0 y m = 00 )
00 + 0 = 0 y 00 + 0 = 00
⇒ (transitividad de la igualdad)
0 = 00 .
0 = 00
⇐ (transitividad de la igualdad)
00 + 0 = 0 y 00 + 0 = 00
⇐ (tomando n = 0 y m = 00 )
(∀n :: 00 + n = n) y (∀m :: m + 0 = m) ,
y esto vale cuando 0 y 00 son dos neutros de la suma.
arroz
zorra
Σ := {a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z}
Usamos para denotar la palabra vacı́a2 . Notemos, además, que una letra
y una palabra con una sola letra son cosas muy diferentes: en el segundo caso
nos encontramos con una función cuyo dominio es el conjunto unitario {0}.
Sin embargo, no usaremos ninguna notación que nos permita distinguir esto;
es decir, • denotará en ocasiones a la letra • y en ocasiones a la palabra cuya
única letra es •, dependiendo del contexto.
1
Podrı́amos decir incluso que de forma algo pedante
2
Desde el punto de vista de la teorı́a de conjuntos, que codifica casi todos los conceptos
matemáticos como conjuntos, la palabra vacı́a y el conjunto vacı́o ∅ son precisamente el
mismo conjunto. La confusión desaparece por el uso notacional que hacemos; dependiendo
del contexto escribiremos o ∅. Esta situación es exactamente la misma que se presenta
con el número cero 0, que también es codificado en la teorı́a de conjuntos como el conjunto
vacı́o.
1.3.1. Concatenación
También podemos expresar en términos matemáticos la concatenación de
dos palabras; esto significa escribir una palabra a continuación de la otra.
Por ejemplo, de concatenar las palabras zorra y arroz resulta la palabra
zorraarroz.
∈ Σ∗ 6∈ Σ+ 6∈ ∅
P (w) := w 6= y w(0) = •
(∀w ∈ L :: P (w))
L0 := w ∈ Σ+ : w(0) = •
3
Es decir, una palabra que no cumpla con la propiedad.
2. w ∈ L00 y a ∈ Σ −→ aw ∈ L00
criterio de propagación
La definición muestra cómo reconocer cada palabra de L00 . Con el criterio
básico se reconoce la palabra • como palabra del lenguaje. El criterio de
propagación permite reconocer una palabra de L00 con la forma aw siempre
que conociéramos de antemano que w es una palabra del lenguaje y a una
letra del alfabeto.
Cada criterio tiene la forma . . . −→ . . ., y lo leemos de la manera siguien-
te: si se cumplen las condiciones a la izquierda de la flecha, o precondiciones,
entonces reconocemos las palabras a la derecha de la flecha como pertene-
cientes al lenguaje que estamos definiendo. En las ocasiones en que no hayan
precondiciones, como puede ser el caso de los criterios básicos, escribiremos
solamente las palabras del lenguaje que se reconocen siguiendo ese criterio.
Las precondiciones de los criterios pueden hacer referencia o no al conjun-
to que se está reconociendo: cuando existen esas referencias nos encontramos
ante criterios de propagación, y en caso contrario ante criterios básicos. Los
criterios de propagación cumplen dos restricciones.
2. si w ∈ X y a ∈ Σ entonces aw ∈ X
regla inductiva
Si una familia de lenguajes cumple con las reglas, la intersección de esa
familia también cumple con las reglas. El lenguaje L0 definido inductivamente
por las cláusulas anteriores es la intersección5 de todos los lenguajes X que
satisfacen las reglas básicas e inductivas dadas. Acostumbramos escribir la
definición escribiendo el nombre del conjunto que se está definiendo en las
mismas reglas. En nuestro caso hubiéramos escrito
5
Y por lo tanto el menor, en el sentido de la inclusión, de esos lenguajes.
1. regla básica • ∈ L0
2. si w ∈ L0 y a ∈ Σ entonces aw ∈ L0
regla inductiva
Los criterios básicos del estilo anterior se convierten directamente en re-
glas básicas de este estilo; los criterios de propagación se traducen inmedia-
tamente como reglas inductivas.
Ambos estilos definen precisamente el mismo lenguaje. Efectivamente,
observemos primero que el lenguaje L00 de las palabras reconocidas siguiendo
los criterios cumplen inmediatamente con las reglas; basta con reescribir las
reglas de la forma siguiente para ponerlo de manifiesto:
Veamos ahora que L00 es el menor lenguaje que cumple con las reglas para
L0 . Sea X un lenguaje que cumple con dichas reglas; mostraremos que todas
las palabras reconocidas por los criterios de L00 están en X. Supongamos que
hay palabras reconocidas por los criterios para L00 que no están en X, y que
w es una de esas palabras con secuencia de formación de largo minimal; es
decir, todas las palabras reconocidas con secuencias de formación de largo
menor a la que reconoce a w están en X. La palabra w no puede ser •,
porque como X cumple con la regla básica tenemos • ∈ X. Por lo tanto, w
es de la forma aw0 donde w0 aparece antes en la secuencia de formación de
w. Ahora bien, como esa secuencia de formación de w0 es de largo menor a la
que forma w, tenemos que w0 ∈ X; y como X cumple con la regla inductiva,
concluı́mos que aw0 ∈ X, contradiciendo nuestro supuesto original. Luego,
no hay palabras reconocidas por los criterios para L00 que no estén en X, y
por lo tanto L00 ⊆ X.
En consecuencia, podemos definir lenguajes inductivos de dos formas di-
ferentes; dando criterios para reconocer palabras del lenguaje, o dando reglas
que deben ser satisfechas por los lenguajes.
1.5.3. Ejemplos
El lenguaje Σ∗ de todas las palabras sobre el alfabeto Σ se puede definir
inductivamente como el lenguaje reconocido por los siguientes criterios:
∗
1. criterio básico ∈ Σ
2. w ∈ Σ∗ y a ∈ Σ −→ aw ∈ Σ∗
criterio de propagación
O, igualmente, como el menor lenguaje X que cumple las siguientes reglas:
1. regla básica ∈ X
En este último caso hemos dado una definición inductiva sin criterios de
propagación. Estos casos pueden ser definidos sin necesidad de usar tanta
artillerı́a.
Lalt := L• ∪ L◦
Otro caso extremo en el uso de las reglas es cuando no hay reglas básicas:
en ese caso, estamos definiendo el lenguaje vacı́o, que no contiene ninguna
palabra. Es muy fácil entender esto si lo pensamos desde el punto de vista
declarativo.
Supongamos que todas las reglas son de la forma
Si w ∈ X, entonces P
(∀a ∈ U :: P (a))
1. P (◦)
entonces
(∀w ∈ L0◦ :: P (w))
w∈X
⇒ (Def. X)
P (w)
⇒ (condicion 2 del teorema)
P (◦•w)
⇒ (Def. X)
◦•w ∈ X.
El conjunto X satisface las reglas que definen al lenguaje L0◦ . Como este
lenguaje es el mı́nimo conjunto que cumple dichas reglas, tenemos
L0◦ ⊆ X.
Demostración. Vamos a probar las condiciones del PIP para L0◦ y la propie-
dad P .
Caso base. Voy a probar que P (◦) se cumple. Inmediato, porque la cantidad
de letras ◦ que aparece es una, y la cantidad de letras • que aparece es
cero.
1. regla básica ∈ L2
2. regla inductiva si w ∈ L2 entonces •w ∈ L2
3. regla inductiva si w ∈ L2 entonces •◦w ∈ L2
Caso base 1. Hay que probar P (). Inmediato, ya que la propiedad se re-
duce a probar que w0 ∈ L2 suponiendo que w0 ∈ L2 .
P (w) := w ∈ L2
Caso base 1. Hay que probar P (). Inmediato, por la regla básica 1 para
L2 .
Caso base 2. Hay que probar P (•). La regla básica L2 garantiza que ∈ L2 .
Finalmente, la regla inductiva 2 para L2 justifica que • ∈ L2 .
Caso inductivo 4. Hay que probar P (ww0 ). Las hipótesis inductivas nos
permiten afirmar P (w) y P (w0 ), es decir, w ∈ L2 y w0 ∈ L2 . Finalmente,
el lema justifica que ww0 ∈ L2 .
hu, wi ∈ R1 y hu, w0 i ∈ R1 y w 6= w0
Demostración. Tomemos
u := ••• y w := • y w0 := ••.
Para definir una función cuyo dominio sea un lenguaje definido por exten-
sión, debemos indicar el valor funcional de cada palabra sin tomar en cuenta
ninguna propiedad adicional, ya que el mecanismo de definición no provee
propiedades adicionales.
La situación puede empeorar cuando los dominios están definidos por
comprensión. Por ejemplo, cuando el dominio es el lenguaje definido por
comprensión:
L0 = w ∈ Σ+ : w(0) = •
0
la definición de L0 no proporciona ninguna ayuda para definir la función #L• .
1.9. Ejercicios
Ejercicio 1. Dado el alfabeto Σ = {a, b, c}, defina inductivamente los si-
guientes lenguajes sobre Σ:
1. ordenada, que dada una palabra w de Σ∗ , retorna true si, y sólo si, w
está ordenada de menor a mayor.
1. pref ijo, de las palabras que son prefijos de otras. Por ejemplo, amo es
prefijo de: amor, amores y amo, entre otras.
2. posf ijo, de las palabras que son posfijos de otras. Por ejemplo, la es
posfijo de hola.