% @(#)$Id: State_Updates.lsl,v 1.4 1997/02/13 00:21:17 leavens Exp $
State_Updates: trait
assumes State_Basics, TypePerspectives
introduces
updateValue: State, Object, Value -> State
updateTypes: State, Object, Set[TYPE] -> State
asserts
\forall obj, obj1: Object, typs, typs1: Set[TYPE],
v, v1: Value, st: State
updateValue(emptyState, obj1, v1) == emptyState;
updateValue(bottom, obj1, v1) == bottom;
updateValue(bind(st, obj, v, typs), obj1, v1)
== if obj = obj1 then bind(st, obj, v1, typs)
else bind(updateValue(st, obj1, v1), obj, v, typs);
updateTypes(emptyState, obj1, typs1) == emptyState;
updateTypes(bottom, obj1, typs1) == bottom;
updateTypes(bind(st, obj, v, typs), obj1, typs1)
== if obj = obj1 then bind(st, obj, v, typs1)
else bind(updateTypes(st, obj1, typs1), obj, v, typs);
implies
\forall obj: Object, typs: Set[TYPE], v: Value, st: State
~allocated(obj, st) => \A v (updateValue(st, obj, v) = st);
~allocated(obj, st) => \A v (updateTypes(st, obj, typs) = st);
converts updateValue, updateTypes
[Index]
HTML generated using lcpp2html.