Ltac one_plus_x_minus_one :=
repeat rewrite one_plus_x_minus_one_left in *;
repeat rewrite one_plus_x_minus_one_right in * by omega.
(* I tried [autorewrite with ... using omega]; it does not work. *)
(* ---------------------------------------------------------------------------- *)
(* Trivial facts. *)

(* Specifications: *)
Lemma raw_insert_zero:
forall A o (e : env A),
raw_insert 0 o e = o :: e.
Lemma raw_insert_successor:
forall A x o (e : env A),
raw_insert (S x) o e =
lookup 0 e :: raw_insert x o (tail e).
Lemma empty_eq_insert:
forall A x o (e : env A),
empty _ = insert x o e ->
False.