Alexander Logan

Formal Systems Development

Lecture Contents

Index

VARIABLES
	owes, price
	
INITIALISATION
	owes = CID * {0} | price = ITEM * {0}
	
INVARIANT
	owes : CID +-> NAT & price : ITEM +-> NAT

OPERATIONS
	order(cc, ii) = PRE cc : CID & ii : ITEM THEN
		owes(cc) := owes(cc) + price(ii) END
		
	pay = PRE card(cq) > 0 THEN
		cq := tail(cq) | owes(cq(1)) = 0 END
		
	nopay = PRE card(cq) > 0 THEN cq := tail(cq) END
	
	decrease(nn) = PRE nn : NAT1 THEN 
		ANY ss WHERE ss <: ITEM & card(ss) = nn THEN
			price := {ii | ii : ss =>