% @(#)$Id: MutableObj.lsl,v 1.13 1995/11/10 06:50:26 leavens Exp $
MutableObj(T): trait
includes TypedObj(Obj, T), contained_objects(Obj[T])
introduces
mutate: State, Obj[T], T -> State
asserts
\forall mobj: Obj[T], tval: T, st: State
mutate(st, mobj, tval)
== updateValue(st, widen(mobj), widen(injectTVal(tval)));
contained_objects(mobj, st) == {asTypeTaggedObject(mobj)};
implies
\forall mobj: Obj[T], tval: T, st: State
assigned(mobj, mutate(st, mobj, tval));
eval(mobj, mutate(st, mobj, tval)) == tval;
converts mutate, contained_objects
[Index]
HTML generated using lcpp2html.