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
存在。
引理一的全部证明是
重写