Open kherud opened 10 months ago
@BenKaufmann do you know what is happening here? Right now, I am not sure where clasp is taking the domain atoms from in this scenario.
@rkaminsk For clasp, the "domain atoms" considered by "domRec" are the atoms that have an associated heuristic directive applying on the top-level. The mode was mostly intended to be used with a fixed set of atoms to minimize.
In the first example, the relevant atoms are a(1..3)
because the heuristic directives are unconditionally true.
In the second example, there are no "domain atoms" because all heuristic directives depend on the external atom e
, which is assumed to be false
. Of course, one could argue that if e
is assumed to be true
, the relevant atoms again should be a(1..3)
(i.e. heuristic is true wrt root- instead of top-level). However, this is currently not implemented.
I'll postpone this one for the time being. Let's hope we'll find some time to improve the domain recording options in the future.
Domain heuristics with external atoms are ignored when enumerating answer sets with solution recording. I'm looking at example 10.6 of the potassco guide (see also the Python program attached):
When called with
--heuristic=Domain --enum-mode=domRec 0
, the two answersa(1)
anda(2) a(3)
are correctly output.However, if the last line is replaced with
the warning
domRec ignored: No domain atoms found.
is printed and answers are enumerated without solution recording. This is also the case ife
was set totrue
in advance.Is this intended?
domrec.zip