Bonsoir!
Je sollicite votre aide afin d’implementer un predicat filtre(S,T,SIGMA) qui
renvoie vrai si et seulement si S est un terme clos et SIGMA le filtre de S par T (s’il existe bien sur).
Je sais qu'un probleme de filtrage est une suite d’´equations s(i) = t(i) avec t(i) un terme clos. Il est en forme résolu si tous les s(i) sont des variables qui n’apparaissent qu’une seule foisdans le système.
Je sais aussi que les règles de simplification sont un sous-ensemble de celle de l’unification :
f(s1, . . . , sn) = g(t1, . . . , tm) → echec
f(s1, . . . , sn) = f(t1, . . . , tn) → s1 = t1, . . . , sn = tn
x = t, P → P si x = t apparait dans P
x = t, . . . , x = t′, . . . → echec si t et t′ sont deux termes clos distincts.
Je souhaiterai donc ecrire cet algorithme en prolog sans utiliser l’unification du système (car le but s=t résoud le problème )
Je continue travailler dessus en attendant une aide provientielle de votre part (Je fais mes grand débuts en prolog )
D'avance Merci .
Partager