Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivos da Unidade:
ʪ Material Teórico
ʪ Material Complementar
ʪ Referências
1 /3
ʪ Material Teórico
q: Ana é alta;
irmãos(Ana, Luiz).
Λ Conjunção, operação E
∨ Disjunção, operação OU
→ Condicional
↔ Bicondicional
Vejamos descrições mais detalhadas dos principais conectivos empregados nas lógicas
proposicional e de predicados:
a Λ (b ∨ c) → d;
(p ∨ ~q) ↔ a.
Lógica de Predicados
A Lógica de Primeira Ordem (LPO), ou lógica de predicados, igualmente conhecida como Cálculo
de Predicados de Primeira Ordem (CPPO), ou simplesmente cálculo de predicados, é usualmente
uma extensão da lógica proposicional.
∀x significa para todo o x, para qualquer x, qualquer que seja x; ou seja, exprime
fatos sobre todos os objetos do universo;
Já em linguagem de programação como Prolog, que utiliza como base a lógica ou o cálculo de
predicados, a convenção é bem diferente (exemplo a seguir). Observe que as variáveis devem ser
escritas com letra inicial maiúscula. As constantes simbólicas – pedro, ana, rosa, java, python,
no exemplo – e os nomes de predicados – pessoa, caracteristica, conhece, candidatoVaga,
write, no seguinte exemplo – serão escritos com letra inicial minúscula.
Para utilizar uma ortografia correta, poderíamos considerar que a linguagem Prolog permite,
também, empregar constantes de tipo texto, strings, escrevendo o texto entre aspas, vejamos:
característica(“Ana”, “responsável”).
conhece(“Pedro”, “Java”).
conhece(“Pedro”, “Python”).
Exemplo de programa na linguagem de programação Prolog:
pessoa(pedro).
pessoa(ana).
pessoa(rosa).
caracteristica(pedro, honesto).
caracteristica(pedro, responsavel).
caracteristica(ana, honesto).
caracteristica(rosa, responsavel).
conhece(pedro, java)
conhece(pedro, python)
conhece(ana, php)
conhece(rosa, vb6)
candidatoVaga(P) :- caracteristica(P,honesto),
caracteristica(P,responsavel), conhece(P,java),
conhece(P,vbnet).
?-write("Candidatos à vaga:"), candidatoVaga(pr), write(Pr).
capital(p,q)
capital(Espanha, Madri)
mulher(Ana)
Observe que os nomes próprios de pessoas, países e cidades – Espanha, Madri, Ana – foram
escritos com letras iniciais maiúsculas, enquanto os nomes dos predicados capital e mulher
foram escritos com letras iniciais minúsculas e as variáveis p, q foram escritas com letras
minúsculas.
Veja também que o predicado mulher possui apenas um parâmetro, que é uma pessoa – Ana, no
exemplo anterior. Neste caso, o predicado mulher estabelece uma característica ao argumento
Ana – Ana é uma mulher.
Já o predicado capital possui dois parâmetros, ou argumentos, separados por uma vírgula. Esse
predicado estabelece uma relação entre os seus dois argumentos. Por exemplo, capital
(Espanha, Madri) estabelece que Madri é a capital do país Espanha.
A lógica de predicados pode ser utilizada como base teórica ao projeto e à implementação de
linguagens de programação dentro do paradigma da programação lógica.
A seguir veremos como seria uma possível representação do exemplo (Prolog) utilizando a nossa
convenção para a lógica de predicados:
pessoa(Pedro)
pessoa(Ana)
pessoa(Rosa)
caracteristica(Pedro, “honesto”)
caracteristica(Pedro, “responsável”)
caracteristica(Ana, “honesto”)
caracteristica(Rosa, “responsável”)
conhece(Pedro, Java)
conhece(Pedro, Python)
conhece(Ana, PHP)
∀p: caracteristica(p, “honesto”) ^ caracteristica(p, “responsável”) ^
conhece(p, Java) ^ conhece(p, Kotlin) → candidatoVaga(p)
Observe que nomes próprios como Pedro, Ana, Java e Python foram escritos com letra inicial
maiúscula, enquanto constantes como honesto e responsável foram escritos como textos entre
aspas e a variável p foi escrita com letra minúscula.
A proposição lógica da condicional → poderá ser lida como qualquer que seja p, se p tiver como
característica ser honesto, e p for responsável, e p conhece as linguagens de programação Java
e Kotlin, então p será candidato à vaga.
Fatos como nota(Ana, 5.5) utilizam dois argumentos ou parâmetros, sendo que o primeiro é o
nome do aluno e o segundo é a sua nota. Este predicado – fato, neste caso – estabelece um
relacionamento entre Ana e 5.5, sinalizando que Ana possui a pontuação 5.5 como nota.
Por sua vez, aprovado(x) indica que a pessoa x está aprovada. Neste caso, o predicado aprovado
atribui uma característica à pessoa x.
Ademais, utilizaremos três condicionais que nos permitem representar determinado raciocínio
lógico, ou seja, partindo de condições chegaremos a uma determinada conclusão:
∃x: aprovado(x).
A proposição lógica ∀x: ∀n: nota(x, n) ^ n >= 7.0 → aprovado(x) pode ser lida como qualquer que
seja x, qualquer que seja n, se o aluno x tem nota n, e essa nota n for maior ou igual que 7.0,
então o aluno x está aprovado.
Já a proposição lógica ∀x: ∀n: nota(x, n) ^ n < 7.0 → reprovado(x) pode ser lida como qualquer
que seja x, qualquer que seja n, se o aluno x tem nota n, e essa nota n for menor que 7.0, então o
aluno x está reprovado. Nas duas primeiras proposições lógicas utilizamos o quantificador
universal ∀.
Por fim, a proposição lógica ∃x: aprovado(x) poderia ser interpretada como existe pelo menos
um x, tal que esse aluno x está aprovado. Aqui utilizamos o quantificador existencial ∃.
Sejam:
nota(Júlio, 9.5)
nota(Ana, 5.5)
nota(Luiz, 7.0)
nota(Betty, 8.0)
∀x (R(x) → H(x))
Todo coelho salta. Qualquer que seja x, se x é um coelho, então ele salta;
∀x (R(x) ^ H(x))
Todos os animais são coelhos e saltam;
∃x (R(x) → H(x))
Existe um animal que se é o coelho então ele salta;
∃x (R(x) Λ H(x))
Existe pelo menos um coelho que salta.
∀x∀y (irmãos(x,y) → irmãos(y,x)) (Se Fulano e Beltrano são irmãos, então Beltrano
e Fulano são irmãos);
∀x∀y (gosta(x, mãe(y)) → gosta(y,x)) (Todos gostam de quem gosta de sua mãe);
Exemplo 1
Neste primeiro caso utilizaremos o predicado progenitor, que possui dois parâmetros: o
primeiro é o nome do(a) progenitor(a) e o segundo argumento é o nome do(a) filho(a).
A proposição lógica anterior tem este significado em português: para todo x, para todo y, SE x
for progenitor de y E x for mulher, ENTÃO x é mãe de y.
A proposição lógica anterior teria este significado em português: qualquer que seja x, qualquer
que seja y, SE x for progenitor de y E x for homem, ENTÃO x é pai de y.
Exemplo 2
Outras proposições lógicas mais complexas poderiam ser elaboradas como continuação do
exemplo anterior. Veja a seguir proposições que definem avô, irmãos, primos e tio. Tente fazer
uma figura para cada definição, o que lhe permitirá melhor analisar o relacionamento definido:
∀x: ∀y: ∀z: progenitor(x,y) ^ progenitor(y,z) ^ homem (x) → avô(x,z);
Exemplo 3
Com fatos – axiomas – com a seguinte estrutura:
Por exemplo:
populacao(Campinas, 2000000)
Ou utilizando um texto para a cidade:
populacao(“Campinas”, 2000000)
populacao(SaoPaulo, 15000000)
Exemplos de fatos:
populacao(Lima,1500000)
populacao(Brasília, 3000000)
capital(Brasil,Brasilia)
capital(Peru,Lima)
Ou desta forma:
ʪ Material Complementar
Livros
Inteligência Artificial
RICH, E.; KNIGHT, K. Inteligência artificial. 2. ed. São Paulo: Mcgraw-Hill do Brasil, 1993.
Inteligência Artificial
RUSSELL, S. J.; NORVIG, P. Inteligência artificial. Rio de Janeiro: Elsevier, 2004.
Leitura
Lógica de Predicados
Finalmente, complemente os seus estudos por meio da leitura do Item 4.2 – Equivalência entre
Sentenças – do material do professor doutor Sílvio do Lago Pereira.
ACESSE
3/3
ʪ Referências
ABE, J. M. Introdução à lógica para a ciência da computação. 2. ed. São Paulo: Arte Ciência, 2002.
ROSEN, K. Matemática discreta e suas aplicações. 6. ed. Porto Alegre, RS: McGraw Hill, 2010.