Skip to content

alpha-asp/Alpha

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b032e29 · Apr 15, 2019
May 9, 2018
Mar 31, 2017
Mar 26, 2019
Mar 13, 2019
Mar 27, 2019
Apr 15, 2019
Mar 29, 2019
Oct 18, 2017
Oct 16, 2017
Mar 29, 2019
Dec 21, 2016
Oct 16, 2017
Dec 21, 2016
Oct 4, 2016
Apr 10, 2019
Mar 27, 2019
Mar 29, 2019
Mar 27, 2019
Mar 27, 2019

Repository files navigation

Alpha

Latest DOI Travis-CI Build Status AppVeyor Build Status codecov Code Quality Status

Alpha is an Answer Set Programming (ASP) system: It reads a logic program (a set of logical rules) and computes the corresponding answer sets. ASP falls into the category of declarative and logic programming. Its applications are solving combinatorial problems, but it also is a good tool for reasoning in the context of knowledge-representation and databases.

Alpha is the successor of OMiGA and currently in development. In contrast to many other ASP systems, Alpha implements a lazy-grounding approach in hopes of overcoming memory constraints when working with large input.

Alpha is not the fastest system available, since its goal is not to be the fastest system with current technology but to explore new technologies rapidly. Those technologies, like lazy-grounding, allow Alpha to succeed where other ASP systems fail completely. The project deliberately chooses to trade shorter execution times (which would be possible by using unmanaged runtimes, e.g. C/C++, and low-level optimization) for a more straight forward system design and possibilities to interface with the ecosystem built around the Java Virtual Machine.

Getting Started

Download a current version of alpha.jar from Releases.

Running Alpha is as simple as running any other JAR:

$ java -jar alpha.jar

Example Usage

Solve 3-colorability for some benchmarking instance and filter for color predicates:

$ java -jar alpha.jar -i benchmarks/omiga/omiga-testcases/3col/3col-10-18.txt -fblue -fred -fgreen

Note that in this example the path to the input file is relative to the root of this repository. If you have not checked out the repository, you can just download the example file from GitHub.

Building

Alpha uses the Gradle build automation system. Executing

$ ./gradlew build

will automatically fetch all dependencies (declared in build.gradle) and compile the project.

Artifacts generated will be placed in build/. Most notably you'll find files ready for distribution at build/distributions/. They contain archives which in turn contain a bin/ directory with scripts to run Alpha on Linux and Windows.

If you want to generate a JAR file to be run standalone, execute

$ ./gradlew bundledJar

and pick up build/libs/alpha-bundled.jar.

Suggested Reading

Research Papers on Alpha

Peer-reviewed publications part of journals, conferences and workshops:

Others (e.g. non-peer-reviewed publications, less formal articles, newsletters):

Similar Work

  • Smodels, a solver usually used in conjunction with lparse.
  • DLV
  • ASPeRiX, a solver that implements grounding-on-the-fly.