Мне это нужно для пошагового решения в контексте символического исполнения (Кли).
В точках разветвления символьных путей выполнения необходимо разбить решающий контекст на 2 части: с истинными и ложными условиями. Конечно, есть обходной путь - создать пустой контекст и воспроизвести все ограничения.
Есть ли способ разделить Z3_context? Планируете ли вы добавить такую функциональность?
Примечание
разделения контекста можно избежать, если использовать символическое исследование в глубину, то есть исследовать текущий путь выполнения, пока он не достигнет "конца", и, следовательно, этот путь больше не будет исследоваться в будущем. В этом случае достаточно набрать pop , пока не будет достигнута точка ветвления, и продолжить исследовать другую ветвь условия. Но в случае Klee многие символические пути исследуются «одновременно» (исследование истинных и ложных ветвей чередуется), поэтому вам нужно решающее переключение контекстного решателя (в каждом методе есть аргумент Z3_context) и ветвление (для этого нет методов, это то что мне нужно).
Спасибо!