Ваша программа проверяет, когда я добавляю флаг -arith:2
, который добавляет символические синонимы для арифметических символов и позволяет использовать их в триггерах.
Изменить: более общий ответ заключается в том, что в вашей задаче используется нелинейная арифметика, которая в общем случае неразрешима. Несколько советов о том, как с ними справиться, можно найти в FAQ по адресу https://github.com/dafny-lang/dafny/wiki/FAQ, однако у меня нет большого опыта работы с Dafny и нелинейной арифметикой.
Я не знаю, почему ваш файл работал раньше, но для исследования вы можете распечатать кодировку SMT, которую Dafny подает на Z3 (см. smt-file/57237474#57237474">dafny выводить как файл SMT) и сравнивать разные версии, если нет разницы, может есть разница между версиями Z3.
Может быть, есть способ кодировать вашу проблему по-другому, который работает более стабильно между разными версиями решателя, при условии, что ни в одном из инструментов нет ошибок.
person
Matthias Schlaipfer
schedule
14.10.2019