/* FNDB : Temporary stuff for doing function stuff on dbentry

						Updated: 9 April 81
*/


fn_dbentry(X)
     :-	groundtest(X,ground),
	!,
	trace('>-> %p\n',[X],4),
	dbentry(X).

fn_dbentry(X)
     :-	functor(X,Pred,N),
	argstruct(Pred,N,Types,Fmap),
	X =.. [_|Args],
	maksolid(Fmap,Args,Types),
	trace('>*> %p\n',[X],4),
	dbentry(X),
	!.

fn_dbentry(X)
     :-	error('Unground database entry: %p\n',[X],trace),
	continue.



			% Apply function properties

maksolid([],[],[]).

maksolid([F|Frest],[A|Arest],[T|Trest])
     :-	maksl(F,A,T),
	maksolid(Frest,Arest,Trest).


maksl(arg,A,_) :- nonvar(A).

maksl(val,A,T) :- cgensym(T,A).



