-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenealogie.pl
More file actions
32 lines (27 loc) · 898 Bytes
/
genealogie.pl
File metadata and controls
32 lines (27 loc) · 898 Bytes
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
personne(bob,m).
personne(kate,f).
personne(mary,f).
personne(jack,m).
personne(bruno,m).
personne(jacqueline,f).
parent(bruno,bob).
parent(bob,kate).
parent(mary, kate).
parent(kate, jack).
parent(bob, jacqueline).
parent(mary, jacqueline).
mere(X,Y) :- personne(X,f),parent(X,Y).
pere(X,Y) :- personne(X,m),parent(X,Y).
grandparent(X,Y) :- parent(X,Z),parent(Z,Y).
grandmere(X,Y) :- personne(X,f),grandparent(X,Y).
grandpere(X,Y) :- personne(X,m),grandparent(X,Y).
ancetre(X,Y) :- parent(X,Y).
ancetre(X,Y) :- parent(X,Z),ancetre(Z,Y).
descendance(X,Y) :- parent(Y,X).
descendance(X,Y) :- parent(Y,Z),ancetre(Z,X).
frere(X,Y) :- parent(Z,X),personne(X,m),parent(Z,Y),X\=Y.
soeur(X,Y) :- parent(Z,X),personne(X,f),parent(Z,Y),X\=Y.
freres(L) :- setof([X,Y],(frere(X,Y)),L).
soeurs(L) :- setof([X,Y],(soeur(X,Y)),L).
tante(X,Y) :- soeur(X,Z),parent(Z,Y).
oncle(X,Y) :- frere(X,Z),parent(Z,Y).