Можем ли мы разработать правила вывода логики разделения в Z3 и использовать ее для автоматической проверки некоторых реквизитов?
Можем ли мы разработать правила вывода и аксиомы о логике разделения в z3 и использовать ее для автоматической проверки некоторых реквизитов? Например," x=y /\ (x |-> z) |- x=y /\ (y |-> z)"
1 ответ
Возможно. Несколько групп работают над средствами проверки логики разделения на основе решателей SMT или интегрированы с ними. Вот несколько недавних публикаций на эту тему:
Ruzica Piskac, Thomas Wies, Damien Zufferey: Автоматизация логики разделения с помощью SMT. CAV 2013
Матко Ботинкан, Мэтью Дж. Паркинсон, Вольфрам Шульте: верификация логики разделения программ на языке C с помощью SMT Solver. Электр. Отмечает Теор. Вычи. Sci. 254
Хуан Антонио Наварро Перес, Андрей Рыбальченко: Логика разделения Теории по модулю. APLAS 2013
Я уверен, что есть много других SL-пруверов, но я знаю, что у меня в голове есть SLAyer.