Section EncodingLemmas.
Variable (C: list X) (n: nat).
Hypothesis (O: ord' (map (ctype X) C) < n).
Global Instance enc_proper:
Proper (equiv (@step X) ++> equiv (@step Y)) (enc_term C).
Global Instance inv_proper:
Proper (equiv (@step Y) ++> equiv (@step X)) (inv_term C).

Lemma enc_subst_term_reduce tau s:
(forall x c, c ∈ consts (tau x) -> R' c = None -> c ∈ C) ->
(forall x, x ∈ consts s -> R' x = None -> x ∈ C) ->
enc_subst C tau • enc_term C s >* enc_term C (tau • s).