Результаты поиска по запросу "z3"

1 ответ

 чтобы прийти к концу, вы можете выполнить дальнейшую обработку, как вам нужно.

оложим, у меня есть список из 10 переменных v = [Real('v_%s' % (i+1)) for i in range(10)]и я хочу добавить простое ограничение, как это s = Solver() for i in range(10): s.add(v[i] == i) if s.check() == sat: print(s.model())Таким образом, ...

1 ответ

Патрик: Возможно, можно использовать предикаты «переполнения / недополнения» Z3 (как расширение SMTLib) для определения состояния и получения результатов через битовые векторы. Но, по моему опыту, если у вас уже нет хорошей идеи, где находится решение, оно быстро превращается в бесконечное добавление ограничений, запрещающих ложные модели. Я хотел бы знать, был ли вообще применимый прием, хотя я сомневаюсь, что он существует.

возможно, я хотел бы получить второе мнение о моем коде. Ограничения проблемы: a,b,c,d,e,f ненулевые целые числаs1 = [a,b,c] а такжеs2 = [d,e,f] наборыСуммаs1_i + s2_j заi,j = 0..2 должен быть идеальным квадратомЯ не понимаю, почему, но мой код ...

1 ответ

Объединение нелинейных вещественных и линейных чисел

Я читал посты о нелинейной арифметике и неинтерпретируемых функциях. Я все еще очень плохо знаком с миром SMT, поэтому извиняюсь, если я не использую правильный словарный запас или это плохой вопрос. Для следующего кода есть утверждения, ...

ТОП публикаций

1 ответ

Алгоритм закрытия конгруэнтности не является ограничивающим фактором. Доказательства по индукции трудны, потому что они очень часто нуждаются в «творческом» шаге. То есть может понадобиться усилить свойство. Итак, много эвристики необходимо.

бую некоторые примерыучебник по Z3 [http://research.microsoft.com/projects/z3/tutorial.pdf]которые включают в себя рекурсивные функции. Я опробовал следующий пример. Фибоначчи [http://rise4fun.com/Z3/0pld](Раздел ...

2 ответа

Да, мы предполагаем, что логика + теории первого порядка, такая как арифметика, является последовательной. Большинство математиков считают, что это так. Когда мы говорим о корректности Z3, мы рассматриваем алгоритмы и процедуры, использованные при его реализации, а не согласованность логической системы, на которой она основана. Наконец, как я указывал в своем ответе, доказательство правильности должно осуществляться в другой системе, которая «понимает» семантику C / C ++ (язык программирования, используемый для реализации Z3). Эта система может использовать другую логическую систему и даже может вызывать Z3 в качестве подпрограммы.

ибудь пробовал доказыватьZ3 [http://,research.microsoft.com/en-us/um/redmond/projects/z3/]с самим Z3? Можно ли даже доказать, что Z3 является правильным, используя Z3? Более теоретически, возможно ли доказать, что инструмент X является ...

1 ответ

Спасибо за предложение. Я рассмотрю возможность для будущих версий Z3. Однако пользователь не будет иметь контроля над сигнатурой символа функции сколем, генерируемой Z3. Z3 выполняет много упрощений до сколемизации, и шаг сколемизации пытается минимизировать число зависимостей от универсальных переменных. Я обновил свой ответ примером того, как извлечь экзистенциальную переменную, вложенную в универсальный квантификатор.

аю с решателем QBVF Z3 и задаюсь вопросом, возможно ли извлечь значения из экзистенциального утверждения. Скажем, у меня есть следующее: (assert (exists ((x (_ BitVec 16))) (forall ((y (_ BitVec 16))) (bvuge y x)))) Это в основном говорит о том, ...

1 ответ

Примечание: этот ответ был обновлен с использованием отзывов Swen Jacobs.

учаю странные результаты статистики при запуске Z3 3.1 с опцией -st. Если вы нажмете Ctrl-C, Z3 сообщит total_time <время. В противном случае, если вы дождетесь завершения Z3: total_time> time. Что измеряют «общее время» и «время»?Это ошибка ...

1 ответ

Эквивалент define-fun в Z3 API

Используя Z3 с текстовым форматом, я могу использоватьdefine-fun определить функции для повторного использования позже. Например: (define-fun mydiv ((x Real) (y Real)) Real (if (not (= y 0.0)) (/ x y) 0.0)) Интересно как создатьdefine-fun с Z3 ...

2 ответа

Используйте Z3 и SMT-LIB, чтобы получить максимум два значения

Как получить максимум формулы, используя smt-lib2? Я хочу что-то вроде этого: (declare-fun x () Int) (declare-fun y () Int) (declare-fun z () Int) (assert (= x 2)) (assert (= y 4)) (assert (= z (max x y)) (check-sat) (get-model) (exit) Конечно, ...

1 ответ

Мягкие / жесткие ограничения в Z3

Как выразить мягкие и жесткие ограничения в Z3? Я знаю из API, что возможно иметь предположения (мягкие ограничения), но я не могу выразить это при использовании инструмента командной строки. Я звоню, используя z3 / smt2 / si