
scasp.pl -- Using s(CASP) from Prolog
While library(scasp/main) is used to build the scasp executable,
this library (library(scasp)) is used to embed or dynamically create
s(CASP) programs in Prolog and query them from Prolog.
?--(:Query)
?+-(:Query)
?-+(:Query)
?++(:Query)
??+-(:Query)
??-+(:Query)
??++(:Query)The following predicates are exported from this file while their implementation is defined in imported modules or non-module files loaded by this module.
scasp_show(:Query, +What)s(CASP) program. Currently
What is one of:
?- scasp_show(Query, code(user(false), constraints(true))).
#=(?A, ?B)
#<>(?A, ?B)
#<(?A, ?B)
#>(?A, ?B)
#>=(?A, ?B)
#=<(?A, ?B)s(CASP) constraints. This implementation is
normally not used and mostly makes the program analysis work.
scasp_justification(:Tree, +Options) is semidet
end_scasp
abducible :Spec
scasp_assert(:Clause) is det
scasp_retract(:Clause) is nondet
scasp_retractall(:Head) is det-(Term), indicating classical negation. Also deals with global
constraints written in any of these formats:
false :- Constraint.:- Constraint.
scasp_dynamic(:Spec) is det:- scasp_dynamic p/1. :- scasp_dynamic p/1 as shared.
#=(?A, ?B)
#<>(?A, ?B)
#<(?A, ?B)
#>(?A, ?B)
#>=(?A, ?B)
#=<(?A, ?B)s(CASP) constraints. This implementation is
normally not used and mostly makes the program analysis work.
#=(?A, ?B)
#<>(?A, ?B)
#<(?A, ?B)
#>(?A, ?B)
#>=(?A, ?B)
#=<(?A, ?B)s(CASP) constraints. This implementation is
normally not used and mostly makes the program analysis work.
scasp_listing(+Unit, +Options)
scasp_assert(:Clause) is det
scasp_retract(:Clause) is nondet
scasp_retractall(:Head) is det-(Term), indicating classical negation. Also deals with global
constraints written in any of these formats:
false :- Constraint.:- Constraint.
scasp_assert(:Clause) is det
scasp_retract(:Clause) is nondet
scasp_retractall(:Head) is det-(Term), indicating classical negation. Also deals with global
constraints written in any of these formats:
false :- Constraint.:- Constraint.
# :Directives(CASP) directives. Same as :- Directive.. Provides
compatibility with sCASP sources as normally found.
not :Query
#=(?A, ?B)
#<>(?A, ?B)
#<(?A, ?B)
#>(?A, ?B)
#>=(?A, ?B)
#=<(?A, ?B)s(CASP) constraints. This implementation is
normally not used and mostly makes the program analysis work.
scasp_model(:Model) is semidet
scasp_model(:Model, +Options) is semidet
begin_scasp(+Unit)
begin_scasp(+Unit, +Exports)Otherwise the read clauses are asserted verbatim. Directives are terms #(Directive). Prolog directives (:- Directive) are interpreted as sCASP global constraints. The matching end_scasp/0 compiles the sCASP program and creates wrappers in the enclosing module that call the sCASP solver.
The sCASP code must be closed using end_scasp/0. Both begin_scasp/1,2 and end_scasp/0 must be used as directives.
scasp_abolish(:PredicateIndicator) is det
scasp(:Query, +Options) is nondets(CASP) semantics. This performs the following
steps:
s(CASP) representation in a temporary
modules(CASP) solverOptions are passed to scasp_compile/2. Other options processed:
s(CASP) model, a list of model terms.
See scasp_model/1.s(CASP) justification tree. See
scasp_justification/2 for details.false, do not include source origin terms into the
final tree.
#=(?A, ?B)
#<>(?A, ?B)
#<(?A, ?B)
#>(?A, ?B)
#>=(?A, ?B)
#=<(?A, ?B)s(CASP) constraints. This implementation is
normally not used and mostly makes the program analysis work.
#=(?A, ?B)
#<>(?A, ?B)
#<(?A, ?B)
#>(?A, ?B)
#>=(?A, ?B)
#=<(?A, ?B)s(CASP) constraints. This implementation is
normally not used and mostly makes the program analysis work.
- :Query
scasp_stack(-Stack) is det
begin_scasp(+Unit)
begin_scasp(+Unit, +Exports)Otherwise the read clauses are asserted verbatim. Directives are terms #(Directive). Prolog directives (:- Directive) are interpreted as sCASP global constraints. The matching end_scasp/0 compiles the sCASP program and creates wrappers in the enclosing module that call the sCASP solver.
The sCASP code must be closed using end_scasp/0. Both begin_scasp/1,2 and end_scasp/0 must be used as directives.
The following predicates are exported, but not or incorrectly documented.
??(Arg1)
?(Arg1)
#(Arg1, Arg2)
abducible(Arg1, Arg2)
show Arg1
scasp_assert(Arg1, Arg2)
pred Arg1