精华内容
下载资源
问答
  • 基于服务的软件形式化规范的进化方法
  • 形式化规范在软件可靠性研究中能够起到的作用是多方面的。本文针对非形式化统计使用测试的不足,结合已有的早期可靠性估计方法,设计了优化算法,并提出了即使在设计中采用了形式化规范仍然需要测试的结论。
  • 使用形式化方法规范列车控制系统
  • 本文介绍了我们在几何知识对象的识别,形式化,结构化和规范化方面的工作,目的是进行语义表示和知识管理。 我们根据几何知识在几何文献中的积累和表示方式对几何知识进行分类,通过调整一阶逻辑的语言来对几何知识...
  • 形式化方法一般可分为形式化规范说明Formal Specification,和形式化验证Formal Verification。 Formal Formal Specification 形式化规范说明 Formal Verification 形式化验证 Theorem Proving 定理检测/Deductive...

    【1】 概述

    硬件和软件系统在规模和功能上的增长增加了复杂性,也 增加了潜在错误的可能性,这些错误引起了金钱、时间上的损 失,甚至会危及人们的生命。形式方法是用于软件和硬件系统 的规范,开发和验证的特定类型的基于数学的技术,是改善和 确保系统质量的重要方法。形式化方法在软件和硬件领域中 的应用进展比较显著,引起了各个领域的注意[1]。形式化验证 方法是形式化方法的一个重要的研究内容,本文主要对形式化 验证方法进行探讨。

    形式化方法一般可分为形式化规范说明Formal Specification,和形式化验证Formal Verification。

    Formal

    • Formal Specification 形式化规范说明
    • Formal Verification 形式化验证
      • Theorem Proving 定理检测(证明)/Deductive Verification 演绎检测
      • Model Checking 模型检测
      • Automated Test Case Generation 自动测试用例生成

    在这里插入图片描述

    【2】基本概念

    【2.1】形式化规范说明

    硬件和软件系统在规模和功能上的增长增加了复杂性,也 增加了潜在错误的可能性,这些错误引起了金钱、时间上的损 失,甚至会危及人们的生命。形式方法是用于软件和硬件系统 的规范,开发和验证的特定类型的基于数学的技术,是改善和 确保系统质量的重要方法。形式化方法在软件和硬件领域中 的应用进展比较显著,引起了各个领域的注意[1]。形式化验证 方法是形式化方法的一个重要的研究内容,本文主要对形式化 验证方法进行探讨。

    【2.2】形式化验证

    【2.2.1】定理证明

    定理证明:先对系统及其性质进行抽取,表示成基于某种 逻辑的命题、谓词、定理,在验证者的引导下,不断地对公理、以 证明的定理施加推理规则,产生新的定理,直到推导出表达系 统性质的公式,从而证明设计的系统满足该性质。现在定理证 明器越来越多的应用在验证硬件和软件设计的安全临界性质 的验证[3]。 定理证明高度抽象,具有强大的逻辑表达能力,可以验证 几乎所有的系统行为特性,可以处理无限的状态空间。定理证 明器可以分为三种:自动定理证明器、交互式定理证明器及证 明检验器。现在大多数定理证明器是交互式的,需要人的引 导,对验证者的要求有良好的数学经验。 主要的定理证明工具有:STeP(Stanford)、TLV、AL2(UTAus⁃ tin/CLI)、Coq、HOL(Cambridge)、Isabelle(Cambridge)、Larch、Nu⁃ prl、PVS(SRI)等。

    【2.2.2】模型检测

    模型检测是一种通过对目标系统建立一个有限的模型,并在模型发生改变时,检测希望满足的性质,例如安全性和活性在该模型中是否成立、稳定的技术。

    目前有两种主要模型检测技术:

    • 一种是时态模型检测,这 种方法中规范说明用时态逻辑公式表示,系统用有限状态转换模型表示,用模型检测器检测模型是否满足规范说明公式。
    • 另外一种是等价性检测,这种方法中规范说明用一个自动机表示,系统用一个自动机表示,然后证明两个模型是否一致。

    自动化程度较高是模型检测的优点,并且当系统不满足给 定的性质时,可以给出反例,使设计人员方便找出设计错误。 模型检测应用于硬件和协议的验证,现在在对软件设计的验证 已成为研究的热点。状态空间爆炸问题是其主要的缺点。

    主要的模型检测工具有:

    • COSPAN/FORMALCHECK(Bell)、
    • MURPHY(Stanford)、SPIN(Bell)、
    • SMV(CMU)、
    • VIS(Berkeley)等。

    目前形式化验证方法成功应用于商业、航空业、通信业和 芯片制造业,INTEL,ARM和NIVIDA等大公司已经把形式化方法应用到芯片的制造和验证[5]。

    从本质上讲,模型检测技术就是穷尽对状态空间的搜索,并通过模型的有限性来保证该搜索过程一定会终止。最初的模型检测应用在硬件和协议验证领域,十分成功,后来在软件系统的验证上也得到了广泛应用。

    Reference:

    [形式化验证方法浅析] 陈波1,李夫明2 (1.山东理工大 学 计算机科学与技术学院,山东 淄博255000; 2.山东理工大学 数学与统计学院,山东 淄博255000)**

    后续待阅读资料

    线性时序逻辑 https://www.docin.com/p-506137477.html
    模型检测 https://wenku.baidu.com/view/800eade45a8102d277a22f3a.html?fr=search
    model checking overview and buchi automata and LTL https://www.docin.com/p-1003260979.html

    展开全文
  • 形式化、半形式化和非形式化

    千次阅读 2008-07-25 12:38:00
    形式化规范就是用一套基于明确定义的数学概念的符号来书写,并且通常伴随着支持性的解释(非形式化)语句。这些数学概念被用来定义符号的句法和语义,以及支持逻辑推理的证明规则。支持形式化符号的句法和语义规则...
             形式化、半形式化和非形式化三种型的格。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    形式化规范就是用一套基于明确定义的数学概念的符号来书写,并且通常伴随着支持性的解释(非形式化)语句。这些数学概念被用来定义符号的句法和语义,以及支持逻辑推理的证明规则。支持形式化符号的句法和语义规则应该定义如何明确地识别其结构和确定其含义。并且必须有证据表明矛盾不可能产生,支持符号的所有规则都有定义或者引用。

    半形式化规范就是用一种受限制的句法语言来书写,并且通常伴随着支持性的解释(非形式化)语句。这里的受限制句法语言可以是一种带有受限制句子结构和具有特殊意义的关键字的自然语言,也可以是图表式的(如:数据流图、状态转换图、实体关系图、数据结构图、流程或程序结构图)。不论基于图表还是自然语言必须用一套规范来定义句法限制。

    非形式化规范就是像散文一样用自然语言来书写。在这里使用自然语言作为任何普通口头语言(如:荷兰语、英语、法语、德语)中意思的沟通。非形式化规范不像常规语言的传统用法(如:文法和句法)一样受一些符号或特殊的限制。虽然没有符号限制,非形式化规范也要求为上下文中的术语定义其意思,除非作为常规用法已认可。

    定义:

    形式化(formal):在完备数学概念基础上,采用具有确定语义定义并有严格语法的语言表达的

    半形式化(semiformal):采用具有确定语义定义并有严格语法的语言表达的

    非形式化(informal):采用自然语言表达的

     

    展开全文
  • 操作系统形式化验证实践教程(9) - 规范与证明概述 规范与证明的主线 前面铺垫了这么多,下面我们看一下seL4形式化验证的大图: seL4的证明部分主要分为两大部分:规范部分,对应spec目录;证明部分,对应proof目录...

    操作系统形式化验证实践教程(9) - 规范与证明概述

    规范与证明的主线

    前面铺垫了这么多,下面我们看一下seL4形式化验证的大图:
    seL4证明.png

    seL4的证明部分主要分为两大部分:规范部分,对应spec目录;证明部分,对应proof目录。

    规范分为4种:

    • 设计规范:就是从上节所见的haskell代码转换成的,可以运行的对操作系统的建模规范,对应目标ExecSpec
    • 抽象规范:是基于硬件规范和设计规范的抽象,对应目标ASpec
    • capDL规范:capDL是用于运行时建模的语言,用于系统初始化等动态过程的建模,对应目标DSpec
    • C规范:其实是用工具对C代码的解析,就没有列到图上。要不然反汇编的最终代码也得算一个吧。对应目标CSpec

    证明上,抽象规范是核心。
    首先有抽象规范的不变量验证,然后是refine,抽象规范是否正确被设计规范实现的证明
    其次是CRefine,证明C代码的实现与设计规范相符
    第三是DRefine,证明运行时建模与抽象规范相符
    最后是AsmRefine,证明C语言生成的代码与反汇编出来的相符

    除此之外,还有安全相关的一些细节。

    我们引用seL4官方论文的图来看一下:
    seL4

    规范及其依赖关系

    我们再看一张seL4的设计过程图:
    seL4 Design

    在spec目录,执行make ExecSpec,就可以生成设计规范。ExecSpec也是另外几个规范的基础,它们都要引用到ExecSpec,要不然不知道硬件接口等基础信息,上面的高层建筑也就不用玩了。

    我们来看ExecSpec的依赖关系,它并不依赖于其它Spec:

    Session Pure/Pure
    Session FOL/FOL
    Session Tools/Tools
    Session HOL/HOL (main)
    Session HOL/HOL-Library (main timing)
    Session HOL/HOL-Computational_Algebra (main timing)
    Session HOL/HOL-Analysis (main timing)
    Session HOL/HOL-Eisbach
    Session HOL/HOL-Word (main timing)
    Session Lib/Word_Lib (lib)
    Session Lib/Lib (lib)
    Session Specifications/ExecSpec
    

    抽象规范ASpec依赖于ExecSpec:

    Session Pure/Pure
    Session FOL/FOL
    Session Tools/Tools
    Session HOL/HOL (main)
    Session HOL/HOL-Library (main timing)
    Session HOL/HOL-Computational_Algebra (main timing)
    Session HOL/HOL-Analysis (main timing)
    Session HOL/HOL-Eisbach
    Session HOL/HOL-Word (main timing)
    Session Lib/Word_Lib (lib)
    Session Lib/Lib (lib)
    Session Specifications/ExecSpec
    Session Specifications/ASpec
    

    CapDL规范,也就是DSpec,依赖于ExecSpec和ASpec:

    Session Pure/Pure
    Session FOL/FOL
    Session Tools/Tools
    Session HOL/HOL (main)
    Session HOL/HOL-Library (main timing)
    Session HOL/HOL-Computational_Algebra (main timing)
    Session HOL/HOL-Analysis (main timing)
    Session HOL/HOL-Eisbach
    Session HOL/HOL-Word (main timing)
    Session Lib/Word_Lib (lib)
    Session Lib/Lib (lib)
    Session Specifications/ExecSpec
    Session Specifications/ASpec
    Session Specifications/DSpec
    

    CapDL用于系统初始化的过程如下图所示:
    CapDL.png

    C规范是最复杂的,不但依赖ExecSpec,C-Parser工具,还有AsmRefine工具,还有针对C语言本身的CKernel:

    Session Pure/Pure
    Session FOL/FOL
    Session Tools/Tools
    Session HOL/HOL (main)
    Session HOL/HOL-Library (main timing)
    Session HOL/HOL-Computational_Algebra (main timing)
    Session HOL/HOL-Analysis (main timing)
    Session HOL/HOL-Eisbach
    Session HOL/HOL-Statespace
    Session HOL/HOL-Word (main timing)
    Session Lib/Word_Lib (lib)
    Session Lib/Lib (lib)
    Session Specifications/ExecSpec
    Session C-Parser/Simpl-VCG
    Session C-Parser/CParser
    Session Lib/CLib (lib)
    Session Tools/AsmRefine
    Session Specifications/CKernel
    Session Specifications/CSpec
    

    证明及其依赖

    前面介绍了,Refine过程是检查设计规范与抽象规范的一致性,所以会依赖ExecSpec和ASpec。在proof目录下运行make Refine:

    Session Pure/Pure
    Session FOL/FOL
    Session Tools/Tools
    Session HOL/HOL (main)
    Session HOL/HOL-Library (main timing)
    Session HOL/HOL-Computational_Algebra (main timing)
    Session HOL/HOL-Analysis (main timing)
    Session HOL/HOL-Eisbach
    Session HOL/HOL-Word (main timing)
    Session Lib/Word_Lib (lib)
    Session Lib/Lib (lib)
    Session Specifications/ExecSpec
    Session Specifications/ASpec
    Session Proofs/AInvs
    Session Lib/CorresK
    Session Proofs/BaseRefine
    Session Proofs/Refine
    

    CRefine的过程,依赖上面的Refine过程:

    Session Pure/Pure
    Session FOL/FOL
    Session Tools/Tools
    Session HOL/HOL (main)
    Session HOL/HOL-Library (main timing)
    Session HOL/HOL-Computational_Algebra (main timing)
    Session HOL/HOL-Analysis (main timing)
    Session HOL/HOL-Eisbach
    Session HOL/HOL-Statespace
    Session HOL/HOL-Word (main timing)
    Session Lib/Word_Lib (lib)
    Session Lib/Lib (lib)
    Session Specifications/ExecSpec
    Session Specifications/ASpec
    Session Proofs/AInvs
    Session Lib/CorresK
    Session Proofs/BaseRefine
    Session Proofs/Refine
    Session C-Parser/Simpl-VCG
    Session C-Parser/CParser
    Session Lib/CLib (lib)
    Session Tools/AsmRefine
    Session Unsorted/AutoCorres
    Session Specifications/CKernel
    Session Specifications/CSpec
    Session Proofs/CBaseRefine
    Session Proofs/CRefine
    

    终极目标是校验最终生成的目标代码make SimplExportAndRefine

    Session Pure/Pure
    Session FOL/FOL
    Session Tools/Tools
    Session HOL/HOL (main)
    Session HOL/HOL-Library (main timing)
    Session HOL/HOL-Computational_Algebra (main timing)
    Session HOL/HOL-Analysis (main timing)
    Session HOL/HOL-Eisbach
    Session HOL/HOL-Statespace
    Session HOL/HOL-Word (main timing)
    Session Lib/Word_Lib (lib)
    Session Lib/Lib (lib)
    Session Specifications/ExecSpec
    Session C-Parser/Simpl-VCG
    Session C-Parser/CParser
    Session Lib/CLib (lib)
    Session Tools/AsmRefine
    Session Specifications/CKernel
    Session Specifications/CSpec
    Session Proofs/SimplExport
    Session Proofs/SimplExportAndRefine
    

    有同学觉得,能校验C代码和反汇编的代码是不是一致这太神奇了。这其中使用了一个将两者都转换成图结构,然后进行比较的工具:https://github.com/seL4/graph-refine

    详细原理我们还是看下官方的图:
    AsmRefine

    如果图还抽象的话我们看个例子:
    Example

    左边是C代码,右边是反汇编的结果,中间是它们用图表示的结构。

    展开全文
  • 介绍了安全数据库形式化顶层规范,定义了顶层规范中SQL操作的描述,在此基础上给出简单SQL操作的定义,并对其进行分析验证,最后将一般SQL操作的分析验证转换为多个简单SQL操作的分析验证。验证过程表明,该方法既对...
  • 其次,提出了各种基于单会话的进程组合机制,实现了复杂并发会话、时间控制与非确定性的形式化规范,从而使组合进程的可达空间即为所求空间。最后,提出了基于可达空间的UCON安全性分析方法,以及基于进程代数等价的...
  • 形式化方法

    2021-04-05 10:34:52
    形式化方法 形式化方法是一种基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。 用于开发计算机系统的形式化方法是描述系统性质的基于数学的技术,这样的形式化方法提供了一个框架,可以...

    形式化方法

    形式化方法是一种基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。
    用于开发计算机系统的形式化方法是描述系统性质的基于数学的技术,这样的形式化方法提供了一个框架,可以在框架中以系统的而不是特别的方式刻划、开发和验 证系统。 如果一个方法有良好的数学基础,那么它就是形式化的,典型地以形式化规约语言给出。这个基础提供一系列精确定义的概念,如:一致性和完整性,以及定义规范 的实现和正确性。 形式化方法的本质是基于数学的方法来描述目标软件系统属性的一种技术。不同的形式化方法的数学基础是不同的,有的以集合论和一阶谓词演算为基础(如Z和 VDM),有的则以时态逻辑为基础。形式化方法需要形式化规约说明语言的支持。

    展开全文
  • 基于计算机联锁系统是一个对列车行驶系统提供安全条件的系统,车站联锁系统是保证车站行车安全和提高运输效率的...了形式化规范和推理,该模型在RODIN平台上进行验证,通过实例验证,满足了计算机联锁系统的安全需求。
  • C程序设计(第四版) 谭浩强 著 1:在该书P50浮点型数据中这样写道:在指数形式的多种表示方式中把小数部分中小数点前的数字为0、小数点后第1位数字不为0的表示形式称为规范化的指数形式,如0.314159*10^1就是3....
  • 规范化数据库层面规范化把关系满足的规范要求分为几级,满足要求...数据规范化是数据挖掘中的数据变换的一种方式,数据变换将数据变换或统一成适合于数据挖掘的形式,将被挖掘对象的属性数据按比例缩放,使其落入...
  • 转自 ... 形式化、半形式化和非形式化是三种类型的规范风格。 形式化规范就是用一套基于明确定义的数学概念的符号来书写,并且通常伴随着支持性的解释(非形式化)语句。...
  • 本体的形式化研究

    2020-10-18 21:53:18
    知识本体作为共享概念模型的形式化规范说明,在信息技术领域的各个方面有着广泛的应用。本体的表示有多种方法,本文给出了OWA(ontology-based Web annotation) 、Maedche A形式化定义、Guarino和KAON(Karlsruhe ...
  • 该构造基于Fradkin–Vasiliev形式主义的泛化,该形式主义是针对无质量的高自旋场发展为大规模的费米离子高自旋场的。 这种形式主义的主要成分是轨距不变曲率。 我们为正在考虑的大量理论建立了这样的曲率,并展示了...
  • 在拿到数据进行建模之前,我们需要将数据进行初步处理,例如通过据平滑、数据聚集、数据概化和规范化等方式将数据转换成适用于数据挖掘的形式。本文只介绍min-max标准、Z-score标准方法。 1. Min-max 规范化 ...
  • 数据变换是数据准备的重要环节,将数据转换成适用于数据挖掘的形式。数据变换的常用方式: 数据平滑:去除噪声,将数据离散 数据聚集:如sql中的聚集函数,...1 Min-Max 规范化(最小-最大规范化) 将原始数据映...
  • 规范化、标准、归一、正则

    万次阅读 多人点赞 2018-07-18 21:52:39
    规范化: 针对数据库 规范化把关系满足的规范要求分为几级,满足要求最低的是第一范式...数据规范化是数据挖掘中的数据变换的一种方式,数据变换将数据变换或统一成适合于数据挖掘的形式,将被挖掘对象的属性数据按...
  • 从诞生至今,形式化验证(Formal Verification)方法一直...在计算机硬件(特别是集成电路)和软件系统的设计过程中,形式化验证的含义是根据某个或某些形式化规范或属性,使用数学的方法证明其正确性或非正确性。 ...
  • 什么是形式化方法

    2021-04-05 16:51:31
    用于开发计算机系统的形式化方法是描述系统性质的基于数学的技术,这样的形式化方法提供了一个框架,可以在框架中以系统的而不是特别的方式刻划、开发和验证系统。 如果一个方法有良好的数学基础,那么它就是形式化...
  • 我在看谭浩强.C语言程序设计(第2版)时,在P18的2.1节中写到: 所谓“标准指数形式”是指这样的指数:其数值部分是一个小数,小数点前的数字是零,小数点后的第一位数字不是零。一个实数可以有多种指数表示形式...
  • 规范化

    2007-10-23 19:00:00
    今天的培训是规范化编程和机顶盒主要介绍。 规范化编程主要介绍了变量如何规范的定义名称,例如:变量名称前要加类型的第一个字母的小写,变量名称中每个单词的第一个字母要大写,段落的缩进、空行,结构体也要加...
  • 规范化基本上是设计数据库模式,以避免重复和冗余数据。 如果某些数据在数据库中的多个位置重复,则存在在一个位置而不是另一个位置更新的风险,从而导致数据损坏。从正常形式到正常形式有许多归一水平。 每种常规...
  • midi-msg旨在成为MIDI 1.0详细规范及其许多扩展和附录的完整表示形式,以允许将MIDI字节流与类型表示形式进行序列和反序列。 以后可能会支持MIDI 2.0。 midi-msg类型遵循MIDI规范中详细介绍的分类法,并具有...
  • 规范化文本

    2017-02-21 15:05:24
    还有更多的规范化文本的尝试。词干提取器Porter词干提取器porter = nltk.PorterStemmer() [porter.stem(t) for t in tokens]词形归并词形归并是一个过程,将一个词的各种形式映射到这个词的标准的或引用的形式,也...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,992
精华内容 1,196
关键字:

形式化规范