Z3 по умолчанию создает Lambda
абстракций для массивов; которые полезны, но трудно понять, что происходит в модели. Я бы порекомендовал отключить это, добавив следующую строку в вашу программу на Python:
z3.set_param('model_compress', False)
Вы должны сделать это сразу после того, как import z3
.
При этом, если вы напечатаете модель в своей программе, вы получите:
>>> m
[a = [3 -> 1, else -> 1],
another = [1 -> 1, else -> 1],
k!0 = [3 -> 1, else -> 1],
k!1 = [1 -> 1, else -> 1]]
, который должен быть более читабельным. (По сути, это говорит о том, что и a
, и another
- это массивы, которые отображают все в 1; хотя и немного запутанные.)