我们使用 Z3 进行有界模型检查。为此,我们提供了一大堆如下形式的表达式:
state_A_1 && !state_B_1 && sometrigger => !state_A_2 & state_B_2
换句话说,我们通过为每个时间步提供单独的表达式来编码时间(步)的流逝。显然,这会导致数千个表达式。
虽然 Z3 解决这些问题所花费的时间是可以接受的(考虑到我们拥有的状态机的复杂性),但通过 Z3 JNI Java API 构建所有这些表达式需要相当长的时间(几秒钟)。
所以这是我的问题:有没有更简单的方法来告诉 Z3 通过一些专门的 API 创建所有这些时间展开的表达式?