如何在 Coq 中使用带有假设的策略?
How to use a tactic with a hypothesis in Coq?
我是 Coq 的新手,运行 进入了死胡同。我有一个大致如下的归纳定义(我之前定义过归纳接受):
Inductive fun : accepts -> Prop :=
| fn1 : fun True
| fn2 : forall (n : nat )(A : accepts), fun A -> fun (n A).
我要证明的是:
Lemma lem_1 (A : formula) (n : nat) (h : fun (n A)) : fun A.
当然,在开始证明时我得到
A : accepts
n : nat
h : fun (n A)
============================
fun A
我花了很长时间阅读战术,试图找到某种方法将 h 插入我的 fn2 或类似的东西,但我就是找不到办法做到这一点。有人可以在这里指导我并给我一些想法吗?我也尝试过做一些事情来将 fun A 简化为 A 但我也没有成功。非常感谢您的帮助!
您似乎想证明您的 h
假设是使用 fn2
规则产生的。用 Coq 术语来说,这需要 反转 该假设。为此,您可以调用 inversion h
。应用是相反的过程:将 fn2
规则与声明 fun A
的假设相结合,得出 fun (n A)
.
我是 Coq 的新手,运行 进入了死胡同。我有一个大致如下的归纳定义(我之前定义过归纳接受):
Inductive fun : accepts -> Prop :=
| fn1 : fun True
| fn2 : forall (n : nat )(A : accepts), fun A -> fun (n A).
我要证明的是:
Lemma lem_1 (A : formula) (n : nat) (h : fun (n A)) : fun A.
当然,在开始证明时我得到
A : accepts
n : nat
h : fun (n A)
============================
fun A
我花了很长时间阅读战术,试图找到某种方法将 h 插入我的 fn2 或类似的东西,但我就是找不到办法做到这一点。有人可以在这里指导我并给我一些想法吗?我也尝试过做一些事情来将 fun A 简化为 A 但我也没有成功。非常感谢您的帮助!
您似乎想证明您的 h
假设是使用 fn2
规则产生的。用 Coq 术语来说,这需要 反转 该假设。为此,您可以调用 inversion h
。应用是相反的过程:将 fn2
规则与声明 fun A
的假设相结合,得出 fun (n A)
.