-
Notifications
You must be signed in to change notification settings - Fork 0
/
ficha1_BB.pl
62 lines (40 loc) · 1.89 KB
/
ficha1_BB.pl
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
%--------------------------------- - - - - - - - - - - - - - - -
% Inteligência Artificial MIEI /3 LEI/3
%--------------------------------- - - - - - - - - - - - - - - -
% Base de Conhecimento com informacao genealogica.
filho( joao,jose ).
filho( jose,manuel ).
filho( carlos,jose ).
pai( paulo,filipe ).
pai( paulo,maria ).
avo( antonio,nadia ).
neto( nuno,ana ).
masculino(joao).
masculino(jose).
feminino(maria).
feminino(joana).
%--------------------------------- - - - - - - - - - - - - - - -
% Extensao do predicado filho: Filho,Pai -> {V,F}
%--------------------------------- - - - - - - - - - - - - - - -
% Extensao do predicado pai: Pai,Filho -> {V,F}
pai( P,F ) :- filho( F,P ).
%--------------------------------- - - - - - - - - - - - - - - -
% Extensao do predicado avo: Avo,Neto -> {V,F}
avo( A,N ) :- filho( N,X ), pai( A,X ).
%--------------------------------- - - - - - - - - - - - - - - -
% Extensao do predicado neto: Neto,Avo -> {V,F}
neto( N,A ) :- avo( A,N ).
%--------------------------------- - - - - - - - - - - - - - - -
% Extensao do predicado bisavo: Bisavo,Bisneto -> {V,F}
bisavo( B,N ) :- filho( N,X ), avo( B,X ).
%--------------------------------- - - - - - - - - - - - - - - -
% Extensao do predicado descendente: Descendente,Ascendente -> {V,F}
descendente( X,Y ) :- filho( X,Y ).
descendente( X,Y ) :- filho( X,Z ), descendente( Z,X ).
%--------------------------------- - - - - - - - - - - - - - - -
% Extensao do predicado descendente: Descendente,Ascendente,Grau -> {V,F}
descendenteGrau(X,Y,1) :- filho( X,Y ).
descendenteGrau(X,Y,N) :- filho( X,Z ), G is N-1, descendenteGrau( Z,Y,G ).
%--------------------------------- - - - - - - - - - - - - - - -
% Extensao do predicado trisavo: Trisavo,Trisneto -> {V,F}
trisavo(T,N) :- descendenteGrau( N,T,4 ).