| err = ESUCCESS, err = err0, ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪pstate := unbuffered, syn := true, maxino := maxino0, ginval0 := ∅, nx := [], gstore0 := ∅, gstore := ∅, istore0 := ∅, istore := ∅, ginval := ∅, adr := ?⟫ ( 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: ⊦ ¬ ⌊ESUCCESS⌋ ; (s)% ⊦ ∅ \ ns = ∅; (s)% ⊦ inv(∅); (s)% ⊦ elems [] = ∅; (s)% ⊦ ns ∩ ∅ = ∅; (s)%int-a: ⊦ (ns ∩ ns0) ∩ ns1 = ns ∩ ns0 ∩ ns1; from specification set-union[nat-set]%int-c: ⊦ ns ∩ ns0 = ns0 ∩ ns; from specification set-union[nat-set]% ⊦ ¬ dups([]); (s)% ⊦ dom ∅ = ∅; (s)% ⊦ ns ∪ ∅ = ns; (s)%una: ⊦ (ns ∪ ns0) ∪ ns1 = ns ∪ ns0 ∪ ns1; from specification set-union[nat-set]%unc: ⊦ ns ∪ ns0 = ns0 ∪ ns; from specification set-union[nat-set]% ⊦ remove-refsize0(∅) = ∅; (s)% ⊦ inv(∅); (s)% ⊦ ∅ ⊑ istore; (s)% ⊦ remove-refsize0(∅) = ∅; (s)% ⊦ ¬ unbuffered.journal?; (s)% ⊦ ¬ unbuffered.index?; (s)