Section Σ1_model.
Variable (V : Type) (n : nat) (HV : V -> False).
Definition ΣP1 : fo_signature.
Let K v := if Q_dec v then true else false.
Let HK v : K v = true <-> Q v.
Let Kf x : K (vec_set_pos (fun p => f p x)) = true.
Let M' : fo_model ΣP1 (sig (fun v => K v = true)).
Variable (A : fol_form ΣP1) (HA : fol_sem M rho A).
Local Theorem bounded_model : exists (Q : vec bool n -> bool)
(M' : fo_model ΣP1 (sig (fun v => Q v = true)))
(_ : fo_model_dec M') psi,
fol_sem M' psi A.
End Σ1_model.
(* A monadic FO formula which has a model also has a model over base type X which is a decidable subtype of bool^n where n bound the number of unary predicates *)
(* Monadic FO logic with n unary rels and no function symbols has a decidable FSAT *)

Theorem FSAT_ΣP1_dec n V (A : fol_form (ΣP1 V n)) : (V -> False) -> decidable (fo_form_fin_dec_SAT A).