/* ******************************************************
	main 3
******************************************************** */

:- export init/0.
:- export install/0.
:- export instrans/1.
:- import assert/1 from assert.
:- import initparser/0, parse_body/3 from parser3.
:- import initkey/0 from keys_basics3.
:- import init_keyappl/0 from keys_appl3.
:- import dynpred/1 from basic_funs3.

:- op(1150,fx,[instrans]).

install :-
	compile(naming3),
	compile(basic_funs3),
	compile(tr_basics3),
%	compile(tr_appl3),
	compile(parser3),
	compile(query3),
	compile(upload3),
	compile(keys_appl3),
	compile(keys_basics3).

init :- 
	(
	cd('Rules') -> cd(..)
	;
	unix('mkdir Rules') ),
	reconsult(naming3),
	reconsult(basic_funs3),
	reconsult(tr_basics3),
%	reconsult(tr_appl3),
	reconsult(keys_basics3),
	reconsult(parser3),
	reconsult(query3),
	reconsult(upload3),
	reconsult(keys_appl3),
	initparser, 
	initkey, init_keyappl,
	dynpred(tracking), dynpred(tr),
	dynpred(track([])).

/* ***************************************************************** 
	Insert clause to transaction base
 ***************************************************************** */

instrans('<-'(Lhs,Rhs)) :-
	parse_body(Rhs,Passed,da),
	assert((Lhs :- (tr, Passed))).


instrans( Pred ) :-
	not(Pred = '<-'(_,_)),
	assert((Pred :- tr)).


