程序验证(1)- 简介
参考: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)- 简介相关推荐
- [转载]SQL Server 2005 Data Mining简介
简介 企业均在尝试分析其数据时都面临若干问题.通常,并不缺乏数据.事实上,很多企业感觉到他们被数据淹没了:他们没有办法完全利用所有的数据,将其变成信息.为了处理这方面的问题,开发了数据仓库技术, ...
- Windows 生物统计框架结构简介(WBF) (指纹识别技术)
指纹识别技术在今天已经得到了越来越多的应用.在很多中.高端计算机中指纹识别设备已经成为了标配. 我发现很多计算机的指纹识别设备是闲置的,还有些设备虽然应用了,但是并没有得到正确的应用. 在前天下午.又 ...
- [INS-30131] 执行安装程序验证所需的初始设置失败.
Oracle安装时候错误: [INS-30131] 执行安装程序验证所需的初始设置失败. 无法从节点 "win7lhr" 检索 exectask 的版本 解决: 方法一: 控制面板 ...
- Flutter --- Dart简介
一.简介 由Google主导开发,于2011年10月公开.它的开发团队由Google Chrome浏览器V8引擎团队的领导者拉尔斯·巴克主持,目标在于成为下一代结构化Web开发语言.类似JavaScr ...
- etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理
1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...
- Docker学习(一)-----Docker简介与安装
一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...
- 【Spring】框架简介
[Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...
- TensorRT简介
TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...
- 谷粒商城学习笔记——第一期:项目简介
一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...
最新文章
- Mongodb 基本操作
- C++语言之可重载运算符/不可重载运算符
- 二分类吸引子,排斥子,鞍点和反鞍点数据汇总
- 股权分配中的三种定时炸弹
- python变量和运算符
- p20怎么用android auto,奔驰23P/P20驾驶辅助系统到底有哪些功能,怎么使用?
- 关于SRAM,DRAM,SDRAM,以及NORFLASH,NANDFLASH
- 从其他文件夹导入文件
- NEFU 117-素数个数的位数(素数定理)
- 安装天文基本包:kapteyn和pyslalib
- 电信光猫HG2201T超级管理员模式
- S变换介绍(附代码)
- phpQuery采集乱码问题解决方案
- 服务器多个网站对应多个域名,多个域名指向同一个网站怎么样设置更合理?
- z77主板升级nvme,迁移系统,蓝屏解决方法
- 基于json文件创建后端模拟接口
- word文档中文字字符长度不一,如何快速调整使上下行左右对齐
- 开源地图MapBox自定义(二):基本概念
- 大型多商户商城系统-功能表
- 限免|iOS长截图工具 滚动截屏