%
% ex3.pl - 例題3: 再帰的な規則
%

% 曾祖父母曾孫関係
ggparent(W, Z) :- parent(W, X), parent(X, Y), parent(Y, Z).

% 祖先子孫関係
ancestor(X, Y) :- parent(X, Y).
ancestor(X, Z) :- parent(X, Y), ancestor(Y, Z).

% 注 - トレースする際はancestorだけでなくparentも同時に指定すると良い。
%      例 ?- trace([ancestor, parent]).

% 祖父母孫関係
grandparent(X, Z) :- parent(X, Y), parent(Y, Z).

% 兄弟関係(完成版)
brother(X, Y) :- parent(Z, X), parent(Z, Y), X \= Y.

% 親子関係(事実)
parent(taro, hanako).
parent(hanako, jiro).
parent(taro, saburo).
parent(hanako, shiro).
parent(saburo, ishiro).
parent(shiro, goro).
