SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Paradigmas de Programação
Ronaldo F. Ramos
Instituto Federal do Ceará
15 de outubro de 2023
PARTE 2 - PARADIGMA DECLARATIVO
PROLOG
PROGRAMMING IN LOGICS
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 2 / 48
Interpretadores Disponíveis
SWI - PROLOG
https://www.swi-prolog.org/
SWISH
https://swish.swi-prolog.org/
Gnu PROLOG
http://www.gprolog.org/
Em Python
https://pypi.org/project/pyswip/0.2.2/
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 3 / 48
Roteiro
Conceitos Iniciais
Definição de Programa, Computação, Termos, Átomos, Fatos, Regras e Queries
Definição de Metas, Meaning, Procedures, etc
Exemplos iniciais
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 4 / 48
Programa
Conjunto de Axiomas
(Programação Axiomática)
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 5 / 48
Computação
Prova construtiva de uma meta a partir de um programa.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 6 / 48
Termos
Blocos de construção para a representação de dados. Podem ser variáveis, inteiros, números
reais, átomos e listas.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 7 / 48
Átomos
Alfanumérico: banana, c3, banana_split
Cadeias: ’Banana-split é para a sobremesa?’
Simbólicos: #, &, =
Especiais: $, !, ; , [, ],
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 8 / 48
Fatos
Forma mais simples de comando/declaração é um fato.
1 pai(abraão,isaque).
2 soma (0,1,1).
3 soma (1,1,2).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 9 / 48
Uma Família Bíblica em Fatos 1/2
1 pai(terá,abraão).
2 pai(terá,naor).
3 pai(terá,arão).
4 pai(abraão,isaque).
5 pai(arão,ló).
6 pai(arão,milca).
7 pai(arão,iscá).
8 homem(terá).
9 homem(abraão).
10 homem(naor).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 10 / 48
Uma Família Bíblica em Fatos 2/2
1 homem(arão).
2 homem(isaque).
3 homem(ló).
4 mulher(sara).
5 mulher(milca).
6 mulher(iscá).
7 mãe(sara,isaque).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 11 / 48
Predicados
Um predicado é um nome dado a uma relação entre termos. Predicados definidos pelo usuário
e próprios da linguagem. O número de argumentos de um predicado é a sua Aridade.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 12 / 48
Queries (Perguntas)
Uma pergunta é uma forma de extrair informação de programas lógicos. É um predicado
interrogativo. Uma pergunta pode conter uma ou mais metas.
Ex.
1 ?-pai(abraão,isaque).
2 ?-soma (0,1,1).
3 ?-soma (1,1,2).
Uma pergunta é consequência lógica de um fato idêntico.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 13 / 48
Variáveis
Uma variável é uma representação de um dado que pode mudar ao longo do tempo. Não
representa uma posição de memória, mas um conceito abstrato.
Ex. X, _tape_number, Age
Sempre começam com letras maiúsculas ou caractere de sublinha (underscore).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 14 / 48
Substituição
Conjunto finito (Possivelmente vazio) de pares na forma Xi = tj onde Xi é uma variável e ti é
um termo e Xi ̸= Xj ∀i ̸= j e Xi não ocorre em tj ∀i, j.
Ex. {X = isaque, Y = abraao}
O resultado de aplicação de uma substituição θ a um termo A é denotado por Aθ. Seja o
termo A = pai(abraao, X) e a substituição θ = {X = isaque} então Aθ = pai(abraao, isaque)
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 15 / 48
Instância
A é instância de B se existe uma substituição tal que A = Bθ
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 16 / 48
Perguntas Existenciais
Toda pergunta com variáveis se transforma em uma pergunta existencial.
Ex. pai(abraao, X) significa : "Existe alguém de quem abraão é pai?"
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 17 / 48
Regras
Expressões na forma de horn invertida.
< Consequente >: − < antecedente1, .., antecedenten > equivale a dizer Consequente se
antecedente1 e atencedente2 e... etc ou ainda para satisfazer o Consequente faça o
antecedente1, ... etc
Ex.
1 filho(X,Y) :- pai(Y,X), homem(X).
2 filha(X,Y) :- pai(Y,X), mulher(X).
Observe que a vírgula substitui a conjunção ∧
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 18 / 48
Cláusulas
Fatos ou regras são cláusulas. Finalizadas por um ponto.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 19 / 48
Fatos Universais
Todos os fatos com variáveis são universalmente quantificados.
Todos gostam de caju.
1 gosta(X,caju).
Qualquer número multiplicado por zero resulta zero.
1 vezes (0,X,0).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 20 / 48
Instância Comum
C é uma instância comum de A e B se é uma instância de A e uma instância de B, ou seja,
existem substituições θ1 e θ2 tais que C = Aθ1 = Bθ2
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 21 / 48
Perguntas Conjuntivas
Conjunção de metas colocadas como uma pergunta. As variáveis com mesmo nome criam
relação de dependência.
Ex.
Abraão é pai de alguém que por sua vez é pai de outra pessoa?
1 pai(abraao,X),pai(X,Y).
Uma pergunta conjuntiva é consequência lógica de um programa(P) se todas as metas na
conjunção são consequências de P e as variáveis compartilhadas são instanciadas com os
mesmos valores nas diferentes metas.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 22 / 48
Programa
Um programa é um conjunto finito de regras.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 23 / 48
Meta Quantificada Existencialmente
Uma meta quantificada existencialmente (G) é uma consequência lógica de um programa (P)
se existe uma instância ground A ← B1, B2, ..., Bnn > 0 tal que B1, B2, ..., Bn sejam
consequência lógica de P e A seja uma instância de G.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 24 / 48
Procedimento - Procedure
Um conjunto de regras com o mesmo predicado na cabeça.
1 avo(X,Y) :- pai(X,Z), pai(Z,Y).
2 avo(X,Y) :- pai(X,Z), mae(Z,Y).
3 avoh(X,Y) :- mae(X,Z), pai(Z,Y).
4 avoh(X,Y) :- mae(X,Z), mae(Z,Y).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 25 / 48
Redução
A redução de uma meta (G) por um programa (P) é a substituição de G pelo corpo de uma
instância de uma cláusula em P cuja cabeça é idêntica a G. Trata-se de um passo
computacional básico em programação lógica.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 26 / 48
Redução
A redução de uma meta (G) por um programa (P) é a substituição de G pelo corpo de uma
instância de uma cláusula em P cuja cabeça é idêntica a G. Trata-se de um passo
computacional básico em programação lógica.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 27 / 48
Meaning - Significado
O significado de um programa lógico é o conjunto de metas ground dedutíveis dele. Dizemos
que um programa é correto com relação a um significado desejado (M) se M(P) é subconjunto
de M
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 28 / 48
Comandos Iniciais Úteis do Interpretador
assert(<predicado ou regra>). - Adiciona um fato ou regra a base de conhecimento
halt. - Sai do interpretador
consult(<endereço do arquivo>). ou [<endereço do arquivo>] - Carrega programa
(base de conhecimento) para a memória.
trace. - Liga o modo de rastrabilidade para debug.
notrace. - Desliga o trace.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 29 / 48
Programa 001 - Familia Bíblica
Use o interpretador ou o swish para carregar os predicados abaixo.
1 % base de dados biblicos
2 masculino(tera).
3 masculino(abraao).
4 masculino(naor).
5 masculino(haran).
6 masculino(isaque).
7 masculino(lo).
8 feminino(sara).
9 feminino(milca).
10 feminino(iscah).
11 ...
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 30 / 48
Programa 001 - Familia Bíblica
Use o interpretador ou o swish para carregar os predicados abaixo.
1 pai(tera,abraao).
2 pai(tera,naor).
3 pai(tera,haran).
4 pai(abraao,isaque).
5 pai(haran,lo).
6 pai(haran,milca).
7 pai(haran,iscah).
8 mae(sara,isaque).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 31 / 48
Metas Existenciais
Vamos testar as metas:
1 ? :- pai(tera,naor).
2 ? :- pai(tera,jose).
3 ? :- pai(X,lo).
4 ? :- pai(X,Y).
5 ? :- masculino(Alguem).
6 ? :- feminino(Mulher).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 32 / 48
Acrescentando Regras
Vamos acrescentar regras a estes predicados
Um avô é um pai de um pai ou pai de uma mãe.
(Desconsiderando o sexo do neto por enquanto)
1 avo(Avo,Neto) :- pai(Avo,Filho),pai(Filho,Neto).
2 avo(Avo,Neto) :- pai(Avo,Filha),mae(Filha,Neto).
Agora podemos fazer novas perguntas:
1 avo(tera,X).
2 avo(X,Y).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 33 / 48
Definindo Irmão
Irmão são filhos do mesmo pai ou da mesma mãe.
1 irmao(X,Y) :- pai(Z,X),pai(Z,Y).
2 irmao(X,Y) :- mae(Z,X),mae(Z,Y).
Há algo errado com a definição acima? Alguém é irmão de si mesmo? Experimente.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 34 / 48
Definindo Irmão - Correção
Ninguém é irmão de si mesmo.
1 irmao(X,Y) :- pai(Z,X),pai(Z,Y), X = Y.
2 irmao(X,Y) :- mae(Z,X),mae(Z,Y), X = Y.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 35 / 48
Definindo Homem e Mulher
Podemos usar homem e mulher como sinônimos de masculino e feminino ou substituí-los
1 homem(H) :- masculino(H).
2 mulher(M) :- feminino(M).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 36 / 48
Definindo Filho e Filha
Podemos usar homem e mulher como sinônimos de masculino e feminino ou substituí-los
1 filho(X,Y) :- pai(Y,X),homem(X).
2 filho(X,Y) :- mae(Y,X),homem(X).
3 filha(X,Y) :- pai(Y,X),mulher(X).
4 filha(X,Y) :- mae(Y,X),mulher(X).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 37 / 48
Definindo Progenitor (sem sexo)
Podemos usar homem e mulher como sinônimos de masculino e feminino ou substituí-los
1 progenitor(X,Y) :- pai(X,Y).
2 progenitor(X,Y) :- mae(X,Y).
Agora podemos definir irmão em função de progenitor. Experimente.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 38 / 48
Exercício
Agora defina os seguintes predicados: tio, tia, avô, avó, bisavô, bisavó, trisavô, trisavó,
tetraavô, tetraavó, primo, familiar (faz parte da família), tio avô, tia avó, primo em segundo
grau, primo em terceiro grau, ancestral e descendente.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 39 / 48
Pausa
Tente
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 40 / 48
Regras Recursivas
Definir uma coisa em termos dela própria (kkkk). Vejamos a definição de ancestral.
Observemos as relações recursivas.
avô(Ancestral,Descendente) :- pai1(Ancestral, Pessoa), pai(Pessoa, Descendente)
bisavô(Ancestral,Descendente) :- pai(Ancestral, Pessoa), avô(Pessoa, Descendente)
trisavô(Ancestral,Descendente) :- pai(Ancestral, Pessoa), bisavô(Pessoa, Descendente)
Isto nos leva ao padrão:
ancestral(Ancestral,Descendente) :-pai(Ancestral,Pessoa),ancestral(Pessoa,Descendente)
Não leva a um loop infinito??
1
Vamos abstrair das mães por enquanto
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 41 / 48
Caso Base
Em algum momento a recursão deve ser obrigada a parar.
ancestral(Ancestral, Descendente) :- pai(Ancestral,Descendente).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 42 / 48
Programa Ancestral
% Casos Base
ancestral(Ancestral,Descendente) :- pai(Ancestral,Descendente).
ancestral(Ancestral,Descendente) :- mãe(Ancestral,Descendente).
% Definição
ancestral(Ancestral,Descendente) :- pai(Ancestral,Pessoa), ancestral(Pessoa,Descendente).
ancestral(Ancestral,Descendente) :- mãe(Ancestral,Pessoa), ancestral(Pessoa,Descendente).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 43 / 48
Fechamento Transitivo
É dito que a relação ancestral é um fechamento transitivo da relação de parentesco e
portanto facilmente realizada através de uma regra recursiva.
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 44 / 48
Recursão Linear
Um programa é recursivo linear se possui apenas uma meta recursiva no corpo da cláusula.
Ex de definição de ancestral não linear:
ancestral(Ancestral,Descendente) :- ancestral(Ancestral,Pessoa),
ancestral(Pessoa,Descendente).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 45 / 48
Grafo Direcionado Simples
Vejamos um outro exemplo de fecho transitivo
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 46 / 48
Descrevendo o grafo
% fatos
eixo(a,b). eixo(a,c). eixo(b,d).
eixo(c,d). eixo(d,e). eixo(f,g).
% caso base
conectado(nó,nó).
% regra recursiva
conectado(nó1,nó2) :- eixo(nó1,Link), conectado(Link,nó2).
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 47 / 48
CONTINUA
Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 48 / 48

Mais conteúdo relacionado

Mais de ronaldo ramos

Mais de ronaldo ramos (20)

02_lisp.pdf
02_lisp.pdf02_lisp.pdf
02_lisp.pdf
 
01_lisp.pdf
01_lisp.pdf01_lisp.pdf
01_lisp.pdf
 
javascript_funcional.pdf
javascript_funcional.pdfjavascript_funcional.pdf
javascript_funcional.pdf
 
python_funcional.pdf
python_funcional.pdfpython_funcional.pdf
python_funcional.pdf
 
paradigmas_de_programacao_2_X.pdf
paradigmas_de_programacao_2_X.pdfparadigmas_de_programacao_2_X.pdf
paradigmas_de_programacao_2_X.pdf
 
paradigmas_de_programacao_1_X.pdf
paradigmas_de_programacao_1_X.pdfparadigmas_de_programacao_1_X.pdf
paradigmas_de_programacao_1_X.pdf
 
paradigmas_de_programacao.pdf
paradigmas_de_programacao.pdfparadigmas_de_programacao.pdf
paradigmas_de_programacao.pdf
 
python_funcional.pdf
python_funcional.pdfpython_funcional.pdf
python_funcional.pdf
 
40-aula40.pdf
40-aula40.pdf40-aula40.pdf
40-aula40.pdf
 
43-aula43.pdf
43-aula43.pdf43-aula43.pdf
43-aula43.pdf
 
48-aula48-modelosTemporais.pdf
48-aula48-modelosTemporais.pdf48-aula48-modelosTemporais.pdf
48-aula48-modelosTemporais.pdf
 
47-aula47-fuzzy-aplicacao.pdf
47-aula47-fuzzy-aplicacao.pdf47-aula47-fuzzy-aplicacao.pdf
47-aula47-fuzzy-aplicacao.pdf
 
46-aula46-fuzzy.pdf
46-aula46-fuzzy.pdf46-aula46-fuzzy.pdf
46-aula46-fuzzy.pdf
 
42-aula42.pdf
42-aula42.pdf42-aula42.pdf
42-aula42.pdf
 
39-aula39.pdf
39-aula39.pdf39-aula39.pdf
39-aula39.pdf
 
38-aula38.pdf
38-aula38.pdf38-aula38.pdf
38-aula38.pdf
 
36-aula36.pdf
36-aula36.pdf36-aula36.pdf
36-aula36.pdf
 
35-aula35.pdf
35-aula35.pdf35-aula35.pdf
35-aula35.pdf
 
34-aula34.pdf
34-aula34.pdf34-aula34.pdf
34-aula34.pdf
 
30-aula30.pdf
30-aula30.pdf30-aula30.pdf
30-aula30.pdf
 

Último

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfFernandaMota99
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamentalAntônia marta Silvestre da Silva
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memorialgrecchi
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfMárcio Azevedo
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 

Último (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdf
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Libras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS MemoriaLibras Jogo da memória em LIBRAS Memoria
Libras Jogo da memória em LIBRAS Memoria
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdf
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 

Prolog Programming in Logics

  • 1. Paradigmas de Programação Ronaldo F. Ramos Instituto Federal do Ceará 15 de outubro de 2023
  • 2. PARTE 2 - PARADIGMA DECLARATIVO PROLOG PROGRAMMING IN LOGICS Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 2 / 48
  • 3. Interpretadores Disponíveis SWI - PROLOG https://www.swi-prolog.org/ SWISH https://swish.swi-prolog.org/ Gnu PROLOG http://www.gprolog.org/ Em Python https://pypi.org/project/pyswip/0.2.2/ Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 3 / 48
  • 4. Roteiro Conceitos Iniciais Definição de Programa, Computação, Termos, Átomos, Fatos, Regras e Queries Definição de Metas, Meaning, Procedures, etc Exemplos iniciais Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 4 / 48
  • 5. Programa Conjunto de Axiomas (Programação Axiomática) Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 5 / 48
  • 6. Computação Prova construtiva de uma meta a partir de um programa. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 6 / 48
  • 7. Termos Blocos de construção para a representação de dados. Podem ser variáveis, inteiros, números reais, átomos e listas. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 7 / 48
  • 8. Átomos Alfanumérico: banana, c3, banana_split Cadeias: ’Banana-split é para a sobremesa?’ Simbólicos: #, &, = Especiais: $, !, ; , [, ], Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 8 / 48
  • 9. Fatos Forma mais simples de comando/declaração é um fato. 1 pai(abraão,isaque). 2 soma (0,1,1). 3 soma (1,1,2). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 9 / 48
  • 10. Uma Família Bíblica em Fatos 1/2 1 pai(terá,abraão). 2 pai(terá,naor). 3 pai(terá,arão). 4 pai(abraão,isaque). 5 pai(arão,ló). 6 pai(arão,milca). 7 pai(arão,iscá). 8 homem(terá). 9 homem(abraão). 10 homem(naor). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 10 / 48
  • 11. Uma Família Bíblica em Fatos 2/2 1 homem(arão). 2 homem(isaque). 3 homem(ló). 4 mulher(sara). 5 mulher(milca). 6 mulher(iscá). 7 mãe(sara,isaque). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 11 / 48
  • 12. Predicados Um predicado é um nome dado a uma relação entre termos. Predicados definidos pelo usuário e próprios da linguagem. O número de argumentos de um predicado é a sua Aridade. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 12 / 48
  • 13. Queries (Perguntas) Uma pergunta é uma forma de extrair informação de programas lógicos. É um predicado interrogativo. Uma pergunta pode conter uma ou mais metas. Ex. 1 ?-pai(abraão,isaque). 2 ?-soma (0,1,1). 3 ?-soma (1,1,2). Uma pergunta é consequência lógica de um fato idêntico. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 13 / 48
  • 14. Variáveis Uma variável é uma representação de um dado que pode mudar ao longo do tempo. Não representa uma posição de memória, mas um conceito abstrato. Ex. X, _tape_number, Age Sempre começam com letras maiúsculas ou caractere de sublinha (underscore). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 14 / 48
  • 15. Substituição Conjunto finito (Possivelmente vazio) de pares na forma Xi = tj onde Xi é uma variável e ti é um termo e Xi ̸= Xj ∀i ̸= j e Xi não ocorre em tj ∀i, j. Ex. {X = isaque, Y = abraao} O resultado de aplicação de uma substituição θ a um termo A é denotado por Aθ. Seja o termo A = pai(abraao, X) e a substituição θ = {X = isaque} então Aθ = pai(abraao, isaque) Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 15 / 48
  • 16. Instância A é instância de B se existe uma substituição tal que A = Bθ Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 16 / 48
  • 17. Perguntas Existenciais Toda pergunta com variáveis se transforma em uma pergunta existencial. Ex. pai(abraao, X) significa : "Existe alguém de quem abraão é pai?" Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 17 / 48
  • 18. Regras Expressões na forma de horn invertida. < Consequente >: − < antecedente1, .., antecedenten > equivale a dizer Consequente se antecedente1 e atencedente2 e... etc ou ainda para satisfazer o Consequente faça o antecedente1, ... etc Ex. 1 filho(X,Y) :- pai(Y,X), homem(X). 2 filha(X,Y) :- pai(Y,X), mulher(X). Observe que a vírgula substitui a conjunção ∧ Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 18 / 48
  • 19. Cláusulas Fatos ou regras são cláusulas. Finalizadas por um ponto. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 19 / 48
  • 20. Fatos Universais Todos os fatos com variáveis são universalmente quantificados. Todos gostam de caju. 1 gosta(X,caju). Qualquer número multiplicado por zero resulta zero. 1 vezes (0,X,0). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 20 / 48
  • 21. Instância Comum C é uma instância comum de A e B se é uma instância de A e uma instância de B, ou seja, existem substituições θ1 e θ2 tais que C = Aθ1 = Bθ2 Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 21 / 48
  • 22. Perguntas Conjuntivas Conjunção de metas colocadas como uma pergunta. As variáveis com mesmo nome criam relação de dependência. Ex. Abraão é pai de alguém que por sua vez é pai de outra pessoa? 1 pai(abraao,X),pai(X,Y). Uma pergunta conjuntiva é consequência lógica de um programa(P) se todas as metas na conjunção são consequências de P e as variáveis compartilhadas são instanciadas com os mesmos valores nas diferentes metas. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 22 / 48
  • 23. Programa Um programa é um conjunto finito de regras. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 23 / 48
  • 24. Meta Quantificada Existencialmente Uma meta quantificada existencialmente (G) é uma consequência lógica de um programa (P) se existe uma instância ground A ← B1, B2, ..., Bnn > 0 tal que B1, B2, ..., Bn sejam consequência lógica de P e A seja uma instância de G. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 24 / 48
  • 25. Procedimento - Procedure Um conjunto de regras com o mesmo predicado na cabeça. 1 avo(X,Y) :- pai(X,Z), pai(Z,Y). 2 avo(X,Y) :- pai(X,Z), mae(Z,Y). 3 avoh(X,Y) :- mae(X,Z), pai(Z,Y). 4 avoh(X,Y) :- mae(X,Z), mae(Z,Y). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 25 / 48
  • 26. Redução A redução de uma meta (G) por um programa (P) é a substituição de G pelo corpo de uma instância de uma cláusula em P cuja cabeça é idêntica a G. Trata-se de um passo computacional básico em programação lógica. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 26 / 48
  • 27. Redução A redução de uma meta (G) por um programa (P) é a substituição de G pelo corpo de uma instância de uma cláusula em P cuja cabeça é idêntica a G. Trata-se de um passo computacional básico em programação lógica. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 27 / 48
  • 28. Meaning - Significado O significado de um programa lógico é o conjunto de metas ground dedutíveis dele. Dizemos que um programa é correto com relação a um significado desejado (M) se M(P) é subconjunto de M Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 28 / 48
  • 29. Comandos Iniciais Úteis do Interpretador assert(<predicado ou regra>). - Adiciona um fato ou regra a base de conhecimento halt. - Sai do interpretador consult(<endereço do arquivo>). ou [<endereço do arquivo>] - Carrega programa (base de conhecimento) para a memória. trace. - Liga o modo de rastrabilidade para debug. notrace. - Desliga o trace. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 29 / 48
  • 30. Programa 001 - Familia Bíblica Use o interpretador ou o swish para carregar os predicados abaixo. 1 % base de dados biblicos 2 masculino(tera). 3 masculino(abraao). 4 masculino(naor). 5 masculino(haran). 6 masculino(isaque). 7 masculino(lo). 8 feminino(sara). 9 feminino(milca). 10 feminino(iscah). 11 ... Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 30 / 48
  • 31. Programa 001 - Familia Bíblica Use o interpretador ou o swish para carregar os predicados abaixo. 1 pai(tera,abraao). 2 pai(tera,naor). 3 pai(tera,haran). 4 pai(abraao,isaque). 5 pai(haran,lo). 6 pai(haran,milca). 7 pai(haran,iscah). 8 mae(sara,isaque). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 31 / 48
  • 32. Metas Existenciais Vamos testar as metas: 1 ? :- pai(tera,naor). 2 ? :- pai(tera,jose). 3 ? :- pai(X,lo). 4 ? :- pai(X,Y). 5 ? :- masculino(Alguem). 6 ? :- feminino(Mulher). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 32 / 48
  • 33. Acrescentando Regras Vamos acrescentar regras a estes predicados Um avô é um pai de um pai ou pai de uma mãe. (Desconsiderando o sexo do neto por enquanto) 1 avo(Avo,Neto) :- pai(Avo,Filho),pai(Filho,Neto). 2 avo(Avo,Neto) :- pai(Avo,Filha),mae(Filha,Neto). Agora podemos fazer novas perguntas: 1 avo(tera,X). 2 avo(X,Y). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 33 / 48
  • 34. Definindo Irmão Irmão são filhos do mesmo pai ou da mesma mãe. 1 irmao(X,Y) :- pai(Z,X),pai(Z,Y). 2 irmao(X,Y) :- mae(Z,X),mae(Z,Y). Há algo errado com a definição acima? Alguém é irmão de si mesmo? Experimente. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 34 / 48
  • 35. Definindo Irmão - Correção Ninguém é irmão de si mesmo. 1 irmao(X,Y) :- pai(Z,X),pai(Z,Y), X = Y. 2 irmao(X,Y) :- mae(Z,X),mae(Z,Y), X = Y. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 35 / 48
  • 36. Definindo Homem e Mulher Podemos usar homem e mulher como sinônimos de masculino e feminino ou substituí-los 1 homem(H) :- masculino(H). 2 mulher(M) :- feminino(M). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 36 / 48
  • 37. Definindo Filho e Filha Podemos usar homem e mulher como sinônimos de masculino e feminino ou substituí-los 1 filho(X,Y) :- pai(Y,X),homem(X). 2 filho(X,Y) :- mae(Y,X),homem(X). 3 filha(X,Y) :- pai(Y,X),mulher(X). 4 filha(X,Y) :- mae(Y,X),mulher(X). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 37 / 48
  • 38. Definindo Progenitor (sem sexo) Podemos usar homem e mulher como sinônimos de masculino e feminino ou substituí-los 1 progenitor(X,Y) :- pai(X,Y). 2 progenitor(X,Y) :- mae(X,Y). Agora podemos definir irmão em função de progenitor. Experimente. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 38 / 48
  • 39. Exercício Agora defina os seguintes predicados: tio, tia, avô, avó, bisavô, bisavó, trisavô, trisavó, tetraavô, tetraavó, primo, familiar (faz parte da família), tio avô, tia avó, primo em segundo grau, primo em terceiro grau, ancestral e descendente. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 39 / 48
  • 40. Pausa Tente Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 40 / 48
  • 41. Regras Recursivas Definir uma coisa em termos dela própria (kkkk). Vejamos a definição de ancestral. Observemos as relações recursivas. avô(Ancestral,Descendente) :- pai1(Ancestral, Pessoa), pai(Pessoa, Descendente) bisavô(Ancestral,Descendente) :- pai(Ancestral, Pessoa), avô(Pessoa, Descendente) trisavô(Ancestral,Descendente) :- pai(Ancestral, Pessoa), bisavô(Pessoa, Descendente) Isto nos leva ao padrão: ancestral(Ancestral,Descendente) :-pai(Ancestral,Pessoa),ancestral(Pessoa,Descendente) Não leva a um loop infinito?? 1 Vamos abstrair das mães por enquanto Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 41 / 48
  • 42. Caso Base Em algum momento a recursão deve ser obrigada a parar. ancestral(Ancestral, Descendente) :- pai(Ancestral,Descendente). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 42 / 48
  • 43. Programa Ancestral % Casos Base ancestral(Ancestral,Descendente) :- pai(Ancestral,Descendente). ancestral(Ancestral,Descendente) :- mãe(Ancestral,Descendente). % Definição ancestral(Ancestral,Descendente) :- pai(Ancestral,Pessoa), ancestral(Pessoa,Descendente). ancestral(Ancestral,Descendente) :- mãe(Ancestral,Pessoa), ancestral(Pessoa,Descendente). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 43 / 48
  • 44. Fechamento Transitivo É dito que a relação ancestral é um fechamento transitivo da relação de parentesco e portanto facilmente realizada através de uma regra recursiva. Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 44 / 48
  • 45. Recursão Linear Um programa é recursivo linear se possui apenas uma meta recursiva no corpo da cláusula. Ex de definição de ancestral não linear: ancestral(Ancestral,Descendente) :- ancestral(Ancestral,Pessoa), ancestral(Pessoa,Descendente). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 45 / 48
  • 46. Grafo Direcionado Simples Vejamos um outro exemplo de fecho transitivo Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 46 / 48
  • 47. Descrevendo o grafo % fatos eixo(a,b). eixo(a,c). eixo(b,d). eixo(c,d). eixo(d,e). eixo(f,g). % caso base conectado(nó,nó). % regra recursiva conectado(nó1,nó2) :- eixo(nó1,Link), conectado(Link,nó2). Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 47 / 48
  • 48. CONTINUA Ronaldo F. Ramos (Instituto Federal do Ceará) Paradigmas de Programação 15 de outubro de 2023 48 / 48