/* ******************************************************
	main 4
******************************************************** */

:- export init/0, install/0.
:- export instrans/1.
:- import assert/1 from assert.
:- import initparser/0, parse_body/3 from parser4.
:- import initkey/0 from keys_basics4.
:- import init_keyappl/0 from keys_appl4.
:- import dynpred/1 from basic_funs4.

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

install :-
	compile(naming4),
	compile(basic_funs4),
	compile(tr_appl4),
	compile(keys_appl4),
	compile(parser4),
	compile(query4),
	compile(upload4),
	compile(keys_basics4),
	compile(tr_basics4).


init :- 
	(
	cd('Rules') -> cd(..)
	;
	unix('mkdir Rules') ),
	reconsult(naming4),
	reconsult(basic_funs4),
	reconsult(tr_appl4),
	reconsult(keys_appl4),
	reconsult(parser4),
	reconsult(query4),
	reconsult(upload4),
	reconsult(keys_basics4),
	reconsult(tr_basics4),
	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)).

