PRINCIPAISCONCEITOS DE
PROGRAMAÇÃOLÓGICA
PRÁTICA DEENSINO DELÓGICA
Millena de Andrade Almeida Gomes milliandrade@gmail.com
P
ROGRAMAÇÃOL
ÓGICAParadigma de programação que faz uso da lógica matemática
Primeira linguagem de programação lógica:
Planner
Principal linguagem utilizada: Prolog
O
QUE ÉP
ROLOG?
Mais divulgada linguagem do paradigma da Programação em Lógica (PL)
Operacionalização simples, prática e eficiente da metáfora da PL
PL unifica:
Engenharia de Software (especificação formal, linguagens de programação)
Inteligência Artificial (IA) (raciocínio com Formalismos de Representação do Conhecimento (FRCs)) Banco de Dados -- Dedutivos (BDDs) Teoria Lógica (TL) das provas
P
ROLOG PARA ENGENHARIA DE SOFTWARELinguagem de especificação formal com semântica declarativa lógica
Linguagem de programação de propósito geral em duas camadas:
1.
1.Prolog puro:Prolog puro:a semântica formal de cada linha do programa é dada pela fórmula correspondente em lógica da 1aordem
2.
2.Predicados extraPredicados extra--lógicos:lógicos:introduzidos por razões de conveniência
Não são bem integrados com o paradigma lógico de Prolog puro
Linguagem de scripting não tipado
A
SPECTOS DEP
ROLOG FORADA
L
ÓGICAC
LÁSSICA DEH
ORN DA1
AORDEMAcrescentados por necessidades práticas de programação
Semântica imperativa, funcional, de lógicas não clássicas ou clássicas de ordem superior
Negação por falha: notnot
Controle e poda da busca: ! (! (cutcut), ), repeatrepeat,, ...
Entrada/saída: readread, , writewrite, ..., ...
Aritmética: is, +, is, +, --, *, /, =>, <=, ..., *, /, =>, <=, ...
Modificação dinâmica da base de conhecimento: assertassert, , retract
retract
Meta-programação: var, =.., var, =.., namename, , listlist
Maioria das extensões de Prolog, os substituem por predicados lógicos
P
ROLOG PARA ENGENHARIA DE SOFTWAREPermite integrar duas filosofias tradicionalmente opostas de engenharia de software:
Métodos formais, SPIV (Specify Prove Implement Verify
Verify)
Prototipagem rápida
Code first, think after Extreme programming
RUDE (Run Understand Debug Edit)
Via especificação formal executável
Em Prolog
P
ROLOG PARA ENGENHARIA DE SOFTWAREMetáfora da programação em lógica para engenharia de software:
Programar = apenas declararaxiomas e regras Execução do programa = construção de prova de teorema
Compilador/interpretador = provador de teorema Estrutura de controle (única) = mecanismo de dedução automática
Disparar execução do programa = perguntar verdade de um teorema
Programador especifica apenas o quefazer Comofazê-lo é problema do interpretador ou compilador
APLICAÇÕES DA PROGRAMAÇÃO EM LÓGICA
Inteligência Artificial
Representação do conhecimento Sistemas especialistas Provadores de teoremas Aprendizagem de máquina Processamento de linguagem natural
Sistemas multi-agentes Robótica
Sistemas Distribuídos e Internet
Comércio eletrónico Recuperação, filtragem e extração de informação
Engenharia de Software
Prototipagem rápida de software complexos
Especificações formais executáveis
Programação por resolução de restrições
Programação multi-paradigma de alto-nível
Banco de Dados
BD dedutivos e DOO Mineração de Dados e Descoberta de Conhecimento Integração de Dados e Interoperabilidade
P
ROGRAMAÇÃO PROCEDIMENTAL X PROGRAMAÇÃO EM LÓGICA1. Modelagem estrutural
2. Modelagem comportamental
3. Codificar estruturas de dados
4. Codificar passo a passoestruturas de controle
5. Compilar/interpretar programa
6. Executar programa
A. Declarar o que é verdade (fatos e regras)
B. Compilar/interpretar programa
C. Fazer consulta sobre verdade de um
fato
A = 1+3 C = 6
Não há necessidade de 2 e 4 ! Estrutura de controle única
(dedução automática) embutidano compilador/interpretador usada para
todosos problemas !
L
ÓGICA EP
ROGRAMAÇÃO DEC
OMPUTADORESO conjunto de declarações que forma um programa Prolog é chamada a base de dados (BD) desse programa.
Para determinar se uma tese (consulta do usuário à BD) é ou não verdadeira, Prolog aplica suas regras de inferência na BD sem a necessidade de instruções adicionais por parte do programador.
L
ÓGICA EP
ROGRAMAÇÃO DEC
OMPUTADORESBD convencionais descrevem apenas fatos.
“Oscar é um avestruz”
As sentenças de um Programa em Lógica, além de descrever fatos, permite a descrição de regras.
“Todo avestruz é um ave”
Havendo regras, novos fatos podem ser deduzidos.
“Oscar é uma ave”
L
ÓGICA EP
ROGRAMAÇÃO DEC
OMPUTADORESL
ÓGICA EP
ROGRAMAÇÃO DEC
OMPUTADORESAs sentenças de um programa prolog são expressas por cláusulas.
Tipos de cláusulas: fatos e regras
Fato: declaração de uma verdade incondicional Regra: condição que deve ser satisfeita para que um declaração seja considerada verdadeira
A L
INGUAGEMP
ROLOGProgramar em Prolog consiste em:
Declarar algunsfatossobre objetos e suas relações. Definir algumasregrassobre objetos e suas relações. Fazerconsultassobre objetos e suas relações.
A L
INGUAGEMP
ROLOG- FATOS
Os fatos permitem definir os predicados:- Exemplo:um sistema ecológico para especificar a cadeia alimentar
come (urso, peixe)
come (urso, raposa) % predicado binário
come (cavalo, mato) animal (urso)
animal (peixe) % predicado unário
animal (raposa)
A L
INGUAGEMP
ROLOG- CONSULTAS
De posse do programa Prolog (base de dados, podemos fazer consultas .Exemplos:
? come (cavalo, mato) Resposta: yes
? come (urso, coelho) Resposta: no
? come (urso, X) Resposta: peixe
coelho
A L
INGUAGEMP
ROLOG- REGRAS
Uma regraé a descrição de um predicado através de uma implicação
Exemplo: “um animal é presa se é comido Exemplo: “um animal é presa se é comido
por outro animal”. por outro animal”.
come(Y,X) ^ animal(X)
come(Y,X) ^ animal(X) --> presa(X) > presa(X)
em Prolog: em Prolog:
presa(X) :
presa(X) :-- come(Y,X), animal(X) come(Y,X), animal(X)
A L
INGUAGEM
P
ROLOG
- REGRAS
E
CONSULTAS
Acrescentando a nova regra à BD podemos fazer novo tipo de consulta
come (urso, peixe)
come (urso, raposa) % predicado binário come (cavalo, mato)
animal (urso)
animal (peixe) % predicado unário
animal (raposa) presa(X) :
presa(X) :-- come(Y,X), animal(X) come(Y,X), animal(X) % regra
A L
INGUAGEM
P
ROLOG
REGRA DE INFERÊNCIA: RESOLUÇÃO
As regras e os fatos de um programa prolog correspondem à fórmulas de 1a ordem
Prolog trata as regras como sendo quantificadas universalmente
A regra de inferência usada pelo interpretador prolog é a regra da
resolução.
A L
INGUAGEM
P
ROLOG
REGRA DE INFERÊNCIA: RESOLUÇÃO
Observe que a regra
presa(X) :- come(Y,X), animal(X)
Correspondea fórmula
∀x∀y(come(Y,X) ^ animal(X)) -> presa(X)
Correspondea cláusula
~(come(X,Y) ^ animal(X)) v presa(x) ~come(X,Y) v ~animal(X) v presa(x)
A L
INGUAGEM
P
ROLOG
REGRA DE INFERÊNCIA: RESOLUÇÃO
? presa(X)
O Prolog procura, na BD, por uma regra com o predicado presa(X) como o conseqüente
B
Busca outras cláusulas que possam ser resolvidas com a regra
Faz as substituições das variáveis na cláusula regra
1. ~come(X,Y) v ~animal(X) v presa(X) 2. come(urso,peixe)
3. ~animal(peixe) v presa(peixe) {resolvente de 1 e 2} 4. animal (peixe)
5. presa (peixe) {resolvente de 3 e 4}
Refaz o processo procurando na BD outra cláusula a resolver com a cláusula da regra.
Encontrará come(urso,peixe)
A L
INGUAGEM
P
ROLOG
REGRA DE INFERÊNCIA: RESOLUÇÃO
Outro exemplo:acrescentando à BD a regra: “x é caçado se é presa” caçado(X) :- presa(X)
Como é feita a consulta que segue? ? caçado(X)
a regra na forma simbólica é: presa(X) -> caçado(X)
a cláusula correspondente é: ~(presa(X) v caçado(X))
essa cláusula é resolvida com a da regra de definição de presa e seguindo a resolução obtém as respostas:
peixe raposa
A L
INGUAGEMP
ROLOGEXEMPLO DE PROGRAMA E CONSULTAS come (urso, peixe)
come (peixe,peixinho) come (peixinho,alga) come (quati,peixe) come(urso,quati) come (urso, raposa) come(raposa,coelho) come (coelho, mato) come(urso,cavalo) come(cavalo,mato) come(gato-selvagem,cavalo)
animal(urso) animal(peixe) animal(peixinho)
animal(quati) animal(raposa) animal(coelho) animal(cavalo) animal(gato-selvagem)
planta(mato) planta(alga)
presa(X) :
presa(X) :-- come(Y,X), come(Y,X),
animal(X) animal(X)
A L
INGUAGEMP
ROLOGEXEMPLO DE PROGRAMA E CONSULTAS
Consultas e respostas:
? animal(coelho) yes
? come(gato-selvagem,mato) no
? come(X,peixe) urso quati
A L
INGUAGEMP
ROLOGEXEMPLO DE PROGRAMA E CONSULTAS
Consultas e respostas (continuação):
? presa(X)
peixe peixinho peixe quati raposa coelho cavalo cavalo
A L
INGUAGEMP
ROLOG-
RECURSÃO
As regras em Prolog são implicações lógicas
Podem depender de fatos: presa(X) :- come(Y,X),animal(X)
Podem depender de outras regras: caçado(X) :- presa(X)
Podem depender da própria regra: com definição recursiva
A L
INGUAGEMP
ROLOG-
RECURSÃO
Exemplo: usar a BD ecológica para definir a relação
na-cadeia-alimentar(X,Y)
com o significado:
”Y está na cadeia alimentar de X”
que por sua vez pode significar duas coisas:
1. X come Y diretamente
2. X come algum animal que come algum animal que come algum animal ... que come Y
A L
INGUAGEM
P
ROLOG
-
RECURSÃO
(
EXEMPLO)
Caso 1:
X come Y diretamente
Caso 2:
“X come Z e Y está na cadeia alimentar de Z”
Ponto de parada da regra recursiva: Caso 1 A regra incorpora os casos 1 e 2:
na_cadeia_alimentar(X,Y) :- come(X,Y) na_cadeia_alimentar(X,Z) :- come(X,Z),
na_cadeia_alimentar(Z,Y)
A L
INGUAGEM
P
ROLOG
-
RECURSÃO
(
EXEMPLO)
? na_cadeia_alimentar(urso,Y)
resposta: 1. peixe 2. quati 3. raposa 4. cavalo 5. peixinho 6. alga 7. peixe 8. peixinho 9. alga 10. coelho
A L
INGUAGEM
P
ROLOG
-
RECURSÃO
(
EXEMPLO)
urso peixe
urso quati
urso raposa
urso cavalo
urso peixe
peixe peixinho
A L
INGUAGEMP
ROLOG– R
ECURSÃO(E
XEMPLO)
Cálculo de Fatorial
Consulta factorial(0,1). factorial(N,F)
:-N>0, N1 is N-1, factorial(N1,F1), F is N * F1.
?- fatorial(0,1). Yes
?- fatorial(10,What). What = 3628800 Yes
A L
INGUAGEM
P
ROLOG
-
PRINCIPAIS
APLICAÇÕES DA LINGUAGEM
Sistemas Baseados em Conhecimentos Sistemas de Base de Dados
Sistemas especialistas
Processamento de Linguagem Natural Educação
Modelagem de arquiteturas não convencionais
A L
INGUAGEM
P
ROLOG
-
OSIGNIFICADO DOS PROGRAMAS PROLOG
Um programa Prolog possui três interpretações semânticas básicas:
Interpretação declarativa.
Entende-se que as cláusulas que definem um programa descrevem uma teoria de primeira ordem.
Interpretação procedimental.
As cláusulas são vistas como entrada para um método de prova.
Interpretação operacional.
As cláusulas são vistas como comandos para um procedimento particular de prova por refutação.
A L
INGUAGEM
P
ROLOG
O SIGNIFICADO DOS PROGRAMAS PROLOG
Proveito das alternativas semânticas:
Declarativa: Permite a modelagem do
problema simplificando a tarefa de
programação
Procedimental: Permite que o programador identifique e descreva o problema em subproblemas através de uma série de chamadas a procedimentos
Operacional: Permite controle da execução através da ordenação das cláusulas e objetivos
A L
INGUAGEM
P
ROLOG
O SIGNIFICADO DOS PROGRAMAS PROLOG
Proveito das alternativas semânticas:
O programador deve se concentrar no significado declarativo. Em problemas de maior complexidade os aspectos operacionais não podem ser ignorados
V
ANTAGENS DEP
ROLOGComo formalismo de representação do conhecimento
Intuitividade das regras com rigor formal da lógica
Teoria muito completa sobre semântica, corretude e completude da inferência, limites de expressividade, complexidade etc. Compiladores muito eficientes
Versátil, serve de base para grande maioria dos mecanismos de inferência da IA
Como linguagem de programação
Declarativo com semântica formal Conciso
Eficiente
De nível suficientemente alto para implementação rápida e concisa de máquinas de inferência
Computacionalmente completo
L
IMITAÇÕES DEP
ROLOGComo formalismo de representação do conhecimento
Objetos compostos com restrições complexas Raciocínio com hipótese do mundo aberto Conhecimento procedimental e numérico Tratamento da incerteza
Atualização da base de conhecimento (Tell e Retract) com semântica declarativa
Especificação declarativa de estratégia de busca
Como linguagem de programação
Recursos muito limitados para:
Estruturação de objetos complexos Programação de larga escala
Sem recursos para interfaces gráfica, programação concorrente e distribuída
Baixa integração com metodologias e ferramentas de desenvolvimento de larga divulgação
UML, RUP, Java, XML, .net, web services, BD O-R, etc.
B
IBLIOGRAFIANilsson, Ulf. and Luszynski, Jan Ma. Logic, Programming and Prolog. John Wiley and Sons. 2nd Edition, 2000.
PRINCIPAISCONCEITOS DE
PROGRAMAÇÃOLÓGICA
PRÁTICA DEENSINO DELÓGICA