| # lax = # gndx0, lax.to-adr(lnum) = ax, gstore[lnum] = groupblock(gndx0, lax, m), gndx0 = gndx, inv(gstore \ ginval), ri-cons(ri, nodes(gstore ↓, ginval)), lnum ∈ gstore ⊦ ⟪gjournal_gc_referenced_nodes#(lnum, ri, fi, ginval, gstore, gstore0, nx0, maxino, ns, boolvar0; ax, gndx; ndx, err)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → ndx = nodes(gstore ↓, ginval)[referenced-adrs(lax.to-adr(lnum), ri)])), lnum ∈ ginval |
# lax = # gndx, lax.to-adr(lnum) = ax, gstore[lnum] = groupblock(gndx, lax, m), inv(gstore \ ginval), inv(groupblock(gndx, lax, m)), ri-cons(ri, nodes(gstore ↓, ginval)), lnum ∈ gstore, ¬ lnum ∈ ginval ⊦ ⟪gjournal_gc_referenced_nodes#(lnum, ri, fi, ginval, gstore, gstore0, nx0, maxino, ns, boolvar0; ax, gndx; ndx, err)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → ndx = nodes(gstore ↓, ginval)[referenced-adrs(lax.to-adr(lnum), ri)]))
Used simplifier rules: fwd-inv-gblock-rem: ⊦ inv(gstore \ ginval) ∧ n ∈ gstore ∧ ¬ n ∈ ginval ∧ gstore[n] = gblock → inv(gblock); (forward) from specification apersistence-base