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