*
%--------------------------------------------------------------------------- % Closed World Assumption on the Herbrand base create_universe(Universe) :- setof(Term, term_of_ext_def(Term), Universe). term_of_ext_def(Term) :- foil_predicates(PredSpecs), member(Pred/Arity, PredSpecs), functor(Goal, Pred, Arity), call(Goal), between(1, Arity, ArgPos), arg(ArgPos, Goal, Term). create_negatives([P|Ps], Negatives) :- functor(P, F, N), functor(Template, F, N), create_universe(Universe), setof(Template, ( arguments_are_members(Template, N, Universe), \+ member(Template, [P|Ps]) ), Negatives). arguments_are_members(Term, N, Universe) :- ( N > 0 -> arg(N, Term, Arg), member(Arg, Universe), N1 is N-1, arguments_are_members(Term, N1, Universe) ; true ).
*