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