Section FirstOrderDecidable.
Variable (X: Const).
Implicit Types (Gamma: ctx) (n: nat) (sigma tau: fin -> exp X) (s t: exp X)
(E: list (exp X * exp X)).
Let free (k: nat) (x: nat) := x >= k.
Instance dec_free k: Dec1 (free k).

Lemma FO_subst_equiv_eq Delta sigma Gamma (s t: exp X) A:
(Delta ⊩(1) sigma : Gamma) -> (forall x, normal (sigma x)) ->
normal s -> normal t -> (Gamma ⊢(1) s : A) -> (Gamma ⊢(1) t : A) ->
sigma • s ≡ sigma • t -> sigma • s = sigma • t.