Я работаю над проектом, целью которого является использование термина перезаписи для решения / упрощения арифметических задач с бит-вектором фиксированного размера, что полезно сделать в качестве предварительного шага к некоторой процедуре принятия решения, такой как основанная на битах-blasting.Термин «перезапись» может решить проблему вообще или иным образом создать гораздо более простую эквивалентную проблему, поэтому сочетание обоих может привести к значительному ускорению.
Я знаю, что многие решатели SMT реализуют эту стратегию (например, Boolector, Beaver, Alt-Ergo или Z3), но трудно найти документы / технические отчеты / и т. д., в которых эти шаги переписывания описаны подробно.В общем, я нашел только статьи, в которых авторы описывают такие шаги упрощения в нескольких параграфах.Я хотел бы найти документ, в котором подробно объясняется использование термина «переписывание»: приводятся примеры правил, обсуждается удобство переписывания AC и / или других эквиациональных аксиом, используется стратегия переписывания и т. Д.
На данный момент,Я только что нашел технический отчет Процедура принятия решения для битовых векторов фиксированной ширины , в котором описываются этапы нормализации / упрощения, выполняемые CVC Lite, и я хотел бы найти больше таких технических отчетов, как этот!Я также нашел плакат о переписывании терминов в STP , но это всего лишь краткое резюме.
Я уже посещал веб-сайты этих SMT-решателей и искал в их Публикации страниц ...
Буду признателен за любую ссылку или любое объяснение того, как переписывание терминов используется в текущих версиях известных решателей SMT.Я особенно заинтересован в Z3, потому что он выглядит как один из самых умных этапов упрощения.Например, Z3 3. * ввел новую процедуру принятия решения о битовых векторах, но, к сожалению, я не смог найти ни одной статьи, описывающей это.