Theory Pred

(*  Title:      HOL/HOLCF/IOA/Pred.thy
    Author:     Olaf Müller
*)

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