The fo_simp tactic #
fo_simp simplifies with the simp set fo_realize, which unfolds the realization of first-order
formulas to propositions about the structure they are evaluated in. This file tags Mathlib's
realization lemmas, and the propositional normalizations they need, with fo_realize, and
defines fo_simp. Lemmas about the formulas, projection formulas and interpreted structures of
this library are tagged where they are proved.
It depends only on Mathlib's semantics of first-order logic, so that the modules of
CslibFrontier.Logics below CslibFrontier.Tactic.FirstOrder can import it to prove realization
lemmas. CslibFrontier.Tactic.FirstOrder re-exports it, together with the simprocs that unfold
concrete interpretations and projections.
Main definitions #
fo_simp:simp onlywith the simp setfo_realize.
fo_simp simplifies with the simp set fo_realize, unfolding the realization of first-order
formulas, projection formulas and the relations of interpreted structures, and, where
CslibFrontier.Tactic.FirstOrder is imported, the definitions of concrete interpretations and
projections. fo_simp (config := c) (disch := tac) [h₁, h₂] at l passes a configuration,
discharger, extra simp lemmas and a location through, as for simp only.