private Purses: map Purse`CardId to Purse; invforall p insetdom Purses & Purses(p).GetCardNo() = p; private Log: seqof Transaction := [];
types
public Transaction ::
fromId : Purse`CardId
toId : Purse`CardId
sum : nat;
operations
public Transfer: Purse`CardId * Purse`CardId * nat ==> ()
Transfer(fromId, toId, sum) ==
( Purses(fromId).DecreaseBal(sum);
Purses(toId).IncreaseBal(sum);
) pre {fromId, toId} subsetdom Purses and
fromId <> toId and
Purses(fromId).GetBalance() >= sum;
publicSystem: setof Purse ==> System System(PurseSet) ==
Purses := {p.GetCardNo() |-> p | p inset PurseSet} preforall p,q inset PurseSet & p <> q => p.GetCardNo() <> q.GetCardNo();
public TotalTransferred:() ==> nat
TotalTransferred() == return TotalSum(Log);
functions
TotalSum: seqof Transaction -> nat
TotalSum(tseq) == if tseq = [] then0 elselet tx = hd tseq in
tx.sum + TotalSum(tl tseq) measureLen;
Len: seqof Transaction -> nat Len(l) == len l;
endSystem
Messung V0.5 in Prozent
¤ 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.0.0Bemerkung:
(vorverarbeitet am 2026-06-05)
¤
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.