
:- include('../ec_test_incl').

:- module(ec).

do_test_cakes(N) :- abdemo_special(loops,[holds_at(num_cakes(N),t)],R).

%do_test(1) :- do_test_cakes(1).
%do_test(0) :- do_test_cakes(0).
%do_test(4) :- do_test_cakes(4).
%do_test(5) :- do_test_cakes(5).
%do_test(6) :- \+ do_test_cakes(6).
do_test(3) :- do_test_cakes(3).

fluent(num_cakes(_)).

executable(eat_cakes(1)).

initially(num_cakes(5)).

axiom(initiates(eat_cakes(Eat),num_cakes(Remaining),T), 
 [ holds_at(num_cakes(Start), T),
   call((   
   plus(Remaining, Eat, Start),
   Start>=0,Remaining>=0,Eat>=0)),
   holds_at(num_cakes(Start), T)]).

axiom(terminates(eat_cakes(Eat),num_cakes(N),T), [call((number(E),Eat>0)),holds_at(num_cakes(N),T)]).

/* Abduction policy */

abducible(dummy).


:- listing(ec_current_domain_db).


:- run_tests.




