In der Vergangenheit habe ich Koordinationsmodelle implementiert, bei denen SAT und die reguläre Beschränkungszufriedenheit das zentrale Arbeitspferd in ihren Motoren waren. In diesem Arbeitsbereich möchte ich die Modelle interaktiver gestalten. Der beste Weg, dies zu tun, besteht darin, den Constraint-Solver so zu öffnen, dass er keine Black Box mehr ist.
Daher bin ich daran interessiert, mehr über die Constraint-Zufriedenheit zu erfahren, wenn die Constraints externe Variablen , Prädikate und Funktionen haben , dh die Constraint-Sprache kann Prädikate wie die nur sein können zufrieden, indem ein Agent außerhalb des Lösers konsultiert wird, und dann nur, wenn geschliffen ist. Ein Szenario, in dem dies nützlich ist, ist immer dann, wenn einem externen Entscheidungsprozess entspricht, der nicht in den Constraint Solver integriert werden kann. Solche Constraint-Löser können als offen (da Constraints nicht vollständig bekannt sind) oder interaktiv bezeichnet werden (Da eine Interaktion erforderlich ist, um die Bedingungen zu erfüllen).
Ich würde gerne beides wissen:
- theoretische Forschung in dieser Richtung durchgeführt
- Tools oder Bibliotheken, die Constraint-Löser implementieren, die die Interaktion mit der Außenwelt während des Constraint-Lösungsprozesses ermöglichen.
Beim Lesen Ihrer Frage stimme ich auch darin überein, dass die Modulo-Theorien zur Zufriedenheit eng mit Ihren Bedürfnissen zusammenhängen. Ich würde vorschlagen, das Buch Decision Procedures - An Algorithmic Point of View zu lesen .
quelle
quelle
Ich bin ein bisschen verwirrt über den Begriff interaktiv. Ich melde mich bei den anderen und füge hinzu, dass ein SMT-Löser hilfreich sein könnte. Als Ergänzung zu Walter Bishops Kommentar stehen Folien für das Buch Decision Procedures (Kroening and Strichman) zur Verfügung. John Harrisons gründliche Behandlung im Handbuch der praktischen Logik und des automatisierten Denkens könnte Sie ebenfalls interessieren. Beispielcode ist online verfügbar.
Philipp Ruemmers Prinzessin unterstützt die Arithmetik mit nicht interpretierten Prädikaten, die zu dem passen könnten, was Sie unter offen verstehen. Es ist in Scala geschrieben, verwendet E-Matching für die Handhabung der Quantifizierung und stellt Interpolanten bereit.
quelle
Was ist mit Tools, wenn Sie sich für Prolog als Sprache Ihrer Wahl entscheiden, kann ich einige Implementierungsansätze vorschlagen:
Prolog ist eine Programmiersprache, die für viele Arten von Lösern geeignet ist (und die meisten von ihnen haben ihre Löser für endliche Domänen).
quelle