(** - Some stuff I thought would be useful some day but wasn't *)

Definition before (N N' : nat) (i : fin N) (j : fin N') := index i < index j.Definition after (N N' : nat) (i : fin N) (j : fin N') := index i > index j.Definition notbefore (N N' : nat) (i : fin N) (j : fin N') :=
  index i = index j \/ after i j.Definition notafter (N N' : nat) (i : fin N) (j : fin N') :=
  before i j \/ index i = index j.

Lemma predicate_split_seq_after_notafter : forall (A : Setoid) (n : nat) (v : seq n A) (i : fin n) (P : Predicate A), (forall j : fin n, after j i -> Pred_fun P (v j)) -> (forall j : fin n, notafter j i -> Pred_fun P (v j)) -> forall j : fin n, Pred_fun P (v j).