4 empset empset_create(void)
6 /* ensures fresh(result) /\ result' = { }; */
9 void empset_final(empset s)
12 /* ensures trashed(s); */
15 void empset_clear(empset s)
18 /* ensures s' = { }; */
21 bool empset_insert(empset s, employee e)
24 /* ensures result = ~(e \in s^) /\ s' = insert(e, s^); */
27 void empset_insertUnique(empset s, employee e)
29 /* requires ~(e \in s^); */
31 /* ensures s' = insert(e, s^); */
34 bool empset_delete(empset s, employee e)
37 /* ensures result = e \in s^ /\ s' = delete(e, s^); */
40 empset empset_union(empset s1, empset s2)
42 /* ensures result' = s1^ \U s2^ /\ fresh(result); */
45 empset empset_disjointUnion(empset s1, empset s2)
47 /* requires s1^ \I s2^ = { }; */
48 /* ensures result' = s1^ \U s2^ /\ fresh(result); */
51 void empset_intersect(empset s1, empset s2)
54 /* ensures s1' = s1^ \I s2^; */
57 int empset_size(empset s)
59 /* ensures result = size(s^); */
62 bool empset_member(employee e, empset s)
64 /* ensures result = e \in s^; */
67 bool empset_subset(empset s1, empset s2)
69 /* ensures result = s1^ \subseteq s2^; */
72 employee empset_choose(empset s)
74 /* requires s^ \neq { }; */
75 /* ensures result \in s^; */
78 char *empset_sprint(empset s)
80 /* ensures isSprint(result[]', s^) /\ fresh(result[]); */
83 void empset_initMod(void)