《Model Checking TLA+ Specifications》

简介: 《Model Checking TLA+ Specifications》

《Model Checking TLA+ Specifications》论文笔记。这篇论文是TLC作者Yuanyu发表的,由于时间比较早,TLC的部分特性都还没有支持,所以这片论文的部分只有部分观点是有益的。

TLA+特点

模型校验器以能处理的系统大小或者能校验的property分类。系统通常以硬件描述语言或者为系统定制的语言。

TLC校验的spec是使用TLA+语言描述。TLA+是具有完备语义的,表达能力极强,描述推理的语言,而不是仅仅为了模型校验:

  1. 当系统太庞大太复杂,模型校验不能完全覆盖的时候,只能通过逻辑推理进行校验。我们想通过模型校验对有限状态机进行设计层次的校验,以发现设计上的错误,因此spec语言一定要能有方便的描述推理;
  2. 我们希望系统的设计者来对系统的正确性进行形式化的证明。这样不需要专业的验证化小组来描述系统了,可以省略了从设计方案到形式化逻辑的翻译过程。因此,这门语言一定要具有极强的表达能力。

我们先对并发系统或者事件驱动系统进行验证,比如:网络通信,cache一致性协议。这类设计典型的RTL实现层次高1,2层。通常不是有限状态机,包含任意数目的processor和任意数目的quueue。ad hoc技术能把这类spec规约成有限状态机,但是对精确的细节很敏感。而TLC可以方便选择有限模型描述类似的spec,并校验所有的case。

TLA+的不变式

TLA:Temporal Logic of Actions。TLA+是对TLA的扩展。TLA的设计目标是使用最简单最直接的方式形式化并发系统的正确性。经过20年的实践发现,基于不变式的方式是对并发系统正确性推理的很好的方式。优秀的程序员再设计多线程算法时都会使用不变式的方式来思考问题

TLA+是一种形式化语言,完备的实现了第一阶逻辑和ZF吉和理论。

在TLA中spec被拆分成formula。在校验正确性的关键步骤是找到系统的不变式:在所有可达的状态中都为TRUE的谓词表达式。大量的实践表明校验系统的不变式是发现bug的最有效的方式。

TLC是如何工作的

  1. TLC使用Explicit state representation;
  2. TLC内部有两个结构体(宽度遍历):seen和sq
    a. seen 所有已经reach过的state;seen是所有reach过状态的fingerprints: 64位整数(比如状态的checksum),同时为了做错误回溯,也记录了前继节点);
    b. sq 所有seen的后继节点,sq里是真正完整的状态;
  3. TLC对Init和Next是特殊处理的:
    a. 从Init生成所有可能的状态,放入seen和sq;
    b. 重写Next,扩展成尽量多的‘或’运算,每个‘或’都是一个分支;
  4. TLC启动线程池:从sq取出一个state s,生成所有合法的后继节点t
    a. 检查t是否已经在seen中;
    b. 如果没有,校验t是否满足invariant;
    c. 如果满足,把t加入到seen中(并记录前继节点是s);
    d. 如果t满足constraint,则把t加入到sq中;
    如果TLC发现某个t不满足invariant,或者s没有任何后继节点,TLC生成t的trace。
相关文章
|
9月前
|
算法 计算机视觉 知识图谱
ACL2022:A Simple yet Effective Relation Information Guided Approach for Few-Shot Relation Extraction
少样本关系提取旨在通过在每个关系中使用几个标记的例子进行训练来预测句子中一对实体的关系。最近的一些工作引入了关系信息
78 0
|
5月前
|
Rust 小程序
小程序警告:Now you can provide attr wxkey for a wxfor to improve performance
首先,无论什么程序,控制台中的警告都是会影响程序性能的。我们需要减少此类警告的出现,以提高程序的运行性能。 小程序开发的时候,遇到了如下的警告:
80 0
|
9月前
|
人工智能 数据可视化 决策智能
【CAMEL】Communicative Agents for “Mind”Exploration of Large Scale Language Model Society
【CAMEL】Communicative Agents for “Mind”Exploration of Large Scale Language Model Society
251 0
|
9月前
|
自然语言处理 Java 计算机视觉
ACL2023 - AMPERE: AMR-Aware Prefix for Generation-Based Event Argument Extraction Model
事件论元抽取(EAE)识别给定事件的事件论元及其特定角色。最近在基于生成的EAE模型方面取得的进展显示出了与基于分类的模型相比的良好性能和可推广性
118 0
|
9月前
|
人工智能 自然语言处理 算法
UIE: Unified Structure Generation for Universal Information Extraction 论文解读
信息提取受到其不同目标、异构结构和特定需求模式的影响。本文提出了一个统一的文本到结构生成框架,即UIE,该框架可以对不同的IE任务进行统一建模,自适应生成目标结构
266 0
|
9月前
|
机器学习/深度学习 自然语言处理 算法
Joint Information Extraction with Cross-Task and Cross-Instance High-Order Modeling 论文解读
先前的信息抽取(IE)工作通常独立地预测不同的任务和实例(例如,事件触发词、实体、角色、关系),而忽略了它们的相互作用,导致模型效率低下。
58 0
|
9月前
|
机器学习/深度学习 自然语言处理 算法
TPLinker: Single-stage Joint Extraction of Entities and Relations Through Token Pair Linking 论文解读
近年来,从非结构化文本中提取实体和关系引起了越来越多的关注,但由于识别共享实体的重叠关系存在内在困难,因此仍然具有挑战性。先前的研究表明,联合学习可以显著提高性能。然而,它们通常涉及连续的相互关联的步骤,并存在暴露偏差的问题。
98 0
|
机器学习/深度学习 异构计算 索引
PyG学习笔记2-CREATING MESSAGE PASSING NETWORKS
PyG学习笔记2-CREATING MESSAGE PASSING NETWORKS
253 0
PyG学习笔记2-CREATING MESSAGE PASSING NETWORKS
|
自然语言处理
Reading the Manual: Event Extraction as Definition Comprehension, EMNLP 2020
Reading the Manual: Event Extraction as Definition Comprehension, EMNLP 2020
66 0
Reading the Manual: Event Extraction as Definition Comprehension, EMNLP 2020
|
机器学习/深度学习 算法 数据挖掘
Re18:读论文 GCI Everything Has a Cause: Leveraging Causal Inference in Legal Text Analysis
Re18:读论文 GCI Everything Has a Cause: Leveraging Causal Inference in Legal Text Analysis
Re18:读论文 GCI Everything Has a Cause: Leveraging Causal Inference in Legal Text Analysis