мы используем Z3 для проверки ограниченной модели. Для этого приведем целую кучу выражений следующего вида:
state_A_1 && !state_B_1 && sometrigger => !state_A_2 & state_B_2
Другими словами, мы кодируем течение времени (шаги), предоставляя отдельное выражение для каждого временного шага. Очевидно, это приводит к нескольким тысячам выражений.
Хотя время, необходимое Z3 для их решения, является приемлемым (для сложности имеющихся у нас конечных автоматов), для построения всех этих выражений через Z3 JNI Java API требуется довольно много времени (несколько секунд).
Итак, вот мой вопрос: есть ли более простой способ сказать Z3 создать все эти развернутые во времени выражения через какой-то специализированный API?