1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2%%                                                                           %%
    3%%      Version:  1.00   Date:  7/11/95   File: builtin.pl                   %%
    4%% Last Version:                          File:                              %%
    5%% Changes:                                                                  %%
    6%%  7/11/95 Created                                                          %%
    7%%                                                                           %%
    8%% Purpose:                                                                  %%
    9%%                                                                           %%
   10%% Author:  Torsten Schaub                                                   %%
   11%%                                                                           %%
   12%% Usage:   prolog builtin.pl                                                %%
   13%%                                                                           %%
   14%%                                                                           %%
   15%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16
   17%%% List of builtin predicates that can appear in clause bodies.
   18%%% No extra arguments are added for ancestor goals or depth-first
   19%%% iterative-deepening search.  Also, if a clause body is
   20%%% composed entirely of builtin goals, the head is not saved
   21%%% as an ancestor for use in reduction or pruning.
   22%%% This list can be added to as required.
   23
   24builtin(T) :-
   25	nonvar(T),
   26        functor(T,F,N),
   27        builtin(F,N).
   28
   29builtin(!,0).
   30builtin(true,0).
   31builtin(fail,0).
   32builtin(succeed,0).
   33builtin(trace,0).
   34builtin(atom,1).
   35builtin(integer,1).
   36builtin(number,1).
   37builtin(atomic,1).
   38builtin(constant,1).
   39builtin(functor,3).
   40builtin(arg,3).
   41builtin(var,1).
   42builtin(nonvar,1).
   43builtin(call,1).
   44builtin(=,2).
   45builtin(\=,2).
   46builtin(==,2).
   47builtin(\==,2).
   48builtin(>,2).
   49builtin(<,2).
   50builtin(>=,2).
   51builtin(=<,2).
   52builtin(is,2).
   53builtin(display,1).
   54builtin(write,1).
   55builtin(nl,0).
   56builtin(infer_by,_).
   57builtin(write_proved,_).
   58builtin(search,_).
   59builtin(search_cost,_).
   60builtin(unify,_).
   61builtin(identical_member,_).
   62builtin(unifiable_member,_).
   63builtin(inc_ncalls,0).
   64% --- compatibility predicates
   65builtin(justification,_).
   66builtin(compatible,_).
   67builtin(model_initialization,_).
   68% --- variable handling predicates
   69builtin(herbrand,1).
   70% hooks handling predicates
   71builtin(hook1,1).
   72builtin(hook2,1).
   73% --- lemma handling predicates
   74builtin(lemmatize,_).
   75builtin(dynamic_lemma,_).
   76builtin(static_lemma,_).
   77% --- misc
   78builtin(\+,1).
   79
   80% --- special purpose predicates
   81builtin(P,_) :-
   82	builtin_predicate(P).
   83builtin_predicate(P) :-
   84	name(P,L),
   85        (name('_pl',L1);
   86	 name('_db',L1)
   87        ),
   88        append(_,L1,L)