Você está na página 1de 39

Lógica para Programação

LEIC-Alameda
2023
Ana Paiva
Lógica de Primeira Ordem- Sistema
Dedutivo
(S2: A 1-2)

(estes slides são fortemente baseados nos slides


gentilmente cedidos pelas Professoras Inês Lynce e
Luísa Coheur, e qualquer gralha é da minha
responsabilidade)
Programa

• Conceitos Básicos (Livro: 1.1)


• Lógica Proposicional– sistema dedutivo (2.1, 2.2.1, 2.2.2 e 2.2.4)
• Lógica Proposicional (ou Cálculo de Predicados) –resolução(3.1)
• Lógica de Primeira Ordem – sistema dedutivo (4.1, 4.2)
• Lógica de Primeira Ordem – resolução (5.1 e 5.2)
• Programação em Lógica (6)
• Prolog (7 + Apêndice A: manual de sobrevivência em Prolog)
• Lógica Proposicional (ou de Predicados) – sistema semântico(2.3, 2.4,
3.2)
Lógica Proposicional (ou cálculo de predicados) vs.
Lógica de Primeira Ordem

Lógica Proposicional é baseada em proposições, isto é, como vimos, frases


declarativas que fazem afirmações sobre qualquer coisa (até agora, representadas
por P, Q, R, ...)

Ex: “O Presidente da República de Portugal é o Prof. Marcelo Rebelo de Sousa”


que seria representada como P
Limitações da Lógica Proposicional

Como representar?

ü “O João tem o número 53118”,


ü “A Maria tem o número 89999”

Sugestão: conjunção de símbolos proposicionais:

Aluno_João ∧ Número_53118 ∧ TemNúmero_João _53118


Aluno_Maria ∧ Número_ 89999 ∧ TemNúmero_Maria _
89999

E como representar: “Todos os alunos têm exactamente um


número”?
• Como referir “todos” e “exactamente um”?
• Como generalizar para todos os alunos e qualquer
número?
Lógica Proposicional (ou cálculo de predicados) vs.
Lógica de Primeira Ordem (ℒ LPO )

• Lógica Proposicional é baseada em proposições, isto é, como


vimos, frases declarativas que fazem afirmações sobre qualquer
coisa (até agora, representadas por P, Q, R, ...)

• Lógica de Primeira Ordem deverá permitir criar fórmulas mais


ricas, com estrutura interna…

Então há a necessidade de uma nova definição de fórmula bem


formada (fbf) e da introdução de novos símbolos e novas regras
de formação
A linguagem de Lógica de Primeira Ordem
(ℒ LPO ) : Variáveis

Variáveis: símbolos que desempenham o papel de “designações” sem serem


propriamente designações (modo através do qual se pode nomear algo ou alguém).

Cada variável pode ter como valor qualquer elemento de um conjunto denominado
o domínio da variável

Variáveis: como que “espaços em branco”…

Notas:
- Se uma variável figura em mas do que um lugar numa expressão, só
podemos atribuir-lhe de cada vez um mesmo valor em todos os lugares
que a variável ocupa na expressão.
- A variáveis diferentes é licito atribuir o mesmo valor, desde esse valor
pertença ao domínio de ambas as variáveis.
A linguagem de Lógica de Primeira Ordem
(ℒ LPO ) : Funções

Funções: são usadas no sentido lato para representar uma correspondência (ou
uma transformação) entre dois conjuntos de entidades.

Exemplos:
{(Portugal,Lisboa), (França, Paris), (Espanha, Madrid), …}
Capital (x) = a capital de x
N(x) = o ano de Nascimento de x
A linguagem de Lógica de Primeira Ordem (ℒ LPO ):
Alfabeto básico

1. Símbolos de pontuação: , ( ) [ ]
2. Símbolos lógicos: ¬, ∧, ∨,→, ∀, ∃
3. Os símbolos ¬, ∧, ∨,→, que já os vimos no Cálculo de Predicados
4. O símbolo ∀ lê-se “para todo” e corresponde ao operador de
quantificação universal
5. O símbolo ∃ lê-se “existe” e corresponde ao operador de
quantificação existencial
A linguagem de Lógica de Primeira Ordem (ℒ LPO ):
Alfabeto básico

• Letras de função com n argumentos (aridade n), para n ≥ 0 e i ≥ 1: fin


• Nota: as funções com aridade zero (ou seja, funções sem argumentos) correspondem a
constantes (termos)
• Normalmente as letras de função são designadas por cadeias de caracteres,
começando por uma letra minúscula.

• Letras de predicado com aridade n, Pin , para n ≥ 0 e i ≥ 1:


• Variáveis individuais para i ≥ 1: xi
• Termos (que representam objectos – constantes, variáveis e letras de
função aplicadas a termos são termos)
• Cada letra de função de aridade zero é um termo
• Cada variável é um termo
• Se t1, t2, t3, ….tn são termos então fin(t1, t2, t3, ….tn ) é um termo.
Fórmulas bem formadas (fbfs)

• Se t1, t2,. .., tn são termos,


então Pin(t1, t2,. .., tn ) é uma fbf (atómica)
• Se α é uma fbf então (¬ α) é uma fbf.
• Se α e β são fbfs então (α ∧ β) (α ∨ β) (α → β) são fbfs.
• Se α é uma fbf contendo zero ou mais ocorrências da variável x
então ∀ x [α] e ∃ x [α] são fbfs
• Nada mais é uma fbf

Novamente FBFs?
Exemplos

Se P é uma letra de predicado com aridade 2,


- Q uma letra de predicado com aridade 1,
- R e S letras de predicado com aridade zero,
- a, b, c, d letras de função com aridade zero (constantes) e
- f uma letra de função com aridade 1 e
- g uma letra de função com aridade 3

então as seguintes expressões são fbfs:

(¬P(a,g(a,b,c)))

(P(a,b) → (¬Q(f(d))))

(R ∧ S)
Exemplos

Vamos montar as seguintes representações:

Se Tem_fronteira e Vive_em são letras de predicado com aridade 2


Travaram_guerra é uma letra de predicado com aridade 3
capital é uma letra de função com aridade 1
Portugal e Espanha são constantes

Então as seguintes expressões são fbfs:

Tem_fronteira(Portugal, Espanha)

Tem_fronteira (x,y)

∀ x [∀𝑦 [Tem_fronteira (x,y) → ∃ g [Travaram_guerra (g,x,y)]]]

Vive_em (x, capital(Portugal))


Gerar provas em LPO

E também existe um sistema de dedução natural para a LPO?

Claro!
Sistema de dedução natural

Regras para Lógica Proposicional continuam válidas


(introdução e eliminação dos operadores lógicos, mais regra da
premissa, repetição e reiteração)

Mas…..

Há 4 regras novas: introdução/eliminação de quantificadores


• Mas antes temos de perceber bem os conceitos
de:
– "domı́nio de um quantificador"
– "substituição (e termo livre)"

Há sempre um mas….
Domínio dos quantificadores

1. Nas expressões ∀x [α] ou ∃x [α] a fbf α é chamada domínio do


quantificador (∀ ou ∃ )

2. α não tem de conter a variável x ;


• nesse caso ∀x [α] e ∃x [α] são equivalentes α.

3. x é variável livre em α se não for quantificada;


caso contrário (x é quantificada) …. x é a variável ligada.

4. Uma fbf sem variáveis livres diz-se fechada


Definições: sumário

Variável ligada: uma ocorrência de uma variável diz-se ligada (bound) numa fbf se
esta ocorrência aparecer dentro do domínio do quantificador que a introduz.

Variável livre: uma ocorrência de uma variável diz-se livre (free) numa fbf se esta
não for uma ocorrência ligada.

Fórmula fechada: uma fbf sem variáveis livres diz-se fechada.


Domíniodos quantificadores–exemplos

1. ∀x [Bom(x )]
contém a variável ligada x
2. Bom(x ) → ∃x [Quente(x )] contém:
• uma ocorrência de x livre (em Bom(x ))
• uma ocorrência de x ligada (em Quente(x ))
3. ∀ x [∀𝑦 [Tem_fronteira (x,y) → ∃ g [Travaram_guerra (g,x,y)]]]
• A variável x está ligada (em Tem_fronteira (x,y)) pelo quantificador ∀ x
• A variável y está ligada (em Tem_fronteira (x,y)) pelo quantificador ∀𝑦
• A variável g está ligada (em Travaram_guerra (g,x,y)) pelo quantificador ∃ g
Há sempre um mas….

• Mas antes temos de perceber bem os conceitos de:


– "domı́nio de um quantificador"
– "substituição (e termo livre)"

Ok… então o que fazemos com as variáveis?


Substituições
Substituição

Uma substituição é um conjunto finito de pares ordenados {t1/x1,. .., tn/xn}, em que:

• ti (1 ≤ i≤ n) é um termo (lembrar que um termo pode ser uma variável)


• xi (1 ≤ i ≤ n) é uma variável

Exemplos:
{a/x , f (a, b)/y}
{a/x , f (a, b)/y , c/z}

Como?
Aplicação de uma substituição a uma fórmula

Podemos aplicar substituições a formulas da seguinte forma:

A aplicação da substituição:
s = {t1/x1,. .., tn/xn},
à fbf α (denotado por α ◦ s)

corresponde à fbf obtida a partir de α substituindo todas as ocorrências


da variável livre xi por ti (1 ≤ i ≤ n)

Exemplos:
P(x , f (a, y )) ◦ {a/x , f (a, b)/y} =
P(a, f (a, f (a, b)))

P(x , f (a, y )) ◦ {a/x , f (a, b)/y , c/z} =


P(a, f (a, f (a, b)))

A(x ) → ∀x [B(x )] ◦ {a/x , f (a, b)/y , c/z} =


A(a) → ∀x[B(x )]
Nota: nesta formula, x só é livre na sua primeira ocorrência
Atenção!!!!

1. Nenhuma das variáveis pode ser igual ao termo correspondente


Sejam x , y , z variáveis e f função
• OK: {f (x )/x , z /y}
• KO: {x /x , z /y}
2. Todas as variáveis têm de ser diferentes
Sejam x , y , z variáveis e f , g , h funcões de um argumento
• OK: {a/x , g (y )/y , f (g (h(b)))/z}
• KO : {a/x , g (y )/y , b/x , f (g (h(b)))/z}
Problema com a definicão actual de
substituicão

• ∀x [P(x, f (a,y))] ◦ {x/y} =


∀ x [P(x,f (a,x)))]

Efeito colateral indesejável!


Alteracão do significado da fbf:
y era variável livre e o termo que a substitui inclui a variável x que não é livre
Solução para o problema com as substituições

• Nova abordagem: nem todas as substituições de variáveislivres


fazem sentido
• Novo conceito: termo livre para uma variável numa fbf
Termo livre para uma variável numa fbf

Se α for uma fbf e t um termo, dizemos que t é livre para a variável x


em α se nenhuma ocorrência livre de x em α ocorrer dentro do
domínio do quantificador ∀y (ou ∃y ) em que y é uma variável em t.

• Exemplo: considere-se o termo g (y , f (b))


1. O termo g (y , f (b)) é livre para x na fbf P(x, y )
(se substituir x por g (y, f (b)), tudo OK)
2. O termo g (y , f (b)) não é livre para x na fbf ∀ y [P(x, y )]
(se substituir x por g (y, f (b)),
a variável y, livre no termo g (y, f (b)),
passa a estar ligada após a substituição, ou seja, KO)
Substituição (novamente)

• α(x1,. .., xn) indica que a fbf α tem x1,. .., xn como variáveis livres (pode
ter outras além destas)

• Se ocorrências de xi foram substituídas por t livre para xi em α então


nenhuma ocorrência de uma variável em t deixa de ser livre em α(t)
- α(x1,. .., xn) ◦ {t1/x1,. .., tn /xn} = α(t1,. .., tn)
Ai ai...
Será que podemos avançar para o sistema
dedutivo da LPO? (suspiro)
Sistema de dedução natural: já tinhamos
visto…

Regras para Lógica Proposicional continuam válidas

MAS…..

Há 4 regras novas: introdução/eliminação de quantificadores


Eliminação de ∀

Se ∀ x [α (x)] é verdadeiro, então


n ∀ x [α (x)] todas as entidades verificam a
: : propriedade α, ou seja, qualquer
: : termo arbitrário t, se
m α (t) E ∀, n substituirmos x por t, podemos
afirmar a fbf α (t)

Racional: Se ∀ x [α (x)] é verdadeiro, então podemos substituir x


em α por qualquer termo t, desde que t seja livre para x em α, e
concluir que t é livre para x em α
Exemplo: {P(r), ∀ x [P(x ) → ¬Q(x )]} ⊢ ¬Q(r)

1 P (r) Prem
2 ∀ x [P(x ) → ¬Q(x )] Prem
3 P(r) → ¬Q(r) E ∀, 2
4 ¬Q(r) E → , 1,3

{P(r), ∀ x [P(x ) → ¬Q(x )]} ⊢ ¬Q(r)

Regra:
n ∀ x [α (x)]
: :
: :
m α (t) E ∀, n
Introdução de ∀

Ideia: Se x0 é uma variável nova, que nunca apareceu


anteriormente;
n x0 E se a partir de uma variável x0 conseguimos derivar α(x0)
: então, pelo facto de x0 ser uma variável que representa
: qualquer objecto, podemos derivar ∀ x [α (x)]
m α (x0)

m+1 ∀ x [α (x)] I ∀ , (n,m)

Se numa prova iniciada pela introdução da variável x0 que nunca tinha


aparecido na prova, conseguimos derivar a fbf α (x0) então podemos
escrever ∀ x [α (x)] na prova que contém imediatamente a prova hipotética com
a introdução da variável x0.
Exemplo:
{ ∀ x[P (x) → Q (x)], ∀ x[Q (x) → R (x)]} ⊢ ∀ x[P(x) → R(x)]

1 ∀ x [P(x ) → Q(x )] Prem


2 ∀ x [Q(x ) → R(x )] Prem
3 x0 P(x0) Hip
4 ∀ x [P(x ) → Q(x )] Reit 1
5 ∀ x [Q(x ) → R(x )] Reit 2
6 P(x0) → Q(x0) E∀4
7 Q(x0) E → (3,6)
8 Q(x0) → R(x0 ) E∀5
9 R(x0 ) E → (7,8)
10 P(x0) → R(x0 ) I → (3,9)
Nota 11 ∀ x [P(x ) → R(x )] I ∀ (3,10)

n x0
:
:
m α (x0)

m+1 ∀ x [α (x)] I ∀ , (n,m)


Introdução de ∃

Ideia: a partir de α(t), em que t é um termo,


n α (t) podemos inferir
:
∃ x [α (x)]
m ∃x [α (x)] I ∃, n

Nota: α (t) contém mais informação do que ∃ x [α (x)] , pois:


- ∃ x [α (x)] significa que α (x) se verifica para um valor de x não
especificado
- E α (t) significa que α (x) se verifica para um termo específico t
Exemplo:
{ ∀ x [P (x)]} ⊢ ∃ x [P (x)]

1 ∀ x [P(x ) ] Prem
2 P(t) E∀1
3 ∃ x [P(x )] I∃2
Eliminação de ∃

n ∃x [α (x)]
m x0 α (x0) Hip
:
:
k 𝛽
k+1 𝛽 E ∃, (n,(m,k))

• Se ∃ x [α (x )] é verdadeiro então α(x ) é verdadeiro para pelo menos um valor


de x

• Se ao assumir α(x0) para uma variável nova x0 conseguimos obter β que não
inclui x0 então podemos inferir β independentemente do valor x0 que satisfaz
α(x )
Exemplo:
∃x[P(x )] → ¬ ∀ x [¬P(x )]

1 ∃x[P(x )] Hip
2 x0 P(x0) Hip
3 ∀ x [¬P(x )] Hip
4 ¬ P(x0) E ∀3
5 P(x0) Reit 2
6 ¬ ∀ x [¬P(x )] I ¬ 3, (4,5)
7 ¬ ∀ x [¬P(x )] E ∃ (1,(2,6))
8 ∃x[P(x )] → ¬ ∀ x [¬P(x )] I → (1,7)

Nota:
n ∃x [α (x)]
m x0 α (x0) Hip
:
:
k 𝛽
k+1 𝛽 E ∃, (n,(m,k))
Exemplo:

{ ∀ x [ F(x) → G(x)], ∃x [F(x) ∧ H(x)] } ⊢ ∃x [G(x) ∧ H(x)]


1 ∀ x [F(x ) → G(x )] Prem
2 ∃ x [F(x ) ∧ H(x)] Prem
3 x0 F(x0) ∧ H(x0) Hip
4 F(x0) E∧,3
5 ∀ x [F(x ) → G (x )] Reit 1
6 F(x0) → G(x0) E ∀, 5
7 G(x0) E → (4,6)
8 H(x0 ) E∧,3
9 G(x0) ∧ H (x0 ) I ∧ (7,8)
10 ∃ x [G(x ) ∧ H(x)] I ∃,9
11 ∃ x [G(x ) ∧ H (x )] E ∃ , (2,(3,10))
Programa

• Conceitos Básicos (Livro: 1.1)


• Lógica Proposicional– sistema dedutivo (2.1, 2.2.1, 2.2.2 e 2.2.4)
• Lógica Proposicional (ou Cálculo de Predicados) –resolução(3.1)
• Lógica de Primeira Ordem – sistema dedutivo (4.1, 4.2)
• Lógica de Primeira Ordem – resolução (5.1 e 5.2)
• Programação em Lógica (6)
• Prolog (7 + Apêndice A: manual de sobrevivência em Prolog)
• Lógica Proposicional (ou de Predicados) – sistema semântico(2.3, 2.4,
3.2)

Você também pode gostar