src/HOL/HOLCF/IOA/Pred.thy
changeset 62116 bc178c0fe1a1
parent 62008 cbedaddc9351
child 62192 bdaa0eb0fc74
equal deleted inserted replaced
62115:57895801cb57 62116:bc178c0fe1a1
    10 
    10 
    11 default_sort type
    11 default_sort type
    12 
    12 
    13 type_synonym 'a predicate = "'a \<Rightarrow> bool"
    13 type_synonym 'a predicate = "'a \<Rightarrow> bool"
    14 
    14 
    15 definition satisfies :: "'a \<Rightarrow> 'a predicate \<Rightarrow> bool"  ("_ \<Turnstile> _" [100,9] 8)
    15 definition satisfies :: "'a \<Rightarrow> 'a predicate \<Rightarrow> bool"  ("_ \<Turnstile> _" [100, 9] 8)
    16   where "(s \<Turnstile> P) \<longleftrightarrow> P s"
    16   where "(s \<Turnstile> P) \<longleftrightarrow> P s"
    17 
    17 
    18 definition valid :: "'a predicate \<Rightarrow> bool"  (*  ("|-") *)
    18 definition valid :: "'a predicate \<Rightarrow> bool"  (*  ("|-") *)
    19   where "valid P \<longleftrightarrow> (\<forall>s. (s \<Turnstile> P))"
    19   where "valid P \<longleftrightarrow> (\<forall>s. (s \<Turnstile> P))"
    20 
    20 
    21 definition NOT :: "'a predicate \<Rightarrow> 'a predicate"  ("\<^bold>\<not> _" [40] 40)
    21 definition NOT :: "'a predicate \<Rightarrow> 'a predicate"  ("\<^bold>\<not> _" [40] 40)
    22   where "NOT P s \<longleftrightarrow> ~ (P s)"
    22   where "NOT P s \<longleftrightarrow> \<not> P s"
    23 
    23 
    24 definition AND :: "'a predicate \<Rightarrow> 'a predicate \<Rightarrow> 'a predicate"  (infixr "\<^bold>\<and>" 35)
    24 definition AND :: "'a predicate \<Rightarrow> 'a predicate \<Rightarrow> 'a predicate"  (infixr "\<^bold>\<and>" 35)
    25   where "(P \<^bold>\<and> Q) s \<longleftrightarrow> P s \<and> Q s"
    25   where "(P \<^bold>\<and> Q) s \<longleftrightarrow> P s \<and> Q s"
    26 
    26 
    27 definition OR :: "'a predicate \<Rightarrow> 'a predicate \<Rightarrow> 'a predicate"  (infixr "\<^bold>\<or>" 30)
    27 definition OR :: "'a predicate \<Rightarrow> 'a predicate \<Rightarrow> 'a predicate"  (infixr "\<^bold>\<or>" 30)