Решатели SMT, такие как Z3 или Boolector, используют сложный набор эвристик для решения проблем. Однако это также затрудняет прогнозирование производительности такого решателя для данной проблемы. Мой вопрос таков:
Вопрос
Есть ли способ понять или получить представление о производительности решателя SMT для специалиста в теории битвекторов без кванторов (QFBV)?
Это также включает в себя любые инструменты визуализации, которые помогли бы понять, где решатель "застрял" / не прогрессирует.
Приложения
Заранее поймите, как различные кодировки одной и той же проблемы влияют на производительность решателя (современный уровень техники здесь не может быть «просто попробуйте несколько различных кодировок и надеюсь, что достаточно быстро», верно?)
Если данная проблема не может быть решена с помощью SMT-решателя из-за нехватки времени, найдите способ выразить проблему по-разному, чтобы ее можно было решить.
Старайтесь не тратить время на упрощение проблем, связанных с конкретной областью, которые вообще не влияют на производительность решателя или даже отрицательно не влияют на производительность решателя.
Существующее исследование
Я пытался найти исследование по этой теме, но я не смог найти много. У меня пока нет большого опыта в области решателей SAT / SMT, поэтому прошу прощения, если я что-то пропустил.
SATzilla : прогнозирует наиболее эффективный решатель на основе функций, извлеченных из проблемы с использованием методов машинного обучения.
Это относится только к SAT вместо SMT и не объясняет причины для производительности решателей.
Профилировщик аксиом Z3 Визуализация графика реализации Z3 и анализ совпадающих циклов
Похоже, это фокусируется только на количественных теориях.
источник