
%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SICStus PROLOG: definicoes iniciais

:- op( 800,fx,facto ).
:- op( 800,xfx,entao ).
:- op( 800,xfy,ou ).
:- op( 800,xfy,e ).
%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% PROG. LOGICA, CONHECIMENTO E RACIOCINIO - MIEB/4

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SEMANA 10: 17.NOV.2014 - 21.NOV.2014

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SICStus PROLOG: Declaracoes iniciais

:- set_prolog_flag( discontiguous_warnings,off ).
:- set_prolog_flag( single_var_warnings,off ).
:- set_prolog_flag( unknown,fail ).

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SICStus PROLOG: definicoes iniciais

:- op( 800,fx,se ).
:- op( 800,fx,facto ).
:- op( 700,xfx,entao ).
:- op( 300,xfy,ou ).
:- op( 200,xfy,e ).
:- dynamic facto/1.

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% Base de Conhecimento com informacao genealogica.

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% Extensao do predicado facto: PREDICADO -> { V,F }


facto filho( joao,jose ).
facto filho( jose,manuel ).
facto filho( carlos,jose ).
facto masculino( joao ).
facto masculino( jose ).
facto feminino( maria ).
facto feminino( joana ).

se filho(F,P)
entao pai(P,F).

se filho(N,X) e pai(A,X)  entao  avo(A,N).

se avo(A, N) entao neto(N,A).

