Этот вопрос очень запутанный, совсем не понятно, о чем вы спрашиваете. Аксиома обычно является выражением, выраженным количественно, то есть чем-то, что содержит Forall
и / или Exists
. Вот пример, скопированный из https://ericpony.github.io/z3py-tutorial/advanced-examples.htm:
f = Function('f', IntSort(), IntSort(), IntSort())
x, y = Ints('x y')
print ForAll([x, y], f(x, y) == 0)
print Exists(x, f(x, x) >= 0)
a, b = Ints('a b')
solve(ForAll(x, f(x, x) == 0), f(a, b) == 1)
Как видите, аксиомы обычно используются для express свойств неинтерпретируемых функций: f
в приведенном выше примере .
Ваше описание очень трудно расшифровать, но звучит так, как будто у вас может быть проблема XY: http://xyproblem.info/ Посмотрите, можете ли вы сформулировать вопрос с тем, чего именно вы пытаетесь достичь, вместо того, чтобы делать предположения! (Извините за каламбур!) Удачи!
Относительно вашей кодировки:
Давайте сосредоточимся на том, что вы написали:
solve(ForAll(lista, Length(lista)> 3))
То, что вы здесь говорите, таково что для всех списков (которые вы назвали lista
), их длина больше 3. В более математической записи вы указали:
∀x. length (x) > 3
Это явно не так, поскольку Вы можете взять пустой список в качестве контрпримера.
В общем случае аксиомы создадут новую неинтерпретированную сортировку и / или неинтерпретированные функции и свойства их состояния. Вы указали, что вы новый пользователь, скорее всего, вам не понадобятся аксиомы для чего-либо практичного на этом уровне. Переполнение стека действительно работает лучше всего, когда вы задаете очень конкретные c вопросы по конкретным c темам, поэтому не стесняйтесь задавать другой вопрос.