1%Copyright 2016, Anderson Green
    2
    3:- set_prolog_flag(double_quotes,chars).    4:- initialization(main).    5%If X is an animal, then X is a bird or a mammal, and vice-versa.
    6:- use_module(library(chr)).    7
    8:- chr_constraint type/2.
    9
   10species(X,X1),species(X,X2) <=> X1 = X2.
   11
   12animal(X) <=> 
   13    (mammal(X);bird(X)),
   14    (male(X);female(X)).
   15
   16male(X),female(X) ==> false.
   17
   18bird(X) <=> species(X,pigeon);species(X,parrot).
   19
   20mammal(X) <=> species(X,dog);species(X,cat);species(X,bull).
   21
   22species(X,bull) ==> male(X).
   23
   24main :- species(X,bull), age(X,20), age(X,13), writeln(X)