我正在阅读 ssreflect 教程,内容如下:
下面,我们通过将命题陈述翻译成它的布尔对应物来证明……,这很容易用蛮力证明。这种证明技术称为反射。Ssreflect 的设计允许并且 ssreflect 的精神建议广泛使用这种技术。
这(反射)是否意味着 ssreflect 假定排中(forall A:Prop, A \/ ~A
)?
看起来确实如此,因为所有布尔值都满足 EM 如果是这样,那么对于遵循 ssreflect 样式来说,这将是一个很大的假设。
另外,我不太了解它下面的“本地”或“小规模”部分:
由于它通常在本地用于有效地处理小部分证明(而不是在整体证明结构中使用),因此这称为小规模反射,因此称为 ssreflect。
小部分与整体证明结构是什么意思。这是否意味着我们有时可以在本地假设 EM 而不会造成任何伤害,并且通常不使用 EM,或者这里的 local 是否意味着其他东西?
另外,我在 Coq 方面经验不足,不太明白这种“蛮力”风格在“布尔对应物”(主要基于case
我目前所读到的分析)如何比普通的 Coq 方式更有效。对我来说,蛮力不是很直观,也不容易事先猜到,直到你看到结果。
有什么具体的例子来说明这里的效率吗?