Life - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Life

Description:

Life Leonardo Lemos (lal) Paulo Oliva (pbo) & Controle de Fluxo de predicados: Como em Prolog: fail. conjun o (A,B). disjun o (A;B). Diferente de Prolog ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 27
Provided by: Leona125
Category:
Tags: life

less

Transcript and Presenter's Notes

Title: Life


1
Life
  • Leonardo Lemos (lal)

Paulo Oliva (pbo)

2
Controle de Fluxo
  • de predicados
  • Como em Prolog fail.conjunção (A,B).
    disjunção (AB).
  • Diferente de Prologsucceed (em Prolog, true).
  • de funções
  • disjunção AB.
  • Cut (!)
  • como Prolog exceto com disjunção de funcões.
  • grandparent(X,Z) - parent(X,Y), parent(Y,Z).
  • pessoa(X) - mulher(X) homem(X).
  • A 1234A1, A2, A3 ou A4.
  • P(A) - !, write(A).P(X123)?123
  • Q(A123) - !, write(A).Q(X)?1

3
Controle de Fluxo
  • Condicionador
  • cond(B,T,F)Ex. abs(Vreal) -gt cond(Vgt0,V,-V).
  • Tal que
  • ltexpressãogt ltpredicadogt
  • função call_once(P)
  • Tente provar P
  • se P é verificado devolve true
  • se P falha devolve false
  • Ponte entre funções e predicados
  • Ap3( ,L,R) -gt true RL.
  • Ap3(XL1,L2,R) -gt true RXL3,
    Ap3(L1,L2,L3).
  • call_once(person(John)).

4
Cálculos Aritméticos
  • Funções Aritméticas Binárias
  • Soma (AB)
  • Diferença (A-B, -A)
  • Produto (AB)
  • Divisão (A/B)
  • Parte inteira da divisão (A//B)
  • fatorial em Prologfat(0, 1).fat(N, R) - N1 is
    N - 1, fat(N1, A), R is N A.
  • fatorial em LIFEfat(0) -gt1.fat(N) -gt N fat(N
    - 1).

5
Cálculos Aritméticos
  • Funções Aritméticas bit a bit.
  • E lógico de A com B, A / \ B.
  • Ou lógico de A com B, A \ / B.
  • Right Shift de A, B vezes, A gtgt B.
  • Left Shift de A, B vezes, A ltlt B.
  • Negação de A, (\A).
  • 12 /\ 5 41100 /\ 0101 0100
  • 12 \/ 5 131100 \/ 0101 1101
  • 12 gtgt 1 61100 gtgt 1 0110
  • 12 ltlt 1 2401100 ltlt 1 11000
  • \12 3
  • \...001100 ...110011

6
Cálculos Aritméticos
  • Funções Aritméticas Unárias.
  • Maior inteiro menor ou igual a A, floor(A).
  • Menor inteiro maior igual a A, ceiling(A).
  • Raiz quadrada de A, sqrt(A).
  • e elevado a A, exp(A).
  • Logarítmo na base 10, log(A).
  • Seno, Cosseno e Tangente
  • sin(A), cos(A), tan(A).
  • floor(4.5) 4.0
  • ceiling(4.5) 5.0
  • sqrt(4.0) 2.0
  • exp(1) 2.7189...
  • log(100) 2
  • sin(3.1415) 0.0
  • sin(1.57) 1.0

7
Cálculos Aritméticos
  • Gerador de números aleatórios
  • initrandom(SReal)
  • random(NInt)
  • genint
  • initrandom(10).
  • random(30)?4
  • random(30)?23
  • random(30)?4
  • genint?234
  • genint?931

8
Comparação Aritmética
  • Maior (AgtB)
  • Maior igual (AgtB)
  • Menor (AltB)
  • Menor igual (AltB)
  • Igualdade (AB)
  • Diferença (A\B)
  • gt maior2(X) - X gt 2.
  • gt maior2(A)?
  • Yes
  • A real.
  • --1gt A 3?
  • Yes
  • A 3.
  • ----2gt
  • No
  • A real.
  • --1gt

9
Aritmética Booleana
  • E (A and B)
  • Ou (A or B)
  • Ou exclusivo (A xor B)
  • Não existem em Prolog
  • Negação (not A)
  • Lógica, não por falha.
  • gt person1(X) -gt man(X) or woman(X).
  • true/false
  • gt person2(X) -gt man(X) woman(X).
  • succeed/fail

10
Cálculo de Sorts
  • Exemplos
  • greater_lower_bound
  • glb(c,d) ab
  • least_upper_bound
  • lub(a,b) cd
  • parents(a) cd
  • parents(c) _at_
  • children(c) ab
  • children(a)
  • subsort(a,a) true
  • subsort(a,a(bgt2)) true
  • least_sorts ab

11
Comparação de Sorts
  • Maior (cgtd false)
  • Maior igual (cgtc true)
  • Menor (bltd true)
  • Menor igual (bltd true)
  • Igual na hierarquia dos sorts (aa true)
  • Se os sorts são comparáveis (agtltd true)

12
Comparação de Sorts
  • Não maior (c\gtd true)
  • Não maior igual (c\gtc false)
  • Não menor (b\ltd false)
  • Não menor igual (b\ltd false)
  • Não igual na hierarquia dos sorts (a\a
    false)
  • Se os sorts não são comparáveis (a\gtltd false)

13
Cálculo de Strings
  • É tratada como um sort e usa menos mémoria que
    termos ?.
  • Tamanho da string, strlen(abcdef) 6.
  • Parte de string, substr(abcdef,5, 2) ef.
  • Concatenarstrcon(abc, def) abcdef.
  • Código ASCII de S, asc(SString).
  • Carácter do código ASCII, chr(IInt).
  • Transforma a string em um termo ?.str2psi(foo)
    foo
  • Inverso de str2psi, psi2str(X). psi2str(int)
    int

14
Comparação de Strings
  • Maior (AgtB)
  • Maior igual (AgtB)
  • Menor (AltB)
  • Menor igual (AltB)
  • Igual (A B)
  • Não igual (A\ B)
  • aba gt bab?false
  • a lt aa?true
  • jaca caja?false

15
Verificação de Tipo
  • ap1( , L) -gt L ap1(XL1, L2) -gt
    Xap1(L1,L2)
  • ap2 ( ,L,L).ap2 (XL1,L2,XL3) -
    ap2(L1,L2,L3).
  • is_function(ap1).
  • True.
  • is_predicate(ap1).
  • False.
  • is_sort(ap2).
  • False.
  • Se X é um _at_ sem argumentos var(X)
  • Se X não é _at_ ou tem argumentos nonvar(X)
  • Se X é um termo persistente is_persistent(X)

16
Variáveis globais
  • Variável lógica cujo nome é visível em todo o
    programa. (módulo)
  • Devem ser declaradas.
  • Comporta-se com um parâmetro extra passado para
    todos os predicados, funções e conjuntos.
  • Não contribuem para a manutenção do programa
  • Usadas para rastrear programas sem usar
    parâmetros extras.
  • gt global (warfare)? declarar variável gb.
  • yes
  • gt warfare34? unificar com 34
  • yes
  • --1gt write (warfare)? escrever o valor
  • 34
  • yes
  • ----2gt .
  • gt write (warfare)? backtracking desfaz
  • _at_ a unificação
  • yes

17
Termos e variáveis persistentes
  • Termos Persistentes
  • É um termo ? que não muda o valor no
    backtracking.
  • São termos apenas de leitura que só pode ser
    modificado por chamadas explícitas por
    atribuições não-backtracking (ltlt-)
  • Um termo persistente pode ser armazenado em uma
    variável padrão.
  • Toda interação entre termos locais e termos
    persistentes é feita através de matching.
    Unificar dois termos persistentes gera erro.
  • Variável Persistente
  • É um termo persistente armazenado em uma variável
    global.
  • O valor nunca fica inacessível.
  • Tem que ser declaradas.
  • Atualmente não diferencia entre variáveis
    persistentes e globais

18
Exemplo de Variável Persistente
  • gt persistent (trouble)?
  • yes
  • gt troubleltlt-with_harry?
  • yes
  • --1gt write (trouble)?
  • with_harry
  • yes
  • ----2gt .
  • gt write (trouble)?
  • with_harry
  • yes

gt global (trouble)? yes gt troubleltlt-with_harr
y? yes --1gt write (trouble)?
with_harry yes ----2gt . gt write (trouble)?
_at_ yes
19
Atribuição Destrutiva
  • Atribuição destrutiva
  • Life provê uma integração limpa de atribuições
    destrutivas.
  • Utiliza dois tipos de termos normais e
    persistentes.
  • Dois tipos de atribuições destrutivas
  • Atribuição destrutiva backtrackable
  • X sobrepõe Y. Backtracking recupera os valores
    originais de X. (X lt- Y)
  • gt X5, (Xlt-6Xlt-7succeed), write(X), nl, fail?
  • 6
  • 7
  • 5
  • No

20
Atribuição Destrutiva não-Backtrackable
  • gt X5?
  • yes
  • X 5.
  • --1gt X ltlt- 10?
  • yes
  • X 10.
  • ----2gt X ltlt- 20?
  • yes
  • X 20?
  • ------3gt
  • no
  • X 20.
  • ----2gt
  • X 5.
  • X sobrepõe Y. Backtracking não recupera os
    valores originais de X. (X ltlt- Y)

21
Gramáticas de Cláusulas Definidas (GCD)
  • Notação popular de gramática Backus-Naur Form,
    BNF, para a linguagem anbn ltsgt a bltsgt a
    ltsgt b
  • Notação DCG (definite clause grammar)s --gt a,
    b.s --gt a, s, b.
  • Diretamente utilizável para os processamentos
    morfológico e sintático na interpretação de LN
    (parsing)
  • Também utilizado para os processamentos semântico
    e pragmático na interpretação de LN.
  • Noção de Difference List1,2,3 1,2,3,4 -
    4x xA - Aa,b,c,d a,b,c,d -

22
Conversão de GCD para Prolog
  • f(T,F) - sn(T,R), gv(R, F).
  • f(T,F) - sn(T,R1), gv(R1,R2),
    sn(R2,F).
  • sn(T,F) - nome(T,F).
  • sn(T,F) - det(T,R), subs(R,F).
  • gv(R,F) - v(T,F).
  • v(comeF,F).
  • v(cantaF,F).
  • subs(peraF,F).
  • nome(anaF,F).
  • det(peraF,F).
  • F --gt SN, GV.
  • F --gt SN, GV, SN.
  • SN --gt Nome
  • SN --gt Det, Subs.
  • GV --gt V.
  • V --gt come.
  • V --gt canta.
  • Nome --gt ana.
  • Subs --gt pera.
  • Det --gt a.

23
Parsing Bottom-Up com GCDs
  • f(T,F) - sn(T,R), gv(R, F).
  • f(T,F) - sn(T,R1), gv(R1,R2),
    sn(R2,F).
  • sn(T,F) - nome(T,F).
  • sn(T,F) - det(T,R), subs(R,F).
  • gv(R,F) - v(T,F).
  • v(comeF,F).
  • v(cantaF,F).
  • subs(peraF,F).
  • nome(anaF,F).
  • det(peraF,F).

f(Ana,come,a,pera,)
sn
gv
sn
nome
v
det
subs
ana
come
a
pera
24
Rastreamento do Parsing...
  • ? f(ana,come,a,pera,).1) 0 CALL
    f(ana,come,a,pera) ? 2) 1 CALL
    sn(ana,come,a,pera,_72) ? 3) 2 CALL
    nome(ana,come,a,pera,_72) ? 4) 3 CALL
    C(ana,ana,come,a,pera,_72) dec10 ? 4) 3
    EXIT C(ana, ana,come,a,pera,come,a,pera)
    3) 2 EXIT nome(ana,come,a,pera,come,a,pera)
    2) 1 EXIT sn(ana,come,a,pera,come,a,pera)
    5) 1 CALL gv(come,a,pera,) ? 6) 2 CALL
    v(come,a,pera,)? 7) 3 CALL
    C(come,come,a,pera,) dec10 ? 7) 3
    FAIL C(come,come,a,pera,) 8) 3 CALL
    C(canta,come,a,pera,) dec10 ? ....

25
Utilização de Restrições com Argumentos
  • GCDf(Num, Gen) --gt sn(Num, Gen), gv(Num, Gen).
  • PROLOG f(T, F, Num, Gen) -
    sn(T,R,Num,Gen), gv(R,F,Num,Gen).
  • ?- f(Num,Gen,ana,come,as, peras,
    ).Num sing, Gen femMore(y/n)? Nyes?-
    f(Num,Gen,ana,come,as, pera, ).no?-
    f(Num,Gen,as,peras,come, ana, ).no

26
Thats all folks!!
Write a Comment
User Comments (0)
About PowerShow.com