Будет ли Z3 поддерживать AUFBV?
Для следующего скрипта:
(set-logic AUFBV)
(declare-fun x () (_ BitVec 16))
(declare-const t (Array (_ BitVec 16) (_ BitVec 16)))
(assert (= (select t #x0000) #x0000))
Онлайн-демонстрация Z3, кажется, довольна вызовом set-logic
, но потом жалуется на сортировки BitVec
и Array
. (Между прочим, онлайн-демонстрация, кажется, устраивает вызов set-logic
независимо от логического имени, даже с фиктивными именами, такими как (set-logic blarg)
.)
Веб-сайт SMT-Lib не упоминает ни UFBV, ни AUFBV, но, учитывая их аналоги без квантификаторов (QF_UFBV и QF_AUFBV), я надеялся, что Z3 также будет поддерживать AUFBV.
Излишне говорить, что массивы играют очень важную роль на практике. Я думаю, что логика AUFBV должна оставаться разрешимой, учитывая аргумент конечности. Было бы очень приятно увидеть поддержку Z3.
Спасибо!