Module fc_head_reduction (e_invert : ext_invert_sig)
(wk: fc_weak_sig) (wf : fc_wf_sig) (sub : fc_subst_sig).
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 red1 := ext_red_one e_invert.
Set Implicit Arguments.
Set Bullet Behavior "Strict Subproofs".

(* Specifications: *)
Lemma weaken_head_reduction : forall G0 a a',
head_reduction G0 a a' ->
forall E F G, (G0 = F ++ G) -> AnnCtx (F ++ E ++ G) -> head_reduction (F ++ E ++ G) a a'.
Lemma subst_head_reduction : forall G a a',
head_reduction G a a' -> forall G1 G2 A b x,
G = G1 ++ [(x, Tm A)] ++ G2
-> AnnTyping G2 b A
-> head_reduction (map (tm_subst_tm_sort b x) G1 ++ G2)
(tm_subst_tm_tm b x a)
(tm_subst_tm_tm b x a').