Coq 向量:ta n=ta(n+;0)?
我想要下面的平凡引理Coq 向量:ta n=ta(n+;0)?,coq,Coq,我想要下面的平凡引理 Require Import Coq.Vectors.Vector. Lemma one (A:Type)(n:nat): t A n = t A (n+0). Proof. induction n. reflexivity. Abort. 如何将(n+0)简化为n?当您想要证明复杂结构之间的相等时,通常可以使用f_equal策略来证明子项相等。例如,在这里它将tan=tan(n+0)转换为n=n+0。 一旦你有了这个,你可以使用非常有用的lia策略来处理自然数上的等式
Require Import Coq.Vectors.Vector.
Lemma one (A:Type)(n:nat): t A n = t A (n+0).
Proof.
induction n. reflexivity.
Abort.
如何将(n+0)简化为n?当您想要证明复杂结构之间的相等时,通常可以使用
f_equal
策略来证明子项相等。例如,在这里它将tan=tan(n+0)
转换为n=n+0
。
一旦你有了这个,你可以使用非常有用的lia
策略来处理自然数上的等式
Require Import Coq.Vectors.Vector.
From Coq Require Import Lia.
Lemma one (A:Type)(n:nat): t A n = t A (n+0).
Proof.
f_equal. lia.
Qed.
(请注意,您必须要求Lia
模块使用Lia
)
在某些情况下,您不会直接证明等式,因此用n
替换n+0
可能会很有用:
Lemma one (A:Type)(n:nat): t A n = t A (n+0).
Proof.
(* f_equal. lia. *)
replace (n + 0) with n by lia.
reflexivity.
Qed.
这个引理在标准库中作为
plus\n\u O
存在。引理一的全部证明是重写