1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| man(arthur).
man(mlr).
man(benoit).
man(germain).
man(antoine).
woman(simone).
woman(sylvie).
woman(melanie).
woman(camille).
woman(jeanne).
woman(lea).
woman(margot).
human(X):-(man(X);woman(X)).
parent(arthur,mlr).
parent(simone,mlr).
parent(arthur,jean).
parent(simone,jean).
parent(mlr,benoit).
parent(sylvie,benoit).
parent(mlr,germain).
parent(sylvie,germain).
parent(benoit,margot).
parent(benoit,antoine).
parent(melanie,margot).
parent(melanie,antoine).
parent(germain,jeanne).
parent(germain,lea).
parent(camille,jeanne).
parent(camille,lea).
enfant(A,B):-parent(B,A).
father(F,C):-man(F),parent(F,C).
mother(M,C):-woman(M),parent(M,C).
couple(F,M):-father(F,C),mother(M,C).
%couple2(F,M):-man(F),parent(F,C),woman(M),parent(M,C).
belle_mere(M,S):-couple(B,M),mother(S,B).
son(S,P):-man(S),parent(P,S).
fils(S):-son(S,_).
daughter(D,P):-woman(D),parent(P,D).
siblings(A,B):-parent(P,A),parent(P,B),A\=B.
% siblings have at least one common parent % the test A\=B preserves that siblings are different persons
full_siblings(A,B):- father(F,A),father(F,B),
mother(M,A),mother(M,B), A\=B.
frere(A,B):- full_siblings(A,B),man(B), A\=B.
soeur(A,B):- full_siblings(A,B),woman(B).
tante(A,N):-woman(A),full_siblings(A,P),parent(P,N).
tante2(A,N):-siblings(A,P),parent(P,N),woman(A).
% oncle(A,N):-man(A),siblings(A,P),parent(P,N),A\=P,A\=N.
oncle(A,N):-man(A),full_siblings(A,P),parent(P,N),A\=P,A\=N.
grand_parent(G,N):-parent(G,X),parent(X,N).
grand_pere(G,N):-grand_parent(G,N),man(G).
grand_mere(G,N):-grand_parent(G,N),woman(G).
%_________________
%
cous(A,B):-parent(P,A),parent(Q,B),full_siblings(Q,P).
cousin(A,B):-man(B),parent(P,A),parent(Q,B),full_siblings(Q,P).
cousine(A,B):-woman(B),parent(P,A),parent(Q,B),full_siblings(Q,P).
descendent(D,A):-parent(A,D). descendent(D,A):-parent(P,D),descendent(P,A).
ancestor(A,D):-descendent(D,A).
q1(X) :- father(Papa,X),write(Papa),write(' est le papa de '),write(X),nl.
q2(X):- mother(Maman,X),write(Maman),write(' est la maman de '),write(X),nl,nl.
q3(X):- grand_pere(Papy,X),write(Papy),write(' est le papy de '),write(X),nl.
q4(X):- grand_mere(Mamy,X),write(Mamy),write(' est la mamy de '),write(X),nl,nl.
q5(X):- couple(Mari,X),write(Mari),write(' est le mari de '),write(X),nl,nl.
q6(X):-tante(Tante,X),write(Tante),write(' est la tante de '),write(X),nl,nl.
q7(X):-oncle(Oncle,X),write(Oncle),write(' est l oncle de '),write(X),nl,nl.
q8(X):-cousin(X,Cousin),write(Cousin),write(' est le cousin de '),write(X),nl,nl.
q9(X):-cousine(X,Cousine),write(Cousine),write(' est la cousine de '),write(X),nl,nl.
q10(X):-couple(Mari,X),write(Mari),write(' est le mari de '),write(X),nl,nl.
q11(x):-belle_mere(M,S),write(S),write(' est la belle mere de '),write(M),nl.
t(X):-q1(X),q2(X),q3(X),q4(X),q5(X),q6(X),q7(X),q8(X),q9(X),q10(X).
t2(X):-q1(X);q2(X);q3(X);q4(X);q5(X);q6(X);q7(X);q8(X);q9(X);q10(X).
tata(Mel,Lea):-oncle(Ben,Lea),couple(Ben,Mel). |
Partager