| gjournal_remove_addresses#(JVALID, PRI, PFI, PINVAL, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; AS, PSTORE) {while AS ≠ ∅ do {/* (inv-truncate : invariant (JVALID ∧ PNL ≠ [] → valid-journal-head(PNL, PSTORE, PINVAL)) ∧ dom PSTORE = dom PSTORE` ∧ AS ∩ range PRI = ∅ ∧ AS.lebs ⊆ dom PSTORE ∧ refsize-cons(PSTORE, range PRI ∪ AS) ∧ inv-journal(PNL, PSTORE, PSTORE0, PINVAL) ∧ PSTORE =○refsize PSTORE` wfbound # AS) */; choose N, ADR with ADR ∈ AS in {index_get_gblock_refsize#(ADR.lnum, PRI, PFI, PINVAL, PSTORE, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; ; N); index_set_gblock_refsize#(ADR.lnum, N - ADR.size, PRI, PFI, PINVAL, PSTORE0, PNL, PMAXINO, P_OS, ISYNCED; PSTORE); AS := AS -- ADR}} } |