Metodologia D3M para Transformar Variáveis e Incorporar...

25

Transcript of Metodologia D3M para Transformar Variáveis e Incorporar...

Professor: Rosalvo Ferreira de Oliveira Neto

Programação Lógica

(Capítulo 11)

LÓGICA APLICADA A COMPUTAÇÃO

Estrutura

1. Programação Lógica

2. Prolog

3. Exemplos

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

Sintaxe da Programação Lógica

Definição 11.1 (cláusula de programa)

Uma cláusula de programa, na Lógica de Predicados, é uma cláusula do tipo

C =(∀x1) ... (∀xn )G, onde G é uma disjunção de literais, que contém exatamente um literal positivo.

4

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

Sintaxe da Programação Lógica

Notação. Uma cláusula de programa

(∀∗)(B ∨¬A1 ∨ ... ∨¬An) é denotada por

B ← A1,...,An.

Nesse caso, B é a cabeça da cláusula e A1,...,An

é a cauda.

5

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

Definições

•Uma linguagem de PROgramação em LÓGica •A linguagem Prolog surgiu no início da década de 70 •O Prolog é uma linguagem de declarativa que usa um fragmento da lógica de 1ª ordem (as Cláusulas de Horn) para representar o conhecimento sobre um dado problema. •Um programa em Prolog é um “conjunto” de axiomas e de regras de inferência (definindo relações entre objetos) que descrevem um dado problema. A este conjunto chama-se normalmente base de conhecimento.

6

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

Definições

•A execução de um programa em Prolog consiste na dedução de conseqüências lógicas da base de conhecimento. •O usuário faz consultas e o “motor de inferência” do Prolog pesquisa a base de conhecimento à procura de axiomas e regras que permitam (por dedução lógica) dar uma resposta. •O motor de inferência faz a dedução aplicando o algoritmo de resolução de 1ª ordem.

7

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

Exemplo de um programa Prolog (um conjunto de Cláusulas de Horn).

8

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

Exemplo de um programa Prolog (um conjunto de Cláusulas de Horn).

9

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

Cláusulas de Horn são fórmulas na forma representadas em Prolog por p :- q1, q2, ..., qn <cabeça da cláusula> :- <corpo da cláusula> Os fatos são cláusulas de Horn com o corpo vazio. As variáveis que aparecem nas cláusulas são quantificadas universalmente e o seu âmbito é toda a cláusula, mas podemos ver as variáveis que ocorrem apenas no corpo da cláusula (mas não na cabeça), como sendo quantificadas existencialmente dentro do corpo da cláusula.

10

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

•As consultas são cláusulas de Horn com cabeça vazia. •As consultas são um meio de extrair informação de um programa. As variáveis que ocorrem nas consultas são quantificadas existencialmente. •Responder a uma consulta é determinar se a questão é uma conseqüência lógica do programa. •As extensão usual dos arquivos em prolog é .pl •O ponto final assinala o final das cláusulas.

11

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

12

Responder a uma consulta é

determinar se ela é uma

conseqüência lógica

do programa.

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

13

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

14

progenitor(maria,joao).

progenitor(jose,joao).

progenitor(maria,ana).

progenitor(jose,ana).

progenitor(joao,mario).

progenitor(ana,helena).

progenitor(ana,joana).

progenitor(helena,carlos).

progenitor(mario,carlos).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

15

sexo(ana,feminino).

sexo(maria,feminino).

sexo(joana,feminino).

sexo(helena,feminino).

sexo(mario,masculino).

sexo(joao,masculino).

sexo(jose,masculino).

sexo(carlos,masculino).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

16

avo(X,Y):- progenitor(X,A), progenitor(A,Y),

sexo(X,masculino).

mae(X,Y):- progenitor(X,Y),sexo(X,feminino).

pai(X,Y):- progenitor(X,Y), sexo(X,masculino).

tio(X,Y):- irmao(X,A), progenitor(A,Y).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

17

avo(X,Y):- progenitor(X,A), progenitor(A,Y),

sexo(X,masculino).

mae(X,Y):- progenitor(X,Y),sexo(X,feminino).

pai(X,Y):- progenitor(X,Y), sexo(X,masculino).

tio(X,Y):- irmao(X,A), progenitor(A,Y).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

18

avo(X,Y):- progenitor(X,A), progenitor(A,Y),

sexo(X,masculino).

mae(X,Y):- progenitor(X,Y),sexo(X,feminino).

pai(X,Y):- progenitor(X,Y), sexo(X,masculino).

tio(X,Y):- irmao(X,A), progenitor(A,Y).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

19

avo(X,Y):- progenitor(X,A), progenitor(A,Y),

sexo(X,masculino).

mae(X,Y):- progenitor(X,Y),sexo(X,feminino).

pai(X,Y):-progenitor(X,Y),sexo(X,masculino).

tio(X,Y):- irmao(X,A), progenitor(A,Y).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

20

irma(X,Y):- progenitor(A,X),progenitor(A,Y),

X\==Y,sexo(X,feminino).

irmao(X,Y):- progenitor(A,X), progenitor(A,Y),

X\==Y, sexo(X,masculino).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

21

irma(X,Y):- progenitor(A, X),progenitor(A, Y),

X\==Y, sexo(X,feminino).

irmao(X,Y):- progenitor(A, X), progenitor(A, Y),

X\==Y, sexo(X, masculino).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

22

Querys:

1) O João é filho do José?

? progenitor(jose, joao).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

23

Querys:

2) Quem são os filhos da Maria?

? mae(maria, X).

ou

? findall(X,mae(maria,X),L).

Univasf – Engenharia de Computação - LÓGICA APLICADA A COMPUTAÇÃO - Prof.: Rosalvo Neto

Programação Lógica Prolog Exemplos

24

Querys:

? primo(mario, X).

? tio(_, X).

? descendente(X,carlos).

? irmao(helena, X).

? irma(helena, X).