Ich möchte Gleichungen/Ungleichungen in Z3Py
automatisch mit einem Algorithmus erzeugen, den ich entwickle. Um dies zu erreichen, muss ich Operatoren wie ==
, +
, *
als Funktionen verwenden.Z3Py: Erhalten der Funktion, die jedem Operator entspricht, z. '*', '==', '-'
Zum Beispiel in Sympy
, kann ich zwei Symbole hinzufügen, wie
import sympy as sp
sp.Add(x, y)
, die in x + y
ergibt folgt.
Kann ich dasselbe in Z3Py
tun?
Für Berechnungsgeschwindigkeit glaube ich, dass es keine gute Idee ist, von oder in eine Zeichenfolgendarstellung des Ausdrucks zu konvertieren.
Vielleicht sehen Sie sich das ['operator'-Modul] (https://docs.python.org/2/library/operator.html#operator.add) an. –
Als ich in der Vergangenheit mit z3py gespielt hatte, war es hilfreich für mich, einfach den [Quellcode] (https://github.com/Z3Prover/z3/tree/master/src/api/python) zu lesen, um zu sehen, was war dort. Es ist nicht sehr gut dokumentiert, aber die tatsächliche Python-Wrapper-Quelle ist relativ klein im Vergleich zu Z3 selbst, die in C++ geschrieben ist. – asmeurer