+ All Categories
Home > Documents > LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Date post: 17-Apr-2015
Category:
Upload: internet
View: 107 times
Download: 0 times
Share this document with a friend
30
LIFE LIFE Logic, Inheritance, Logic, Inheritance, Functions and Equations Functions and Equations Ioram Schechtman Sette
Transcript
Page 1: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

LIFELIFELogic, Inheritance, Logic, Inheritance,

Functions and EquationsFunctions and Equations

Ioram Schechtman Sette

Page 2: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Motivação: Motivação: Limitações de Prolog como LPLimitações de Prolog como LP

Estrutura de conhecimento:• de aridade fixa => difícil modificar, estender• com sub-estruturas indexadas por posição => difícil

de ler• não tipada => difícil verificar, manter consistência

ex, person(_,_,_,_,35,male,_,_,_...)

Aritmética mal integrada com computação simbólica• dificulta aplicações híbridas

ex, > ?- C is 1 + 2.

C = 3

• não tem mais bidirecionalidade, nem declaratividade no sentido de independente da ordemex, > ?- C is D, D = 1 + 2.

Error.

Page 3: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Limitações de Prolog como LP (cont.)Limitações de Prolog como LP (cont.)

Variáveis de ordem superior não disponíveis• dificulta meta-programação

ex, P(a,Y)

Interface com protocolos da Internet externa à linguagem• dificulta programação de agentes na Web

Bibliotecas gráficas externas à linguagem• dificulta programação de GUIs

Page 4: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Limitações de Prolog como Formalismo Limitações de Prolog como Formalismo de Representação de Conhecimento de Representação de Conhecimento

(FRC)(FRC)

Hipótese do mundo fechado• inadequação inferencial com conhecimento parcial

ex, pessoa(joao,35,consultor) não unifica com pessoa(joao, consultor,maria)

• LIFE OK Respostas para consultas sempre extensionais

• inadequação expressiva para resolução de restriçõesex, dá como resultado: X = 2 mas não X >= 3, Y < 5

Hierarquias representadas por meio de regras• inadequação aquisicional para conhecimento

terminológico• ineficiência inferencial para herança de propriedades

ex, criança isa pessoa Procedimentos simulados por encadeamento de regras

• inadequação aquisicional para conhecimento procedimental

Page 5: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

The Chemistry of LIFE: A molécula

-cálculo Tipos,herança, FUF, Redes Semânticas

-cálculo Funções ProcedimentosDaemons,Métodos

LogIn Prolog OOLIFE

Frames+Regra

-cálculo Relações. Regras,lógica.

LeFun Prolog Funcionais

FOOL Frames CLOS

Page 6: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Termos Termos

São compostos por• sorts, atributos e variáveis

Exemplos:• 42, -5.66, “exemplo” : sorts p/ inteiros, reais e strings

específicos• int, real, string : sorts que denotam todos os inteiros,

reais e strings.• exemplo_abc, ‘%exemplo^&’ : sorts• date(friday, “XIII”) : sorts c/ atributos e rótulos

numéricos implicitos• date(1=>friday, 2=>”XIII”): sorts c/ atributos e rótulos

numéricos explícitos• freddy(nails=>long, face=>ugly): sorts c/ atributos e

rótulos não numéricos

Page 7: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Hierarquia de TiposHierarquia de Tipos

Sorts:• Conjunto Parcialmente

Ordenado de Tipos• Hierarquia definida pelo

operador: <| (é um subsort de)

• { } <| sort <| @

Exemplos:• truck <| vehicle.(truck é um subsort de

vehicle)• mobile(vehicle).• useful(vehicle).• mobile(X), useful(X)?• X = truck

Page 8: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Built-In SortsBuilt-In Sorts

Além de {} (bottom) e @ (top):• todos os inteiros e reais

1 <| int. 1.2 <| real. • list, [ ] ou nil, cons

[a,b,c] = [a,b|[c]] = [a,b,c|[]] = [a|[b|[c|[]]]]

• strings“exemplo” <| string.

• bool, true, false• built_in (supersort de list,

string, real e bool)

Resumindo:• built_in <| @

• list <| built_in• string <| built_in• real <| built_in• bool <| built_in

• cons <| list• [] <| list

• int <| real

• true <| bool• false <| bool

Page 9: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Built-In Sorts (hierarquia)Built-In Sorts (hierarquia)

@

list boolrealstring

cons int true[ ] false

built_in

{ }

Page 10: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

glb (Greatest Lower Bound)glb (Greatest Lower Bound)

O glb de dois sorts r e s é o maior subsort comum entre

r e s. Semântica dos sorts

baseada na teoria dos conjuntos, glb corresponde a interseção entre eles.

Se glb é {}, os sorts são ditos incompatíveis.

O glb pode ser dado pela forma disjuntiva {s1;s2;s3} caso seja composto por mais de um sort.

estudante <| pessoa. empregado <| pessoa. staff <| empregado. est_trab <| estudante. est_trab <| staff. s1 <| estudante. s2 <| estudante. w1 <| est_trab. w2 <| est_trab. e1 <| staff. e2 <| staff. glb(estudante,empregados) =

{est_trab}

Page 11: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

glb (hierarquia de sorts)glb (hierarquia de sorts)

pessoapessoa

empregadoempregado estudanteestudante

staffstaff professor professor

est_trabest_trab

s1 sn w1 w2 e1 e2 f1 f2 f3s1 sn w1 w2 e1 e2 f1 f2 f3

Page 12: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

AtributosAtributos

Par consistindo em um rótulo e um termo associado.

Exemplos:• show( titulo => “bewitched”,

genero => sitcom,onde => televisao,sogra => “Agnes Moorehead”).

• thing(a,b,c) é equivalente a thing(1 => a, 2 => b, 3=>c).

Page 13: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

VariáveisVariáveis

Começam por _ ou letra maiúscula

Variável Anônima: _ (equivalente a @)

Pode ser associada a um termo Ex: X:t

Referência cíclica: X:[42|X]

Associação implícita: X:@

Exemplos:• father(name => N:string,

son => boy(name => N))representa um pai que tem um filho com o mesmo nome.

• [A,A]é a lista onde o primeiro e segundo elemento são identicos.

• L:[int,int,int|L]lista cíclica de tamanho 3, onde os 3 elementos são inteiros.

Page 14: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Exemplo de termo pessoaExemplo de termo pessoa nomenome

pessoapessoa idid

primeiroprimeiro últimoúltimocônjugecônjuge string string string string

nomenome último últimopessoapessoa id id

X:pessoa(nome=>id(primeiro=>string,X:pessoa(nome=>id(primeiro=>string, último=>S:string),último=>S:string),

conjuge=>pessoa(nome=>id(último=>S),conjuge=>pessoa(nome=>id(último=>S), conjuge=>X)).conjuge=>X)).

Page 15: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Caracteristicas de termos Caracteristicas de termos

Recursivo,expressivo,simples e eficiente. Co-referência x Caminhos. Mais semântica : Propriedades por rótulo, não por posição,

como Prolog. Pode ter disjunções :

P:{charlataoP:{charlatao ;pessoa(id=>nome(primeiro=>X:’john’’,;pessoa(id=>nome(primeiro=>X:’john’’,

ultimo=>Y:{‘doe’;X}),ultimo=>Y:{‘doe’;X}), amigo=>{P;pessoa(id=>nome(primeiro=>Y,amigo=>{P;pessoa(id=>nome(primeiro=>Y,

último=>X))})}último=>X))})}

Page 16: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

UnificaçãoUnificação

Unificar 2 termos consiste em:• computar o glb de seus sort principais,• casar as variáveis principais,• ligá-las a todos os atributos dos 2 termos pais,• unificar recursivamente os termos relativos aos atributos.

Se durante a unificação o glb for { }, ela falha, caso contrário ela sucede.

Page 17: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Exemplo de UnificaçãoExemplo de Unificação

pessoapessoa

empregadoempregado estudanteestudante

staffstaff professor professor

est_trabest_trab

s1 sn w1 w2 e1 e2 f1 f2 f3s1 sn w1 w2 e1 e2 f1 f2 f3

Page 18: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Exemplo de Unificação (cont.)Exemplo de Unificação (cont.)

X:estudante(orientador => X:estudante(orientador => professor( secretária=>Y:staff,professor( secretária=>Y:staff,

assistente=>X),assistente=>X), colega_de_quarto=>empregado(representante=>Y)).colega_de_quarto=>empregado(representante=>Y)).

empregado(orientador=>empregado(orientador=>f1f1(secretária=>empregado,(secretária=>empregado, assistente=>U:pessoa),assistente=>U:pessoa),

colega_de_quarto=>V:estudante(representante=>V),colega_de_quarto=>V:estudante(representante=>V),ajudante=>ajudante=>w1w1(esposa=>U))(esposa=>U))

Unificação:Unificação:W:est_trab(orientador=>W:est_trab(orientador=>f1f1(secretária=>Z:est_trab(representante(secretária=>Z:est_trab(representante=>Z),=>Z), assistente=>W), assistente=>W),

colega_de_quarto=>Z,colega_de_quarto=>Z, ajudante=>ajudante=>w1w1(esposa=>W))(esposa=>W))

Page 19: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Exemplo de Unificação (cont.)Exemplo de Unificação (cont.)

X:estudante(orientador => X:estudante(orientador => professor( secretária=>Y:staff,professor( secretária=>Y:staff,

assistente=>X),assistente=>X), colega_de_quarto=>empregado(representante=>Y)).colega_de_quarto=>empregado(representante=>Y)).

estudante professor

staff

colega_de_quarto secretária

assistente

orientador

representante

X

Y

Page 20: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Exemplo de Unificação (cont.)Exemplo de Unificação (cont.)

empregado f1

estudante

colega_de_quarto

secretária

assistente

orientador

representante

empregado(orientador=>empregado(orientador=>f1f1(secretária=>empregado,(secretária=>empregado, assistente=>U:pessoa),assistente=>U:pessoa),

colega_de_quarto=>V:estudante(representante=>V),colega_de_quarto=>V:estudante(representante=>V),ajudante=>ajudante=>w1w1(esposa=>U))(esposa=>U))

empregado

pessoa

w1

ajudante

esposa

U

V

Page 21: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Exemplo de Unificação (cont.)Exemplo de Unificação (cont.)

est_trab f1

est_trab

colega_de_quarto secretária

assistente

orientador

representante

Unificação:Unificação:W:est_trab(orientador=>W:est_trab(orientador=>f1f1(secretária=>Z:est_trab(representante(secretária=>Z:est_trab(representante=>Z),=>Z), assistente=>W), assistente=>W),

colega_de_quarto=>Z,colega_de_quarto=>Z, ajudante=>ajudante=>w1w1(esposa=>W))(esposa=>W))

w1esposa

ajudante

Page 22: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Declaração de Atributos em Sorts Declaração de Atributos em Sorts (Classes)(Classes)

:: Headonde Head é um termo arbitrário.

:: person (age=> int).Assegura que todo termo com o sort person terá um campo age cujo valor é um inteiro.

man <| person. A = man?

*** YesA = man(age=>int).

:: vehicle(make => string, wheels => int).

:: car(wheels => 4). Se a relação car <| vehicle

existir, todas as propriedades de car devem ser compatíveis com as de vehicle.

Page 23: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Exemplo de Declaração de AtributosExemplo de Declaração de Atributos

:: rectangle(lenght=>L:real,

width=>W:real,area=>L*W).

:: square(lenght=>S, width=>S,

side =>S).

square <| rectangle.

R=rectangle(area=>16,width=>4)?*** YesR=rectangle(area=>16, lenght=>4, width=>4).

R=square? *** YesR = square(area=>16, lenght => _A: 4, side => _A, width => _A).

Page 24: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Declaração de Sorts com RestriçõesDeclaração de Sorts com Restrições

::Head | Goal.Exs:

:: X:person | X.age = int.Adiciona a propriedade X.age=int em todas as instâncias de person.Mesmo efeito de:: person(age=>int).

:: date(day_of_week=>day_of_week, day_of_month=>D:int, month_name=>Mname:month, month_num =>Mnum:month_num, year=>Y:int) | day_month_p(D,Mname,Y), month_p(Mname,Mnum).day_month_p(D,month31,_) :- D >= 1, D =< 31.day_month_p(D,month30,_) :- D >= 1, D =< 30.day_month_p(D,feb,Y) :- leaf_year(Y), D >= 1, D =< 29.day_month_p(D,feb,Y) :- \+(leaf_year(Y)), D >= 1, D =< 29.

Page 25: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Possíveis Declarações de SortsPossíveis Declarações de Sorts

:: t (atr). :: t (atr) | rest.

t (atr) <| u. t (atr) <| u | rest.

t := u (atr). t := u (atr) | restrições.

t (atr) <| {u;v;w}. t (atr) <| {u;v;w} | rest.

t := {u (atr); v (atr); w(atr)}. t := {u (atr); v (atr); w(atr)} | rest.

::car(wheels=>4). ::car | car.wheels = 4.

car(wheels=>4) <! vehicle. car <| vehicle | car.wheels = 4.

car := vehicle(wheels => 4). car := vehicle(wheels => X:int) | X=4.

car <| {four_wheels;vehicle}. car <| {four_wheels;vehicle} |

vehicle.wheels = 4.

tree := {leaf;node} tree := {leaf;node} | node.left = tree,

node.right=tree.

Page 26: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Notar a Assimetria de comportamento de Notar a Assimetria de comportamento de :=:=

t := {u;v;w} é igual au <| t . v <| t . w <|t .

t := {u}. é igual au <| t .

mas t := u. é igual a

t <| u.

Exemplo: tree := {leaf;

node( left => tree,

right => tree)}

é igual a leaf <| tree. node <| tree. :: node (left => tree,

right => tree).

Page 27: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Log InLog In

Log In é simplesmente um Prolog onde os termos de 1a ordem são substituidos por termos , ou seja, com definição de tipos.

Exemplo de Programa em Log In que não seria correto na versão Prolog sem tipos:

list:= {[ ]; [ _|list]}.append([ ],L:list,L).append([H|T:list], L:list, [H|R:list]) :- append(T,L,R).

Page 28: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Exemplo em Log InExemplo em Log In

coisaboa

notaboa

nota

notaruim

ba c d f

pessoa

estudante

peter paul mary

notaboa <| coisaboa.

notaboa := {a;b}.

notaruim := {c;d;e}.

gosta(X:person,X).

gosta(peter,mary).

gosta(pessoa,coisaboa).

tem(peter,c).

tem(paul,f).

tem(mary,a).

feliz(X:pessoa) :- gosta(X,Y),tem(X,Y).

feliz(X:pessoa) :- gosta(X,Y),tem(Y,coisaboa).

?- feliz(X).

Page 29: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Exemplo em Log In (Cont.)Exemplo em Log In (Cont.)

coisaboa

notaboa

nota

notaruim

ba c d f

pessoa

estudante

peter paul mary

?- feliz(X).

X=mary;

X=mary;

X=peter;

No

Page 30: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette.

Recommended