Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coq&x27的验证技术;s内核_Coq - Fatal编程技术网

Coq&x27的验证技术;s内核

Coq&x27的验证技术;s内核,coq,Coq,Isabelle将其内核证明能力建立在分辨率和高阶统一的基础上 Coq核是如何证明定理的 问题从阅读保尔森的“一般定理证明器的基础”开始: 作为类型的命题可能会占用过多的空间;那么,对于高阶逻辑,什么将取代休伊特的统一程序呢 在大多数证明程序中有两种技术:“证明”部分(负责构建证明,因为这对用户来说太单调了)和“检查”部分(负责验证证明格式正确且与给定的定理语句匹配)。在Isabelle和Coq中,内核只负责“检查”部分 在Coq的情况下,命题作为类型范式确实用于检查证明。换句话说,证明是归纳构

Isabelle将其内核证明能力建立在分辨率和高阶统一的基础上

Coq核是如何证明定理的

问题从阅读保尔森的“一般定理证明器的基础”开始:

作为类型的命题可能会占用过多的空间;那么,对于高阶逻辑,什么将取代休伊特的统一程序呢


在大多数证明程序中有两种技术:“证明”部分(负责构建证明,因为这对用户来说太单调了)和“检查”部分(负责验证证明格式正确且与给定的定理语句匹配)。在Isabelle和Coq中,内核只负责“检查”部分


在Coq的情况下,命题作为类型范式确实用于检查证明。换句话说,证明是归纳构造演算(CIC)中的一个lambda术语,其类型与被视为一种类型的定理语句相比较。

在大多数证明中有两种技术:“证明”部分(负责建立证明,因为这对用户来说往往过于繁琐)和“检查”部分(负责验证证明格式是否正确,是否与给定的定理语句匹配)。在Isabelle和Coq中,内核只负责“检查”部分

在Coq的例子中,命题作为类型范式确实用于检查证明。换句话说,证明是归纳构造演算(CIC)的一个lambda项,其类型与被视为类型的定理陈述相比较

Coq核是如何证明定理的

如上所述,定理不是由Coq内核证明的,只是经过检查

这种检查通常通过类型检查来完成:如果术语是应用程序,则(递归地)检查参数是否具有正确的类型,以及函数返回类型是否与类型匹配具有type
nat
,您必须检查
plus
具有type
nat->nat->nat
f
具有type
A->nat
A
具有type
nat
b
具有type
A

证明必须由用户构造。证明本身是一个lambda项。定理命题是lambda项的类型

因为可能很难直接创建正确的lambda术语,Coq不会强迫用户一次性编写整个术语。相反,用户可以在术语中留下“漏洞”供以后填充,可以手动或使用
战术
。战术是尝试填充一段证据的小程序(可能是正确的,也可能不是正确的…)

一旦整个lambda项被构造出来,Coq就会通过检查lambda项是否真的具有人们想要证明的命题类型来检查证明

Coq核是如何证明定理的

如上所述,定理不是由Coq内核证明的,只是经过检查

这种检查通常通过类型检查来完成:如果术语是应用程序,则(递归地)检查参数是否具有正确的类型,以及函数返回类型是否与类型匹配
具有type
nat
,您必须检查
plus
具有type
nat->nat->nat
f
具有type
A->nat
A
具有type
nat
b
具有type
A

证明必须由用户构造。证明本身是一个lambda项。定理命题是lambda项的类型

因为可能很难直接创建正确的lambda术语,Coq不会强迫用户一次性编写整个术语。相反,用户可以在术语中留下“漏洞”供以后填充,可以手动或使用
战术
。战术是尝试填充一段证据的小程序(可能是正确的,也可能不是正确的…)

一旦整个lambda项被构造出来,Coq就会通过检查lambda项是否真的具有人们想要证明的命题类型来检查证明