4 constant eref eref_undefined;
6 spec immutable type map;
10 eref eref_alloc(void) map m;
13 /* ensures newInd(result, m^, m'); */
16 bool eref_isDefined (eref er) map m; { }
18 void eref_free(eref er) map m;
20 /* requires er \in domain(m^); */
22 /* ensures m' = delete(m^, er); */
25 void eref_assign(eref er, employee e) map m;
27 /* requires er \in domain(m^); */
29 /* ensures m' = assign(m^, er, e); */
32 employee eref_get(eref er) map m;
34 /* requires er \in domain(m^); */
35 /* ensures result = m^[er]; */
38 bool eref_equal(eref er1, eref er2)
40 /* ensures result = (er1 = er2); */
43 void eref_initMod(void) map m; internalState;
45 modifies m, internalState;
46 /* ensures m' = new; */