| ⊦ ⟪apersistence_format#(maxino0, LEB_SIZE, maxino1; ; adr, istore, istore0, ginval, gstore, gstore0, nx, maxino2, ginval0, pstate, syn, err)⟫ ( err = ESUCCESS → syn ∧ inv(gstore \ ginval) ∧ inv(gstore0) ∧ elems nx ∩ ginval = ∅ ∧ ¬ dups(nx) ∧ dom gstore0 ∪ elems nx = dom gstore ∪ ginval ∧ remove-refsize0(gstore0) = gstore0 ∧ inv(istore) ∧ inv(istore0) ∧ istore0 ⊑ istore ∧ remove-refsize0(istore0) = istore0 ∧ (pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore) ∧ (pstate.index? → pstate.lnum ∈ istore)) |
maxino0 = maxino3, maxino1 = LEB_SIZE, maxino2 = maxino4 ⊦ ⟪if maxino1 = LEB_SIZE then {fail_or_success#(; ; err); if err = ESUCCESS then pstate := unbuffered, syn := true, maxino := maxino0, ginval0 := ∅, nx := [], gstore0 := ∅, gstore := ∅, istore0 := ∅, istore := ∅, ginval := ∅, adr := ? else pstate := ?, syn := ?, maxino := ?, ginval0 := ?, nx := ?, gstore0 := ?, gstore := ?, istore0 := ?, istore := ?, ginval := ?, adr := ?} else abort⟫ ( err = ESUCCESS → syn ∧ inv(gstore0 \ ginval) ∧ inv(gstore) ∧ elems nx ∩ ginval = ∅ ∧ ¬ dups(nx) ∧ dom gstore ∪ elems nx = dom gstore0 ∪ ginval ∧ remove-refsize0(gstore) = gstore ∧ inv(istore0) ∧ inv(istore) ∧ istore ⊑ istore0 ∧ remove-refsize0(istore) = istore ∧ (pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore0) ∧ (pstate.index? → pstate.lnum ∈ istore0))
Used simplifier rules: format: ⊦ ;