【发布时间】:2021-03-22 16:32:26
【问题描述】:
我希望能够在条件变为真后立即强制转换。
例如在这个Example 中,我想在全局变量 后立即从状态S0 到S1 >a 变成 5。守卫是不够的,因为在触发转换之前 a 达到 5 后仍然可以递增。我真的需要触发过渡,然后继续递增a。
有简单的方法吗?我尝试在状态中添加不变量,但它会造成死锁。
【问题讨论】:
标签: formal-verification model-checking uppaal
我希望能够在条件变为真后立即强制转换。
例如在这个Example 中,我想在全局变量 后立即从状态S0 到S1 >a 变成 5。守卫是不够的,因为在触发转换之前 a 达到 5 后仍然可以递增。我真的需要触发过渡,然后继续递增a。
有简单的方法吗?我尝试在状态中添加不变量,但它会造成死锁。
【问题讨论】:
标签: formal-verification model-checking uppaal
使用频道同步。几种方法:
声明chan message; 并在increment 进程上添加message! 同步,在next 进程转换上添加message?,并使用另一个带有保护的转换来检查a 的值并移动到相应的另一个位置。
声明urgent broadcast chan ASAP; 并在next 边上使用ASAP!,这将使此转换在启用后立即变得紧急(即满足防护)。紧急转换仅支持整数守卫。
【讨论】:
您可以在 S0 状态下简单地在a<=5 中添加不变量。
【讨论】: