在 Coq 的另一个子目标中使用一个经过验证的子目标
Using a proven subgoal in another subgoal in Coq
假设我想证明 P : A -> (B /\ C)
。在 intros. split.
之后,Coq 生成了两个子目标,我分别证明了 B
和 C
,以 A
为前提。假设我已经证明了第一个子目标并进入了第二个。有什么方法可以引入之前证明的子目标,让我在上下文中有 B
吗?
一个明显的方法是将原始定理重构为 P1 : A -> B
和 P2 : A -> C
,但如果我可以跳过它会很好,特别是对于制作紧凑的自动证明。
你可以在 split.
之前 assert B.
证明它,然后 split
使用假设证明 B
,然后继续证明 C
B
可用。
或者,您可以构建一个:
Theorem and_intro_2 :
forall A B C : Prop,
(A -> B) ->
(A -> B -> C) ->
A -> B /\ C.
Proof. firstorder. Qed.
并在开始时立即应用它。
假设我想证明 P : A -> (B /\ C)
。在 intros. split.
之后,Coq 生成了两个子目标,我分别证明了 B
和 C
,以 A
为前提。假设我已经证明了第一个子目标并进入了第二个。有什么方法可以引入之前证明的子目标,让我在上下文中有 B
吗?
一个明显的方法是将原始定理重构为 P1 : A -> B
和 P2 : A -> C
,但如果我可以跳过它会很好,特别是对于制作紧凑的自动证明。
你可以在 split.
之前 assert B.
证明它,然后 split
使用假设证明 B
,然后继续证明 C
B
可用。
或者,您可以构建一个:
Theorem and_intro_2 :
forall A B C : Prop,
(A -> B) ->
(A -> B -> C) ->
A -> B /\ C.
Proof. firstorder. Qed.
并在开始时立即应用它。