Wie funktioniert das inkrementelle Lösen in Z3?

Ich habe eine Frage dazu, wie Z3 Probleme schrittweise löst. Nachdem ich hier einige Antworten gelesen hatte, fand ich Folgendes:

Es gibt zwei Möglichkeiten, Z3 zum inkrementellen Lösen zu verwenden: Eine ist der Push / Pop-Modus (Stapelmodus), die andere verwendet Annahmen.Weiche / Harte Bedingungen in Z3.Im Stapelmodus vergisst z3 alle gelernten Lemmas inglobal (habe ich recht?) Umfang auch nach einem lokalen "Pop"Effizienz der Einschränkungsverstärkung in SMT-SolvernIm Annahmenmodus (ich kenne den Namen nicht, das ist der Name, der mir in den Sinn kommt) vereinfacht z3 einige Formeln nicht, z. Werteverbreitung.z3 Verhaltensänderung auf Anfrage für unsat core

Ich habe einige Vergleiche angestellt (Sie können gerne nach den Formeln fragen, sie sind einfach zu groß, um sie auf den Kopf zu stellen), aber hier sind meine Beobachtungen: Bei einigen Formeln, einschließlich Quantifizierern, ist der Annahmemodus schneller. Bei einigen Formeln mit vielen booleschen Variablen (Annahmevariablen) ist der Stapelmodus schneller als der Annahmemodus.

Sind sie für bestimmte Zwecke implementiert? Wie funktioniert das inkrementelle Lösen in Z3?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage