Theory HOL_Alignment_Predicates
subsection ‹Alignment With Predicate Definitions from HOL›
theory HOL_Alignment_Predicates
  imports
    Main
    HOL_Mem_Of
    Predicates
begin
named_theorems HOL_predicate_alignment
subparagraph ‹Quantifiers›
adhoc_overloading ball ⇌ Ball
lemma Ball_eq_ball_pred [HOL_predicate_alignment]: "∀⇘A⇙ = ∀⇘mem_of A⇙" by auto
lemma Ball_eq_ball_pred_uhint [uhint]:
  assumes "P ≡ mem_of A"
  shows "∀⇘A⇙ = ∀⇘P⇙"
  using assms by (simp add: Ball_eq_ball_pred)
lemma Ball_iff_ball_pred [HOL_predicate_alignment]: "(∀x : A. Q x) ⟷ (∀x : mem_of A. Q x)"
  by (simp add: Ball_eq_ball_pred)
adhoc_overloading bex ⇌ Bex
lemma Bex_eq_bex_pred [HOL_predicate_alignment]: "∃⇘A⇙ = ∃⇘mem_of A⇙" by fast
lemma Bex_eq_bex_pred_uhint [uhint]:
  assumes "P ≡ mem_of A"
  shows "∃⇘A⇙ = ∃⇘P⇙"
  using assms by (simp add: Bex_eq_bex_pred)
lemma Bex_iff_bex_pred [HOL_predicate_alignment]: "(∃x : A. Q x) ⟷ (∃x : mem_of A. Q x)"
  by (simp add: Bex_eq_bex_pred)
end