Bonjour,
Je débute en prolog.
J'ai une règle prolog "pere(x,y)", qui se lit "x est le père de y".
J'aimerais pouvoir, avec cette règle uniquement, écrire "x est le père du père de y". Est ce possible?
Le code actuel est donc :
pere(x,y)->;
Je peux donc écrire
"pere(Jean,Paul);"
mais puis-je écrire ceci :
"pere(Jean, pere(x,Paul));"
et est ce que ça se lirait bien comme je le veux?
Si ce n'est pas le cas, y a t'il moyen d'écrire quelque chose comme ça :
pere(x,y) pere(y,z)->;
Je me doute que le mieux serait de noter
grand_pere(x,y) -> pere(x,z) pere(z,y);
Mais dans ce cas, j'aurais vite un problème quand je devrais écrire "Paul est le pere de la soeur du cousin de l'oncle du grand-pere de Marc"...
Ou alors, à ce moment là, peut être vaut il mieux noter relation(x,l,y) où l est la liste des liens qui séparent Paul de Marc, donc "pere.soeur.cousin.oncle.grand_pere.nil", mais, une fois encore, je ne sais pas si je ne risque pas d'avoir des problèmes lorsque j'aurais à déduire d'une relation compliquée une relation plus simple telle que
relation(x,epouse.nil,y) -> relation(x,mere.fils.nil,y);
Merci d'avance, cordialement,
Zelarith.
PS : J'utilise Prolog II+.
Partager