什么是证据。简单。自反性。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
可以获得与自反性
相同的效果。这些战术有着不同的目标,但在这里恰好是一致的