Section Σ2_ΣSSn1_enc_sound.
Variable (n : nat) (A : fol_form Σ2) (X : Type) (M2 : fo_model Σ2 X) (φ : nat -> X)
(HA : fol_sem M2 φ A).
Let Y := (bool + X + X*X)%type.
Let i := S (lmax (fol_vars A)).
Let d : Y := inl (inl true).
Let MSSn1 : fo_model (Σn1 (S (S n))) Y.
Let phi_x j : In j (fol_vars A) -> ψ j = inl (inr (φ j)).
Let R x (y : Y) := y = inl (inr x).
Let sem_Σ2_ΣSSn1_enc : fol_sem MSSn1 ψ (Σ2_ΣSSn1_enc n A).
Hypothesis (HX : finite_t X)
(M2_dec : fo_model_dec M2).
Hint Resolve finite_t_sum finite_t_bool finite_t_prod : core.

Theorem Σ2_ΣSSn1_enc_sound : fo_form_fin_dec_SAT (Σ2_ΣSSn1_enc n A).