-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Alpha mistakenly proves Hanoi instance to be UNSAT on add_simple_completion branch #239
Comments
Not sure if it's really related, but after merging the latest changes from master, the |
Here are some preliminary results of my investigation into this on the PR #207 branch. Original HanoiTower-simple instance with stratified evaluation enabledCommand:
Result: UNSAT Original HanoiTower-simple instance with stratified evaluation disabledCommand:
Result: Satisfiable (2 Answer Sets) Preprocessed program resulting from stratified evaluation with stratified evaluation enabledThe preprocessed (i.e. stratified part evaluated) program can be obtained via
Preprocessing output attached for reference: HanoiTower_preprocessed.asp.txt Command:
Result: UNSAT Preprocessed program resulting from stratified evaluation with stratified evaluation disabledCommand:
Result: UNSAT Original HanoiTower-simple instance and additional facts from stratified part with stratified evaluation enabled(Note that only the facts resulting from stratified evaluation were added, but all rules kept)
See also: hanoi_stratEvalFacts.asp.txt Command:
Result: UNSAT Original HanoiTower-simple instance and additional facts from stratified part with stratified evaluation disabledCommand:
Result: Satisfiable (2 Answer Sets) ConclusionInterestingly,
The rules that are fully solved by stratified evaluation (and therefore not part of grounder/solver input when running with stratified evaluation enabled) are:
Due to my lacking expertise with the core solving code, I'm not sure how useful these results are.. my "layman's impression" is that evaluating the stratified part (more concisely, the absence of the rules from the stratified part) leads to the solver (incorrectly) learning too restrictive nogoods (or incorrectly processing correct nogoods?) |
Wow, thank you for this detailed investigation! What speaks against the theory that incorrect nogoods are learned is that (if I did not make a mistake) I already added all the learned nogoods as constraints (see above) and this did not make the program unsatisfiable for clingo. |
Incidentally, I stumbled upon a different approach to this issue recently: |
On the
add_simple_completion
branch,HanoiTowerTest#testSimple
fails. The exact reason is unclear to me, but somehow the learnt nogoods are not processed correctly.Notes:
add_simple_completion
branch. Rather, this issue probably pops up because different nogoods are learnt.These are all the nogoods that are learned:
{ +3 +471 +475 -504 } = {+(succ(1, 2)), +(on(1, 5, 6)), +(on(1, 6, 7)), -(on(2, 5, 6))}
(byanalyzeTrailBased
){ +1 +3 -95 +309 +459 +461 +463 } = {+(succ(0, 1)), +(succ(1, 2)), -(move(0, 6)), +(where(2, 5)), +(on(0, 5, 6)), +(on(0, 6, 7)), +(on(0, 7, 8))}
(byanalyzeTrailBased
){ +1 +463 +465 -479 } = {+(succ(0, 1)), +(on(0, 7, 8)), +(on(0, 8, 9)), -(on(1, 7, 8))}
(byanalyzeTrailBased
){ +1 +3 +135 -145 +254 +465 -648 } = {+(succ(0, 1)), +(succ(1, 2)), +(move(2, 8)), -(move(1, 9)), +(where(0, 2)), +(on(0, 8, 9)), -(on(1, 2, 9))}
(byanalyzeTrailBased
){ +19 +34 +49 +64 +79 +94 +109 +124 +139 +235 } = {+(noMove(0, 1)), +(noMove(0, 2)), +(noMove(0, 3)), +(noMove(0, 4)), +(noMove(0, 5)), +(noMove(0, 6)), +(noMove(0, 7)), +(noMove(0, 8)), +(noMove(0, 9)), +(diskMoved(0))}
(byjustifyMbtAndBacktrack
andnoGoodFromJustificationReasons
){ -34 } = {-(noMove(0, 2))}
(byanalyzeTrailBased
)I have converted these nogoods to the following constraints:
When I add these constraints to the program and let clingo solve it, it stays satisfiable, so the constraints themselves might be correct.
When Alpha on
add_simple_completion
solves the program without these constraints, it wrongly proves it to be unsatisfiable (that is the main topic of this issue).When I add the constraints, however, the program suddenly becomes satisfiable for Alpha!!!
The text was updated successfully, but these errors were encountered: