如何复制Coq中的假设?

时间:2014-12-07 15:34:32

标签: coq

在证明期间,我遇到了一个假设H。我有lemmas:H -> AH -> B

如何复制H以推断出两个假设AB

编辑: 更确切地说,我有:

lemma l1: X -> A.
lemma l2: X -> B.

1 subgoals, subgoal 1 (ID: 42)
H: X
=========
Y

但是,我想得到:

1 subgoals, subgoal 1 (ID: 42)
H1: A
H2: B
=========
Y

2 个答案:

答案 0 :(得分:6)

如果您绝对需要按照建议多次使用假设,则可以使用assert这样的前向推理策略,而不必从上下文中清除它,例如

assert (HA := l1 H).
assert (HB := l2 H).

您也可以执行assert (H' := H).之类的操作,将H明确复制到H',尽管您通常可以采用更直接的方式来获取所需内容。

答案 1 :(得分:1)

为什么你认为你需要复制这个假设?如果您在证明中使用它,它将无法使用。见这个例子:

Parameter A B H : Type.
Parameter lemma1 : H -> A.
Parameter lemma2 : H -> B.

Goal H -> A * B.
intro; split; [apply lemma1 | apply lemma2]; assumption.
Qed.