proposition: Theorem rev_ind : forall P:list A -> Prop, P [] -> (forall (x:A) (l:list A), P l -> P (l ++ [x])) -> forall l:list A, P l.
proof: Proof. intros P ? ? l. rewrite <- (rev_involutive l). apply (rev_list_ind P); cbn; auto. Qed.
imports: PeanoNat