通过例子学TLA+(一)-- HourClock

本文介绍TLA+形式规格说明语言的基础知识,通过一个简单的时钟示例解释如何使用TLA+描述系统的状态和行为,并演示如何利用TLA+Toolbox进行验证。

前言

刚接触TLA+,将学习过程中的理解整理记录下来,用于加深理解和备忘。有对TLA+感兴趣的可以私信我,一起学习。

TLA+简介

TLA+ 是一门形式规格说明语言(formal specification language),主要用来验证系统的设计和算法的正确性。它可以用来对几乎任何形式的离散系统进行精确的、正式的描述,特别适合于描述异步系统。

TLA+提供了一个工具用来编写TLA+,同时提供了语法检查,参数设置,程序运行等功能,该工具就是TLA+ Toolbox,下载路径为:https://github.com/tlaplus/tlaplus/releases/latest

第一个例子:时钟

先从一个非常简单的时钟例子着手。先忽略时钟表示与实际时间的关系,一个时钟将表示为从1到12的周期性运动,即时钟的状态变化为【hour=1】=> 【hour=2】=>【hour=3】… =>【hour=12】=>【hour=1】。因此可以理解为时钟的状态总共有12个,即从1到12,其变化趋势是,当hour小于12时,下一个状态为hour+1,当hour等于12时,下一个状态为1。

用TLA+表示出来,代码如下:

----------------------------- MODULE HourClock -----------------------------
EXTENDS Naturals   

VARIABLES hr

HCini == hr \in (1 .. 12)   \* .. defined in Naturals

HCnxt == hr' = IF hr # 12 THEN hr + 1 ELSE 1

HC == HCini /\ [][HCnxt]_hr

THEOREM HC => []HCini

=============================================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值