Je les deux faits chargés dans mon interprète Prolog:opérateur Prolog priorité et les règles correspondant à
foo(U+V,1).
foo(U*V,2).
Maintenant, j'essayer les prochaines requêtes avec qui résultats:
foo(x*x+x,R). --> R = 1
foo(x+x*x,R). --> R = 1
foo(x*x*x,R). --> R = 2
Maintenant, j'essaie avec le demande suivante:
foo(x*x-x,R). --> no
Comme je le comprends, ceci est expliqué par la façon dont la priorité de l'opérateur construit l'expression de l'arbre :
x+x*x --> + so it matches with --> +
/\ /\
x * U V
/\
x x
x-x*x --> - DOES NOT matches any fact.
/\
x *
/\
x x
Cette explication est-elle correcte?