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.