我正在阅读Coq(8.5p1)参考手册,
介绍via(p1& ...& pn)是介绍途径的捷径 (P1,(...(...,PN)...));它期望假设是一系列的 右联想二元归纳构造函数,如conj或 ex_intro;例如,类型为A /的假设(存在x,B / \ C / \ D) 可以通过模式(a& x& b& c& d);
引入
试着测试一下,我做了:
Goal forall A B C D: Prop, A/\(exists x:nat, B/\C/\D) -> D.
intros (a & x & b & c & d).
但是Coq告诉我:
错误:不是归纳产品。
我对其他一些变体也有同样的错误,例如没有-> D
的变种。
有人可以解释一下正确的用法(希望有用的例子)吗?
答案 0 :(得分:3)
由于您的目标始于forall A B C D: Prop,
,因此您需要首先介绍A B C D
:
intros A B C D (a & x & b & c & d).
我认为引入这种语法是为了摆脱嵌套的方括号,它可以用于在引入阶段进行解构。比较以下两个证明:
Goal forall A B C D: Prop,
A /\ (exists x:nat, B /\ C /\ D) -> D.
intros A B C D (_ & _ & _ & _ & d). assumption. Qed.
Goal forall A B C D: Prop,
A /\ (exists x:nat, B /\ C /\ D) -> D.
intros A B C D [_ [_ [_ [_ d]]]]. assumption. Qed.
我认为第一个眼睛更容易。