我读到影响是函数。但是我很难理解上述页面中给出的示例:
蕴涵 P → Q 的证明项是将 P 的证据作为输入并产生 Q 的证据作为其输出的函数。
引理 silly_implication : (1 + 1) = 2 → 0 × 3 = 0。证明。介绍 H. 自反性。Qed。
我们可以看到,上述引理的证明项确实是一个函数:
打印 silly_implication。(* ===> silly_implication = fun _ : 1 + 1 = 2 => eq_refl : 1 + 1 = 2 -> 0 * 3 = 0 *)
确实,它是一个函数。但它的类型对我来说不合适。从我的阅读来看,证明项P -> Q
应该是一个函数,并带有Q
作为输出的证据。那么, 的输出 (1+1) = 2 -> 0*3 = 0
应该是0*3 = 0
, 单独的证据,对吗?
但是上面的 Coq 打印显示函数 image 是eq_refl : 1 + 1 = 2 -> 0 * 3 = 0
,而不是eq_refl: 0 * 3 = 0
。我不明白为什么假设1 + 1 = 2
应该出现在输出中。谁能帮忙解释这里发生了什么?
谢谢。