如何在 Coq 中的列表末尾进行归纳

he1*_*boy 3 coq coqide coq-tactic

以标准方式,我对这样的列表进行归纳

  • 批准是为了lst
  • 证明为x::lst

但我想要:

  • 批准是为了lst
  • 证明为lst ++ x::nil

x对我来说,在列表中的位置很重要。

我试图写这样的东西,但没有成功。

Bob*_*Bob 5

在这种情况下,你需要证明你自己的归纳原理。但在这里你很幸运,因为你需要的东西已经在 Coq 的标准库中了:

Require Import List.

Check rev_ind.
(*
rev_ind
     : forall (A : Type) (P : list A -> Prop),
       P nil ->
       (forall (x : A) (l : list A), P l -> P (l ++ x :: nil)) ->
       forall l : list A, P l
*)
Run Code Online (Sandbox Code Playgroud)