florid:caminhos, negação e estratificação

30
FLORID: FLORID: caminhos, negação e caminhos, negação e estratificação estratificação Idevan Gonçalves Freire Junior {[email protected]}

Upload: kishi

Post on 21-Mar-2016

35 views

Category:

Documents


0 download

DESCRIPTION

FLORID:caminhos, negação e estratificação. Idevan Gonçalves Freire Junior {[email protected]}. Caminhos. Objetos podem ser acessaods por seu nome ou por expressões de caminho Expressão de Caminho (ou Caminho) é o acesso de um objeto através de métodos de outros objetos. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: FLORID:caminhos, negação e estratificação

FLORID:FLORID: caminhos, negação ecaminhos, negação eestratificaçãoestratificação

Idevan Gonçalves Freire Junior{[email protected]}

Page 2: FLORID:caminhos, negação e estratificação

CaminhosCaminhos

Objetos podem ser acessaods por seu nome ou por expressões de caminho

Expressão de Caminho (ou Caminho) é o acesso de um objeto através de métodos de outros objetos.jacob.son@(rachel,11) josephbenjamin.father.father.mother rebekahgod.people ?

Page 3: FLORID:caminhos, negação e estratificação

CaminhosCaminhos

Podem conter outros métodos É possível seriar caminhos pela aplicação sucessiva

de métodos Alguns caminhos podem indicar objetos sem um id-

term como nome do objeto

Page 4: FLORID:caminhos, negação e estratificação

Aninhando CaminhosAninhando Caminhos

Todo caminho corresponde a um object value É possível aninhar caminhos em moléculas-F tão bem

como em moléculas-P onde id-terms sejam permitidosjacob.son@(rachel,11)[mother->rachel; father->jacob].abraham[son->>{jacob.father}].jacon[son@(joseph.mother)->>{benjamim}].male(jacob.father).jacob.father.father = abraham.

Page 5: FLORID:caminhos, negação e estratificação

Aninhando CaminhosAninhando Caminhos

Se o caminho ocorre ao nível do método ou da classe, deve ser cercado por parênteses

Exemplo de definição do método twice :X[(M.twice)->Z] :- X[M->Y[M->Z]]

Pode ser chamado por outros métodos como a aplicação do método original duas vezes

Page 6: FLORID:caminhos, negação e estratificação

Aninhando CaminhosAninhando Caminhosi) jacob:(god.people).ii) jacob:god.people.iii) (jacob:god).people. A primeira molécula-F declara jacob do tipo a aplicação

do método people sobre o objeto god A segunda equivale a terceira, declarando que o objeto

jacob é um membro da classe god e indica a aplicação do método people a ele

Os dois últimos caminhos não são moléculas-F (não terminam com lista de especificação)

Page 7: FLORID:caminhos, negação e estratificação

Aninhando CaminhosAninhando Caminhos

Objetos intermediados num caminho podem ter listas de especicação, tornando-as moléculas-Fjacob:man[father->isaac].mother

É útil num corpo de regra para restringir o conjunto de objetos casando um caminho com uma propriedade estabelecida

Page 8: FLORID:caminhos, negação e estratificação

Criação de Objetos com CaminhosCriação de Objetos com Caminhos Caminhos numa rule head ou num fato pode induzir a

criação de novos objetos Ocorre quando um caminho consiste de um objeto host

com a aplicação de método ainda não defindoabraham.father:man.jacob:(god.people).

Os objetos abraham.father e god.people não possuem id-terms base como nome do objeto e são acessados através dos caminhos

Poderoso na conexão de variáveis

Page 9: FLORID:caminhos, negação e estratificação

Caminhos em Caminhos em QueriesQueries

Ajuda a descrever a informação em questões de forma mais concisa

Podem poupar variáveis para resultados intermediários?- isaac.father[father->X].

Sem o caminho, deve-se “amarrar” uma variável Y explicitamente ao objeto?- isaac[father->Y], Y[father->X].

Page 10: FLORID:caminhos, negação e estratificação

Caminhos MultivaloradosCaminhos Multivalorados

Caminhos multivalorados são construídos a partir de métodos multivalorados, sempre indicado por dois pontos em seqüênciaisaac..son

Casa com cada objeto de um conjunto de objetos Um caminho é multivalorado se seu correspondente não

aninhado contém ao menos uma aplicação de método multivalorado.

Page 11: FLORID:caminhos, negação e estratificação

Caminhos MultivaloradosCaminhos Multivaloradosjacob[son->>{joseph}].father.double):personjacob.(father.double)

jacob[father->abraham..son].motherjacob.mother

isaac:man..son[mother->rebekah]..sonisaac..son..son

jacob..son@(laban..daughter:woman)jacob..son@(laban..daughter)

Page 12: FLORID:caminhos, negação e estratificação

Caminhos MultivaloradosCaminhos Multivalorados

Semânticas de Caminhos Multivalorados: Um caminho multivalorado indica um caminho de

objetos.?- sarah[son->>abraham..son].

Cada objeto do conjunto é um resultado possível do método

Page 13: FLORID:caminhos, negação e estratificação

Caminhos com Métodos HerdáveisCaminhos com Métodos Herdáveis

Caminhos pode conter métods herdáveis Os métods são indicados por exclamações (!) ao

invés de pontosperson!believes_in

O caminho acima indica o objeto god

Page 14: FLORID:caminhos, negação e estratificação

ProgramasProgramas

Um programa F-logic é uma coleção de fatos e regras em ordem arbitrária

Semântica de Ponto Fixo Negação Estratificação Herança

Page 15: FLORID:caminhos, negação e estratificação

Semântica de Ponto FixoSemântica de Ponto Fixo

A avaliação bottom-up inicia com um objeto base vazio Fatos e regras com corpo vazio são sempre consideradas como

true Fatos e regras são avaliados iterativamente Existindo bindings variáveis tornando o corpo da regra válido

no objeto base, esses bindings são propagados no head da regra

Page 16: FLORID:caminhos, negação e estratificação

Semântica de Ponto FixoSemântica de Ponto Fixo

A avaliação das regras continua enquanto novas informações forem obtidas

A avaliação de um programa F-logic (sem negação) alcança um ponto fixo que coincide com o objeto base minimal único daquele programa

O objeto base minimal é o menor conjunto de átomos-P e -F tais que todas as propriedades do fecho e todos os fatos e regras do programa são satisfeitos

Page 17: FLORID:caminhos, negação e estratificação

NegaçãoNegação

Negação em FLORID é manipulada de acordo com a semântica inflacionária

Toda variável dentro de um subgoal negado deve ser limitado por outros subgoals

Apenas instâncias base de subgoals negados são considerados durante a avaliação

Uma instância é avaliada como true, sse o objeto base não contém a informação correspondente no momento da avaliação

Page 18: FLORID:caminhos, negação e estratificação

NegaçãoNegação

isaac[father]->abraham].isaac:orphan :- not isaac[father->abraham].?- sys.eval[].?- isaac:orphan.

Page 19: FLORID:caminhos, negação e estratificação

Negação e EstratificaçãoNegação e Estratificação

Outro conceito para manipular a negação é a semântica bem-fundada que não é suportada por FLORID, mas pode ser simulada

A estratificação é uma abordagem muito comum, mas a estratificação automática não pode ser feita por FLORID

FLORID fornece um comando para estratificação explícita “?- sys.strat.doIt[]” que divide o programa em duas ou mais camadas

Page 20: FLORID:caminhos, negação e estratificação

Negação e EstratificaçãoNegação e Estratificação

A informação requisitada por um subgoal negado deve sempre ser derivado em camadas mais baixas que a camada que o contém

O comando de estratificação causa a avaliação das regras dentro da camada mais alta a fim de ser adiada até o ponto fixo da camada mais baixa ser computada

As regras e fatos da camada mais baixa não são mais considerados durante o restante da avaliação

Page 21: FLORID:caminhos, negação e estratificação

Negação e EstratificaçãoNegação e Estratificação

isaac[father->abraham].?- sys.strat.doIt[].isaac:orphan :- not isaac[father->abraham].?- sys.eval[].?- isaac:orphan.

Page 22: FLORID:caminhos, negação e estratificação

EstratificaçãoEstratificação

O comando “?- sys.strat.doIt[].” pode ser utilizado em programas F-logic sem negação para acelerar a avaliação

O comando aumenta a eficiência quando todos os subgoals numa regra dependem apenas do que há nas regras de mesma camada ou mais baixa

Page 23: FLORID:caminhos, negação e estratificação

EstratificaçãoEstratificação

X[ancestor->>Y] :- X[father->Y].X[ancestor->>Y] :- X[mother->Y].?- sys.strat.doIt[].X[ancestor->>Y] :- X.father[ancestor->>Y].X[ancestor->>Y] :- X.mother[ancestor->>Y].?- sys.strat.doIt[].X[descendant->>Y] :- Y[ancestor->>X].

Page 24: FLORID:caminhos, negação e estratificação

HerançaHerança

Uma nova informação deve ser herdada de uma classe para uma instância ou uma subclasse apenas quando esta informação for necessária para avaliar um corpo de regra ou responder uma requisiçãoperson[believes_in*->god].abraham:person

Gatilhos de Herança servem para descrever uma aplicação de método a um determinado objeto

Informação é herdada apenas se um gatilho está ativo e dispara

Page 25: FLORID:caminhos, negação e estratificação

HerançaHerança Duas condições a serem satisfeitas para um método

herdável ativar um gatilho de herança:i) Deve existir um subgoal apropriado em um corpo

de regra ou query que “case” com o método herdável?- X[believes_in->Y].

ii) O método herdável ainda não está definido para o objeto que herdaria o método

O disparo do gatilho é adiado até a avaliação do programa ter alcançado um ponto fixo

Regras lógicas têm prioridade sobre herança

Page 26: FLORID:caminhos, negação e estratificação

HerançaHerança

abraham:person[belives_in->god;descendant->>{isaac:person}].ahab:person.X[believes_in->god] :- abraham[descendant->>X:person].god[loves->>X] :- X[believes_in->god].?- sys.eval[].?- god[loves->>X].

Page 27: FLORID:caminhos, negação e estratificação

HerançaHerança

Se todos os gatilhos ativos disparam ao mesmo tempo, uma informação contraditória pode ser passadajohn:king.peter:king.king[lives*->palace].peter[lives->abroad] :- john[lives->palace].john[lives->abroad] :- peter[lives->palace].?- sys.eval[].?- X[lives->Y].

A solução é disparar um gatilho por vez

Page 28: FLORID:caminhos, negação e estratificação

HerançaHerança

A performance da avaliação pode se tornar muito lenta se muitos gatilhos de herança estiverem ativos por são disparados sucessivamente, apenas um por vez.

Page 29: FLORID:caminhos, negação e estratificação

Verificação de TiposVerificação de Tipos

Verificação de tipos automática não é implementada em FLORID

Motivo: verificação de tipos estáticos não é possível para programas F-logics gerais, graças à possibilidade de gerar novas igualdades dinamicamente por regras

Para verificar se qualquer método em um objeto base está tipado corretamente, examina-se a Segurança de Tipo e a Corretude de Tipo

Page 30: FLORID:caminhos, negação e estratificação

Verificação de TiposVerificação de Tipos

Segurança de Tipo: significa que não existem métodos sem uma assinatura correspondente no objeto base

Corretude de Tipo: implica que o objeto resultante de um método deve ser uma instância de todas as classes resultantes da assinatura apropriada

Para retardar a avaliação da verificação de tipo até o ponto fixo utiliza-se o comando de estratificação: “?- sys.strat.doIt[].”