
program.pl -- Input program accessAllow access to input program rules and query by asserting them and exporting the resulting dynamic predicates.
 defined_rule(+Name:atom, +FullHead:compound, -Body:list, -Origin:compound) is nondet
 defined_query(-Goals:list, -SolCount:int) is det
 defined_predicates(-Predicates:list) is det
 defined_nmr_check(+Subchecks:list) is det
 program(?ProgramStruct:compound, ?Rules:list, ?Directives:list, ?Query:compound) is det[private]
 query(?QueryStruct:compound, ?Query:list, ?NMR_Check:list, ?SolutionCount:int) is det[private]
 reserved_prefix(+Prefix:ground) is deto_) is appended
to predicates and compound terms that either begin with an
underscore (legal in ASP but not Prolog) or with a reserved prefix.
It will be removed last before printing, and at most one copy will
be removed, ensuring that user-defined predicates starting with a
reserved prefix won't be processed the same as internally created
ones.
 has_prefix(+Functor:atom, -Prefix:atom) is semidet
 replace_prefix(+FunctorIn, +OldPrefix, +NewPrefix, -Functor)
 non_printable(+Name) is semidet
 assert_program(+Statements:list) is detdefined_predicates(List) with a list of predicate identifiers,
atoms encoded as <name>_<arity>, e.g., parent_2 for parent/2.defined_rule(Name, Head, Body, Origin) where Name is the functor name
of Head and Body represents the conjunction of the body as a
list, and Origin denotes the source of the rule's definition.defined_query(List, Count)
List is like Body above, expressing the query and Count is the
number of answer sets to generate by default (based on the
`Count { Query }.` syntax.defined_nmr_check(List)
When defined, a list of one atom containing the rule name for the
NMR check.
 format_program(+Statements:list, -Program:compound) is det[private]
 sort_by_type(+Statements:list, -Rules:list, -Directives:list, +ComputeIn:compound, -ComputeOut:compound) is det[private]
 get_predicates(+Program:compound, -Predicates:list) is det[private]_false_0 should be included
explictly, in case a hard-coded query overrode the default one. We
add _false_0 as head of the query for that purpose. This both
gets the query in the shape of a rule and ensures _false_0 is
included.
 handle_classical_negation(+Predicate:atom) is det[private]:- -x, x.
 assert_program_struct(+Program:compound) is det[private]
 assert_rule(+Rule:compound) is det
 assert_directive(+Directive) is det[private]
 assert_query(+Query:compound) is det[private]
 assert_nmr_check(+NMR:list) is det
 assert_predicates(+Predicates:list) is det[private]
 destroy_programThe following predicates are exported, but not or incorrectly documented.
 defined_directive(Arg1)