Current answer set solvers work on variable-free programs. Hence, a grounder is needed that, given an input program with first-order variables, computes an equivalent ground (variable-free) program. gringo is such a grounder. Its output can be processed further with clasp, claspfolio, or clingcon.

clingo combines both gringo and clasp into a monolithic system. This way it offers more control over the grounding and solving process than gringo and clasp can offer individually - e.g., incremental grounding and solving.

Both clingo and gringo are released together in one package.

Attention! The languages of clingo 3 and 4 are not fully compatible because clingo 4 adheres to the recent ASP language standard. For processing legacy encodings, we recommend downloading the latest version of clingo 3 in addition to clingo 4. The language did not change in version 5 but there were many API changes.

Download

Resources

Packages

The easiest way to obtain Python enabled clingo packages is using Anaconda. Packages are available in the conda-forge channel. First install either Anaconda or Miniconda and then run

conda create -n potassco -c conda-forge clingo
conda activate potassco

Further packages, including development packages, are available from the potassco channel.

We also provide pip packages for Python. Packages can be installed from pypi.org:

python3 -m pip install --user --upgrade clingo

Development packages can be installed from test.pypi.org.

Furthermore, clingo can be installed using spack, a package manager targeting HPC environments. Interestingly, spack uses clingo internally to compute which packages to install:

Packages for clingo are available for some Linux distributions:

Packages for clingo are available for some BSD-based distributions:

For Mac OS X, clingo packages are available in

Related Projects

  • The clorm Python library provides an object relational mapper-like interface to clingo. It allows facts to be asserted and extracted in an intuitive and easy to use way.
  • The clingo-rs project provides rust bindings to the clingo library.
  • The clingo-haskell project provides Haskell bindings to the clingo library.
  • There are also rudimentary prolog bindings to clingo.
  • There is a project offering rudimentary JavaScript support to run clingo in the browser.
  • There are java bindings to clingo.
  • Syntax highlighting is available for vim and emacs.

Citing