public TransferOk: AbWorld * PurseId * PurseId * nat -> AbWorld
TransferOk(wrld, frm, too, val) ==
(let
newFrm =
ReduceBalance(wrld.abPurses(frm),val),
newTo =
IncreaseBalance(wrld.abPurses(too),val) in
mk_AbWorld(wrld.authentic,
wrld.abPurses ++
{frm |-> newFrm, too |-> newTo})
) pre frm <> too and
frm insetdom wrld.abPurses and
too insetdom wrld.abPurses and
(GetBalance(wrld.abPurses(frm)) >= val) post (GetTotal(RESULT.abPurses(frm)) +
GetTotal(RESULT.abPurses(too)) =
(GetTotal(wrld.abPurses(frm)) +
GetTotal(wrld.abPurses(too))) and
(GetBalance(RESULT.abPurses(frm)) +
GetBalance(RESULT.abPurses(too))) =
(GetBalance(wrld.abPurses(frm)) +
GetBalance(wrld.abPurses(too))) and forall name in set (domRESULT.abPurses) \ {frm, too}
&
(GetBalance(wrld.abPurses(name)) =
GetBalance(RESULT.abPurses(name))) and
(GetLost(wrld.abPurses(name)) =
GetLost(RESULT.abPurses(name))));
public TransferLost: AbWorld * PurseId * PurseId * nat -> AbWorld
TransferLost(wrld, frm, -, val) ==
( let
newFrm =
ReduceBalance(wrld.abPurses(frm),val) in
mk_AbWorld(wrld.authentic,
wrld.abPurses ++
{frm |-> IncreaseLost(newFrm, val)})
) pre frm insetdom wrld.abPurses and
GetBalance(wrld.abPurses(frm)) >= val post GetTotal(RESULT.abPurses(frm)) =
GetTotal(wrld.abPurses(frm)) and
GetBalance(wrld.abPurses(frm)) >=
GetBalance(RESULT.abPurses(frm)) and forall name in set (domRESULT.abPurses) \ {frm} &
GetBalance(wrld.abPurses(name)) =
GetBalance(RESULT.abPurses(name)) and
GetLost(wrld.abPurses(name)) =
GetLost(RESULT.abPurses(name));
operations
public RunTest : () ==> AbWorld
RunTest () ==
(let w : AbWorld = mk_AbWorld({mk_token(1), mk_token(2)},
{mk_token(1) |-> mk_AbPurse(100,0), mk_token(2) |-> mk_AbPurse(10,0)}) in
TransferOk(w, mk_token(1), mk_token(2), 30);
);
end AbPurseFunctional
Messung V0.5
¤ Dauer der Verarbeitung: 0.0 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 und die Messung sind noch experimentell.