%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% PROG. LOGICA, CONHECIMENTO E RACIOCINIO - MIEB/4

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SEMANA 09: 19.NOV.2012 - 23.NOV.2012

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% Conhecimento Imperfeito

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SICStus PROLOG: Declaracoes iniciais

:- set_prolog_flag( discontiguous_warnings,off ).
:- set_prolog_flag( single_var_warnings,off ).
:- set_prolog_flag( unknown,fail ).

%--------------------------------- - - - - - - - - - -  -  -  -  -   -


filho(ana,abel,alice).

data(ana,01,01,2013).

filho(anibal,antonio).
filho(anibal,alberta).

data(anibal,02,01,2013).

filho(berta,bras).
filho(berta,belem).
filho(berto,bras).
filho(berto,belem).

data(berta,02,02,2013).
data(berto,02,02,2013).

filho(crispim,catia).
filho(crispim,{celso,caio}).

data(catia,03,03,2013).

filho(danilo,daniel).
filho(danilo,alguem).

data(danilo,04,04,2013).

filho(eurico,elias).
filho(eurico,elsa).

data(eurico,dia,05,2013).

filho({fabia,octavia},fausto).
filho({fabia,ocatvia},alguem).

filho(golias,guido).
filho(golias,guida).

filho(helder,alguem).
filho(helder,alguem).

data(golias,dia,mes,ano).

excepcao(filho(crispim,celso)).
excepcao(filho(crispim,caio)).

excepcao(filho(fabia,fausto)).
excepcao(filho(octavia,fausto)).

data(helder(nao(08,08,2013))).

excepcao(filho(F,M)) :-
    filho(F,alguem).

excepcao(data(N,D,M,A)) :-
    data(N,dia,M,A).

excepcao(data(nao(N,D,M,A))) :-
    data(nao(N,D,M,A)).

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% Extensao do meta-predicado demo: Questao,Resposta -> {V,F}

demo( Questao,verdadeiro ) :-
    Questao.
demo( Questao,falso ) :-
    -Questao.
demo( Questao,desconhecido ) :-
    nao( Questao ),
    nao( -Questao ).

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% Extensao do meta-predicado nao: Questao -> {V,F}

nao( Questao ) :-
    Questao, !, fail.
nao( Questao ).
