LIFE: integra - PowerPoint PPT Presentation

About This Presentation
Title:

LIFE: integra

Description:

LIFE: integra o de predicados, fun es e classes Jacques Robin CIn-UFPE – PowerPoint PPT presentation

Number of Views:46
Avg rating:3.0/5.0
Slides: 21
Provided by: IoramSche
Category:
Tags: life | integra | operas | soap

less

Transcript and Presenter's Notes

Title: LIFE: integra


1
LIFE integração de predicados, funções e classes
  • Jacques Robin
  • CIn-UFPE

2
LIFE molécula lpyIntegração Lógica/00/Funcional
3
LOGIN molecula py Integração Lógica/OO
  • Login Prolog
  • com termos de 1a ordem substituídos por termos ?
  • aridade fixa -gt sem
  • acesso a argumentos posicional -gt por rótulo
  • estrutura de dado árvore -gt grafo
  • posição das variáveis apenas na folhas -gt
    qualquer nó
  • constantes mutualmente exclusivas -gt
    parcialmente ordenadas
  • definição de hierarquia de classes com herança
    múltipla
  • de argumentos/atributos
  • e das restrições de tipos sobre seus valores
  • vantagens
  • representação de e raciocínio com conhecimento
    parcial
  • representação de conhecimento terminológico e
    ontológico

4
Login x Prolog Exemplo 1
  • Append robusto em Prolog
  • append( ,L,L) - listp(L).
  • append(HT, L, HR)
  • - listp(T), listp(L), listp (R),
  • append(T,L,R).
  • listp().
  • listp(HT) - listp(T).
  • Append robusto em Login
  • append( ,Llist,L).
  • append(HTlist, Llist, HRlist)
  • - append(T,L,R).
  • list _list.

5
Prolog x Login exemplo 2
  • notaboa(a).
  • notaboa(b).
  • notaruim(c).
  • notaruim(d).
  • notaruim(f).
  • estudante(mary).
  • estudante(paul).
  • estudante(peter).
  • nota(N) - notaboa(N).
  • nota(N) - notaruim(N).
  • coisaboa(X) - notaboa(X).
  • pessoa(P) - estudante(P).
  • nota notaboanotaruim.
  • notaboa lt coisaboa.
  • notaboa ab.
  • notaruim cdf.
  • estudante lt pessoa.
  • estudante peterpaulmary.

6
Prolog x Login exemplo 2
  • gosta(P,P) - pessoa(P).
  • gosta(peter,mary).
  • gosta(P,C) - pessoa(P), coisaboa(C).
  • tem(peter,c).
  • tem(paul,f).
  • tem(mary,a).
  • feliz(X) - pessoa(X), gosta(X,Y), tem(X,Y).
  • feliz(X) - pessoa(X), gosta(X,Y), tem(Y,Z),
  • coisaboa(Z).
  • ?- feliz(X).
  • Xmary Xmary Xpeter no
  • ?-
  • gosta(agt gt Xperson, ent gt X).
  • gosta(agt gt peter, ent gt mary).
  • gosta(ent gt coisaboa, agt gt pessoa).
  • tem(ent gt peter, coisa gt c).
  • tem(coisa gt f, ent gt paul).
  • tem(ent gt mary, coisa gt a).
  • feliz(Xpessoa) - gosta(agt gt X, ent gt Y),
  • tem(ent gt X, coisa
    gt Y).
  • feliz(Xpessoa) - gosta(agt gt X, ent gt Y),
  • tem(ent gt Y, coisa
    gt coisaboa).
  • ?- feliz(X).
  • Xmary Xmary Xpeter no
  • ?-

7
Predicados em LIFE
  • Predicados são definidos e executados em LIFE da
    mesma forma que em Prolog
  • Termos ? substituem termos de Herbrand.
  • Programas em Prolog podem rodar inalterados em
    LIFE se cada predicado usado com apenas uma
    aridade.
  • Toda regras LIFE da forma
  • c(..., ?ci, ...) - p (..., ?pj, ...)... , q(...,
    ?qk, ...).
  • onde c, p e q não são sorts mais predicados.
  • predicado não tem especialização nem
    generalização.
  • LIFE não permite
  • s(..., ?ci, ...) - u(..., ?pj, ...)... , v(...,
    ?qk, ...).
  • onde s, u e v são sorts da hierarquia de tipos

8
FOOL molécula Integração Funcional/OO
  • Linguagem funcional orientada a padrão
  • Termos construtores de primeira ordem
    substituídos por termos psi
  • FOOL é para Haskell assim como LOGIN é para
    Prolog
  • FOOL mais expressivo devido a inversão de
    funções, estruturas de dados parciais e variáveis
    lógicas
  • psi term subsumption ordering x first-order
    matching ordering em termos construtores
  • aridade fixa
  • herança
  • Ordem parcial definida pelo usuário permite que
    sejam escritas funções altamente genéricas
    (encapsulamento)

9
FOOL Exemplos
  • list _ list.
  • append( ,L list) -gt L.
  • append(HT list,L list) -gt Happend (T,L).
  • map ( , _ ) -gt .
  • map ( HT, F) -gt F(H)map(T,F).
  • ? X map (1,2,3,1)
  • X 2,3,4
  • age(person(birthDate gt date(year gt Y)),
  • ThisYearint)
  • -gt ThisYear - Y.
  • válida para qualquer sub-tipo de pessoa student,
    employee, work-study, staff, prof, s1, s2, w1,
    w2, e1, e2, f1, f2, f3

10
Funções em LIFE (2)
  • Função pode ser chamada com argumentos a menos
    (currying)
  • Resultado depende apenas dos valores dos
    argumentos e não da ordem na qual eles são
    ligados (binding)
  • Livra o programador da preocupação comas
    dependências de dados
  • Generate-and-test substituído pelo
    test-and-generate
  • Uma função residual age como um daemon
  • verifica continuamente se seus argumentos estão
    suficientemente instanciados

11
LEFUN integração relacional (lógica) funcional
  • Linguagem de programação funcional e relacional
  • Extensão da parte funcional
  • variáveis lógicas e predicados como argumentos de
    funções
  • integra unificação e busca built-in no paradigma
    funcional
  • Extensão da parte lógica (relacional)
  • expressões aplicativas como argumentos de
    predicados
  • integra computação determinística no paradigma
    lógico
  • adequação aquisicional para conhecimento
    inerentemente procedimental
  • igualdade semântica

12
LEFUN unificação e residuação
  • Unificação de termo lógico p com expressão
    funcional f
  • dispara avaliação de f no contexto local de
    instanciação das variáveis lógicas
  • semelhante ao is de Prolog mas bi-direcional e
    generalizado a expressões simbólicas
  • Pb o que fazer quando f contém variáveis ainda
    não instanciadas?
  • Solução suspender a unificação necessitando a
    avaliação de f até o resto da computação
    instancie as variáveis lógicas de f
  • Residuação
  • unificação suspendida cria equação residual da
    forma
  • passada pela direita da premissa que disparou a
    unificação de p com f
  • variável de residuação variável de uma equação
    residual

13
LeFun Residuação-E e Residuação-S
  • Residuação-E
  • expressão funcional 1 expressão funcional 2
  • ex A B A B
  • Residuação-S
  • variável não instanciada expressão funcional
    não reduzível
  • exX Y 1

14
LEFUN exemplo residuação
  • q(X,Y,Z) - p(X,Y,Z,Z), pick (X, Y).
  • p(X,Y,XY,XY).
  • p(X,Y,XY,(XY) - 14).
  • pick(3,5).
  • pick(2,2).
  • pick(4,6).
  • ?- q(A,B,C).
  • ?- O que acontece se forcar backtracking?
  • 1o sub-objetivo p(A,B,C,C).
  • Tente 1a cláusula p(X,Y,XY,XY)
  • Envolve unificar A B A B.
  • Aqui Prolog falharia,
  • unificação puramente sintática
  • apesar do próximo passo pick(A,B) poder prover
    instâncias para essas variáveis que verificam a
    equação
  • Equação AB A B acresentada como nova
    premissa de q(A,B,C)
  • 1o sub-objetivo pick(A,B)
  • 1a instanciação de pick(A,B) não verifica a
    equação residual
  • 35 ! 35 dispara backtracking
  • 2a instanciação A B 2 verifica equação
    residual
  • LeFun devolve A B 2, C 4.

15
LeFun residuação e currying com expressões de
ordem superior
  • 1o goal literal G F(X) cria uma residuação-S
    com o conjunto de RV F,X
  • A variável de ordem superior F não apresenta
    problema pois não há tentativa de resolve-lá
  • próximo passo gera nova residuação-S ao obter Ans
    F(X)(1).
  • F instanciada em twice, mudando a residuação-S
    para Ans twice(X)(1).
  • pick(X) transforma X na função identidade,
    liberando a residuação-S e instanciando Ans para
    1
  • sq(1) 1 é verificado, sucesso.
  • sq(X) -gt X X.
  • twice(F,X) -gt F(F(X)).
  • valid_op(twice).
  • p(1).
  • pick(lambda(X,X)).
  • q(V) - G F(X),
  • V G(1),
  • valid_op(F),
  • pick(X),
  • p(sq(V)).
  • ?- q(Ans).

16
LIFE LOGIN LEFUN FOOL
  • A terrível novela requisitos
  • 1. A soap opera is a TV show whose characters
    include a husband, a wife and a mailman such
    that
  • 2. the wife blackmails the mailman
  • 3. everybody is either alcoholic, drug addict or
    gay
  • 4. Dick is gay, Jane is alcoholic and Harry is a
    drug addict
  • 5. the wife is always an alcoholic and the
    long-lost sister of her husband
  • 6. the husband is always called Dick and the
    lover of the mailman
  • 7. the long-lost sister of any gay is called
    either Jane or Cleopatra
  • 8. Harry is the lover of every gay
  • 9. Jane blackmails every drug addicted lover of
    Dick
  • 10. soap operas are invariably terrible!
  • 0. Which is a terrible TV show and what are its
    characters?
  • A terrível novela em LIFE
  • cast personcast.
  • soapOpera
  • tvShow(chars gt H,W,M, 1
  • husband gt Hdick, 1
    6a.
  • wife gt Walcoholic, 1
    5a
  • mailman gt M)
    1
  • blackmail(W,M), 2
  • lovers(M.H),
    6b
  • longLostSister(W,H). 5b
  • person alcoholic drugAddict gay. 3
  • dick lt gay. 4a
  • jane lt alcoholic. 4b
  • harry lt drugAddict. 4c
  • longLostSister(gay) -gt janecleopatra. 7
  • lovers(harry,gay).
    8
  • blackmail(jane,XdrugAddict) - lovers(X, dick).
  • terrible(soapOpera).

17
LIFE x Prolog
  • LIFE supera os maiores problemas de Prolog
  • Funções, incluindo aritmética correta (IS inútil)
  • Orientação a objetos (fraca)
  • Tipos e herança múltipla
  • Manipulação correta de estruturas cíclicas
  • Variáveis globais
  • Atribuição destrutiva limpa (assert e retract
    inútil)
  • Estruturas de dados persistentes
  • Registros nos moldes de C
  • Estruturas de dados expandidas arrays e hash

18
LIFE x Prolog
  • Programas em Prolog facilmente estendidos para
    LIFE
  • Termos LIFE não têm aridade, mas indefinido
    número de argumentos
  • aridade não pode ser usada para distinguir
    predicados, como é feito em Prolog
  • programador deve usar nomes diferentes para
    predicados diferentes
  • unificação pode ser alcançada mesmo entre
    psi-termos com raízes diferentes (glb não vazio)
  • Exemplo pred (A, B, C) - write(A), write(B),
    write(C).

19
Prolog x LIFE
exemplo
  • ?- pred (1,2,3).
  • 123
  • ?- pred (A, B, C).
  • _26_60_94
  • ?- pred (A, B, C, D).
  • WARNING pred/4 undefined
  • ?- pred (A, B).
  • WARNING pred/2 undefined
  • gt ?- pred (1,2,3)?
  • 123
  • gt ?- pred (A, B, C)?
  • A_at_, B_at_, C_at_--1gt .
  • gt --1gt .
  • gt ?- pred (A, B, C, D)?
  • A_at_, B_at_, C_at_, D_at_
  • --1gt .
  • gt ?- pred (A, B)?
  • A_at_, B_at_.
  • --1gt .
  • gt ?- pred?
  • Yes

20
LIFE x orientação a objetos
  • LIFE não distingue entre classe e objetos
  • LIFE não permite fechar os atributos autorizados
    para uma classe nas declarações hierárquicas
  • unificação assume informação sempre parcial
  • em Java a definição class pessoa (string nome
    string end int id) limita em três os atributos
    de pessoa
  • uma declaração do tipo pessoa (Silva, 345) é
    verificada em LIFE
  • em LIFE possível apenas através de
    meta-programação e restrições com predicados ou
    funções
Write a Comment
User Comments (0)
About PowerShow.com