:- include(test_header).
% =============================================
% File 'mpred_builtin.pfc'
% Purpose: Agent Reactivity for SWI-Prolog
% Maintainer: Douglas Miles
% Contact: $Author: dmiles $@users.sourceforge.net %
% Version: 'interface' 1.0.0
% Revision: $Revision: 1.9 $
% Revised At: $Date: 2002/06/27 14:13:20 $
% =============================================
%
%  PFC is a language extension for prolog.. there is so much that can be done in this language extension to Prolog
%

% exists(X, lives(X, green) & drinks(X, coffee)).

:- listing(vn:attr_unify_hook/2).

:- set_prolog_flag(gc,false).

:- test_boxlog([+assert],exists(H1,exists(H2,
 (leftof(H1, H2))))).

:- break.

:- test_boxlog(exists(H1,exists(H2,
 (leftof(H1, H2) & different(H1, H2))))).


:- test_boxlog(exactly(1,H1,exactly(1,H2,
 (leftof(H1, H2))))).

end_of_file.

:- test_boxlog(exactly(1,H1,exactly(1,H2,
 (leftof(H1, H2))))).

:- break.

:- test_boxlog(
 exactly(1,H1,exactly(1,H2,
  (leftof(H1, H2) & different(H1, H2))))).


:- break.

:- test_boxlog(exists(H1,exists(H2,
 (leftof(H1, H2) & different(H1, H2))))).

:- break.

:- test_boxlog(exactly(1,H1,exactly(1,H2,exactly(1,H3,
 (leftof(H1, H2) & leftof(H2, H3)))))).

:- break.

:- test_boxlog(clif(exists(H1,exists(H2,exists(H3,
 (leftof(H1, H2) & leftof(H2, H3))))))).

:- break.


% leftof(H1, H2)=>different(H1, H2).


% TODO unbreak this
% There are five houses in a row.
clif(exists(H1,exists(H2,exists(H3,
 (leftof(H1, H2) & leftof(H2, H3)))))).

:- break.

% TODO unbreak this
% There are five houses in a row.
exists(H1,exists(H2,exists(H3,
 (leftof(H1, H2) & different(H1, H2) & different(H1, H3) & different(H3, H2) & leftof(H2, H3))))).

:- break.


% There are five houses in a row.
exists(H1,exists(H2,exists(H3,exists(H4,exists(H5,
 (leftof(H1, H2) & leftof(H2, H3) & leftof(H3, H4) & leftof(H4, H5))))))).