%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% PROG. LOGICA, CONHECIMENTO E RACIOCINIO - MIEB/4

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SEMANA 08: 05.NOV.2012 - 09.NOV.2012

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% 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 ).

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% SICStus PROLOG: definicoes iniciais

:- dynamic '-'/1.
:- dynamic mamifero/1.
:- dynamic morcego/1.

%--------------------------------- - - - - - - - - - -  -  -  -  -   -

voa( X ) :-
    ave( X ),nao( excepcao( voa( X ) ) ).
-voa( tweety ).
-voa( X ) :-
    mamifero( X ).
-voa( X ) :-
    excepcao( voa( X ) ).



excepcao( voa( X ) ) :-
    avestruz( X ).
excepcao( voa( X ) ) :-
    pinguim( X ).



ave( X ) :-
    canario( X ).
ave( X ) :-
    avestruz( X ).
ave( X ) :-
    pinguim( X ).
ave( pitigui ).

canario( piupiu ).
avestruz( trux ).
pinguim( pingu ).

mamifero( silvestre ).
mamifero( X ) :-
    cao( X ).
mamifero( X ) :-
    gato( X ).





cao( boby ).

%--------------------------------- - - - - - - - - - -  -  -  -  -   -
% 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 ).
