Спасибо, Николай. Тема меня немного заинтересовала, чтобы посмотреть, что это за зверь такой - KLEE. Насколько удалось понять (потратив пару-тройку часов), это, если использовать понятия суперкомпиляции - построитель дерева конфигураций, где конфигурация описывается как набор ограничений на переменные состояний. При этом учитываются ссылки, для которых как-то моделируется объект ссылки (состояние фрагмента памяти). Это все работает для С, поскольку проходит через LLVM. Пока я не увидел попыток строить обобщения, не говоря о зацикливаниях. И это очевидная слабость, приводящая к большим переборам: число состояний растет экспоненциально (от длины пути). В частности, проблема 1.1 из списка проблем от Huawei решалась бы на раз при наличии обобщений (не для "зацикливаний", а просто за счет слияния "похожих" состояний, сокращая число рассматриваемых состояний с миллионов до сотен). Возможно, нужно обобщение не автоматическое, а как-то управляемое пользователем.
Достоинства метода в том, что на путях используется решатель для набора ограничений, отсекающий невыполнимые ветви.
Если это скрестить с суперкомпиляцией, можно, наверно, сказать новое слово.
Еще раз спасибо.
С уважением,
Аркадий.