检查分支是否已执行

时间:2017-12-10 21:56:42

标签: formal-verification tla+

程序可以从START分支到LEFT或RIGHT分支。如何检查LEFT分支的执行路径和RIGHT分支的其他执行路径?

com.apple.home://

1 个答案:

答案 0 :(得分:2)

在完全通用的情况下,没有办法检查每个状态,至少有一个行为最终到达它。这是因为TLA +基于线性时态逻辑,它没有表达多种不同行为之间的属性的方法。

根据特定的情况,有时可以替代。例如,我们可以写

Left == 
  /\ state = START
  /\ state' = LEFT

Right ==
  /\ state = START
  /\ state' = RIGHT

Next ==
    \/  /\ state = START
        /\  \/ Left
            \/ Right
    \/  /\ state \in {LEFT, RIGHT}
        /\ state' = START

然后你可以检查有两个分支

CheckEventualStates ==
    /\ <>(ENABLED Left)
    /\ <>(ENABLED Right)