Ликвидация квантификатора - Дополнительные вопросы

Большое спасибо Джошу и Леонардо за ответ на предыдущий вопрос.

У меня есть еще несколько вопросов.

& 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?

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос