Проблема довольно проста. Я утверждаю следующее утверждение в Z3, используя интерфейс C API.
(assert(>= (xA 1) (- (yB 0) period))))
Теперь иногда мне нужно проверить, какие утверждения были отправлены, и результат в SatSolver. Я делаю это, создавая текстовый файл с помощью API ast_to_string(). Этот API возвращает мне приведенное выше заявление как -
(assert(>= (xA 1) (+ (yB 0) (* -1 period))))
Когда я загружаю этот файл в Sat Solver, он жалуется на ошибку -
(ошибка «ОШИБКА: строка 150, столбец 56: не удалось найти идентификатор -1».)
Итак, мне нужно вручную исправить все -1 в коде и запустить решатель спутников. Есть ли другой способ избежать этого?