Я пытаюсь использовать сопоставление с образцом в z3 для работы с алгебраическими типами данных.Я точно следую синтаксису, указанному в стандарте SMTLib на стр. 27, но z3 дает мне синтаксическую ошибку.Например, в следующей программе:
(declare-datatype Dyn ((a) (b)))
(define-fun foo ((x Dyn)) Int (
match x (
(a 1)
(b 2)
)
))
(assert (= (foo a) (1)))
(check-sat)
выдает ошибку «строка 4, столбец 7: ожидается переменный символ».Насколько я могу судить, я точно следую указанному синтаксису.Как мне это исправить?