我对Coq并不陌生,我正在尝试证明以下引理(使用Reals库):
forall (An : nat -> R) (a : R), Un_cv An a -> Un_cv (fun i : nat => An i - a) 0.
现在,当我尝试找到合适的N使得所有n> = N的序列收敛时,我会陷入困境。我知道如何手动操作,但不知道如何将其编程到Coq中。
到目前为止,这是我的证明:
Proof.
intros An a A_cv.
unfold Un_cv. unfold Un_cv in A_cv.
intros eps eps_pos.
unfold R_dist. unfold R_dist in A_cv.
我还有:
1 subgoal
An : nat -> R
a : R
A_cv : forall eps : R,
eps > 0 -> exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (An n - a) < eps
eps : R
eps_pos : eps > 0
______________________________________(1/1)
exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (An n - a - 0) < eps
问题是我不知道如何摆脱“存在的N”。
这甚至可能吗?如果是的话,有人可以帮助我吗?
谢谢!
答案 0 :(得分:1)
通常,要消除coq中的exists N
,您需要使用一个术语实例化它。如果您要手工编写此代码,则可能会写到“ An
收敛后,N
就这样了……”,然后使用{{1} }。
要在Coq中执行此操作,您将需要在N
上使用destruct
策略。拥有此A_cv
后,您就可以使用它实例化并按您期望的方式继续。
充分证据供参考:
N