rendered paste body/* lab - 2 */domains S = symbolpredicates parent(S,S) male(S) female(S) mother(S,S) father(S,S) parents(S,S,S) shared_parents(S,S) son(S,S) doughter(S,S) sister(S,S) brother(S,S) uncle(S,S) aunt(S,S) grandf(S,S) grandm(S,S) grandc(S,S) root_first(S,S) clauses /* PARENT */ /* Mother line */ parent("zoy","nina"). parent("zoy","nadejda"). parent("vlad","nina"). parent("vlad","nadejda"). parent("nina","vinokur"). parent("nadejda","alexey"). /* Father line */ parent("luba","pavel"). parent("luba","ludmila"). parent("andrey","pavel"). parent("andrey","ludmila"). parent("ludmila","lena"). parent("pavel","alexey"). /* MALE */ male("vlad"). male("vinokur"). male("alexey"). male("pavel"). male("andrey"). /* FEMALE */ female("zoy"). female("nina"). female("nadejda"). female("luba"). female("ludmila"). female("lena"). /* Info */ mother(X,Y):- parent(X,Y), female(X). father(X,Y):- parent(X,Y), male(X). parents(M,F,X):- mother(M,X), father(F,X). son(X,Y):- parent(Y,X), male(X). doughter(X,Y):- parent(Y,X), female(X). shared_parents(X,Y):- parents(M,F,X), parents(M,F,Y), not(X=Y). uncle(X,Y):- male(X), shared_parents(X,Z), parent(Z,Y). aunt(X,Y):- female(X), shared_parents(X,Z), parent(Z,Y). sister(X,Y):- female(X), shared_parents(X,Y). brother(X,Y):- male(X), shared_parents(X,Y). grandf(X,Y):- male(X), parent(X,Z), parent(Z,Y). grandm(X,Y):- female(X), parent(X,Z), parent(Z,Y). grandc(X,Y):- parent(Z,X), parent(Y,Z). root_first(X,Y):- parent(X,Y). root_first(X,Y):- parent(X,Z), root_first(Z,Y).