% @(#)$Id: AllocatedAssigned.lsl,v 1.7 1995/11/10 07:42:11 leavens Exp $
AllocatedAssigned(Loc, T): trait
assumes State, WithUnassigned(T), WidenNarrow(Loc[T], Object),
WidenNarrow(WithUnassigned[T], Value)
includes SortNames(Loc[T], TYPE, type_of for sort_of)
introduces
allocated, assigned: Loc[T], State -> Bool
asserts
\forall loc: Loc[T], st: State
allocated(loc, st)
== allocated(widen(loc), st)
/\ type_of(loc) \in types_of(widen(loc), st);
assigned(loc, st)
== allocated(loc, st)
/\ narrow(eval(widen(loc), st)) ~= unassigned;
implies
\forall loc: Loc[T], st: State
allocated(loc, st) => widen(loc) \in domain(st);
assigned(loc, st) => allocated(loc, st);
converts
assigned, allocated: Loc[T], State -> Bool
[Index]
HTML generated using lcpp2html.