(** At this point we are still stuck because the IH concerns [open e x] instead of [e]. The result that we need is that if an index substitution has no effect for an opened term, then it has no effect for the raw term (as long as we are *not* substituting for [0], hence [S k] below). << open e x = {S k ~> u}(open e x)  -> e = {S k ~> u} e >> In other words, expanding the definition of open: << {0 ~> x}e = {S k ~> u}({0 ~> x} e)  -> e = {S k ~> u} e >> Of course, to prove this result, we must generalize [0] and [S k] to be any pair of inequal numbers to get a strong enough induction hypothesis for the [abs] case. *)

(* Specifications: *)
Lemma open_rec_lc_core : forall e j v i u,
i <> j ->
{j ~> v} e = {i ~> u} ({j ~> v} e) ->
e = {i ~> u} e.
Lemma open_rec_lc_core : forall e j v i u,
i <> j ->
{j ~> v} e = {i ~> u} ({j ~> v} e) ->
e = {i ~> u} e.