/* ************************************************************
        module for basic transaction functions
************************************************************* */

:- export checkconj/2.
:- export createpreds/2, ins/1, del/1.
:- export dbase/1.
:- import retract/1, assert/1 from assert.
:- import inserting/1, deleting/1 from basic_funs4.

:- op(450,fx,[ins,del]).

% basic strong insertion
%
ins(X) :- 
	call(X), !, fail
	;
	assert(X).

% basic strong delete
%
del(X) :- 
	retract(X).

% create a list of N unique and uninstantiated args
%
createpreds(0,[]).
createpreds(N,[_|L]) :-
	N>0, M is N-1, createpreds(M,L).

dbase(Pred) :-
        deleting(tr),
        call(Pred),
        inserting(tr).

