% Hooks
:- multifile probabilistic_method/1.
:- dynamic probabilistic_method/1.

% pfd_hookable_predicate_head/1 
% required in preprocess.pl to skip the translation of terms
% as pfd clauses. One of them and a dynamic definition in this file
% suffice to allow hookable definitions (which btw should only 
% call prolog, as oppose to pfd, code - this should be tested).
pfd_hookable_predicate_head( probabilistic_method(_Any) ).

% Internal

% used in constraint_to_store, with labelling.
:- dynamic probability_sum/2.
:- dynamic probability_sum_counter/1.
:- asserta( (probability_sum_counter(1)) ).
% populated by preprocessor, used by demo.
% one rule is created for every user clause.

:- multifile pfd_rule/2.
:- dynamic pfd_rule/2.

:- dynamic pfd_predicate/1.
% each pfd predicate registers its free head (ie all args are free vars).

% :- assertz( pfd_message( 'Built-ins : (h)elp, restart, listing, exit, halt. ' ) ).

:- multifile pfd_message/1.
:- dynamic pfd_message/1.

pfd_message( 'Built-ins : (h)elp, restart, listing, exit, halt. ' ).
