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

在Coq的另一个子目标中使用经验证的子目标,coq,Coq,假设我想证明p:A->(B/\C)。在介绍之后。拆分。,Coq生成两个子目标,其中我分别证明B和C,以A为前提。假设我已经证明了第一个子目标并进入了第二个子目标。是否有某种方法来引入先前已被证明的子目标,以便在上下文中使用B 一个显而易见的方法是将原始定理重构为P1:A->B和P2:A->C,但如果我可以跳过这一步,尤其是对于制作紧凑的自动证明,那就太好了。你可以在拆分之前断言B.,并证明它,然后split并使用假设证明B,然后使用B继续证明C 或者,您可以构建一个: Theorem and_i

假设我想证明
p:A->(B/\C)
。在
介绍之后。拆分。
,Coq生成两个子目标,其中我分别证明
B
C
,以
A
为前提。假设我已经证明了第一个子目标并进入了第二个子目标。是否有某种方法来引入先前已被证明的子目标,以便在上下文中使用
B


一个显而易见的方法是将原始定理重构为
P1:A->B
P2:A->C
,但如果我可以跳过这一步,尤其是对于制作紧凑的自动证明,那就太好了。

你可以
拆分之前断言B.
,并证明它,然后
split
并使用假设证明
B
,然后使用
B
继续证明
C

或者,您可以构建一个:

Theorem and_intro_2 :
  forall A B C : Prop,
    (A -> B) ->
    (A -> B -> C) ->
    A -> B /\ C.
Proof. firstorder. Qed.
并在开始时立即应用它