证明从递归定义的函数返回的列表在 Coq 中是固定长度的
prove that a list returned from a recursively defined function is fixed length in Coq
如何证明如下引理:
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
我不确定如何从那里继续。
问题是你的归纳假设不够普遍。您需要改为使用以下语句:
IHn : forall start', length (seq start' n) = n
为了获得这个假设,在使用 revert
策略对 n
进行归纳之前,简单地概括 start
。
Proof.
intros start n.
revert start.
induction n.
(* Continue as previously *)
(下次请提供完整的例子,以便我们更好地帮助您。您的问题缺少seq
的定义。)
如何证明如下引理:
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
我不确定如何从那里继续。
问题是你的归纳假设不够普遍。您需要改为使用以下语句:
IHn : forall start', length (seq start' n) = n
为了获得这个假设,在使用 revert
策略对 n
进行归纳之前,简单地概括 start
。
Proof.
intros start n.
revert start.
induction n.
(* Continue as previously *)
(下次请提供完整的例子,以便我们更好地帮助您。您的问题缺少seq
的定义。)