例如,您可以定义系统或算法必须满足的性质,如安全性、一致性和可靠性。 TLC 模型检查器:TLC 是 TLA+ 的模型检查器。TLC 可以用于验证您的规范是否满足您的需求和期望。TLC 还可以用于生成系统或算法的状态空间,并检查状态空间中是否存在问题。 PlusCal:PlusCal 是 TLA+ 的一种高级语言,它可以帮助您更轻松地编写 ...
文中主要使用TLA语言对PCS给出了一个时序规约模型,并且利用模型检测工具TLC对PCS进行检测。同时对系统的活性和互斥性也进行了检测,检测结果都满足系统规约。ASMs主要采用转移规则来规约PCS模型,中间的转移过程是无法知道的,TLA能同时规约出PCS的执行过程和系统属性。
记住这个描述方法,我们会按照此方法来编写和阅读所有的 TLA+ 程序。 TLA+ 如此有用的另一个关键点是,TLA+ 有一个被称为TLC的模型检验工具,你可以认为这是 TLA+ 语言的 IDE,其功能简单来说,就是遍历 TLA+ 抽象出来的系统的每一个可能路径,并在每条可能的路径上对一些条件(称为“不变式”)进行检验。为了使...
如果你的规约没有问题,应该可以看到模型运行成功。 总结一下,上一节我们介绍过,TLC 检测工具就是遍历所有的状态,然后对其中的可能路径都进行检查,大致原理就是在遍历整个转换图,同时检查我们的不变式是否成立。 此外,在 tla 文件的页面,点击 “File -> Produce PDF Version”可以生成 PDF 格式的 TLA+ 代码,如下...
Lamport设计的TLA+是建立在坚实的数学基础之上,这使得它能够支持严格的数学推理和证明与自动化验证工具(如TLC模型检查器)无缝集成。TLA+被设计为在高度抽象的层面描述系统,不会像编程语言那样受实现细节的束缚。此外,结合时序逻辑和状态机,TLA+可以描述并发和分布式系统,并在设计层面验证系统的正确性。
使用TLA+进行形式化验证的第一步是用TLA+描述程序,这种描述称为规范(Specification)。有了Specification后,可以利用TLC模型检查器运行它,TLC遍历所有可能行为,检查Specification中设定的属性,发现不符合预期的行为。TLA+基于数学思维,使用与任何编程语言不同的表达方式。为了降低学习门槛,Lamport开发了...
简单看了一下,对关键点做个小结: TLA+指的是一种语法,可以将一个程序的变量和行为形式化地写为一个规约,用来验证程序是否满足所需的约束条件。 TLC是实际执行验证的程序,它的输入就是用TLA+写成的规约。 使用TLC做程序验证的意义可以用书中55页的一段话来解释:“规约的主... (展开) ...
通过使用TLC对分布式系统的TLA+规约进行模型检查, 可以得到一张状态空间图, 对该图进行遍历以生成测试用例. 每一个测试用例是从初始状态出发的一条有向路径. 需要注意的是, 通过遍历状态空间图生成测试用例有多种策略, 如节点覆盖导向、边覆盖导向以及路径...
TLA+是一种为软件建模的语言,模型的校验工具最常用的是TLC。TLA+使用基于数学的形式化描述来建模,对通过代码描述软件执行逻辑的程序员来说是另一种思维,所以学习会有些困难。PlusCal是基于TLA+的用于描述算法的语言,语言特别支持了并发和分布式系统中的语义支持,并且支持将描述转译成TLA+并使用TLA+的模型验证。Pl...
使用TLA+进行形式化验证,首先需用该语言对程序进行描述,这一描述称为规范(Specification)。有了Specification后,即可利用TLC模型检查器运行它,通过遍历所有可能的行为,检查是否满足预先设定的属性,以发现非预期行为。TLA+基于数学理论,采用数学思维,与任何编程语言均不相同。为了降低入门门槛,Lamport还...