| gjournal_journal_transaction#(NDLIST, SQNUM; ; GNDLIST, SIZE) {SIZE := 0; GNDLIST := []; let FIRST? = true in while NDLIST ≠ [] do {/* (inv-transaction : invariant ∃ ndx. NDLIST` = ndx + NDLIST ∧ (NDLIST = [] → transaction(NDLIST`, GNDLIST)) ∧ (NDLIST ≠ [] → transaction-prefix(NDLIST`, GNDLIST) ∧ # GNDLIST = # ndx) ∧ SIZE = GNDLIST.flashsize ∧ (FIRST? ↔ ndx = []) wfbound # NDLIST) */; let LAST? = # NDLIST = 1 in let GND = mkgnode(NDLIST.head, SQNUM + # GNDLIST, FIRST?, LAST?) in {GNDLIST := GNDLIST + GND; SIZE := SIZE + GND.flashsize; NDLIST := NDLIST.tail; FIRST? := false}} } |