Analyze
The analyze
command lets users assess properties of their program.
Predicate Dependency Graph
A predicate dependency graph for a program Π
has all predicates occurring in Π
as vertices, and an edge from p
to q
if p
depends on q
; that is, if Π
contains a rule of one of the following forms
p :- ..., q, ...
{p} :- ..., q, ...
An edge pq
is positive if q
is neither negated nor doubly negated.
Tightness
A program is tight if its predicate dependency graph has no cycles consisting of positive edges. Users can check their programs for tightness with the command
anthem analyze program.lp --property tightness