目录

  • Rodin基本操作
  • Event-B表示法
  • 证明义务

最近在做一些Event-B建模的事情,而Rodin平台使用的方法的中文说明实在太少,在各个模型建模时候,更想写一些建模的思路与需求文档分析方法,这里就总结一下Rodin平台的使用方法以及Event-B的语法结构

Rodin基本操作

Rodin基于Eclipse开发,所以基本操作和Eclipse差不多

新建工程

填写项目名称

新建Event-B组件

组件类型有Context(上下文)和Machine(机器),组件名字随便起,不过后面会有精化操作,可以从0开始编号

Rodin中添加元素一般都是通过右键添加,直接写代码的方式有是有的,不过要装插件


添加完成后,可以双击元素,修改名称,其他的定义初始化相关操作也都是这样子添加

">"这个后面代表的是注释,双击这个符号的右边就可以添加注释了

右下角有个符号表,有什么需要输入的符号可以从这里找,把鼠标悬停到这里也可以看到快捷输入方式

例如:∅\varnothing∅直接输入{}就可以出来,∈\in∈直接敲:,→\rightarrow→敲–>,等等等等

在左上方有添加变量的快捷方式

右上方这里有切换视图的地方,使用插件或者查看验证的时候需要在这里切换视图观看

Event-B一个重要的特点就是精化,在组件上右键,context有extend操作,而在machine上有refine操作

左边explorer里面点开Proof Obligations可以看到Rodin自动生成的证明义务,通过的是绿色的,而未证明通过的是红色的,可以双击进去看看未通过原因

另:有时候可能你是对的,但平台没有证出来,这种时候可以双击进去看看原因,如果没啥问题可以右键Retry Auto Provers一下,有时候就直接绿了(微笑(* ̄︶ ̄))

看到这个not theorem了没有?这点下会变成theorem(定理),代表这一行内容目前并不能确定,需要在本组件内证明,所以不要乱点后面灰色的部分

同样,如果一个事件继承了另一个事件,那么点击not extended ordinary会变成extended,然后出现被继承事件的内容

Event-B表示法

机器和上下文

Event-B模型里面包含机器(machine)和上下文(context),分别代表着模型中动态变化的部分以及静态不变的部分


机器和上下文之间的关系

机器和上下文之间存在着各种关系

  • 一部机器可以“观看(see)”一个上下文
  • 机器可以"精化(refine)"至多一部机器
  • 一个上下文可以"继承(extend)"若干上下文

上下文的结构

  • 一个上下文要有一个唯一的名字
  • extend列出当前上下文继承的上下文
  • sets定义一些不相交的集合
  • constants列出上下文的各种常量
  • axioms列出常量需要服从的各种谓词,也就是公理
  • theorems列出各种定理,它们必须在这个上下文的范围里证明

一个具体上下文的例子

机器的结构

  • 一部机器有一个唯一的名字
  • refines包含被该机器精化的机器
  • sees列出本机器显示观看的上下文
  • variables列出机器的各种变量
  • invariants列出变量必须服从的各种谓词(即不变式)
  • theorems列出各种定理,需要在本机器中证明
  • variant描述变动式
  • events列出本机器的各种事件

一部具体的机器

事件

  • refines列出该事件精化的抽象事件
  • any列出事件的参数
  • where包含事件的各种guard
  • with是结合refines一起用的,在抽象事件里面的抽象参数,如果在具体事件里面有了具体的值,那么就在with语句中写出,定义使用a:P(a)的形式
  • then列出事件各种动作

with的使用

事件的例子

证明义务

1、不变式证明义务:INV

不变式证明义务规则保证machine里面的每一个不变式,在每个事件执行后仍然得到保持

该PO的命名为"evt / inv / INV"

2、卫加强证明义务:GRD

我们认为,正确的精化时,需要保证具体的卫比抽象的卫更强,什么叫更强?这就意味着具体的卫蕴含着抽象的卫,也可以说不可能出现一种情况,使得具体的卫成立,但抽象的卫不成立。正确精化的证明义务用GRD表示。

该PO的命名为"evt / grd / GRD"

变动式相关的证明义务
当引进了一些新事件时,我们还必须证明另外一些东西,就是说它们不会发散,也就是说,这些新事件不会永无止境地执行。为了证明这一性质,我们必须给出一个自然数值的表达式,称为变动式(variant),而后证明所有的新事件都会减少它的值。这就带来了两个证明义务:第一个是说我们提出的这个变动式是一个自然数,第二个是说每个新事件都会减小该变动式的值

3、数值变动式证明义务:NAT
该证明义务保证,我们提出的变动式是一个自然数

4、变动量证明义务:VAR
该证明义务保证,我们提出的变动式在执行所有的新事件后都会减少它的值

其实提出的这个变动式相当于while循环中的那个条件,我们如何确认while循环会终止呢?假设while循环长成while(n>0)这个样子,我们要确保n每次都会减小就行了,而我们提出的变动式需要在新的事件执行后,这个变动式会确实的减少,从而表明新的事件不会永无止境的运行下去,不然的话,新增的事件有可能导致本来的事件不会执行,这就违反了精化的原则

5、定理证明义务:THM
这一规则保证所提出的上下文或及其定理是可证的

该PO的命名为"thm / THM"

6、良好定义证明义务:WD
这一证明义务保证,每个可能出现病态定义的公理、定义、不变式、卫、动作、变动式,都确实是良好定义的

弄清楚一个问题就可以,什么叫做病态定义?如果我们把一个数定义为a = 1/0,这个就是一个病态定义,因为除法不能除以0,WD证明义务就是保证定义的时候不会出现类似于这样子的病态定义

Event-B建模(四)——Rodin平台使用及Event-B语言相关推荐

  1. 国产自主可控的MBSE建模与仿真平台SkyEye

    转载: 2020年6月,哈工大.哈工程被美国商务部列入实体清单,禁用MATLAB事件频繁登上热搜,工业软件被称为「卡脖子」技术. 截止到2020年12月,中国已有超过300家企业和机构被列入美国&qu ...

  2. Web3.0网关Deeper Network计划于本月末在四个平台上进行IDO

    3月12日消息,旨在建立隐私和安全的 Web 3.0 网关 Deeper Network 计划于本月末在 Flybit.Ignition.Poolz 以及 DuckStarter 四个平台上进行为期四 ...

  3. matlab火箭模型,基于Matlab/Simulink的新型火箭建模与仿真平台搭建

    2018 年 11 月第 14 卷 第 4 期 系 统 仿 真 技 术 System Simulation Technology Nov. ,2018 Vol. 14,No. 4 中图分类号: TP3 ...

  4. mysql gtid深入_深入理解MySQL 5.7 GTID系列(四):mysql.gtid_executedPREVIOUS GTID EVENT

    之所以把MySQL.GTID_EXECUTED表的作用和PREVIOUS GTID EVENT的改变放到一起进行描述是因为它们后面文章探讨的基础.这部分使用到了我自己使用C语言写的原生BINLOG解析 ...

  5. c语言实验四报告,湖北理工学院14本科C语言实验报告实验四数组

    湖北理工学院14本科C语言实验报告实验四 数组.doc 实验四 数 组实验课程名C语言程序设计专业班级 14电气工程2班 学号 201440210237 姓名 熊帆 实验时间 5.12-5.26 实验 ...

  6. php蜜欧斯,微信公共平台怎么连接数据库,开发语言是PHP

    微信公共平台怎么连接数据库,开发语言是PHP0 我想开发一个微信公共平台,具体功能是输入关键词题号,自动回复这个题目的答案.题目数量在4000道左右.大约160W字本来我用的是网上DOWN的简易PHP ...

  7. 互金信用评分建模四步骤

    一.数据描述 数据采集 具体而言,分别为交易事实表,用户信息表,商户分类信息表,以及银行卡信息表,它们之间的关系如图4所示.这四张表格分别通过不同的关键字连接,具体如下:a. 用户信息表可以通过用户手 ...

  8. 数据仓库专题(2)-Kimball维度建模四步骤

    一.前言 四步过程维度建模由Kimball提出,可以做为业务梳理.数据梳理后进行多维数据模型设计的指导流程,但是不能作为数据仓库系统建设的指导流程.本文就相关流程及核心问题进行解读. 二.数据仓库建设 ...

  9. MATLAB数学建模(四):机器学习

    一.学习目标. (1)了解机器学习算法在数学建模中的应用. (2)掌握机器学习算法中的二分类.多分类.回归.聚类算法. 二.实例演练. 1.谈谈你对机器学习算法与数学建模的了解. 机器学习 ( Mac ...

最新文章

  1. BigData-‘基于代价优化’究竟是怎么一回事?
  2. JavaScript获取浏览器的显示区域大小信息
  3. cookie文件是存放在服务器端,http - 服务器端cookie和客户端cookie之间有什么区别?...
  4. Mybatis DAO开发--Mapper动态代理开发方式
  5. 【Java】转置String的各种方法分析
  6. linux mail 使用外部邮箱地址发邮件
  7. 人工智能 企业变革_我们如何利用(人工)情报变革医院的运营管理
  8. matlab7.0 win10安装报错,win10系统安装Matlab7.0后出现Runtime Error警告窗口的技巧介绍...
  9. TCP/IP路由技术第一卷静态路由知识回顾
  10. 闲聊linux中的input设备(4) 她一直默默地在背后支持着你
  11. wlop一张多少钱_小白有个问题,为什么很多人都说 WLOP 的画不够好?
  12. docker安装和一些基本操作
  13. Zotero-word中引用跳转到参考文献/建立超链接-引用格式(Xie et al 2021, Achanta et al 2012)
  14. USB中的端点详细了解
  15. HDU 5594(ZYB's Prime-网络流)
  16. mysql-Util
  17. facewarehouse
  18. BasicRF之中断接收basicRfRxFrmDoneIsr
  19. 机器学习模型中,偏差与方差的权衡及计算
  20. Vuepress + GitHub Actions实现文档博客自动部署

热门文章

  1. 电工实验室基本生存技能 第一季第三集
  2. SAP物料主数据创建/修改(MM01/MM02),在 “分类” 页签 输入比较特殊的特征值,例如:希腊字母 “ μ ”,结果却显示 别的英文字符 (例如: “M“)的问题原因及解决方法
  3. 苦于抖音四季文案久已的朋友们快看过来!
  4. c# WPF中对输入值任意限制的方法及通用示例
  5. Error from server: Get “https:IP:10250/*“:dial tcp IP:10250: connect: no route to host
  6. 算法竞赛入门经典 每日一题(郊区春游)
  7. Android界面布局练习
  8. 分类器的不同的性能评价指标
  9. java锁的种类及研究
  10. Linux常用指令与操作