% @(#)$Id: ModifiesSemantics.lsl,v 1.16 1995/11/13 15:38:59 leavens Exp $ % This is based on Chalin's help and his work [Chalin95]. ModifiesSemantics(Loc, T): trait assumes State, AllocatedAssigned(Loc, T), TypedObjEval(Loc, T) introduces isModified: Loc[T], State, State -> Bool asserts \forall loc: Loc[T], pre,post: State isModified(loc, pre, post) == (assigned(loc, pre) /\ assigned(loc, post) /\ eval(loc,pre) ~= eval(loc,post)) \/ (allocated(loc, pre) /\ ~assigned(loc, pre) /\ assigned(loc,post)); implies \forall loc: Loc[T], pre,post: State isModified(loc, pre, post) => (allocated(loc, pre) /\ assigned(loc, post)); converts isModified exempting \forall loc: Loc[T], st: State isModified(loc,bottom,st), isModified(loc,st,bottom)
[Index]
HTML generated using lcpp2html.