Introducción A La Teoría de Conjuntos y A La Lógica II
Introducción A La Teoría de Conjuntos y A La Lógica II
LÓGICA PROPOSICIONAL
2.1. PROPOSICIONES
- la afirmación (negación) de que un objeto tenga una propiedad dada o de que exista
una relación entre dos o más objetos: a), b)
- conexión lógica entre proposiciones: c), d), e)
- posibilidad de ocurrencia de un hecho: f)
- necesidad de un estado de cosas: g)
- comunicación de una orden: h)
- planteamiento de una interrogante: i)
- enunciado de un precepto legal: j)
Para que se tenga una idea de la diferencia entre la aproximación gramatical y la lógica,
considere las dos oraciones siguientes:
34
Desde un punto de vista gramatical se trata de dos oraciones diferentes ya que diferentes
son sus estructuras sintácticas, sin embargo, intuitivamente se puede apreciar que son
oraciones que expresan el mismo significado. Podríamos además añadir las oraciones
equivalentes a a) y a b) en otros idiomas. La lógica establece la equivalencia entre a) y b)
como se verá más adelante.
Analizando las proposiciones dadas y el significado que expresan, la lógica las clasifica
de la manera siguiente:
Operaciones proposicionales
35
ciertos operadores, denominados operadores proposicionales, conectan proposiciones
dadas, dando lugar a nuevas proposiciones, determinándose el valor de la nueva
proposición a partir de los valores de las proposiciones conectadas. A continuación, otros
ejemplos de proposiciones con ocurrencia de los operadores proposicionales que serán
esencialmente objeto de estudio, los cuales aparecen resaltados en itálica:
36
Como puede apreciarse la proposición a), es una condicional cuyo operador se aplica
entre una conjunción "2 es un numero primo y par" y una negación "2 no es impar".
La proposición b) es una negación cuyo operador se aplica a la conjunción “Pedro y
Rosa vinieron a verme”. La proposición c) es una conjunción lógica que conecta
condicionales en las que a su vez ocurren negaciones.
como se verificará más adelante un resultado de este punto de vista extensional es que
Alfabeto
37
ii) constantes proposicionales: los símbolos 1 y 0 que denotarán siempre los
valores de verdad verdadero y falso respectivamente.
iii) operadores proposicionales: ¬ (negación), ∨ (disyunción), ∧ (conjunción), ⇒
(condicional), ⇔ (bicondicional), es decir, símbolos para denotar las
operaciones proposicionales.
iv) signos auxiliares de escritura: [, ] para agrupar operacionalmente a las
proposiciones de manera que quede claro a qué proposiciones se aplica una
operación proposicional evitando así la ambigüedad en la lectura.
Fórmulas
Una vez especificado el alfabeto del lenguaje proposicional se pasa a definir qué
sucesiones lineales finitas de símbolos del alfabeto constituyen las expresiones de la
lógica proposicional, es decir, se debe definir la sintaxis de este lenguaje. Para la lógica
proposicional basta definir un sólo tipo de expresión a la cual se la llamará fórmula (de
la lógica proposicional). Las proposiciones serán pues un caso particular de fórmulas, a
saber, aquel en el cual no hay ocurrencia de variables proposicionales en una fórmula.
Debe observarse que los símbolos A, B y todas las letras del alfabeto latino que
aparecerán en negritas en el texto no pertenecen al lenguaje proposicional, se trata de
símbolos de variables que se añaden a la lengua española con la cual se describe el
lenguaje de la lógica proposicional y que, como las reglas expresan, pueden representar
cualquier fórmula. Cuando se usa un lenguaje para describir otro lenguaje se llama al
primero metalenguaje y al segundo lenguaje objeto. Por lo tanto, el lenguaje objeto o
lenguaje que describimos es el lenguaje de la lógica proposicional, mientras que la lengua
española es el metalenguaje con el cual lo describimos. Tiene sentido llamar, pues, a A y
a B metavariables, es decir, variables del metalenguaje en el que hemos formulado las
reglas sintácticas de formación de fórmulas del lenguaje proposicional.
Ejemplos:
a) [¬[p] ∧ ¬ [q ∨ r]] es una fórmula, lo cual puede verificarse analizando la fórmula
mediante las reglas de utilizando dos estrategias que denominaremos abajo-arriba
(bottom-up) y arriba-abajo (top-down).
Bottom-up: p es fórmula por i) y entonces ¬[p] es fórmula por ii), q y r son fórmulas
por i), entonces [q∨r] es fórmula por iii), luego ¬[q∨ r] es fórmula por ii). Dado que
¬[p] y ¬[q∨ r] son fórmulas entonces [¬[p] ∧ ¬ [q ∨ r]] es fórmula por iii).
38
Top-down: [¬[p] ∧ ¬ [q ∨ r]] es una fórmula por la regla iii) si ¬[p] y ¬ [q ∨ r] son
fórmulas. ¬[p] es fórmula por la regla ii) si p es fórmula lo cual se verifica con la regla i).
¬ [q ∨ r] es fórmula por la regla ii) si q ∨ r es fórmula y q ∨ r es fórmula por la regla iii)
si q y r son fórmulas lo cual se verifica en ambos casos por la regla i).
b) ¬[p] ∧ ¬ [ ∨ r]] no es una fórmula, dado que ∨ r no es una fórmula.
Se observa que las reglas i) - iv) constituyen el núcleo de un procedimiento tanto para
generar como para reconocer las fórmulas de la lógica proposicional
A ¬A
1 0
0 1
39
AB A∧B
11 1
10 0
01 0
00 0
AB A⇒B
11 1
10 0
01 1
00 1
AB A⇔B
11 1
10 0
01 0
00 1
Interpretación de fórmulas
40
el numero n de variables proposicionales distintas que ocurran en A, dicha fórmula
tendrá 2n interpretaciones, es decir 2n es el número total de combinaciones de valores
veritativos 0 y 1 que puede tener una fórmula con n variables proposicionales
distintas.
¿Cómo se calcula este valor? Por supuesto que haciendo uso de las definiciones de las
operaciones proposicionales. Para una fórmula dada, se puede construir una tabla con el
siguiente formato:
Variables Fórmula
proposicionales
Valores
Interpretaciones de
de la fórmula verdad
Ejemplo:
Hallemos los valores veritativos de la fórmula [[p ⇒ q] ∧ [q ⇒ r]] ⇒ [p ⇒ r] para cada
una de sus interpretaciones. La siguiente tabla veritativa muestra en su parte izquierda
todas las interpretaciones o combinaciones de valores veritativos de la fórmula dada, y
en su parte derecha los valores veritativos correspondientes a cada interpretación:
p q r [[p ⇒ q] ∧ [q ⇒ r]] ⇒ [p ⇒ r]
1 1 1 1
1 1 0 1
1 0 1 1
1 0 0 1
0 1 1 1
0 1 0 1
0 0 1 1
0 0 0 1
Se deja como ejercicio verificar cómo fueron hallados los valores de la fórmula para cada
interpretación, teniendo en cuenta que los paréntesis que ocurren en la fórmula agrupan
un operador con sus respectivos operandos. Observe que la fórmula es una implicación
dado que el operador más externo de acuerdo con la parentización es ⇒.
41
Un caso particular muy importante de fórmula satisfacible es el siguiente: una fórmula A
es una tautología si A es 1 para cualquier interpretación.
Ejemplos:
La fórmula p ⇒ [q ∨ r] es satisfacible, la fórmula ¬[p ∧ q] ⇒ [¬p ∨ ¬q] es una
tautología y la fórmula [¬p ∨ q] ∧ ¬[¬p ∨ q] es insatisfacible, como podrá verificarse en
cada caso construyendo la tabla veritativa correspondiente.
Notar que una fórmula A es una tautología si y sólo si ¬A es una contradicción y que
A es una contradicción si y sólo si ¬A es una tautología.
Ejemplos:
Se verificarán como ejercicio las siguientes equivalencias lógicas:
a) p ⇒ q ≅ ¬p ∨ q
b) [p ⇒ q] ≅ ¬[p ∧ ¬q]
c) p ⇔ q ≅ [p ⇒ q] ∧ [q ⇒ p]
i) A ≅ A (reflexiva)
ii) Si A ≅ B, entonces B ≅ A (simétrica)
iii) Si A ≅ B y B ≅ C, entonces A ≅ C (transitiva)
42
Definición: A implica lógicamente a B, lo cual se denotará por A => B, si la fórmula
A ⇒ B es una tautología. Es decir, A implica lógicamente a B si y sólo si no existe
ninguna interpretación para la cual A es 1 y B es 0. De manera equivalente A implica
lógicamente a B si B es 1 para cualquier interpretación para la que A es 1.
i) A => A (reflexiva)
ii) Si A =>B y B => A, entonces A ≅ B (antisimétrica)
iii) Si A => B y B => C entonces A => C (transitiva)
Equivalencias lógicas
L1. A ∨ A ≅ A (idempotencia de ∨ )
L2. A ∧ A ≅ A (idempotencia de ∧ )
L3. [A ∨ B] ∨ C ≅ A ∨ [B ∨ C] (asociatividad de ∧ )
L4. [A ∧ B] ∧ C ≅ A ∧ [B ∧ C] (asociatividad de ∧ )
L5. A ∨ B ≅ B ∨ A (conmutatividad de ∨ )
L6. A ∧ B ≅ B ∧ A (conmutatividad de ∧ )
L7. A ∨ [B ∧ C] ≅ [A ∨ B] ∧ [A ∨ C] (distributividad de ∨ )
L8. A ∧ [B ∨ C] ≅ [A ∧ B] ∨ [A ∧ C] (distributividad de ∨ )
L9. A ∨ [A ∧ B] ≅ A (primera de absorción)
L10. A ∧ [A ∨ B] ≅ A (segunda de absorción)
L11. A ∨ 0 ≅ A
L12. A ∧ 1 ≅ A
L13. A ∨ 1 ≅ 1
L14. A ∧ 0 ≅ 0
L15. A ∨ ¬A ≅ 1 (tercero excluido)
L16. A ∧ ¬A ≅ 0 (contradicción)
L17. ¬[¬A] ≅ A (doble negación)
L18. ¬1 ≅ 0
L19. ¬0 ≅ 1
43
L20. ¬[A ∨ B] ≅ ¬A ∧ ¬B (De Morgan)
L21. ¬[A ∧ B] ≅ ¬A ∨ ¬B (De Morgan)
L22. A ⇒ B ≅ ¬A ∨ B (Definición de ⇒)
L23. A ⇔ B ≅ [ A ⇒ B ] ∧ [ B ⇒ A ] (Definición de ⇔)
Implicaciones lógicas
L24. A => B ⇒ [A ∧ B]
L25. [A ⇒ B] ∧ [B ⇒ C] => A ⇒ B
L26. ¬B ⇒ ¬A => A ⇒ B
L27. A ⇒ C ∧ B ⇒ C => [A ∨ B] ⇒ C
L28. [A ⇒ B] ∧ [¬A ⇒ B] => B
L29. ¬A ⇒ [B ∧ ¬B] => A
L30. A ⇒ [B ∧ ¬B] => ¬A
L31. ¬A ⇒ A => A
L32. A ⇒ ¬A => ¬A
L33. A ⇒ [¬B ⇒ [C ∧ ¬C]] => [A ⇒ B]
L34. [A ∧ ¬B] ⇒ B => A ⇒ B
L35. [A ∧ ¬B] ⇒ ¬A => A ⇒ B
L36. [A ⇒ B] ∧ [¬A ⇒ C ] => B ∨ C
L37. ¬A ⇒ B => A ∨ B
L38. A ⇒ B => B ∨ ¬A
L39. A => A ∨ B
L40. A ∧ B => A
L41. A => B ⇒ A
Reemplazamiento de fórmulas
Ejemplos:
Las fórmulas p ⇒ ¬q, ¬q y q ⇒ p son subfórmulas de la fórmula
[p ⇒ ¬q] ⇔ [[p ⇒ q] ∧ [q ⇒ p]].
44
Ejemplos
Se tiene por L22 que p ⇒ q ≅ ¬p ∨ q luego por el teorema del reemplazamiento
[p ⇒ ¬q] ⇔ [[p ⇒ q] ∧ [q ⇒ p]] ≅ [p ⇒ ¬q] ⇔ [[¬p ∨ q] ∧ [q ⇒ p]].
Ejercicios
a) x + y > 2
b) x = 1 ó y + 2 = 2
c) y ? 2 y z = 10
d) Si x > 0, entonces y ? 2
e) Si z > 10, entonces x + z > 10 y z ? 10
f) n es par si y sólo si n es divisible por 2
g) Si x es primo y par, entonces x = 2
h) Si x < y, entonces x < y o x = y
i) A = B, si A ⊆ B y B ⊆ A
j) A d B si y sólo si A ⊆ B y A ? B
k) x > 0 siempre que x > 0
l) Si x = y, entonces x/z = y/z, excepto cuando z = 0
m) (n - 1)! + 1 no es divisible por n a menos que n sea primo
4. Halle los valores de las siguientes fórmulas para cada una de sus interpretaciones y
diga cuáles son satisfacibles, cuales son insatisfacibles y cuáles son tautologías.
a) [p ⇒ [¬q ⇒ p]]
b ) ¬[[p ∧ ¬p] ∨ ¬q]
c) ¬[¬p ∨ [¬q ⇒ p]]
45
5. Determine qué ley de la lógica proposicional justifica a cada una las siguientes
fórmulas como una tautología.
a) [p ∨ [q ∨ r]] ⇔ [[p ∨ q] ∨ r]
b) [¬p ⇒ [¬q ⇒ [r ∧ ¬r]]] ⇒ [¬p ⇒ q]
c) [¬[p ⇒ q] ∧ [r ∨ ¬r]] ⇒ [p ∨ ¬p]
Circuitos lógicos
Los desarrollos de la lógica proposicional hasta aquí expuestos tienen entre sus
aplicaciones más relevantes una tecnológica relacionada con los problemas de diseño y
realización de circuitos lógicos digitales, es decir, circuitos que realizan funciones lógicas
bivalentes y que por lo tanto se utilizan en el procesamiento de la información
representada digitalmente.
La más importante de las máquinas lógicas creadas por el hombre para el procesamiento
de información lo es sin duda la computadora. Una computadora es un sistema que recibe
como información datos de una clase de problemas y un programa que representa un
algoritmo o procedimiento para resolver dicha clase de problemas. La computadora emite
como salida una solución del problema, como resultado de aplicar el programa a los
datos.
Se denomina carácter a todo símbolo que se introduce en una computadora, por ejemplo,
presionando una tecla en su teclado. El alfabeto de caracteres de una computadora
incluye esencialmente las letras del alfabeto latino, los dígitos del 0 al 9, signos de
puntuación tales como “.”, “,”, “:” y caracteres que tienen como nombres “espacio”,
46
“return”, “fin de línea” , etc . Para representar cada uno de estos caracteres en la
computadora, existen sistemas de representación binaria standardizados siendo el más
comúnmente utilizado el sistema ASCII ( American Standard Code for Information
Interchange). Mediante el código ASCII se asigna a cada carácter una cadena o sucesión
de 8 bits denominada byte. A continuación se dan ejemplos de caracteres y sus
correspondientes representaciones en bytes en el código ASCII:
A 0100 0001
B 0100 0010
: 0011 1010
1
0
47
p ¬p
1
p 0
¬p 1
0
p
p∨ q
q
1
p 0
1
q 0
1
p∨ q 0
p
p∧ q
q
1
p 0
1
q 0
1
p∧ q 0
48
•
Aritmética binaria
1 × 24 + 0 × 23 + 1 × 22 + 0 × 21 + 0 × 20 = 16 + 0 + 4 + 0 + 0 = 20
1+1=0 1 1-1=0 0
1+0=1 0 1-0=1 0
0+1=1 0 0-1=1 1
0+0=0 0 0-0=0 0
49
10011 10011
+ 01101 - 01101
100000 00110
•
p
SP
A
q
Figura 6: Semisumador
A
p
SP
A
q
Figura 7: Sumador
Se deja al lector la verificación de que el sumador realiza la suma de dos bits más el
arrastre.
Ejercicio
1. Represente el diagrama del circuito lógico que realizaría la función descrita por:
a) ¬[[p ∨ q] ∧ ¬[p ∧ q]]
b) [¬p ∨ ¬q] ∧ [p ∧ q]
Determine además si son equivalentes y describa con palabras la función que realizan.
50
2. Halle las formulas que definen la función que realizan los circuitos lógicos del as
Figuras 8 y 9 y determine si son o no equivalentes.
a)
p •
q •
r •
p • •
q •
51
Componente NAND:
p
q ¬[p ∧ q]
Componente NOR:
p
q ¬[p ∧ q]
52
2.2. DEDUCCIÓN LÓGICA
Conocimiento adquirido:
(1) x es abuelo de y, si x es padre de z y z es padre de y (definición de abuelo)
(2) José es padre de Luis (un hecho)
(3) Luis es padre de Ana (un hecho)
Nuevo conocimiento:
Una teoría debe satisfacer una propiedad muy importante denominada consistencia: una
teoría es consistente o no-contradictoria si está libre de contradicciones. Para demostrar
que una teoría es consistente basta encontrar una interpretación que haga satisfacible
todas las proposiciones de la teoría. Como se verá, el problema de decidir si una teoría es
consistente tiene una solución positiva en la lògica proposicional.
Ejemplos:
53
1. El ejemplo de conocimiento adquirido anteriormente dado es un fragmneto de la teoría
sobre las relaciones familiares que diariamente utilizamos y a la cual pertenecen otras
proposiciones tales como:
Los hijos de una misma madre o un mismo padre son hermanos.
Se verá ahora que deberá entenderse por un paso en una demostración. De manera
general, sea T una teoría y A una proposición, entonces
T|A
denota que A es consecuencia lógica de T ( A se deduce de T), es decir, que siempre que
las proposiciones en T sean verdaderas por una interpretación, también lo es A por la
misma interpretación. El símbolo | denota el operador de deducción lógica, al cual se
adscriben las tres propiedades fundamentales siguientes:
54
Una expresión de la forma T | A denotará un paso en una demostración. Luego las
propiedades anteriores pueden ser utilizadas como pasos en una demostración y a
continuación se presenta como serán escritas con las justificaciones identificables por un
guión:
T, A | A - por hipótesis
T |A -tautología
Reglas de Inferencia
Premisas
Conclusión
Donde Premisas denota un conjunto de pasos previos, por lo mismo ya justificados, que
ocurren en una demostración y Conclusión denota el nuevo paso que se inserta en la
demostración al aplicar la regla.
T|A
T|A⇒B
T|B
55
cuya lectura puede ser la siguiente: "A partir de que en una demostración exista un paso
de la forma T | A y otro paso de la forma T | A ⇒ B , entonces se puede insertar T | B
como un nuevo paso en la demostración. Note que T | A y T | A ⇒ B son las premisas
de la regla y T | B su conclusión.
Como se verá, por su constante empleo en la obtención de otras reglas, (RI1) es una
regla de inferencia fundamental en la lógica y la regla de inferencia fundamental a nivel
de la lógica proposicional bivalente. Adoptando un punto de vista axiomático tomamos a
(RI1) como un postulado (regla que se acepta sin demostración) en nuestros desarrollos.
Una regla de inferencia deductiva debe tener una propiedad esencial que se denomina
sanidad: si las premisas de una regla de inferencia son verdaderas la conclusión que se
obtenga con la regla debe ser también verdadera.
Se observará que todas las reglas a continuación son reglas lógicamente deducidas. En
las demostraciones lógicas de estas reglas se justifican muchos pasos por las leyes
lógicas o tautologías.
T, A | B
T|A⇒B
56
Demostración:
Sea B1, B2, ..., B n las proposiciones de parte izquierda que aparecen en los pasos de una
demostración de B a partir de T ∪ {A}, siendo Bn = B. Se demostrará por inducción
sobre i, para 1 ≤ i ≤ n, que T | A ⇒ Bi.
a) i = 1: entonces B1 ∈ T o B1 es una tautología, o A. Para los dos primeros casos se
inserta como paso en la demostración la tautología B1 ⇒ [A ⇒ B1] y se aplica la regla
(I). Para el caso restante A ⇒ B1 es una tautología.
b) Supóngase que se cumple T | A ⇒ Bk para todo k < i pasos. Entonces Bi ∈ T o
Bi es una tautología, o B i es A o B i se deduce por la regla (II) a partir de premisas B j y
Bm, j < i, m < i, y Bm es de la forma Bj ⇒ B i. Se deja como ejercicio la continuación de la
demostración.
Ejemplo:
En la siguiente demostración T es el conjunto de las definiciones dadas para la teoría de
conjuntos desarrollada en este libro.
T| AfA∪B
Demostración:
(1) T, a∈ A | a ∈ A -hipótesis
(2) | a ∈ A ⇒ [a ∈ A ∨ a ∈ B] -L39
(3) | a∈A∨a∈B -(RI1), (1) y (2)
(4) | a∈A∪B -def. de unión a (3)
(5) T| a∈A⇒a∈A∪B -(RI2, (4)
(6) T| AfA∪B -def. de inclusión a (5).
(RI3) ∧-introducción:
T|A
T|B
T|A∧B
57
Veamos como se puede deducir esta regla a partir de la regla RI1, teniendo en cuenta
como se ha establecido que las premisas de la regla son pasos que ocurren en una
demostración.
Ejemplo:
T, a ∈ A, a ∈ B | a ∈ A ∩ B
Demostración:
(1) T, a ∈ A, a ∈ B | a ∈ A -hipótesis
(2) |a∈B -hipótesis
(3) |a∈A∧a∈B -(RI3), (1) y (2)
(4) |a∈A∩B -def. de intersección a (3).
(RI4a) ∧-eliminación:
T|A∧B
T|A
(RI4b) ∧-eliminación:
T|A∧B
T|A
Demostración de (RI4a):
(1) T |A∧B -premisa
(2) | [A ∧ B] ⇒ A -L40
(3) |A -(RI1), (1) y (2).
58
Regla de introducción de la disyunción
(RI5) ∨- introducción
T|A
T|A∨B
T|A⇒C
T|B⇒C
T | A∨ B ⇒ C
Demostración:
(1) T | A ⇒ C -premisa
(2) |B⇒C -premisa
(3) | [[A ⇒ C] ∧ [B ⇒ C]] ⇒ [[A ∨ B] ⇒ C] -L27
(4) | [A ⇒ C] ∧ [B ⇒ C] -(RI3), (1), (2)
(5) | [A ∨ B] ⇒ C -(RI1), (4), (3).
T|A⇒B
T | ¬A⇒ B
T|B
59
Regla de prueba del contrarrecíproco
T | ¬B ⇒ ¬A
T|A⇒B
(RI8) ⇒-transitividad:
T|A⇒C
T|C⇒B
T|A⇒B
Demostración:
T, ¬A | B ∧ ¬B
T |A
Demostración:
(1) T, ¬A | B ∧ ¬B -premisa
(2) T | ¬A ⇒ [B ∧ ¬B] - (RI2), (1)
(3) | [¬A ⇒ [B ∧ ¬B]] ⇒ A -L29
(4) | A -(RI1), (2), (3).
60
(RI9b) Reducción al absurdo:
T, A | B ∧ ¬B
T | ¬A
Demostración: Ejercicio.
T, A, ¬B | C ∧ ¬C
T |A⇒B
Demostración:
(1) T, A, ¬B | C ∧ ¬C -premisa
(2) T, A | ¬B ⇒ [C ∧ ¬C] -(RI2), (1)
(3) T | A ⇒ [¬B ⇒ [C ∧ ¬C]] -(RI2), (2)
(4) | [A ⇒ [¬B ⇒ [C ∧ ¬C]] ⇒ [A ⇒ B] -L31
(5) |A⇒B -(RI1), (3), (4).
T, A, ¬B | B
T |A⇒B
Demostración: Ejercicio.
T, A, ¬B | ¬A
T |A⇒B
Demostración: Ejercicio.
61
Reglas de Prueba de disyunciones
T|A⇒B
T | ¬A ⇒ C
T |B∨C
Demostración:
T | ¬A ⇒ B
T|A∨B
Demostración: Ejercicio.
T|A⇒B
T | ¬A ∨ B
Demostración: Ejercicio.
Regla de prueba de necesidad y suficiencia
T|A⇒B
T|B⇒A
T|A⇔B
Demostración: Ejercicio.
62
Demostración matemática
x ∈ A ∪ B =def x ∈ A ∨ x ∈ B.
Teorema: A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C)
Demostremos que A ∪ (B ∩ C) f (A ∪ B) ∩ (A ∪ C)
(1) T, x ∈ A ∪ (B ∩ C) | x ∈ A ∪ (B ∩ C) -hipótesis
(2) | x ∈ A ∨ x ∈ (B ∩ C) - def. de unión
(3) | x ∈ A ∨ [x ∈ B ∧ x ∈ C] -def. de
intersección
(4) | [x ∈ A ∨ x ∈ B] ∧ [x ∈ A ∨ x ∈ C] -L7
(5) | x ∈ (A ∪ B) ∧ x ∈ (A ∪ C) -def. de unión
(6) | x ∈ ((A ∪ B) ∩ (A ∪ C)) -def de
intersección
(7) T | x ∈ A ∪ (B ∩ C) ⇒ x ∈ ((A ∪ B) ∩ (A ∪ C)) -regla (RI2) ,(6)
(8) T | A ∪ (B ∩ C) f (A ∪ B) ∩ (A ∪ C) -def. de inclusión
No hay regla, primero se deja implícita la justificación lógica de la prueba: se supone que
todo matemático con cierta madurez en su profesión esta familiarizado en la práctica
con los métodos de definición y de demostración lógica propios de su ciencia y,
segundo, se deja implícito cuanto conocimiento matemático es necesario para seguir la
prueba en dependencia del nivel de estudio o de especialización al cual va dirigida la
prueba. No obstante, muchos de los errores e insuficiencias que se pueden advertir en
algunas demostraciones matemáticas, así como la incapacidad para comprender las
mismas o suplir sus ausencias por parte del iniciado tienen su fuente en este modo
implícito de proceder. No hay la menor duda que una familiarización con los
63
mecanismos de deducción utilizados en la matemática constituye un aspecto básico
tanto para generar como para analizar y comprender una demostración matemática.
Demostración:
(1) T, x ∈ Z | ¬[2 divide a x] ⇒ x = 2 m + 1 -def. número no divisible por
2
(2) | x = 2 m + 1 ⇒ x2 = 4 m2 + 4 m + 1 -cuadrado de un binomio
(3) | x2 = 4 m2 + 4 m + 1 ⇒ ¬[2 divide a x 2] -def. número no divisible por 2
(4) | ¬[2 divide a x] ⇒ ¬[2 divide a x 2] -(RI8), (1), (2) y (3)
(5) | 2 divide a x 2 ⇒ 2 divide a x -(RI7), (4)
En la demostración del siguiente teorema se emplea entre otras la regla (RI9a). Con
respecto a esta regla se pueden presentar dos casos que es conveniente diferenciar.
Primer caso:
Teorema: Una sucesión {xn} no puede tender simultáneamente a dos limites (finitos)
distintos.
64
la vez menor que r y mayor que r, lo cual es una contradicción. Lo que demuestra el
teorema.
Segundo caso:
B ha sido demostrada con anterioridad al teorema que se quiere demostrar. En este caso
hay dos estrategias posibles de demostración de A.
La primera es una prueba genuina de reducción al absurdo: Se procede a
demostrar que T,¬A | ¬B, luego se inserta el teorema ya demostrado B como un paso
mas en la demostración y entonces, utilizando (RI2) se obtiene, como en el caso anterior
T,¬A | B ∧ ¬B y ya puede aplicarse entonces (IXa).
La segunda consiste en convertir la demostración en una prueba del contrarrecíproco: Se
procede a demostrar que T, ¬A | ¬B, luego se aplica (RI2) para obtener T | ¬A
⇒ ¬B, entonces por (RI7),
T|B⇒A (1)
Se inserta entonces como paso en la demostración la proposición B
|B (2)
y aplicando (RI1) con (1) y (2) como premisas se obtiene
|A
Veamos un ejemplo:
65
Teorema: Una condición necesaria y suficiente para que a, b sean raíces de la
ecuación x2 + px – q = 0 donde p2 > 4q es que a + b = -p y ab = q, siendo a ∈ ú,
b ∈ ú".
En este teorema hay dos proposiciones cuya equivalencia lógica tiene que ser
demostrada:
Sea A la proposición "a y b son raíces de la ecuación x2 + px – q = 0" y B la
proposición "a + b = -p ∧ ab = q", es decir, "una condición necesaria y suficiente para
A es que B".
Se puede demostrar primero que B es una condición necesaria para A, es decir, que
A ⇒ B. Esta demostración se lleva a cabo tomando como hipótesis a A y deduciendo
entonces B, luego se aplica (RI2) para obtener A ⇒ B. Se deja al lector los detalles de la
prueba siguiendo esta estrategia como ejercicio.
La demostración de que B es una condición suficiente para A, es decir, que B ⇒ A se
puede realizar también aplicando (RI2) y es un simple ejercicio algebraico.
Ejercicios
66
4. Demuestre las siguientes implicaciones lógicas:
6. Demuestre que:
a) (A ∪ B)c = Ac ∩ Bc
b) (A ∩ B)c = Ac ∪ Bc
67
Formas normales proposicionales
Ejemplos:
p, ¬q son literales, p es un literal positivo y ¬q un literal negativo.
Ejemplos:
p ∨ q, p ∨ ¬q ∨ r son cláusulas. ¿Son 0 y ¬q cláusulas?
Ejemplos:
p ∧ ¬q, p ∨ ¬q, [p ∨ ¬q] ∧ [¬ p ∨ ¬q ∨ ¬ r] ∧ [q ∨ r]
Ejemplos:
p, ¬q, p ∧ ¬q, [p ∧ ¬q] ∨ [¬ p ∧ ¬q ∧ ¬ r] ∨ [q ∧ r].
Teorema: Para toda fórmula A puede hallarse una formula A' en FNC (FND) tal que
A ≅ A'.
68
La demostración de este teorema es constructiva y consiste en transformar la fórmula A
en una FNC (FND) A' aplicando repetidamente leyes que preservan la equivalencia
lógica de las fórmulas. Las siguientes instrucciones relacionan las leyes utilizables y su
propósito.
1) Utilizar las leyes L22 y L23 para eliminar los operadores ⇒, ⇔ de una fórmula.
2) Utilizar L17 (doble negación) y L20 y L21 (leyes de De Morgan) para eliminar
todo operador que no se aplique a una variable proposicional.
3) Utilizar L7 y L8 (leyes distributivas) para obtener la forma normal deseada.
4) Utilizar otras leyes para simplificar la fórmula.
Ejemplo:
Dada la fórmula [p ⇒ ¬q] ⇒ ¬ [p ∧ r], entonces
[p ⇒ ¬q] ⇒ ¬ [p ∧ r] ≅ ¬ [p ⇒ ¬q] ∨ ¬ [p ∧ r] -L22
≅ ¬ [¬p ∨ ¬q] ∨ ¬[p ∧ r] -L22
≅ [¬¬p ∧ ¬¬q] ∨ ¬[p ∧ r] -L20
≅ [p ∧ q] ∨ ¬p ∨ ¬r -L21
≅ [[¬p ∨ p] ∧ [¬p ∨ q]] ∨ ¬r -L7
≅ [1 ∧ [¬p ∨ q]] ∨ ¬r -L15
≅ ¬p ∨ q ∨ ¬r -L12
El término izquierdo de la última equivalencia representa una FNC (también una FND)
de la fórmula dada.
En los desarrollos que siguen una FNC será representada de manera alternativa por el
conjunto de cláusulas que la constituyen. También, alternativamente, una cláusula C será
representada por el conjunto de sus literales.
Ejemplo:
La FNC [p ∨ ¬q] ∧ [¬ p ∨ ¬q ∨ ¬ r] ∧ [q ∨ r] se representa conjuntualmente por {p ∨ ¬q,
¬ p ∨ ¬q ∨ ¬ r, q ∨ r} o por {{¬p, ¬ q, ¬r}, {p, q, s}, {¬q, r, ¬s}}.
69
Se ha visto que un problema muy importante cuando se tiene una fórmula es determinar
si la fórmula es o no consistente, es decir, si es o no satisfacible. Este problema dado su
relevancia en muchas dimensiones para la computación ha pasado a ser conocido bajo el
nombre de problema SAT. La creación de algoritmos que permitan resolver el problema
SAT es de suma importancia y al mismo se dedica gran atención. En este libro, dado su
carácter introductivo, no se estudiará el problema SAT en todas sus dimensiones
computacionales, solamente se hará una introducción a la rica problemática algorítmica
que dicho problema plantea.
Se darán a continuación los detalles de un algoritmo clásico de SAT que a partir de una
FNC de una fórmula determina si la fórmula es o no satisfacible. Se utilizará para la
representación del algoritmo un pseudo lenguaje de programación en el que se utilizan de
algunas estructuras bien conocidas de lenguajes de programación existentes.
Primero se desarrollarán algunos algoritmos, algunos en forma muy esquemática, que son
utilizados (en el argot computacional, “llamados”) por el algoritmo principal para
resolver el problema.
satisfacible(S):
if S =={1} then true,
else false
insatisfacible(S):
if S =={0} ∈ then true,
else false
70
{
if var ∈ C then ;
else if ¬var ∈ C then
{
Cs = C – {¬var},
if Cs == ∅ then
{
Ss = {0};
break
}
else Ss = Ss ∪ {Cs}
{
else Ss = Ss ∪ {C}
}
else if valor == 0 then
if S == {C} ∧ ¬var ∈ C then Ss == {1}
else forall C ∈ S
if var ∈ C then
if C = {var} then
{
Ss = {0},
break
}
else
{
Cs = C – {var},
Ss = Ss ∪ {Cs}
}
else if ¬var ∈ C then ;
else Ss = Ss ∪ {C}
/* Entradas:
/* S: Conjunto de cláusulas siendo cada cláusula representada por su conjunto de
/* literales. Se supone que en S no hay cláusulas repetidas y que ninguna cláusula tiene
/* literales repetidos. Es posible eliminar tales repeticiones con un preprocesamiento
/* previo adecuado.
/* V: Conjunto de las variables proposicionales que ocurren en S
71
DPLL(S)
{if S = {{1}} then return “satisfacible”,
if {0} ∈ S then return “insatisfacible”,
DPLL2: if {L} ∈ S then
{
if L = var then simplifica(var, 1, S, Ss)
else if L = ¬var then simplifica(var, 0, S, Ss);
DPLL(Ss)
}
DPLL3: {
selecciona( var, V);
simplifica(var, 1, S, Ss)
if DPLL(Ss) = “satisfacible” then return( "satisfacible");
else if DPLL(Ss) = “insatisfacible” then
{
simplifica(var, 0, S, Ss)
DPLL(Ss)
}
}
}
Ejemplos:
(1) DPLL({{¬p, ¬ q, ¬r}, {p, q, s}, {¬q, r, ¬s}})
DPLL3: p = 1,
simplificando
DPLL({{¬q, ¬r}, {¬q, r, ¬s}})
DPLL3: q = 1,
simplificando,
DPLL({{¬r}, {r, ¬s}})
DPLL2: r = 0,
simplificando
DPLL({{¬s }})
DPLL2: s = 0
Simplificando
DPLL({1 })
“satisfacible”
72
(2) DPLL({{p, q, ¬r}, {p, ¬q}, {¬p}, {r}, {s}})
DPLL2: p = 0
Simplificando
DPLL({{q, ¬r}, {¬q}, {r}, {s}})
DPLL2: q = 0
simplificando
DPLL({{¬r}, {r}, {s}})
DPLL2: r = 0
Simplificando
DPLL({0})
“insatisfacible
73
Análisis de DPLL:
¿ Cómo realiza DPLL el hallazgo de una solución a un caso particular S del problema
SAT? DPLL hace una “búsqueda” de una interpretación que satisfaga S en el conjunto de
las interpretaciones posibles. Se denomina espacio de búsqueda (EB) al espacio virtual
en el que un algoritmo busca una solución a un problema. Una posible representación
completa del EB para problemas de satisfacibilidad S con un conjunto V de tres
variables es dada por la Figura :
p
1 0
q q
1 0 1 0
r r r r
1 0 1 0 1 0 1 0
74
¿Cómo “recorre” DPLL este EB, es decir, cómo recorre el árbol?
Antes de aplicar DPLL, se podría pensar en recorrer el árbol haciendo una búsqueda
sistemática, a saber, a) no dejando de considerar ninguna interpretación hasta tanto no se
encuentre una solución del problema y b) no considerando ninguna interpretación más de
una vez.. Note que a) garantiza el hallazgo de una solución, mientras que b) garantiza la
terminación del proceso de ejecución del algortimo. Sin embargo, este proceder por
fuerza bruta no explota resultados de la lógica proposicional que pueden imprimir mayor
eficiencia a la búsqueda de una solución sin sacrificar su hallazgo.
De tales resultados hace uso el algoritmo DPLL. Para DPLL, el EB es un espacio virtual
el cual DPLL más que recorrer, construye parcialmente según sea necesario para
alcanzar una solución. Si se analizan las instrucciones DP2 y DP3 y el resultado de su
aplicaciones a los ejemplos dados, se ve que la búsqueda consiste en ir construyendo una
interpretaciòn asignándoles valores a las variables en S. La acción prioritaria de DP2 es la
siguiente: si hay una cláusula en C que es un literal, necesariamnete hay que asignar a la
variable del literal el valor de verdad que lo haga verdadero (¿Por qué?), a continuación
sustituir la variable por su valor en todas sus ocurrencias en S, simplificar S y continuar
aplicando DPLL a la simplificación de S. Note que en este caso, ya hay ramas
(interpretaciones) que jamás serán generadas (Cuáles?). Si no hay cláusula unitaria en S,
entonces DP3 entra en acción: se selecciona una variable de las que ocurre en S, la cual
aun no ha sido seleccionada y se la sustituye por un valor veritativo ( en el algoritmo
dado por 1) en todas sus ocurrencias en S, se simplifica S y se aplica DP a la
simplificación de S denotada Ss. Si Ss es satisfacible el algortimo termina dando esa
respuesta. Si Ss es insatisfacible, entonces de acuerdo con DP3 se sustituye a la variable
por el otro valor veritativo (en el algoritmo dado por 0), se simplifica nuevamente S en Ss
y se aplica DP a Ss.
75
p
1 0
q q
1 0 1 0
r r r r
1 0 1 0 1 0 1 0
Ejercicios
76