Capı́tulo 2
Lógica Proposicional
Lógica para Programação
LEIC - Tagus Park
o
2 Semestre, Ano Lectivo 2007/08
c
Inês
Lynce
c
Luı́sa
Coheur
Programa
• Apresentação
• Conceitos Básicos
• Lógica Proposicional ou Cálculo Proposicional
• Lógica de 1a ordem ou Lógica de Predicados
• Programação em Lógica
• Prolog
Programa
• Apresentação
• Conceitos Básicos
• Lógica Proposicional ou Cálculo Proposicional
• Lógica de 1a ordem ou Lógica de Predicados
• Programação em Lógica
• Prolog
Bibliografia
• Martins J.P., Lógica para Programação, Capı́tulo 2.
• Ben-Ari M., Mathematical Logic for Computer Science,
Springer-Verlag, 2003, capı́tulos 2 e 4 (parte)
• Huth M. e Ryan M., Logic in Computer Science, Cambridge
University Press, 2004, capı́tulos 1 e 6 (parte)
Componentes de uma Lógica (relembrar)
1. Linguagem
2. Sistema dedutivo ← o que estivémos a dar até agora...
3. Sistema semântico
Componentes de uma Lógica (relembrar)
1. Linguagem
2. Sistema dedutivo
3. Sistema semântico ← o que vamos começar a dar hoje...
Sistema Semântico
1. O que acontece num sistema semântico?
2. Conceitos básicos
3. Como obter o valor lógico de uma fbf?
4. Diagramas de decisão binários (BDDs)
5. Diagramas de decisão binários ordenados (OBDDs)
Sistema Semântico
1. O que acontece num sistema semântico?
2. Conceitos básicos
3. Como obter o valor lógico de uma fbf?
4. Diagramas de decisão binários (BDDs)
5. Diagramas de decisão binários ordenados (OBDDs)
O que acontece num sistema semântico?
• Num sistema semântico consideram-se as fbfs e os sı́mbolos
lógicos sob o ponto de vista do seu significado (e não da sua
forma).
O que acontece num sistema semântico?
• Num sistema semântico o valor lógico de uma fbf depende
apenas dos valores lógicos das fbfs que a compõem e dos
sı́mbolos lógicos que relacionam esses componentes.
Sistema Semântico
1. O que acontece num sistema semântico?
2. Conceitos básicos
3. Como obter o valor lógico de uma fbf?
4. Diagramas de decisão binários (BDDs)
5. Diagramas de decisão binários ordenados (OBDDs)
Conceitos básicos – função de valoração
• No sistema semântico da lógica proposicional, uma função de
valoração v é uma função que faz corresponder a cada
sı́mbolo de proposição o valor Verdadeiro (V) ou Falso (F):
– v : P 7→ {V , F }
Conceitos básicos – Satisfação
• Dado um sı́mbolo de proposição P e uma função de valoração
v , diz-se que:
– v satisfaz P se e só se v (P) = V (diz-se também que P é
verdadeiro segundo a função de valoração v );
– v não satisfaz P caso contrário.
Exemplo
• Sejam
– A o sı́mbolo que representa “O IST tem dois campus”;
– B o sı́mbolo que representa “A cadeira de LP é fácil”;
– v uma função de valoração tal que v (A) = T e v (B) = F .
• Nesta situação, v satisfaz A e não satisfaz B.
Conceitos básicos – interpretação
• Dada uma fbf α que contenha os sı́mbolos de proposição P1 ,
..., Pn , uma interpretação é uma função de valoração que
atribui valores a todos esses sı́mbolos de proposição.
Sistema Semântico
1. O que acontece num sistema semântico?
2. Conceitos básicos
3. Como obter o valor lógivo de uma fbf
4. Diagramas de decisão binários (BDDs)
5. Diagramas de decisão binários ordenados (OBDDs)
Então e como é que se obtém o valor lógivo de uma fbf?
Se a fbf for um sı́mbolo de predicado...
• ... esse valor lógico é dado directamente pela função de
valoração.
Se a fbf contiver sı́mbolos lógicos...
• ... há que definir o significado dos sı́mbolos lógicos
(¬, ∧, ∨, →).
• ...
Tabelas de verdade para ¬, ∧, ∨, →
α
V
V
F
F
β
V
F
V
F
α∧β
V
F
F
F
α
V
V
F
F
α
V
F
¬α
F
V
β
V
F
V
F
α∨β
V
V
V
F
α
V
V
F
F
β
V
F
V
F
α→β
V
F
V
V
... e depois de definir o significado dos sı́mbolos lógicos...
• ... os valores lógicos da fbf são obtidos através da composição
dos valores lógicos das suas fbfs.
Exemplo: (A ∧ B) → (¬A ∨ ¬B)
A
V
V
F
F
B
V
F
V
F
A∧B
V
F
F
F
¬A ∨ ¬B
F
V
V
V
(A ∧ B) → (¬A ∨ ¬B)
F
V
V
V
Só que há um problema com este método...
• ... a dimensão da tabela de verdade cresce exponencialmente
em função do número de predicados.
Mas antes de avançar para uma solução...
• ... vamos fixar um conjunto de conceitos.
Conceitos: fbfs tautológicas, satisfazı́veis, falsificáveis e
contraditórias
• Tautológicas: verdadeiras para todas as interpretações
• Satisfazı́veis: existe pelo menos uma interpretação na qual a
fbf é verdadeira
• Falsificável: existe pelo menos uma interpretação na qual a fbf
é falsa
• Contraditórias (ou não satisfazı́veis): falsas para todas as
interpretações
Exemplos
• (P ∨ Q) é satisfazı́vel e falsificável;
• P ∨ ¬P é tautológica;
• (P ∧ ¬P) é contraditória.
Conceitos: conjunto satisfazı́vel/contraditório e modelo
• Um conjunto de fbfs diz-se satisfazı́vel sse existe pelo menos
uma interpretação (dita um modelo) que satisfaz todas as
suas fórmulas;
• Um conjunto de fbfs diz-se contraditório sse não existe
nenhuma interpretação que satisfaz todas as suas fórmulas.
Exemplos
• O conjunto {P, Q, P → Q}, pois a interpretação v (P) = V e
v (Q) = V satisfaz todas as suas fórmulas (e é portanto um
modelo desse conjunto);
• O conjunto {P, ¬P} é contraditório, pois não existe nenhuma
interpretação que satisfaça todas as suas fórmulas.
Sistema Semântico
1. O que acontece num sistema semântico?
2. Conceitos básicos
3. Como obter o valor lógico de uma fbf
4. Diagramas de decisão binários (BDDs)
5. Diagramas de decisão binários ordenados (OBDDs)
Diagramas de decisão binários (Binary Decision Diagrams
– OBDDs)
• Para se conseguir determinar de um modo mais eficiente o
valor lógico das fbfs vamos estudar os BDDS.
Diagramas de decisão binários (Binary Decision Diagrams
– OBDDs)
• Mas antes de chagar aos BDDs, há que apresentar um
conjunto de conceitos...
Conceito – Árvores de decisão binárias
• Nós
–
–
• Nós
–
não terminais:
são rotulados com os sı́mbolos de predicado da fbf;
cada um tem dois arcos: um tracejado e outro cheio;
terminais:
são rotulados com 0/1 (Falso/Verdadeiro).
Exemplo: Árvore binária para ¬(x ∨ y )
x
y
1
y
0
0
0
Árvore de decisão binária finita (cont)
• Uma árvore de decisão binária finita determina uma única
função Booleana definida em função dos sı́mbolos de
predicado que constam nos nós não terminais.
• Dada uma interpretação para os sı́mbolos proposicionais,
começamos pela raı́z da árvore e seguimos o arco no sentido
descendente tracejado/cheio no caso da interpretação do
sı́mbolo proposicional ser F/V
Exemplo: Árvore binária para ¬(x ∨ y )
x
y
1
y
0 0
0
• valor lógico para a interpretação x = F , y = V
x
y
1
y
0
0
0
E qual a relação com as tabelas de verdade?
Exemplo: tabela de verdade para ¬(x ∨ y )
x
V
V
F
F
¬(x ∨ y )
F
F
F
V
y
V
F
V
F
x
y
1
y
0
0
0
E qual a vantagem em relação às tabelas de verdade?
• Árvores de decisão binária têm uma dimensão semelhante às
tabelas de verdade
– MAS as árvores de decisão binária contêm redundâncias que
podem ser eliminadas!
Definição formal de BDDs
• Antes de definir formalmente o que é um BDD, vamos ter de
introduzir as definições de grafo dirigido e grafo dirigido
acı́clico
Conceito: grafo dirigido
• Um grafo dirigido é um par (N , A) em que:
– N é um conjunto de elementos chamados nós;
– A é um conjunto de arcos.
Conceito: arco
• Um arco é um par ordenado cujos elementos são nós, sendo
cada arco (ni , nj ) caracterizado pelo nó de partida ni e pelo
nó de chegada nj .
Conceito: ciclo
• Um ciclo num grafo dirigido é um caminho finito num grafo
que começa e termina num mesmo nó.
Exemplo: ciclo
• Um caminho com a forma n1 → n2 → . . . → nm → n1 é um
ciclo.
Conceito: grafo dirigido acı́clico (DAG)
• Um grafo dirigido acı́clico (DAG, do Inglês Directed Acyclic
Graph) é um grafo dirigido que não contém ciclos.
Conceito: nós iniciais/finais num DAG)
• Um nó num DAG é um nó inicial se não existem arcos que
terminem nesse nó;
• Um nó num DAG é um nó final se não existem arcos que
tenham inı́cio nesse nó.
Exemplo: grafo dirigido acı́clico
Conceito: definição formal de BDD
• Um
–
–
–
BDD é um DAG finito com as seguintes caracterı́sticas:
Tem um único nó inicial
Todos os nós terminais são rotulados com 1/0
Todos os nós não terminais são rotulados com um sı́mbolo
proposicional
– Cada nó não terminal é o nó inicial para dois arcos, em que
um arco é representado a tracejado e outro arco é representado
a cheio (correspondentes aos rótulos 0/1, respectivamente)
– Nota: considera-se que os arcos têm o sentido descendente
Exemplo: BDDs B0 e Bx
x
0
0
1
A seguir vamos ver...
• ... como é que os as redundâncias das BDDs podem ser
eliminadas através de um conjunto de passos chamados
reduções (porque permitem reduzir o tamanho do BDD).
Reduções em BDDs
• R1: Remoção de folhas duplicadas
• R2: Remoção de testes redundantes
• R3: Remoção de nós redundantes
• Nota: um BDD diz-se reduzido se nenhuma destas reduções
puder ser aplicada
R1: Remoção de folhas duplicadas
• Se um BDD contém mais do que um nó terminal com os
rótulos 0/1, então podemos redireccionar todos os arcos
dirigidos para nós com o rótulo 0/1 para apenas um nó.
• Nota: na prática existe no máximo um nó com o rótulo V e
um nó com o rótulo F.
Exemplo: Remoção de folhas duplicadas
x
x
y
1
y
y
0
0
0
1
y
0
R2: Remoção de testes redundantes
• Se os dois arcos que saem de um nó n se dirigem a um mesmo
nó m então podemos eliminar o nó n e direccionar os arcos
para o nó m
• Por cada nó eliminado, é eliminado um par de arcos
tracejados/cheios
Exemplo: remoção de testes redundantes
x
x
y
1
y
0
y
1
0
R3: Remoção de nós redundantes
• Se dois nós distintos n e m são raı́z de dois sub-BDDs
estruturalmente equivalentes, então podemos eliminar o nó m
e dirigir todos os arcos para o nó n.
• Nota: a remoção de folhas duplicadas é um caso especial da
remoção de nós redundantes.
Exemplo: BDD com sub-BDDs duplicadas
z
x
x
y
y
0
y
y
1
Exemplo: remoção de nós redundantes
z
z
x
x
x
y
y
y
0
1
y
y
0
1
Vamos lá fazer uns exercı́cios!
Mas então...
• tudo bem que conseguimos reduzir os BDDs...
• ... mas antes de chegar ao BDD reduzido temos de construir
previamente a árvore de decisão binária, mantendo-se o
problema de complexidade exponencial que já tı́nhamos com
as tabelas de verdade...
E então que ganhamos com isto tudo?
É que podemos fazer composição de BDDs!
• Ou seja, podemos construir um BDD para uma fbf a partir de
BDDs (já reduzidas) que correspondem a componentes da fbf.
E como é que é feita essa composição?
• BDD para ¬α construı́da a partir do BDD para α (BDDα ):
nós terminais com rótulo 0/1 substituı́dos por nós terminais
com rótulo 1/0
• BDD para α ∧ β construı́da a partir do BDDα : nó com rótulo
1 substituı́do pela BDDβ ; de seguida aplicar transformações
• BDD para α ∨ β construı́da a partir do BDDα : nó com rótulo
0 substituı́do pela BDDβ ; de seguida aplicar transformações
Exemplo: BDDs B e ¬B
x
x
y
1
y
y
0 0
0
0
y
1
1
1
Vamos lá ver outros exemplos
Só que a composição pode não correr sempre bem com
BDDs
Basicamente porque...
• ... nada impede que um mesmo sı́mbolo proposicional apareça
num caminho de um BDD mais do que uma vez.
Exemplo: sı́mbolo repetido
x
y
x
z
y
0
x
1
Aliás...
• O mesmo sı́mbolo pode aparecer mais do que uma vez (por
exemplo quando um BDD é construı́da usando composição).
E o problema é que...
• ... BDDs com múltiplas ocorrências de um mesmo sı́mbolo
proposicional ao longo de um caminho não são eficientes, pois,
por exemplo, passa a ser difı́cil detectar BDDs equivalentes;
Exemplo: BDDs equivalentes
x
x
y
z
y
x
y
y
x
z
0
1
0
1
Então há que arranjar uma alternativa...
• ... uma solução passa por impôr uma ordem aos sı́mbolos
proposicionais!
E surge então o conceito de BDDs ordenados, isto é,
OBDDs
Download

Lógica Proposicional