Theory Pred
section ‹Logical Connectives lifted to predicates›
theory Pred
imports Main
begin
default_sort type
type_synonym 'a predicate = "'a ⇒ bool"
definition satisfies :: "'a ⇒ 'a predicate ⇒ bool" ("_ ⊨ _" [100, 9] 8)
where "(s ⊨ P) ⟷ P s"
definition valid :: "'a predicate ⇒ bool" ("⊫ _" [9] 8)
where "(⊫ P) ⟷ (∀s. (s ⊨ P))"
definition Not :: "'a predicate ⇒ 'a predicate" ("❙¬ _" [40] 40)
where NOT_def: "Not P s ⟷ ¬ P s"
definition AND :: "'a predicate ⇒ 'a predicate ⇒ 'a predicate" (infixr "❙∧" 35)
where "(P ❙∧ Q) s ⟷ P s ∧ Q s"
definition OR :: "'a predicate ⇒ 'a predicate ⇒ 'a predicate" (infixr "❙∨" 30)
where "(P ❙∨ Q) s ⟷ P s ∨ Q s"
definition IMPLIES :: "'a predicate ⇒ 'a predicate ⇒ 'a predicate" (infixr "❙⟶" 25)
where "(P ❙⟶ Q) s ⟷ P s ⟶ Q s"
end