View source with formatted comments or as raw
    1:- module(scasp_predicates,
    2          [ table_predicate/1,          % ?Goal
    3            shown_predicate/1,
    4            prolog_builtin/1,           % ?Goal
    5            clp_builtin/1,              % ?Goal
    6            clp_interval/1,             % ?Goal
    7            user_predicate/1,           % ?Goal
    8            scasp_compiled/1            % ?Head
    9          ]).   10:- use_module(ops).   11:- meta_predicate
   12    user_predicate(:),
   13    shown_predicate(:),
   14    table_predicate(:).   15
   16/** <module> Basic information about sCASP predicates
   17*/
   18
   19%!  user_predicate(:Goal)
   20%
   21%   Success if Goal is a user predicate
   22
   23user_predicate(_:builtin(_)) => fail.
   24user_predicate(_:not(_ is _)) => fail.
   25user_predicate(_:not(true)) => fail.
   26user_predicate(_:not(fail)) => fail.
   27user_predicate(_:not(_)) => true.
   28user_predicate(M:Goal) =>
   29    functor(Goal, Name, Arity),
   30    M:pr_user_predicate(Name/Arity), !.
   31
   32%!  table_predicate(:Goal)
   33%
   34%   Success if Goal is defined as a tabled predicate with  the directive
   35%   `:- table pred/n.`
   36
   37table_predicate(M:Goal) =>
   38    functor(Goal, Name, Arity),
   39    M:pr_table_predicate(Name/Arity).
   40
   41shown_predicate(M:not(Goal)) :-
   42    !,
   43    user_predicate(M:Goal).
   44shown_predicate(Goal) :-
   45    user_predicate(Goal).
   46
   47
   48%!  prolog_builtin(?Goal)
   49%
   50%   Success  if  Goal  is  a  builtin  prolog  predicate  (the  compiler
   51%   introduced its dual)
   52
   53prolog_builtin(true).
   54prolog_builtin(fail).
   55prolog_builtin(false).
   56prolog_builtin(_ = _).
   57prolog_builtin(_ \= _).
   58prolog_builtin(_ < _).
   59prolog_builtin(_ > _).
   60prolog_builtin(_ >= _).
   61prolog_builtin(_ =< _).
   62
   63%!  clp_builtin(?Goal)
   64%
   65%   Success if Goal is a builtin constraint predicate
   66
   67clp_builtin(_ #= _).
   68clp_builtin(_ #<> _).
   69clp_builtin(_ #< _).
   70clp_builtin(_ #> _).
   71clp_builtin(_ #>= _).
   72clp_builtin(_ #=< _).
   73
   74%!  clp_interval(?Goal)
   75%
   76%   Success  if  Goal  is  a  builtin  constraint  predicate  to extract
   77%   interval limits
   78
   79clp_interval(inf(_Expr, _Inf)).
   80clp_interval(sup(_Expr, _Inf)).
   81
   82
   83%!  scasp_compiled(?Head)
   84%
   85%   True when Head is part of the transformed representation.
   86
   87scasp_compiled(pr_rule(_Head, _Body, _Origin)).
   88scasp_compiled(pr_query(_Query)).
   89scasp_compiled(pr_user_predicate(_Pred)).
   90scasp_compiled(pr_table_predicate(_Pred)).
   91scasp_compiled(pr_show_predicate(_Pred)).
   92scasp_compiled(pr_pred_predicate(_Atom, _Children, _Cond, _Human))