Section RESTRICT_STRUCTURE.
#[local] Existing Instance V.vec_isSetoid.
#[local]
Instance restrict_structure (STRUCTURE : isStructureOf L') : isStructureOf L :=
{ domain_of_discourse := STRUCTURE.(domain_of_discourse)
; equation_interpret := STRUCTURE.(equation_interpret)
; function_interpret (f : L.(function_symbols)) := STRUCTURE.(function_interpret) f
; constant_interpret (c : L.(constant_symbols)) := STRUCTURE.(constant_interpret) (inl c)
; relation_interpret (R : L.(relation_symbols)) := STRUCTURE.(relation_interpret) R
; domain_is_nonempty := STRUCTURE.(domain_is_nonempty)
; function_interpret_preserves_eqProp := STRUCTURE.(function_interpret_preserves_eqProp)
; relation_interpret_preserves_eqProp := STRUCTURE.(relation_interpret_preserves_eqProp)
}.

Lemma restrict_structure_frm (STRUCTURE : isStructureOf L') (env : ivar -> domain_of_discourse) (p : frm L)
: interpret_frm STRUCTURE env (embed_frm p) == interpret_frm (restrict_structure STRUCTURE) env p.