(x)(y)((jefe(x,y) (z)(jefe(x,z) superior(z,y))) superior(x,y))
Aunque en Prolog se puede expresar la disyunción, con el símbolo «;» (Apartado A.1.5) en en cuerpo de la regla, es más claro utilizar dos reglas, una que expresa la relación inmediata: X es superior de Y si X es jefe de Y, es decir:
R1: superior(X,Y) :- jefe(X,Y).
y otra para expresar con una regla finita la cadena infinita de relaciones mediante recursión: X es superior de Y si X es jefe de algún individuo intermedio, Z, que es superior de Y, o sea:
R2: superior(X,Y) :- jefe(X,Z), superior(Z,Y).
Añadiendo estas reglas, se pueden hacer consultas como:
?- superior(X,a4).
X=b3 X=a1 X=a2 ?- superior(a2,X). X=a3 X=b3 X=c3 X=a4 X=b4 |