Сообщение
Z3: ОШИБКА: ПРЕДУПРЕЖДЕНИЕ: не удалось найти шаблон для квантификатора (идентификатор квантификатора: k! 8)
вводит в заблуждение.Это всего лишь предупреждение, слово «ОШИБКА» появилось случайно.Это было исправлено и будет доступно в следующем выпуске.Предупреждение просто говорит пользователю, что модуль электронного сопоставления будет игнорировать квантификатор.Тем не менее, Z3 использует много механизмов для обработки количественных формул.Модуль MBQI может обрабатывать эту количественную формулу и создавать удовлетворительные назначения для таких задач, как:
(объявление-сортировка S)
(объявление-весело s () S)
(assert (forall ((t S)) (= ts)))
(Declare-Fun a () S)
(Declare-Fun B () S)
(assert (= ab))
(check-sat)
(модель)
При этом приведенная выше количественная формулане лучший способ указать сортировку с одним элементом.Вы можете использовать типы данных для кодирования типов перечисления.Например, следующая команда определяет сорт S с элементами e1… en.(declare-datatypes ((S e1 e2 … en)))
Сортировка только с одним элементом может быть указана с помощью: (declare-datatypes ((S e)))
Следующий пример неудовлетворителен:
(Declare-datatypes ((S elem))))
(объявить-const a S)
(объявить-const b S)
(подтвердить (не (= ab)))
(check-sat)