J'essaie de définir le prédicat d'héritage-vérification is_a/2
dans Prolog, mais jusqu'à présent, tous mes essais ont échoué.Définition d'un prédicat is_a dans prolog?
Le prédicat is_a(X, Y)
doit retourner vrai lorsque Y est une superclasse de X. Par exemple:
object(bare).
object(mammal).
object(animal).
object(bird).
is_a(bare, mammal).
is_a(mammal, animal).
is_a(bird, animal).
is_a(X, Y):- <definition goes here>.
La définition devrait aller de telle sorte que la requête suivante retourne vrai:
?- is_a(bare, animal).
true.
J'ai essayé pour le définir le évident façon, mais je suis resté coincé dans des boucles infinies:
is_a(X, Y):- X\==Y, object(X), object(Y), object(Z), is_a(X, Z), is_a(Z, Y).
Des suggestions?
Exactement ce que je cherche :) merci beaucoup, 3lectrologos –