Coq 如何增加列表中的标题

Coq 如何增加列表中的标题,coq,Coq,我有一个自然数列表,其中有多个零。我 要将第一个零替换为一,第二个零替换为二,第三个零吗 零加三,以此类推,而列表的其余部分应保持不变。 此函数获取自然数列表,然后替换零 有一个,但它不会增加它。有可能增加吗 递归调用之前的头?在处理此类事情时,您需要概括1。 与其说我想用1替换第一个0,然后用2等等。, 你说,我想用k替换第一个0,用k+1替换第二个,依此类推 Fixpoint nonzeros (l:natlist) : natlist := match l with

我有一个自然数列表,其中有多个零。我 要将第一个零替换为一,第二个零替换为二,第三个零吗 零加三,以此类推,而列表的其余部分应保持不变。 此函数获取自然数列表,然后替换零 有一个,但它不会增加它。有可能增加吗
递归调用之前的头?

在处理此类事情时,您需要概括1。 与其说我想用1替换第一个0,然后用2等等。, 你说,我想用k替换第一个0,用k+1替换第二个,依此类推

Fixpoint nonzeros (l:natlist) : natlist :=
      match l with
      | nil => nil
      | 0 :: t => 1::nonzeros t
      | h :: t => h :: nonzeros t
     end.
那么您想要的函数是从1开始的函数:


在处理递归函数中的偏移量时,您经常会做这种事情。

在处理这种事情时,您需要推广1。 与其说我想用1替换第一个0,然后用2等等。, 你说,我想用k替换第一个0,用k+1替换第二个,依此类推

Fixpoint nonzeros (l:natlist) : natlist :=
      match l with
      | nil => nil
      | 0 :: t => 1::nonzeros t
      | h :: t => h :: nonzeros t
     end.
那么您想要的函数是从1开始的函数:


在处理递归函数中的偏移量时,您经常会这样做。

为什么要使用实验函数命令?它需要FunInd模块。修正点就足够了。谢谢你,更改ArgumentsHanks@user4035的顺序后代码就可以工作了,这是一个打字错误!为什么使用实验函数命令?它需要FunInd模块。修正点就足够了。谢谢你,更改ArgumentsHanks@user4035的顺序后代码就可以工作了,这是一个打字错误!
Definition nonzeroes := nonzeroes_k 1.