【发布时间】:2018-04-30 08:57:45
【问题描述】:
我对 Coq 很陌生,现在我一直在试图用一个简单的定理来理解 Coq 如何“推理”:
Theorem andb_true_elim2 : forall b c : bool,
andb b c = true -> c = true.
我认为证明只是:
Proof.
intros b c.
destruct c.
- destruct b.
+ reflexivity.
+ reflexivity.
- destruct b.
+ reflexivity.
+ reflexivity.
Qed.
但它失败了:
In environtment
H: true && false = true
Unable to unify "true" with "false"
子目标失败是第三个reflexivity,其中c 是false,b 是true:
1 subgoal
______________________________________(1/1)
true && false = true -> false = true
这是为什么呢?不就相当于一个暗示吗?
true && (false = true) -> (false = true)
true && false -> false
false -> false
true
【问题讨论】:
标签: coq theorem-proving