Z3 реальная арифметика и статистика

Учитывая проблему, которая закодирована с использованием действительных значений Z3, какая из статистическихZ3 /smt2 /st Может быть полезно производить, чтобы определить, есть ли у движка reals «проблемы / много работы»?

В моем случае у меня есть две в основном эквивалентные кодировки задачи, обе с использованием реалов. & Quot; маленький & quot; разница в кодировании, однако, имеет большое значение во время выполнения, а именно, то, что кодирование A занимает 2: 30 минут, а кодирование B - 13 минут. Статистика Z3 показывает, чтоconflicts а такжеquant-instantiations в основном эквивалентны, а другие нет, напримерgrobner, pivots а такжеnonlinear-horner.

Две разные статистические данные доступны каксуть.


EDIT (чтобы обратиться к комментарию Льва):

SMT2-кодирование, генерируемое обеими версиями, составляет ~ 30 тыс. Строк, а утверждения, в которых используются вещественные числа, разбросаны по всему коду. Основное различие заключается в том, что кодирование B использует множество недоопределенных констант реального типа из диапазона0.0 в1.0 которые ограничены неравенствами, например0.0 < r1 < 1.0 или же0.0 < r3 < 0.75 - r1 - r2тогда как при кодировании A многие из этих недостаточно указанных констант были заменены фиксированными действительными значениями из того же диапазона, например,0.1 или же0.75 - 0.01, В обоих кодировках используется нелинейная вещественная арифметика, напримерr1 * (1.0 - r2).

Несколько случайных примеров из двух кодировок доступны в видесуть, Все встречающиеся переменные являются заниженными действительными значениями, как описано выше.


PS: вводит псевдонимы для фиксированных реальных значений, например,

(define-sort $Perms () Real)
(declare-const $Perms.$Full $Perms)
(declare-const $Perms.$None $Perms)
(assert (= $Perms.Zero 0.0))
(assert (= $Perms.Write 1.0))

нанести значительный ущерб производительности?

Ответы на вопрос(1)

Ваш ответ на вопрос