Algoritmos y Estructuras de Datos I Lógica Proposicional

Anuncio
Lógica Proposicional: motivación
Algoritmos y Estructuras de Datos I
2◦ cuatrimestre de 2008
Práctica número 1
Lógica proposicional y tipos básicos
1
Formulas bien formadas
Por ejemplo, queremos que eso no suceda.
2
Semántica clásica: tablas de verdad
¿Cuáles de las siguientes fórmulas son bien formadas?
I
pq
no
I
p∧q
I
(p ∧ q)
I
((p ∧ q) → p)
I
(p → False)
I
(True ∧ p) → ⊥
I
((True ∧ p) → ⊥)
I
¬¬¬¬¬p
I
¬⊥
I
((p ∧ q ∧ r) → (p ∨ q))
p
1
0
no
si
p
1
1
0
0
¬p
0
1
si
si
p
1
1
0
0
no
si
si
si
q
1
0
1
0
q
1
0
1
0
(p → q)
1
0
1
1
(p ∧ q)
1
0
0
0
p
1
1
0
0
p
1
1
0
0
q
1
0
1
0
q
1
0
1
0
(p ∨ q)
1
1
1
0
(p ↔ q)
1
0
0
1
si
3
4
Semántica clásica: resolviendo como un mono
Semántica clásica: resolviendo como un mono (cont.)
Intentemos con la siguiente fórmula:
I
((p ∧ q) → p)
p
1
1
0
0
El “algoritmo” para obtener todos los posibles valores de una
fórmula es simple. Dada una fórmula,
1. Ponemos una columna para cada las variable proposicional
2. Luego ponemos otra columna con cada subfórmula
3. Ponemos la última columna con la fórmula que queremos
demostrar
4. Ponemos tantas filas como combinaciones de valores de las
variables proposicionales (¿cuántas hay?)
5. Llenamos las filas con las combinaciones de las variables
proposicionales, y comenzamos a resolver la tabla.
q
1
0
1
0
(p ∧ q)
1
0
0
0
((p ∧ q) → p)
1
1
1
1
6
5
Semántica clásica: resolviendo como un mono (cont.)
Expresando con LP
Volviendo al ejemplo del principio, nos decı́an:
Intentemos con la siguiente fórmula:
I
p
1
1
0
0
ϕ = ((p ↔ ¬q) ∧ (¬p ↔ ¬ q))
q
1
0
1
0
¬p
0
0
1
1
¬q
0
1
0
1
(p↔ ¬q)
0
1
1
0
(¬p ↔ ¬q)
1
0
0
1
I
“Todos los hı́bridos X son rentables”
I
“Usted quiere un maı́z rentable”
I
“Entonces, usted quiere un maı́z X”
Simplficando, esto queda
ϕ
0
0
0
0
I
“Maı́z X es rentable”
I
“Se quiere rentable”
I
“Entonces, se quiere maı́z X”
o, dicho en lógica proposicional donde m es maı́z, r es rentable:
(((m → r ) ∧ r ) → m)
¿Es esto es cierto?, es decir: ¿Es la fórmula anterior es una
tautologı́a?
7
8
Expresando con LP (cont.)
I
Relación de fuerza
I
Decimos que la fórmula A es más fuerte que otra fórmula B
cuando (A → B) es una tautologı́a.
I
Ejemplos
ϕ = (((m → r) ∧ r) → m)
m
1
1
0
0
r
1
0
1
0
(m → r)
1
0
1
1
((m → r) ∧ r)
1
0
1
0
I
ϕ
1
1
0
1
I
I
I
p, (p ∧ q) es más fuerte: (p ∧ q)
p, (p → q) es más fuerte: ninguna!
p, (q → p) es más fuerte: p
(p → q), (¬p ∨ q) es más fuerte: iguales!
Entonces la marca en cuestión tiene que contratar publicistas que
hayan cursado esta materia...
9
Semántica trivaluada: tablas de verdad
p
1
0
−
¬p
0
1
−
p
1
1
0
0
1
0
−
−
−
q
1
0
1
0
−
−
1
0
−
(p ∧ q)
1
0
0
0
−
0
−
−
−
10
Semántica trivaluada: tablas de verdad (cont.)
p
1
1
0
0
1
0
−
−
−
q
1
0
1
0
−
−
1
0
−
(p ∨ q)
1
1
1
0
1
−
−
−
−
p
1
1
0
0
1
0
−
−
−
11
q
1
0
1
0
−
−
1
0
−
(p → q)
1
0
1
1
−
1
−
−
−
p
1
1
0
0
1
0
−
−
−
q
1
0
1
0
−
−
1
0
−
(p ↔ q)
1
0
0
1
−
−
−
−
−
12
Evaluación secuencial
I
El orden importa
I
I
I
I
Tipos básicos
Evaluamos de izquierda a derecha
Si podemos deducir un valor de verdad no evaluamos más
Si nos encontramos un ⊥ toda la fórmula resulta Indefinida
Ejemplos, dados
I
I
I
I
I
I
I
I
I
Disponemos de los tipos Bool, Int (Z), Float (R), Char con
sus operaciones.
I
Las operaciones de Bool se evaluan con semántica secuencial.
I
Las operaciones de los otros tipos son estrictas: Si
encontramos un ⊥ se indefine toda la operación.
p = True
q = False
r = Indef
¿Qué tipo tienen los siguientes términos?
¿Cuánto valen?
I
I
True
(p ∧ (p ∨ r))
Indefinido!
((r ∨ p) ∧ p)
False
(q ∧ (r ∨ p))
True
(p ∨ q ∨ r)
Indefinido!
(q ∨ r ∨ p)
Indefinido!
(p → (r ∨ (p ∨ q)))
True
(q → (r ∨ ...))
I
(ord(‘A’) * 5.0)/π
I
bord(‘A’)/πc
Int
I
char(π) + 1
no tipa
I
‘A’+ ‘a’
I
‘Motoneta’
I
7*β(x == 0) + 5*β(x == 1)
Float
no tipa
no tipa
depende del tipo de x
13
Tipos básicos: evaluación secuencial
I
I
Fin de la clase
Para poder ser evaluados los términos tienen que poder ser
tipados.
Veamos cuando se indefinen los siguientes términos si
I
I
I
i: Int
f: Float
c: Char
I
0 ∗ (1/i)
I
I
(i 6= 0) ∧ ((f /i) > 8)
√
√
β( i 6= ⊥) ∗ i
I
2log2 (f )
I
14
‘K’∗5 ∗
√
¿Preguntas?
cuando (i == 0)
nunca
siempre!
cuando (f ≤ 0)
fi
NO TIPA =)
15
16
Descargar