Ликвидация квантификатора - Дополнительные вопросы
Большое спасибо Джошу и Леонардо за ответ на предыдущий вопрос.
У меня есть еще несколько вопросов.
& Lt; 1 & GT; Рассмотрим другой пример.
<code>(exists k) i * k > = 4 and k > 1. </code>
Это простое решение, я & gt; 0. (как для Int, так и для Real)
Тем не менее, когда я попытался следовать,
<code>(declare-const i Int) (assert (exists ((k Int)) (and (>= (* i k) 4) (> k 1)))) (apply (using-params qe :qe-nonlinear true)) </code>
Z3 Не удалось устранить квантификатор здесь.
Тем не менее, это может устранить для реального случая. (когда я и к оба действительные) Является ли Quantifier Elvention более сложным для целых чисел?
& Л; 2 & GT; Я использую Z3 C API в моей системе. Я добавляю некоторые нелинейные ограничения на целые числа с квантификаторами в моей системе. Z3 в настоящее время проверяет на удовлетворенность и дает мне правильную модель, когда система является удовлетворительной.
Я знаю, что после устранения кванторов эти ограничения сводятся к линейным ограничениям.
Я думал, что z3 делает устранение квантификатора автоматически перед проверкой выполнимости. Но так как он не мог этого сделать в случае 1, описанном выше, я теперь думаю, что он обычно находит модель без исключения квантификатора. Я прав?
В настоящее время z3 может решить ограничения в моей системе. Но это может дать сбой в сложных системах. В таком случае, будет ли хорошей идеей сделать устранение кванторов другим методом без z3 и добавить ограничения к z3 позже?
& Л; 3 & GT; Я могу подумать о добавлении действительных нелинейных ограничений вместо целочисленных нелинейных ограничений в моей системе. В таком случае, как я могу заставить z3 выполнять удаление квантификаторов с помощью C-API?
& Lt; 4 & GT; И наконец, является ли это хорошей идеей, чтобы заставить z3 выполнять удаление квантификаторов? Или он обычно находит модель более разумно, не выполняя Quantifier Elmination?
Благодарю.