Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
什么是证据。简单。自反性。Qed。你的意思是Coq?_Coq - Fatal编程技术网

什么是证据。简单。自反性。Qed。你的意思是Coq?

什么是证据。简单。自反性。Qed。你的意思是Coq?,coq,Coq,我正在读《软件基础》一书,一开始就陷入了困境 作者定义了布尔类型和常见操作: Inductive bool: Type := | true | false. Definition orb (b1: bool) (b2: bool) : bool := match b1 with | true => true | false => b2 end. 假设我们想证明or函数的正确性。 作者写了一个测试,然后是一个证明: Example test_orb1

我正在读《软件基础》一书,一开始就陷入了困境

作者定义了布尔类型和常见操作:

Inductive bool: Type :=
  | true 
  | false.

Definition orb (b1: bool) (b2: bool) : bool :=
  match b1 with
  | true => true
  | false => b2
  end.
  
假设我们想证明or函数的正确性。 作者写了一个测试,然后是一个证明:

Example test_orb1: (orb true false) = true.
Proof. simpl. reflexivity. Qed.

有人能给我解释一下是什么吗。反身性意味着什么?还有其他方法可以证明这个简单的测试吗?

siml
是一种评估目标的策略。在您的情况下,执行后,目标将保留为
true=true
reflectivity
是一种战术,它以
x=x
的形式(最简单的形式)实现目标。它在引擎盖下的作用是提供证明术语
eq_refl:x=x
,作为当前证明义务的解决方案

现在,有许多方法可以实现这一点,最终将产生相同的(相当琐碎的)证明
eq\u refl
(尝试执行
Print test\u orb1.
)。首先,不需要
siml
操作,因为在应用术语时(特别是在调用
自反性
时),Coq将进行一些计算。其次,通过调用
构造函数
应用eq\u refl
优化eq\u refl
可以获得与
自反性
相同的效果。这些战术有着不同的目标,但在这里恰好是一致的