• Nenhum resultado encontrado

P ROLOG PARA ENGENHARIA DE SOFTWARE

N/A
N/A
Protected

Academic year: 2019

Share "P ROLOG PARA ENGENHARIA DE SOFTWARE"

Copied!
7
0
0

Texto

(1)

PRINCIPAISCONCEITOS DE

PROGRAMAÇÃOLÓGICA

PRÁTICA DEENSINO DELÓGICA

Millena de Andrade Almeida Gomes milliandrade@gmail.com

P

ROGRAMAÇÃO

L

ÓGICA

Paradigma 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 SOFTWARE

Linguagem 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 DE

P

ROLOG FORA

DA

L

ÓGICA

C

LÁSSICA DE

H

ORN DA

1

AORDEM

Acrescentados 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 SOFTWARE

Permite 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

(2)

P

ROLOG PARA ENGENHARIA DE SOFTWARE

Metá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ÓGICA

1. 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 E

P

ROGRAMAÇÃO DE

C

OMPUTADORES

O 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 E

P

ROGRAMAÇÃO DE

C

OMPUTADORES

BD 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 E

P

ROGRAMAÇÃO DE

C

OMPUTADORES

(3)

L

ÓGICA E

P

ROGRAMAÇÃO DE

C

OMPUTADORES

As 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

INGUAGEM

P

ROLOG

Programar 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

INGUAGEM

P

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

INGUAGEM

P

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

INGUAGEM

P

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

(4)

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

INGUAGEM

P

ROLOG

EXEMPLO 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

INGUAGEM

P

ROLOG

EXEMPLO DE PROGRAMA E CONSULTAS

Consultas e respostas:

? animal(coelho) yes

? come(gato-selvagem,mato) no

? come(X,peixe) urso quati

(5)

A L

INGUAGEM

P

ROLOG

EXEMPLO DE PROGRAMA E CONSULTAS

Consultas e respostas (continuação):

? presa(X)

peixe peixinho peixe quati raposa coelho cavalo cavalo

A L

INGUAGEM

P

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

INGUAGEM

P

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

(6)

A L

INGUAGEM

P

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

-

O

SIGNIFICADO 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 DE

P

ROLOG

Como 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

(7)

L

IMITAÇÕES DE

P

ROLOG

Como 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

IBLIOGRAFIA

Nilsson, 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

Referências

Documentos relacionados

Microglanis lundbergi is distinguished from all congeners by the presence of a forked caudal fin with a deep notch between upper and lower lobes (vs. rounded, emarginated, or

Estima-se que a diversidade de espécies na Mata Atlântica e no Brasil seja muito maior e o baixo número de táxons conhecidos se dá por falta de identificação ao

No ´ ultimo cap´ıtulo, o Cap´ıtulo 4, apresentamos duas aplica¸c˜ oes dos produtos tensoriais entre espa¸cos de Banach: a primeira aplica¸c˜ ao relaciona o produto tensorial ao

História Protótipo Casos de Teste Refinamento Planning Build Geração de Massa Testes Homologação Responsável: time de QA Entradas: • Histórias; • Protótipos; • Casos

Sem ater-se à distinção entre Física Clássica, Moderna e Contemporânea na listagem de Ostermann e Moreira (1998), é importante observar que, apesar do trabalho refletir o anseio

Mestrado em: Nutrição Humana ou Nutrição Clínica ou Saúde Coletiva ou Ciências da Saúde ou Ciências ou Saúde ou Alimentos e Nutrição e Desenvolvimento na

Já o Ministério do Turismo (2010), divulga não apenas as atribuições gerais que o guia deve cumprir, mas também as atribuições específicas de acordo com a

(a) uma das formas para compatibilizar direitos consagrados na Constituição Federal de 1988 diretamente relacionados com a dignidade da pessoa humana – como o respeito à vida privada