%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% PROG. LOGICA, CONHECIMENTO E RACIOCINIO - MIEB/4

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SEMANA 08: 05.NOV.2014 - 05.NOV.2014

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% Programacao em logica estendida

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SICStus PROLOG: Declaracoes iniciais

:- set_prolog_flag( discontiguous_warnings,off ).
:- set_prolog_flag( single_var_warnings,off ).
:- set_prolog_flag( unknown,fail ).

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% Extensao do predicado filho: F,P -> {V,F,D}

filho(joao,jose).
filho(belem,xpto1). %incerto

-filho(X,Y):- nao(filho(X,Y)), nao(excecao(filho(X,Y))).

excecao(filho(X,Y)):-filho(X,xpto1). %incerto

excecao(filho(maria,faria)). %impreciso
excecao(filho(maria,garcia)).
excecao(filho(maria, sofia)).



%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% Extensao do predicado jogo: A,Id,C -> {V,F,D}

jogo(almeida_antunes,1,500).
jogo(baltazar_borges,2,algo). %incerto

jogo(edgar_esteves,5,algo). %incerto %impossivel

jogo(francisco_franca,6,250). %perfeito positivo

-jogo(guerra_godinho,7,2500). %perfeito negativo
jogo(guerra_godinho,7,algo).%incerto

-jogo(A,Id,C):-nao(jogo(A,Id,C)), nao(excecao(jogo(A,Id,C))).

excecao(jogo(A,Id,C)):-jogo(A,Id,algo). %incerto

excecao(jogo(costa_carvalho,3,500)). %impreciso
excecao(jogo(costa_carvalho,3,2500)). %impreciso
excecao(jogo(duarte_durao,4,X)):- X>=250, X=<750. %impreciso
excecao(jogo(francisco_franca,6,X)):- X>=5000. %impreciso
excecao(jogo(helder_heitor,8,X)):- X>=980, X=<1200.
excecao(jogo(ivo_inocencio,9,X)):- X>=2990, X=<3050.







%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% 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 ).
