%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Uso della Ricorsione in Datalog: Chiusura transitiva % % In smodels: lparse < nomefile | smodels % % In SWI-Prolog: query al prompt ?- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% person(cristina). person(giovanni). person(beatrice). person(annalisa). person(giacomo). person(patrizia). father(giovanni,cristina). mother(patrizia,cristina). mother(cristina,beatrice). mother(beatrice,annalisa). mother(beatrice,giacomo). parent(X,Y):-person(X),person(Y),mother(X,Y). parent(X,Y):-person(X),person(Y),father(X,Y). ancestor(V,W):-person(V),person(W),parent(V,W). ancestor(V,W):-person(V),person(W),parent(V,Z),ancestor(Z,W). grandfather(X,Y):-father(X,Z),parent(Z,Y). grandmother(X,Y):-mother(X,Z), parent(Z,Y). % In SWI-Prolog omettere questa parte hide person(X). hide mother(X,Y). hide father(X,Y).