Я экспериментирую с тактикой исключения квантора для формул перечисляемых типов. Хотелось бы узнать, есть ли способы увеличить производительность, как-то регулируя решателя. После краткого взгляда на исходный код я пришел к выводу, что, по-видимому, существуют разные стратегии исключения квантификатора (например, qe_lite.cpp), но они не отображаются в качестве параметров тактики qe. В моем случае формулы имеют простую пропозициональную структуру, иногда количественные переменные даже не встречаются в формуле, но процедуру можно назвать несколько тысяч раз. Так что я думаю, мои вопросы заключаются в следующем:Исключение квантификатора для типов перечисления в Z3
- ли Z3 имеют какое-то кэширование для элиминации кванторов, что позволит обрабатывать кучу подобных или идентичных формул быстрее (режим приложения?)?
- Могу ли я руководствоваться Z3, чтобы использовать разные подходы для исключения квантификатора на формулах конечных доменов, поэтому я могу видеть, какой из них лучше работает для меня?
- Было бы интересно узнать, какой подход обычно используется в Z3 для устранения кванторов для формул над конечными типами доменов. Выполняется ли это путем замены + упрощения или используются более сложные методы?
спасибо.
Благодарим вас за ответ. Является ли хеширование включенным по умолчанию, пока я использую тот же контекст (через C++ api)? Если нет, как мне его включить? Кроме того, последнее предложение ответа кажется незаконченным, слишком ли оно излишне или вы хотите добавить что-то еще? – Egbert