如何在 Coq 中销毁 evars?

问题描述 投票:0回答:1

在以下证明脚本中:

Theorem foo : exists p, p = (1, 1).
Proof. eexists ?[p]. destruct ?p.

我们最终达到了目标:

  n, n0 : nat
  ============================
  (n, n0) = (1, 1)

有没有一种方法可以破坏

?p
,这样我们最终会得到与使用
eexists (?[p1], ?[p2]).
而不是
eexists ?[p].
时相同的目标?即:

(?p1, ?p2) = (1, 1)
coq
1个回答
0
投票

destruct <term>
将所有出现的
<term>
替换为应用于其参数(在上下文中作为变量生成)的构造函数,每个构造函数有一个目标。使用 evar,您可以通过自己实例化来选择应应用哪个构造函数,例如与
instantiate (p := (?[p1], ?[p2])).

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.