当前位置: 首页 > news >正文

Lustre/Scade 语言时序算子与形式化验证的联系

在巴黎高师同步反应式系统的第一课中,描述时序算子特性的过程中,讨论到了 Lustre/Scade 语言时序算子与形式化验证方法之间的联系。

在 Lustre/Scade 中,程序的时序逻辑性质(temporal property)可以由Lustre 程序本身描述,而不需要引入新的时序逻辑去表达。在 Lustre/Scade 语言中,有同步观察(Synchronous Observer)的概念。其逻辑如下

node check(x: t) returns (ok: bool);
letassert H(x,y);y = F(x);ok = P(x,y);
tel;

assert H(x,y) 描述对程序环境的假设,如果 y = F(x)的话,则xy的之间的性质 P(x,y)成立。该程序的描述的逻辑的意义为,只要假设H(x,y) 成立,则性质P(x,y)总成立。

在Lustre程序中,通过Lustre描述的时序性质,可使用模型检查检查工具 lesar, kind 2 等进行验证。

一些时序性质例子

连续两个true的情况始终不能发生

该时序性质可以用如下 Lustre 程序表达

node never_twice(A: bool) returns (OK: bool);
letOK = true -> (A and pre A);
tel;

在首周期,不可能出现连续两次true,因此性质为true。在往后周期中,当前周期值,与上一周期值不能同时为 true。如此,通过Lustre时序算子->,构造了该时序性质。

任何事件A的发生,都需要跟随着B发生,B发生在C之前

如下的时序逻辑能描述该性质

-- 在`implies` 中,只要A不发生,不论B是否发生,结果都为`true`。如果A发生了,则B必须发生,才能使`implies`为true。
node implies(A, B: bool) returns (OK: bool);
letOK = not(A) and B;
tel;-- 在 `once` 中,只要出现过一次A 发生(ture),则`once`始终为 true。
node once(A: bool) returns (OK: bool);
letOK = A -> A or pre OK;
tel;node followed_by(A, B: bool) returns (OK: bool);
letOK = implies(B, once(A));
tel;

followed_by(A, B) and followed_by(B, C) 可描述该时序性质。

Scade One 中的新特性 assert

在2024年首发的新一代Scade工具Scade One中,相比Scade 6新引入了assert 特性。assert 特性引入的目的为描述程序运行过程中的不变性质,与形式化验证工具配合使用。

http://www.dtcms.com/a/162689.html

相关文章:

  • 多元函数微分之传统方法和全微分法
  • 电子监管码预检剔除装置提示盒尺寸过短
  • php 需要学会哪些技术栈,掌握哪些框架
  • 架构风格对比
  • new的使用
  • 泰山派常用命令
  • ICH CTD中ISS的关键内容与作用
  • params query传参差异解析及openinstall跨平台应用
  • 【深度学习】评估模型复杂度:GFLOPs与Params详解
  • 光流法:从传统方法到深度学习方法
  • python上测试neo4j库
  • python练习:求两数相加之和
  • Java并发探索--上篇
  • 智能座舱架构中芯片算力评估
  • 2025系统架构师---管道/过滤器架构风格
  • 【强化学习系列】贝尔曼最优方程
  • SQL常用数据清洗语句
  • Python初学 有差异的知识点总结(一)
  • 如何开展有组织的AI素养教育?
  • kubernetes常用命令 k8s指令大全
  • Oracle备份和恢复
  • 政务大模型的春天,AI办公先萌芽
  • 【软件工程】面向对象编程(OOP)概念详解
  • if consteval
  • 9. 使用Gazebo和Rviz显示机器人(包括运动控制,雷达,摄像头仿真以及显示)
  • yum install 失败
  • 政策支持与市场驱动:充电桩可持续发展的双轮引擎
  • cmake qt 项目编译
  • 亚马逊环保标识运营指南:抢占流量新赛道的6大策略解析
  • 对话式 BI:让数据洞察从“专业门槛”变为“对话本能”