postexists new_k:Key &
new_k notinset desk~.issued and let new_c = mk_Card(desk~.prev(r),new_k) in
desk.issued = desk~.issued union {new_k} and
desk.prev = desk~.prev ++ {r |-> new_k} and if g insetdom guests~ then guests = guests~ ++ {g |-> guests~(g) union {new_c}} else guests = guests~ munion {g |-> {new_c}};
pre r insetdom locks and
g insetdom guests and exists c inset guests(g) & c.fst=locks(r) or c.snd=locks(r)
postexists c inset guests(g) &
c.fst = locks(r) and locks = locks~ ++ {r |-> c.snd} or
c.snd = locks(r) and locks = locks~;
CheckInExpl: Guest * Room ==> ()
CheckInExpl(g,r) == let new_k:Key best new_k notinset desk.issued in let new_c = mk_Card(desk.prev(r),new_k) in
(desk.issued := desk.issued union {new_k};
desk.prev := desk.prev ++ {r |-> new_k};
guests := if g insetdom guests then guests ++ {g |-> guests(g) union {new_c}} else guests munion {g |-> {new_c}}
) pre r insetdom desk.prev;
-- -- Explicit versions of operations for execution on the interpreter --
EnterExpl: Room * Guest ==> ()
EnterExpl(r,g) == let c inset guests(g) best c.fst = locks(r) or c.snd = locks(r) in if c.fst = locks(r) then locks := locks ++ {r |-> c.snd} pre r insetdom locks and
g insetdom guests and exists c inset guests(g) & c.fst=locks(r) or c.snd=locks(r);
IssueCard: () ==> Key
IssueCard() == let k: Key best k notinset desk.issued in
(desk.issued := desk.issued union {k}; return k
);
AddRoom: Room * Key ==> ()
AddRoom(r,k) ==
(desk.prev := desk.prev munion {r |-> k};
locks := locks munion {r |-> k}
) pre k inset desk.issued and r notinsetdom locks;
AddGuest: Guest * setofCard ==> ()
AddGuest(g,cs) ==
guests := guests ++ {g |-> if g insetdom guests then guests(g) union cs else cs} preforall c inset cs & {c.fst, c.snd} subset desk.issued;
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.