| remove-refsize0(gstore0) = gstore0, remove-refsize0(istore0) = istore0, elems nx ∩ ginval = ∅, dom gstore0 ∪ elems nx = dom gstore ∪ ginval, inv(gstore \ ginval), inv(gstore0), inv(istore), inv(istore0), adr ∈ gstore, istore0 ⊑ istore, ¬ dups(nx), ¬ adr.lnum ∈ ginval, pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore, pstate.index? → pstate.lnum ∈ istore ⊦ ⟨apersistence_read_gnd#(adr, adr1, istore, istore0, ginval, gstore, gstore0, nx, maxino0, ginval2, pstate, true; gnd; err)⟩ true |
adr = @(m, m0, m1), remove-refsize0(istore0) = istore0, remove-refsize0(gstore0) = gstore0, elems nx ∩ ginval = ∅, dom gstore0 ∪ elems nx = dom gstore ∪ ginval, inv(istore0), inv(istore), inv(gstore0), inv(gstore \ ginval), adr ∈ gstore, istore0 ⊑ istore, pstate.index? → pstate.lnum ∈ istore, pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore ⊦ ⟨apersistence_read_gnd#(adr, adr1, istore, istore0, ginval, gstore, gstore0, nx, maxino0, ginval2, pstate, true; gnd; err)⟩ true, dups(nx), m ∈ ginval
Used simplifier rules: ⊦ (m = adr.lnum ∧ m0 = adr.pos) ∧ m1 = adr.size ↔ adr = @(m, m0, m1); (elim) Used terms: adr, m, m0, m1