eref.lcl
eref.lcl
imports employee, <stdio>;
immutable type eref;
constant eref eref_undefined;
spec immutable type map;
spec map m;
eref eref_alloc(void) map m; FILE *stderr;
{
modifies m, *stderr^;
/* ensures newInd(result, m^, m'); */
}
bool eref_isDefined (eref er) map m; { }
void eref_free(eref er) map m;
{
/* requires er \in domain(m^); */
modifies m;
/* ensures m' = delete(m^, er); */
}
void eref_assign(eref er, employee e) map m;
{
/* requires er \in domain(m^); */
modifies m;
/* ensures m' = assign(m^, er, e); */
}
employee eref_get(eref er) map m;
{
/* requires er \in domain(m^); */
/* ensures result = m^[er]; */
}
bool eref_equal(eref er1, eref er2)
{
/* ensures result = (er1 = er2); */
}
void eref_initMod(void) map m; FILE *stderr; internalState;
{
modifies m, internalState, *stderr^;
/* ensures m' = new; */
}
David Evans
University of Virginia, Computer Science
evans@cs.virginia.edu