(** To make contexts easy to read, instead of building them from [nil] and [cons], we prefer to build them from the following components: - [nil]: The empty list. - [one]: Lists consisting of exactly one item. - [++]:  List append. *)
(** The simpl_env tactic actually puts lists built from only nil, one and [++] into a "normal form". This process reassociates all appends to the right, removes extraneous nils and converts cons to singleton lists with an append. *)
(* /FULL *)

(* Specifications: *)
Lemma simpl_env_demo : forall (x y:atom) (T1 T2:typ) (E F:ctx),
([(x, T1)] ++ nil) ++ (y,T2) :: (nil ++ E) ++ F =
[(x,T1)] ++ [(y, T2)] ++ E ++ F.