《Model Checking TLA+ Specifications》

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 《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。
相关文章
|
存储 安全 前端开发
基于springboot的流浪动物救助管理系统
基于springboot的流浪动物救助管理系统
|
存储 数据采集 数据可视化
Open3d系列 | 1. Open3d实现点云数据读写、点云配准、点云法向量计算
Open3d系列 | 1. Open3d实现点云数据读写、点云配准、点云法向量计算
18119 1
Open3d系列 | 1. Open3d实现点云数据读写、点云配准、点云法向量计算
|
8月前
|
网络协议 安全 Ubuntu
Linux中的ARP包过滤利器(手把手教你使用arptables命令)
本文介绍Linux下的ARP防火墙工具arptables,涵盖其安装、基本语法、实战应用及规则持久化方法。通过arptables可有效防范ARP欺骗攻击,提升局域网安全性,适合网络初学者快速上手,助力构建更安全的内网环境。
|
8月前
|
机器学习/深度学习 编解码 人工智能
2025年数字人平台深度评测排名:主流产品在多语言支持与克隆速度上的表现
随着全球化内容创作兴起,数字人平台面临多语言支持与克隆速度双重挑战。本文深度评测十款主流平台,聚焦40种语言覆盖、语音自然度、口型同步及1分钟内快速克隆等核心指标,揭示技术差异与协同效应,为创作者提供选型参考,助力高效低成本出海。
402 2
|
人工智能 运维 安全
中企出海大会|打造全球化云计算一张网,云网络助力中企出海和AI创新
阿里云网络作为全球化战略的重要组成部分,致力于打造具备AI技术服务能力和全球竞争力的云计算网络。通过高质量互联网服务、全球化网络覆盖等措施,支持企业高效出海。过去一年,阿里云持续加大基础设施投入,优化海外EIP、GA产品,强化金融科技与AI场景支持。例如,携程、美的等企业借助阿里云实现业务全球化;同时,阿里云网络在弹性、安全及性能方面不断升级,推动中企迎接AI浪潮并服务全球用户。
2091 8
|
6月前
|
人工智能 自然语言处理 前端开发
24小时15.3K安装量稳坐王座!老金愿称之为元Skill!
find-skills是AI Agent的“技能搜索指南”,装上后可自然语言指令(如“搜个数据分析skill”)自动查找、安装skills.sh生态技能。上线4天安装超5.2万次,遥遥领先。原版存在触发不稳定、Windows不兼容两大坑,老金已修复并开源Windows兼容版。
|
SQL 数据采集 关系型数据库
如何解决MySQL报错 You have an error in your SQL syntax; check the manual that corresponds to your MySQL?
如何解决MySQL报错 You have an error in your SQL syntax; check the manual that corresponds to your MySQL?
14787 2
|
Web App开发 编解码 Linux
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
这篇文章介绍了使用Selenium自动化测试解决报告生成失败问题的方法,包括Linux环境下的部署指南和代码实现。
445 1
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
|
存储 安全 容灾
同步与备份
【7月更文挑战第1天】同步与备份
1755 70
|
JSON 供应链 算法
跨境卖家必看!2025年1688API新功能解锁全球供应链
1688商品详情接口是阿里巴巴1688平台提供的API,用于获取商品标题、价格、库存、图片等详细信息。支持GET和POST请求,返回JSON格式数据,包含商品描述、商家信息等。适用于电商数据分析、比价系统等场景。调用流程包括申请权限、准备参数并发送请求、处理响应内容,需使用通用参数(如app_key、timestamp)和业务参数(如product_id)。该接口助力提升业务效率与决策准确性。

热门文章

最新文章