参考:https://zhuanlan.zhihu.com/p/295230186
程序验证(Program/Software Verification)旨在自动化地证明程序的正确性,即程序在运行的过程中不会出错,并且程序的功能能够满足。
程序验证的优点是能够自动化地进行程序的正确性证明。
但其缺点也很显著,
其一是对高阶功能属性不友好,一般用于证明一些低阶属性,比如程序中不存在“除0错误”,“指针的use after free”,“数组越界或缓冲区溢出”等等。
其二是程序验证一般也依赖于约束求解,所以同样难以直接大规模地应用。 但随着验证算法和约束求解引擎的不断进步,程序验证的可用性将变得越来越好。

程序验证的目的是证明程序的正确性,这既包括程序不会有运行时错误,也包括程序功能的正确性。
其次,程序验证的基本要素是程序的源码,要验证的属性,这是实现自动化验证的前提。
同时,在必要时,我们需要有循环不变式。
最后,
程序验证的基本思路是,在给定源码和属性的基础上,
通过验证算法,
将我们需要验证的问题转化为逻辑公式,
再证明逻辑公式的正确性。
验证算法是程序验证所研究的核心内容
对程序验证的效率,有着至关重要的影响。
还有很多巧妙的验证算法,
比如:谓词抽象(Predicate Abstraction)、路径抽象(Path Abstraction)、反例制导的抽象精化(Counter-Example-Guided Abstraction and Refinement,CEGAR)、K归纳算法([公式]-induction)等等。 这些验证算法基本思想都很简洁巧妙,值得学习和了解。

程序验证(1)- 简介相关推荐

  1. [转载]SQL Server 2005 Data Mining简介

    简介    企业均在尝试分析其数据时都面临若干问题.通常,并不缺乏数据.事实上,很多企业感觉到他们被数据淹没了:他们没有办法完全利用所有的数据,将其变成信息.为了处理这方面的问题,开发了数据仓库技术, ...

  2. Windows 生物统计框架结构简介(WBF) (指纹识别技术)

    指纹识别技术在今天已经得到了越来越多的应用.在很多中.高端计算机中指纹识别设备已经成为了标配. 我发现很多计算机的指纹识别设备是闲置的,还有些设备虽然应用了,但是并没有得到正确的应用. 在前天下午.又 ...

  3. [INS-30131] 执行安装程序验证所需的初始设置失败.

    Oracle安装时候错误: [INS-30131] 执行安装程序验证所需的初始设置失败. 无法从节点 "win7lhr" 检索 exectask 的版本 解决: 方法一: 控制面板 ...

  4. Flutter --- Dart简介

    一.简介 由Google主导开发,于2011年10月公开.它的开发团队由Google Chrome浏览器V8引擎团队的领导者拉尔斯·巴克主持,目标在于成为下一代结构化Web开发语言.类似JavaScr ...

  5. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  6. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  7. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  8. TensorRT简介

    TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...

  9. 谷粒商城学习笔记——第一期:项目简介

    一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...

最新文章

  1. Mongodb 基本操作
  2. C++语言之可重载运算符/不可重载运算符
  3. 二分类吸引子,排斥子,鞍点和反鞍点数据汇总
  4. 股权分配中的三种定时炸弹
  5. python变量和运算符
  6. p20怎么用android auto,奔驰23P/P20驾驶辅助系统到底有哪些功能,怎么使用?
  7. 关于SRAM,DRAM,SDRAM,以及NORFLASH,NANDFLASH
  8. 从其他文件夹导入文件
  9. NEFU 117-素数个数的位数(素数定理)
  10. 安装天文基本包:kapteyn和pyslalib
  11. 电信光猫HG2201T超级管理员模式
  12. S变换介绍(附代码)
  13. phpQuery采集乱码问题解决方案
  14. 服务器多个网站对应多个域名,多个域名指向同一个网站怎么样设置更合理?
  15. z77主板升级nvme,迁移系统,蓝屏解决方法
  16. 基于json文件创建后端模拟接口
  17. word文档中文字字符长度不一,如何快速调整使上下行左右对齐
  18. 开源地图MapBox自定义(二):基本概念
  19. 大型多商户商城系统-功能表
  20. 限免|iOS长截图工具 滚动截屏

热门文章

  1. 服务器 ssd虚拟内存,小容量SSD用户必看,内存容量越大就越要重视虚拟内存
  2. Python中x +=1和x = x + 1的区别
  3. 解释性语言和编译型语言的差别在哪里?
  4. 微信小程序海报生成是否有高度(内存)限制
  5. c语言十格表格找最大数字,c语言格式大整理
  6. Reshape的命令应用
  7. ios移动端click切换验证码失败
  8. 2022年有哪些性价比高的蓝牙耳机?学生党蓝牙耳机推荐
  9. 习题8-2 在数组中查找指定元素
  10. 美的微晶冰箱智慧升级,满足消费者对高端智能冰箱的新诉求