Galliwasp: Goal-Directed Answer Set Programming
Galliwasp is an answer set programming system utilizing a goal-directed execution method. The current version is Galliwasp 1.1.0, released on February 16, 2013.
- Galliwasp 1.1.0: February 16, 2013
- IMPORTANT NOTE: The changes in this release constitute a significant improvement over the previous version in most respects. However, due to changes in the program representation, some programs which previously terminated quickly may now take an unreasonably long time. Some instances of the Schur numbers problem are known to be affected. This isn't a bug. Many ASP programs are written in a manner unsuited for goal-directed execution. While galliwasp is designed to accommodate these programs whenever possible, even minor changes in goal and clause ordering can lead to extreme changes in runtime performance.
- Compiler: Added common factor elimination. Goals present in multiple clauses with the same head will be factored out, reducing unnecessary repetition during execution. Note that this can cause partial answer sets to be unexpectedly small (albeit still correct) if fact priming is disabled by the interpreter.
- Compiler: Expanded simplification of program using known facts.
- Compiler: Added support for extended ASP syntax (weight and constraint literals, disjunctive heads, choice rules, etc.).
- Compiler: Added experimental support for abduction. Requires success on positive loops to be enabled in the interpreter (run the interpreter with the '-p' switch).
- Compiler: Added initial support for automatic source code documentation using pldoc.
- Interpreter: Added assumption of goals when a clause is selected. Goals called by a clause are added to the CHS with a special flag, allowing them to be used for failure but not for success. That is, if 'not p' is assumed, a call to 'p' will fail, but another call to 'not p' will not coinductively succeed. This both ensures that the clause does not directly violate the CHS and allows immediate failure and backtracking if later clauses will contradict assumed goals. Goal assumption can be disabled by running the interpreter with the -nq switch.
- Interpreter: Various performance improvements.
- NMR call indexing moved from interpreter to compiler.
- Significant improvements to source code readability and modularity.
- Default executable names have been shortened. The compiler is now 'gwc' (previously 'gwaspc') and the interpreter is now 'gw' (previously 'gwasp').
- Galliwasp 1.0.4: June 22, 2012
- Added detailed error messages for scanning and parsing. Debugging invalid programs should now be much easier.
- Galliwasp 1.0.3: June 1, 2012
- Major improvements to compiler speed for programs with a lot of headless rules.
- Galliwasp 1.0.2: May 27, 2012
- Fixed a bug where literals could succeed by calling themselves with no intervening negation, if backtracking occurred after they had previously succeeded.
- Fixed a bug where a valid recursive call could fail when it should have succeeded.
- Galliwasp 1.0.1: May 7, 2012
- Fixed a bug which allowed all clauses of an NMR sub-check to be disabled without failure occuring, which could result in invalid answer sets being returned.
- Galliwasp 1.0.0: March 23, 2012
- Initial release.
To build and run Galliwasp's compiler, SWI-Prolog must be installed. Additionally, the Lparse grounder is recommended for preparing input programs for the compiler. These programs are not included in the Galliwasp distribution, and may be obtained from their respective sites. For additional requirements, see the file README.TXT included in the Galliwasp distribution.
While we strive to work out any problems prior to release, Galliwasp is under continuous development, so bugs may turn up from time to time. If you encounter cases where Galliwasp crashes or returns an incorrect answer set, please let us know by sending an email to firstname.lastname@example.org with "Galliwasp Bug Report" in the subject. To help us fix the problem as quickly as possible, please include any error messages encountered, and in the case of incorrect answer sets being returned, the problem or instance used, the output received, and the output expected.
- Kyle Marple, Ajay Bansal, Richard Min, and Gopal Gupta. 2012. Goal-Directed Execution of Answer Set Programs. In Proceedings of the 14th symposium on Principles and Practice of Declarative Programming (PPDP '12). ACM, New York, NY, USA, 35-44.
- Kyle Marple and Gopal Gupta. 2012. Galliwasp: A Goal-Directed Answer Set Solver. In Proceedings of the 22nd international symposium on Logic-based Program Synthesis and Transformation (LOPSTR '12). Katholieke Universiteit Leuven, Leuven, Belgium, 85-99.