Clingo ist das zentrale Werkzeug des Potassco-Projekts (Potsdam Answer Set Solving Collection) der Universität Potsdam. Es vereint den Grounder gringo und den Solver clasp in einem monolithischen Programm und ist damit der Standard-Solver für Answer Set Programming (ASP). Clingo ist Open Source (MIT-Lizenz) und als C++-Bibliothek sowie mit Python- und Lua-API verfügbar.

Aufruf und Optionen

clingo programm.lp [weitere.lp ...] [Optionen]

Häufig genutzte Optionen:

  • -n 0 — alle Stable Models aufzählen (ohne Angabe nur eines)
  • --stats — Statistiken zu Grounding und Solving
  • --opt-mode=optN — Optimierung mit Enumeration aller optimalen Modelle
  • --time-limit=Sekunden — Zeitlimit für die Suche
  • --enum-mode=brave|careful — Aufzählungsmodus
  • -c Konstante=Wert — Konstanten als Kommandozeilenparameter setzen

Inkrementelles Lösen

Dank der monolithischen Architektur unterstützt clingo incrementales Grounding und Solving — für zeitabhängige Probleme wie Planung über mehrere Zeitschritte wird das Programm mit #external-Atomdeklarationen und dem --incremental-Modus schrittweise erweitert, ohne von vorn zu beginnen.

Embedding

Über die Python-API lässt sich clingo direkt in eigene Programme einbetten:

from clingo import Control
ctl = Control(["-n", "0"])
ctl.add("base", [], "a :- not b. b :- not a.")
ctl.ground([("base", [])])
ctl.solve(on_model=print)

Verwandte Grundlagen: Answer-Set-Programming-Befehle, Picat-Befehle, Prolog-Befehle.