Есть ли способ заставить решатель z3 выдавать «символические» решения? Например, для уравнения:
1+x=c
решение x=c-1, но z3 всегда выдает определенную модель, например [c = 0, x = -1]
. Как «определить» c как символическую переменную?
Есть ли способ заставить решатель z3 выдавать «символические» решения? Например, для уравнения:
1+x=c
решение x=c-1, но z3 всегда выдает определенную модель, например [c = 0, x = -1]
. Как «определить» c как символическую переменную?
К сожалению, Z3 не предоставляет такой функциональности. Хотя мы используем решатели внутри компании, они не отображаются в API. В будущих версиях мы хотим раскрыть внутренние компоненты, такие как: решатель, процедуры баз Гробнера и т. д. В текущей версии у нас есть тактика под названием solve-eqs
(см. http://rise4fun.com/Z3Py/tutorial/strategies). Он устраняет переменные, используя обобщение исключения Гаусса. Однако это этап предварительной обработки, и вы не можете контролировать, какие переменные исключаются.