Я пытаюсь использовать массив и квантификатор в Z3, чтобы найти подстроку в заданном тексте.
Мой код следующий:
(declare-const a (Array Int Int))
(declare-const x Int)
;; a|A
(assert (or (= (select a 0) 61) (= (select a 0) 41)))
;; b|B
(assert (or (= (select a 1) 62) (= (select a 1) 42)))
;; c|C
(assert (or (= (select a 2) 63) (= (select a 2) 43)))
(assert (>= x 0))
(assert (< x 3))
(assert (exists ((i Int)) (= (select a i) 72) ))
(check-sat)
Z3 говорят, что это SAT, хотя этого быть не должно. Я новичок в теории Z3 и SMT и не могу понять, что не так с моим кодом.