Coq 如何将引理应用于2假设
我们得到这个:Coq 如何将引理应用于2假设,coq,logical-foundations,Coq,Logical Foundations,我们得到这个: Theorem ev_plus_plus : forall n m p, even (n+m) -> even (n+p) -> even (m+p). Proof. intros n m p Hnm Hnp. 此外,我们还有一个以前证明过的定理: 1 subgoal (ID 189) n, m, p : nat Hnm : even (n + m) Hnp : even (n + p) ========================
Theorem ev_plus_plus : forall n m p,
even (n+m) -> even (n+p) -> even (m+p).
Proof.
intros n m p Hnm Hnp.
此外,我们还有一个以前证明过的定理:
1 subgoal (ID 189)
n, m, p : nat
Hnm : even (n + m)
Hnp : even (n + p)
============================
even (m + p)
我们知道(n+m)
是偶数,(n+p)
是偶数。
如何通过将ev_总和应用于Hnm和Hnp,在上下文中创建新假设:
ev_sum
: forall n m : nat, even n -> even m -> even (n + m)
?对此,您有多种选择。 您可以像这样使用
防姿势
:
Hsum: even((n+m) + (n+p))
它会满足你的期望。
它允许您给出一个术语并将其作为假设添加
另一个选项是使用eapply。。。在
中。
比如你能做什么
pose proof (ev_sum _ _ Hnm Hnp) as Hsum.
然后你必须在其中一个子目标中给出它。eapply更糟糕,它创建了第二个子目标来证明。是的。但在某些情况下,它仍然有用。:)您也可以通过(自动使用ev_sum)执行
assert(Hsum:偶数((n+m)+(n+p))。
当然可以,但这样就失去了apply
的所有优点,您不必给出类型。
eapply ev_sum in Hnm.