Beruflich Dokumente
Kultur Dokumente
9 de febrero de 2017
Facultad de Ciencias UNAM
1. Introduccin
En muchos aspectos cotidianos hacemos referencia a la lgica, ya sea de forma explcita o implcita
pero estricta y formalmente
Qu es la lgica?
La lgica computacional, que es la que veremos en este curso, refleja el uso de la lgica en compu-
tacin, en cierto sentido es el clculo de la computacin, un fundamento matemtico para tratar la
informacin y razonar acerca del comportamiento de programas.
Adems proporciona un entrenamiento que lleva a formas correctas y precisas de razonamiento, en
particular permite generar descripciones libres de ambigedades.
Es relevante para cursos posteriores como inteligencia artificial, bases de datos o ingeniera de
software.
Muchos problemas computacionales involucran lgica en su representacin o solucin.
Si bien la lgica es una ciencia muy antigua y la computacin de reciente estudio, ambas se han
fundido durante el siglo pasado, de manera que hoy en da es difcil marcar una frontera entre ambas
ciencias.
1
1.1. Motivacin para la formalizacin del razonamiento correcto
La lgica ha sido pieza clave para estructurar el pensamiento y el razonamiento:
Encontrar una forma eficiente para llegar a una justificacin de una conclusin, dada cierta infor-
macin en forma de premisas.
2. Argumentos lgicos
Un argumento lgico es una coleccin finita de afirmaciones (proposiciones) dividida en premisas y
conclusin. Las premisas y conclusin deben ser susceptibles de recibir un valor de verdad. El argumento
lgico puede ser correcto o incorrecto.
Un problema central de la lgica es verificar la correctud de un argumento lgico. Y una aplicacin
principal en computacin es:
Cmo sabemos que el cdigo que nos proporcione un programador es correcto, es decir, realmente el
programa siempre har lo que queremos?
Veamos algunos ejemplos:
Todos los hombres son mortales, Socrates es hombre. Por lo tanto Socrates es Mortal. Es correcto?
Nada es mejor que Superman, Un taco es mejor que nada. Por lo tanto un taco es mejor que
Superman. Es correcto?
Los borogrovos se ponen fefos durante el brilgo. Pac es un borogrovo y hay brilgo. Por lo tanto Pac
est fefo.Es correcto?
Pero, cmo decidir si un argumento es correcto? Por sentido comn, por votacin, por autoridad ?
Nosotros usaremos la lgica como un medio para decidir la validez de un argumento. Un argumento
es correcto o vlido si suponiendo que sus premisas son ciertas, entonces necesariamente la conclusin
tambin lo es. Obsrvese que las premisas se suponen siempre ciertas. En el anlisis de un argumento
lgico no importa el contenido sino la forma de las premisas.
La isla de los caballeros y los bribones En la isla de los caballeros y bribones slo hay dos clases de
habitantes, los caballeros que siempre dicen la verdad y los bribones que siempre mienten. Un nufrago
llega a la isla y encuentra dos habitantes: A y B. El habitante A afirma : Yo soy un bribn o B es un
caballero.
El acertijo consiste en averiguar cmo son A y B.
Representacin lgica:
p := A es un bribn, q := B es un caballero.
Entonces A dijo s := p q.
2
Si p es falsa entonces A no es bribn.
De manera que A no es bribn y entonces es caballero y s es cierta. Pero como p es falsa, dado que A es
caballero entonces q debe ser cierta de manera que tambin B es caballero.
Los argumentos se forman mediante proposiciones, clasificadas como premisas y conclusin del
argumento.
Una proposicin es una oracin que puede calificarse como verdadera o falsa.
3. Sistema lgico
3.1. Componentes de un sistema lgico
Cualquier sistema lgico consta al menos de las siguientes tres componentes:
Semntica: mecanismo que proporciona significado al lenguaje formal dado por la sintaxis.
3
3.2. Propiedades de un sistema lgico
Consistencia: se refiere a que en el sistema lgico no hay contradicciones.
Correctud: las reglas del sistema no pueden obtener una inferencia falsa a partir de una verdadera.
Completud: no hay sentencias verdaderas que no se puedan demostrar en el sistema. Es decir, todo
lo verdadero es demostrable.
4. Lgica proposicional
La lgica proposicional es el sistema lgico ms simple. Se encarga del manejo de proposiciones me-
diante conectivos lgicos.
Una proposicin es un enunciado que puede calificarse de verdadero o falso, por ejemplo:
El es bribn
Tu eres caballero
Hoy es jueves.
NO son proposiciones: Llueve?, el perro azul, Viva Pancho Villa!, el cerro de la silla, juan perez, etc.
Smbolos auxiliares: (, )
Las expresiones que formarn nuestro lenguaje PROP, llamadas usualmente frmulas, se definen re-
cursivamente como sigue:
3. Si , PROP entonces
( ), ( ), ( ), ( ) PROP.
4
4. Son todas.
La ltima clusula de la definicin garantiza que el conjunto PROP es el mnimo conjunto cerrado bajo
las tres primeras reglas.
La definicin anterior puede darse en la llamada forma de Backus-Naur para definir gramticas como
sigue:
, ::= V arP | | > | () | ( ) | ( ) | ( ) | ( )
V arP ::= p1 | p2 | . . . | pn | . . .
Acerca de la asociatividad, los operadores , , son asociativos de manera que expresiones como
p q r o p p s t estn libres de ambigedades.
Por otra parte el operador no es asociativo pero adoptaremos la convencin usual de asociarlo a la
derecha, es decir expresiones del estilo 1 2 3 se entendern como 1 (2 3 )
5
Si se desean probar propiedades acerca de estructuras o funciones definidas recursivamente como
nuestro lenguaje PROP, como por ejemplo que np() siempre es un nmero par, lo adecuado es usar el
llamado principio de induccin estructural que enunciamos a continuacin.
Definicin 1 (Principio de Induccin Estructural para PROP) Sea P una propiedad acerca de fr-
mulas del lenguaje PROP. Para probar que toda frmula PROP tiene la propiedad P basta demostrar
lo siguiente:
1. () cumple P.
2. ( ? ) cumple con P, donde ? {, , , }.
Profundidad de una frmula: depth() devuelve la profundidad o altura del rbol de anlisis sintc-
tico de .
Variables de una frmula: vars() devuelve el conjunto o lista de variables que figuran en (sin
repeticiones).
Las siguientes relaciones entre algunas de las funciones recin especificadas deben verificarse mediante
induccin estructural:
depth() con().
atom() 2con() + 1.
6. Sustitucin
Una operacin sintctica fundamental de las frmulas proposicionales es la sustitucin: en una frmula
dada , una variable proposicional p cambia por una frmula . As se genera una nueva frmula denotada
[p := ] obtenida al sustituir todas las presencias de p en por . Esta operacin se conoce como
6
sustitucin textual y se define recursivamente como sigue:
p[p := ] =
q[p := ] = q, si p 6= q
>[p := ] = >
[p := ] =
()[p := ] = ([p := ])
( )[p := ] = ([p := ] [p := ])
( )[p := ] = ([p := ] [p := ])
( )[p := ] = ([p := ] [p := ])
( )[p := ] = ([p := ] [p := ])
[p := ][q := ] = [q := ][p := [q := ]]
Si p 6= q1 , . . . , qn y p no figura en 1 , . . . .n entonces
~ ] = [~q :=
[~q, p := , ~ ][p := ]
Claramente r 6= t y r
/ V ars(p q) donde V ars es la funcin que obtiene el conjunto de variables
proposicionales de una frmula, en particular V ars(p q) = {p, q}, y tenemos