Я использую Z3py, где мне нужно создать тысячи объектов And () и Or () для подачи в Z3 Solver. Кажется, что большую часть времени уходит на создание этих объектов (добавление их в решатель и их решение происходит намного быстрее). В крайнем случае попробовал вот что:
assertion = True
for i in range(10000):
assertion = Or(assertion, True)
Это занимает около 0,8 секунды (в том числе для And ()), что довольно много для простого создания объектов утверждения Or.
Выполняет ли Z3 какую-либо предварительную обработку при создании объектов And / Or или такое поведение является неожиданным? Я запускаю Z3 с помощью Z3py на Macbook Pro (Intel i5 2,4 ГГц, 8 ГБ ОЗУ).