Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouJudite Borba Flores Alterado mais de 8 anos atrás
1
Elsa Carvalho BEGIN := id; b:=true; S:=[,..., ] WHILE (S AND b)DO := top(S); S:=pop(S); := ; IF s e v são da forma f(t 1,... t n ), g(r 1,..., r m ) com (f,n) e (g, m) distintos (n,m 0) THEN b:= false ELSE IF s e v são da forma f(t 1,... t n ), f(r 1,..., r n ) THEN S:= push(, push(..., push(,S)...) ELSE IF s ou v é uma variável que ocorre estritamente no outra THEN b:= false ELSE IF s é uma variável THEN := {s/v} ELSE IF v é uma variável THEN := {v/s} ELSE b:= false END Unificação - Algoritmo 200 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05)
2
Elsa Carvalho Unificação - OCCUR CHEK ELSE IF s ou s é uma variável que ocorre estritamente no outra THEN b:= false O objectivo desta validação é detectar situações de auto-referência. p(f(X), f(f(X)))p(Y,Y) A substituição X/f(X) seria obtida na ausência do teste anterior. Corresponde a substituir X pelo termo infinito f(f(f(...)), o qual não pertence à linguagem de 1ª ordem. A verificação da condição é ‘cara’ pois exige que a estrutura do termo seja examinada para detectar a ocorrência da variável, por isso é frequentemente omitida nas implementações. 201 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05)
3
202 Elsa Carvalho Universidade da Madeira Departamento de Matemática Unificador mais geral para p(f(f(X)), X, a) ep(f(Y), g(Z), Z) Exemplo = = {Z/a} = = = {Z/a, X/g(a)} = = = {Z/a, X/g(a), Y/f(g(a))} Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05)
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.