
:- set(r,10000)?
:- set(h,10000)?

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


fast_forward(Loop_no, Old_lab_results_file, Old_hypotheses_file):-
	create_lab_results(Loop_no, Old_lab_results_file),
	create_examples(Loop_no, Old_lab_results_file),
	create_hypotheses(Loop_no, Old_hypotheses_file).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

create_lab_results(Loop_no, Old_lab_results_file):-
	consult('static_know.pl'),
	consult(Old_lab_results_file),
	tell('lab_results.pl'),
	example(X, E, Class),
	X =< Loop_no,
	write('example('),
	write(X),	
	write(', '),
	write(E),	
	write(', '),
	write(Class),
	write(').'),
	nl,
	cost(E, Cost),
	asserta(prev_cost(E, Cost)),
	fail.

create_lab_results(_,_):- 
	told,
	bagof(X, prev_cost(E, X), L),
 write(L),
	sum_elements_of_list(L, Culmulative_cost),
	tell('/tmp/cost_of_current_trial'),
	write(Culmulative_cost),
	told.

% The culmulative cost of the trials upto and including loop
% number specified is written to the file /tmp/cost_of_current_trial.

sum_elements_of_list([], 0).
sum_elements_of_list([H | T], S):-
	sum_elements_of_list(T, S_tail),
	S is H + S_tail.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

create_examples(Loop_no, Old_lab_results_file):-
	consult(Old_lab_results_file),
	tell('examples.pl'),
	example(X, E, Class),
	X =< Loop_no,
	class(Class),
	write(E),
	write('.'),
	nl,
	fail.

create_examples(_,_):- told.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

class(positive).

class(negative):-
	write(':- ').

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

create_hypotheses(Loop_no, Old_hypotheses_file):-
	consult(Old_hypotheses_file),
	tell('hypotheses.pl'),
	hypoth(X, [Head,Body], Compression),
	X < Loop_no,                        % NB < rather than =<
	write('hypoth('),
	write(X),	
	write(', '),
	write('['),
	write(Head),
	write(', ('),
	write(Body),
	write(')]'),
	write(', '),
	write(Compression),
	write(').'),
	nl,
	fail.

create_hypotheses(_,_):- told.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

