Automatisierte Argumentation mit echten Zahlen
-
29-09-2020 - |
Frage
Ich habe eine große Anzahl von Äquivaliken, die aussehen:
$ (A \ LEQ 0.54 \ Wedge B \ GEQ 0.12) \ Vee (C \ GT 0,98) $ $ \ Leftrightarrow $ $ (x \ leq 0.25) \ Vee (x \ gt 0,91 \ wedge y \ geq 0,01) $
Dies ist nur ein Beispiel. Im Allgemeinen könnten Formeln auf der linken oder rechten Seite der Äquivalenz alles sein, was die Form einer disjunktiven Normalform (DNF-Klausel (DNF) anzieht, die Zahlen könnten eine echte Anzahl mit fester Präzision sein, und die Ungleichungszeichen könnten
Was ist wichtig ist, dass die möglichen Variablen auf der linken Seite aller Formeln (hier $ \ {a, b, c \} $ ) einen Satz bilden Das unterscheidet sich von den möglichen Variablen auf der rechten Seite aller Formeln (hier $ \ {x, y, z \} $ ). Auf beiden Seiten könnte es jede feste Anzahl von Variablen geben: Es muss nicht 3 Variablen sein, und muss auf beiden Seiten keine gleiche Zahl sein.
Ich habe auch einige Auswirkungen des Formulars:
$ (A \ LEQ 0.32 \ Wedge B \ GEQ 0.62) $ $ \ Rightarrow $ < Span-Klasse="Math-Container"> $ (c \ gt 0,00) $
Hier sind sowohl die linke als auch die rechte Seite nur Konjunkte von Ungleichungen, aber wichtig ist, dass der Satz von Variablen auf sowohl linke als auch rechts, dh $ \ {a, b, c \} $ hier ist das gleiche wie der Satz von Variablen auf nur die linke Seite der vorherigen Art der Formel (dh der Äquivalenzen).
Meine Frage ist: Welche Art von automatisierten Gründen muss ich die logischen Folgen eines Satzes solcher Formeln finden? Ich suche nur nach einer konkreten Identifizierung der allgemeinen Probleme, zu denen dies gehört, und alle außerhalb der BOX-Bodenträger, die möglicherweise verfügbar sind. Vielleicht ist das ein SMT-Problem?
Lösung
Ja, Sie könnten dies mit einem SMT-Solver lösen, der lineare echte Arithmetik unterstützt. SMT unterstützt jedoch allgemeinere Ungleichheiten, in denen Sie lineare Summen von Variablen haben können (z. B. $ 2A + 3X \ LE 5.7 $ ) anstelle von einfachen Vergleiche zwischen einer einzelnen Variablen und einem Konstant (z. B. $ A \ LE 1.6 $ ), so dass es möglicherweise leistungsfähiger ist als Sie brauchen, also, wenn Sie keine linearen Ungleichheiten mit Summen haben, dann Ich stimme mit Pseudonym zu, dass der beste Ansatz sein kann, um einen Sat-Solver zu verwenden.
Ich würde eine etwas andere Kodierung angeln, um SAT zu saßen. Anstelle einer Ein-Hot-Codierung bedeutet $ x_i $ , dass $ c_ {i-1} \ le x \ le c_i $ , ich würde eine etwas andere Kodierung vorschlagen: $ x_i $ bedeutet $ x \ le c_i $ < / span>. Somit anstelle der Kodierung an einen
Andere Tipps
In Ihrem Fall kann die einfachste Lösung SAT sein.
Ihre erste Klausel enthält
Erstellen Sie eine boolesche Variable für jedes dieser Bereiche und konvertieren Sie die Klausel, um sie zu verwenden. So, beispielsweise $ x \ le 0.25 $ in $ X_1 \ Vee X_2 $ , und
Mehr Klauseln bedeuten mehr Konstanten und somit mehr Interessenbereiche für eine primitive Variable.