Require Export FcEtt.imports.
Require Export FcEtt.tactics.
Require Export FcEtt.ett_ott.
Require Export FcEtt.ett_inf.
Require Export FcEtt.ett_ind.
Require Export FcEtt.ett_par.
Require Export FcEtt.erase_syntax.
Module ext_red_one (invert : ext_invert_sig).
Set Implicit Arguments.
Set Bullet Behavior "Strict Subproofs".

(* Specifications: *)
Lemma reduction_in_one_lc : forall a a', reduction_in_one a a' -> lc_tm a -> lc_tm a'.
Ltac subst_helper x x0 b0 :=
replace (a_Var_f x) with (tm_subst_tm_tm b0 x0 (a_Var_f x));
[idtac| rewrite tm_subst_tm_tm_var_neq; auto];
replace (g_Var_f x) with (tm_subst_tm_co b0 x0 (g_Var_f x));
[idtac| simpl; auto];
try (rewrite <- tm_subst_tm_tm_open_tm_wrt_co; eauto);
try (rewrite <- tm_subst_tm_tm_open_tm_wrt_co; eauto);
try (rewrite <- tm_subst_tm_tm_open_tm_wrt_tm; eauto);
try (rewrite <- tm_subst_tm_tm_open_tm_wrt_tm; eauto);
eauto using tm_subst_tm_tm_lc_tm.