我如何断言TLA +中出现数字或列表长大?

时间:2019-01-03 20:54:18

标签: tla+

我有一个TLA +规范,我想断言一个列表的长度只会不断增加(如果在停顿时保持不变,那很好。)

现在我有类似的东西,但是我确定这是不正确的:

NoWorkIsLost == Len(samples) = Len(samples) ~> Len(samples) = Len(samples) + 1

我什至不知道要在这里搜索什么,我肯定我错过了一些非常明显的东西!

1 个答案:

答案 0 :(得分:2)

这取决于您的意思,“列表只会越来越长”。最简单的方法是编写

Op == [][Len(samples') > Len(samples)]_Len(samples)

但这就是说如果长度改变,则长度必须增加。这仍然允许您更改列表而不更改它!如果您改为写

Op == [][Len(samples') > Len(samples)]_samples

那么,您说的是samples更改时,它的长度也必须增加。但这使您可以弹出一个元素并在单个操作中推送两个元素。您可能想表达旧序列是新序列的 prefix 。您可以使用

Op == [][SubSeq(samples', 1, Len(samples)) = samples]_samples