在Coq的另一个子目标中使用经证实的子目标

时间:2015-05-07 21:05:31

标签: coq

让我们说我要证明P : A -> (B /\ C)。在intros. split.之后,Coq生成两个子目标,我分别证明BC,并以A为前提。假设我已经证明了第一个子目标并且进入了第二个子目标。有没有办法介绍以前证明的子目标,以便我在上下文中有B

一种显而易见的方法是将原始定理重构为P1 : A -> BP2 : A -> C,但如果我可以跳过这一点,特别是对于制作紧凑的自动校样,那将是很好的。

1 个答案:

答案 0 :(得分:3)

您可以在assert B.之前split.进行证明,然后split并使用该假设证明B,并继续使用{C来证明B {1}}可用。

或者,您可以构建一个:

Theorem and_intro_2 :
  forall A B C : Prop,
    (A -> B) ->
    (A -> B -> C) ->
    A -> B /\ C.
Proof. firstorder. Qed.

并在开始时立即应用它。