coq - 如何将 rhs 从 coq 中的相等性中拉出来

标签 coq coq-tactic

如果我有以下内容:

H : some complicated expression = some other complicated expression

我想捕获

u := some other complicated expression

无需将其硬编码到我的证明中(即使用pose)

在 LTac 中是否有一种干净的方法可以做到这一点?

最佳答案

我确信还有其他 ltac 方法可以做到这一点,就我而言,我更喜欢使用 SSReflect 的上下文模式语言来做到这一点。 (您需要安装插件或使用包含 SSReflect 的 Coq >= 8.7):

(* ce_i = complicated expression i *)
Lemma example T (ce_1 ce_2 : T) (H : ce_1 = ce_2) : False.
set u := (X in _ = X) in H.

最终目标:

  T : Type
  ce_1, ce_2 : T
  u := ce_2 : T
  H : ce_1 = u
  ============================
  False

通常您可以越来越细化模式,直到获得相当稳定的匹配。

请注意,这恰好是 SSReflect 手册中第 8.3 节“上下文模式”的第一个示例。

关于coq - 如何将 rhs 从 coq 中的相等性中拉出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44338252/

相关文章:

coq - Inductive 和 CoInduction 之间的唯一区别是对其使用的格式良好性检查(在 Coq 中)吗?

coq - 我可以引入健全的构造函数等价吗?

coq - 如何同时看待多个目标?

coq - Coq 中的析取三段论策略?

coq - 如何在 Coq 中添加到等式的两边

syntax - 使用 Coq 等式定义

coq - 相当于 `remember (f x) as y eqn:H; clear H; clear x` ?

coq - Coq 中的逻辑(莱布尼茨)相等和局部定义有什么区别?

coq - Eta转换策略?

theory - 了解 Coq 中的 "well founded"证明