Являются ли параметры C ++: логика и: время ожидания устаревшими в нестабильной ветке Z3?

0

Для моего кода приложения я использовал следующие параметры для параметров z3 для моего решателя

   z3::params p(context);
   p.set(":relevancy", static_cast<unsigned>(1));
   p.set(":logic", QF_ABV);
   p.set(":timeout", timeout); 
   solver.set(p);

После обновления до последнего неуспешного Z # я получил исключения C++, в основном заявляющие, что логика и таймаут не являются допустимыми параметрами. Я не нашел эквивалентного варианта для логики, поэтому я предполагаю, что это выводится автоматически. Однако для тайм-аута есть два варианта soft_timout и solver2_timeout. Я знаю, что solver2_timeout используется для инкрементного решателя (т.е. С помощью push/pops), поэтому я изменил код, чтобы использовать следующие параметры.

 z3::params p(context);
 p.set(":relevancy", static_cast<unsigned>(1));
 p.set(":soft_timeout", yices_timeout); 
 solver.set(p)

Правильно ли это изменение? Как soft_timeout отличается от таймаута? Есть ли документация для действительных "z3 :: params" где-то поддерживается?

Теги:
z3

1 ответ

2
Лучший ответ

Документацию по параметрам можно получить, запустив z3 -p. Более подробную информацию о конкретной опции можно получить, выполнив z3 -pp:option_name.

Инфраструктура параметров обнаружила значительные изменения в 4.3.2; теперь есть модули параметров, а soft_timeout находится в модуле smt, т.е. собственное имя - smt.soft_timeout. Логики нет, но мы не можем предположить, что она будет определена автоматически (работает только для некоторых из них). Вместо этого мы теперь можем создавать объекты Solver для определенной логики (в C++ через solver::solver(context & c, char const * logic)) или использовать одну из предопределенных тактик SMT (см., Например, учебник по стратегиям)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню