src/HOL/Predicate_Compile.thy
changeset 67613 ce654b0e6d69
parent 63432 ba7901e94e7b
child 69593 3dda49e08b9d
equal deleted inserted replaced
67610:4939494ed791 67613:ce654b0e6d69
    30   Introduce a new constant for membership to allow 
    30   Introduce a new constant for membership to allow 
    31   fine-grained control in code equations. 
    31   fine-grained control in code equations. 
    32 \<close>
    32 \<close>
    33 
    33 
    34 definition contains :: "'a set => 'a => bool"
    34 definition contains :: "'a set => 'a => bool"
    35 where "contains A x \<longleftrightarrow> x : A"
    35 where "contains A x \<longleftrightarrow> x \<in> A"
    36 
    36 
    37 definition contains_pred :: "'a set => 'a => unit Predicate.pred"
    37 definition contains_pred :: "'a set => 'a => unit Predicate.pred"
    38 where "contains_pred A x = (if x : A then Predicate.single () else bot)"
    38 where "contains_pred A x = (if x \<in> A then Predicate.single () else bot)"
    39 
    39 
    40 lemma pred_of_setE:
    40 lemma pred_of_setE:
    41   assumes "Predicate.eval (pred_of_set A) x"
    41   assumes "Predicate.eval (pred_of_set A) x"
    42   obtains "contains A x"
    42   obtains "contains A x"
    43 using assms by(simp add: contains_def)
    43 using assms by(simp add: contains_def)
    50 
    50 
    51 lemma containsI: "x \<in> A ==> contains A x" 
    51 lemma containsI: "x \<in> A ==> contains A x" 
    52 by(simp add: contains_def)
    52 by(simp add: contains_def)
    53 
    53 
    54 lemma containsE: assumes "contains A x"
    54 lemma containsE: assumes "contains A x"
    55   obtains A' x' where "A = A'" "x = x'" "x : A"
    55   obtains A' x' where "A = A'" "x = x'" "x \<in> A"
    56 using assms by(simp add: contains_def)
    56 using assms by(simp add: contains_def)
    57 
    57 
    58 lemma contains_predI: "contains A x ==> Predicate.eval (contains_pred A x) ()"
    58 lemma contains_predI: "contains A x ==> Predicate.eval (contains_pred A x) ()"
    59 by(simp add: contains_pred_def contains_def)
    59 by(simp add: contains_pred_def contains_def)
    60 
    60