equal
deleted
inserted
replaced
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 |