predix

/* predix.pro */
nowarnings
domains
 nome = symbol
 
 predicates
 padre(nome,nome)
 madre(nome,nome)
 coniugi(nome,nome)
 
 clauses
 padre(paolo,luigi).
 padre(paolo,aldo).
 padre(alberto,anna).
 padre(alberto,ivano).
 madre(elisa,luigi).
 madre(elisa,alberto).
 
 /* cerca se due persone sono coniugi */
 /* lo sono se genitori dello stesso figlio */
 /* X e Y sono coniugi se X padre di Z */
 /* e Y madre di Z */
 /* prova GOAL:coniugi(X,Y) */
 /* prova GOAL:coniugi(alberto,Y)  */
 /* prova GOAL:coniugi(paolo,elisa) */
   
 coniugi(X,Y) if
  padre(X,Z) and
  madre(Y,Z),nl,
  write(),nl,
  write(X,"\t",Y).