证明从递归定义的函数返回的列表在Coq中是固定长度的

时间:2017-09-29 02:59:13

标签: coq coq-tactic

如何证明以下引理:

Require Import Coq.Lists.List.

Lemma len_seq_n : forall start n, length (seq start n)=n.

我试过

Proof.
induction n.
simpl. auto. simpl.  

此时Coq给了我

1 subgoal
start, n : nat
IHn : length (seq start n) = n
______________________________________(1/1)
S (length (seq (S start) n)) = S n

我不确定如何从那里继续。

1 个答案:

答案 0 :(得分:3)

问题是你的归纳假设不够通用。您需要以下语句:

IHn : forall start', length (seq start' n) = n

要获得此假设,只需在使用start策略对n进行归纳之前概括revert

Proof.
  intros start n.
  revert start.
  induction n.
  (* Continue as previously *)

(下一次,请提供一个完整的示例,以便我们更好地帮助您。您的问题缺少seq的定义。)