life logic, inheritance, functions and equations ioram schechtman sette
TRANSCRIPT
![Page 1: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/1.jpg)
LIFELIFELogic, Inheritance, Logic, Inheritance,
Functions and EquationsFunctions and Equations
Ioram Schechtman Sette
![Page 2: LIFE Logic, Inheritance, Functions and Equations Ioram Schechtman Sette](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/552fc10b497959413d8c2734/html5/thumbnails/30.jpg)