| gjournal_gc_referenced_nodes#(LNUM, PRI, PFI, PINVAL, PSTORE, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; ADRLIST, GNDLIST; NDLIST, ERR) {ERR := ESUCCESS; NDLIST := []; while ERR = ESUCCESS ∧ ADRLIST ≠ [] do {/* (prepost-gc-referenced-nodes : invariant (ERR = ESUCCESS ∨ ⌊ERR⌋ ) ∧ ( ERR = ESUCCESS → (∃ ax0, gndx0. ADRLIST` = ax0 + ADRLIST ∧ GNDLIST` = gndx0 + GNDLIST ∧ # ADRLIST` = # GNDLIST` ∧ # ADRLIST = # GNDLIST ∧ NDLIST = nodes(PSTORE ↓, PINVAL)[referenced-adrs(ax0, PRI)])) wfbound (ERR = ESUCCESS ⊃ # ADRLIST;0)) */; let EXISTS = ?, ADR0 = ? in {let ADR = ADRLIST.head, GND = GNDLIST.head in let KEY = GND.nd.key in {index_index_lookup#(KEY, PRI, PFI, PINVAL, PSTORE, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; EXISTS, ADR0; ERR); if ERR = ESUCCESS ∧ EXISTS ∧ ADR0 = ADR then NDLIST := NDLIST + GND.nd}; if ERR = ESUCCESS then {ADRLIST := ADRLIST.tail; GNDLIST := GNDLIST.tail}}} } |