Für Z3 habe ich keine solche Liste in der Dokumentation gesehen, aber Sie können es im Quellcode finden, wenn Sie wirklich wissen wollen. Die Liste beginnt um Zeile 65 von check_logic.cpp. Ich analysiert, um die Liste für Sie eine beängstigende awk Einzeiler verwenden und fanden diese ab 20. Mai 2016 (zwischen Z3 4.4.1 und 4.4.2):
"AUFLIA", "AUFLIRA", "AUFNIRA", "LRA", "QF_ABV", "QF_AUFBV", "QF_UFBV", "QF_AUFLIA", "QF_AX", "QF_BV", "QF_IDL", "QF_RDL", "QF_LIA", "QF_LRA", "QF_NIA", "QF_NRA", "QF_UF", "QF_UFIDL", "QF_UFLIA", "QF_UFLRA", "QF_UFNRA", "UFLRA", "UFNIA", "UFBV", "QF_S"
Sie diese vergleichen können die offizielle Liste von SMT-LIB 2 logics.
Wahrscheinlich wichtiger für Sie ist, was die "beste Logik" für Ihre Anwendung ist. Es hört sich so an, als hättest du eine große und variierende Reihe von Problemen, von denen du willst, dass Z3 alle möglichen Taktiken anwendet. In diesem Fall ist es am besten, die Logik nicht näher zu spezifizieren. Das Problem ist, dass es in SMT-LIB v2.0 keine allumfassende Logik gab - die größte Logik einiger Standards war AUFNIRA, aber dies schließt beispielsweise keine Bitvektoren ein. Als Ergebnis führte CVC4 eine Nicht-Standard-ALL_SUPPORTED-Logik ein, und Z3 führt die beste Leistung für einige Klassen von Problemen durch, wenn keine Logik spezifiziert ist. Dieser Mangel des Standards SMT-LIB 2.0 wird in SMT-LIB 2.5 mit einer neuen Logik namens "ALL" angesprochen. Dies wird jedoch weder von Z3 noch von CVC4 unterstützt.
Vielen Dank für Ihre Antwort, aber es beantwortet nicht die Frage, die ich gestellt habe. Es ist mir immer noch unklar, welche Logik z3 unterstützt oder wo diese Informationen zu finden sind. Sie sagen, dass dem Standardmodus keine Logik entspricht, heißt das, dass z3 im Standardmodus mehr kann als die Summe der einzelnen Logiken? – JamesGuthrie