| (elems nx0 ∪ dom gstore0) ++ n = dom gstore ∪ ginval1, gstore[n] = groupblock(gndx0, lax0, m), remove-refsize0(gstore0) = gstore0, remove-refsize0(istore1) = istore1, ginval1 ∩ elems nx0 = ∅, inv(gstore \ ginval1), inv(gstore0), inv(istore2), inv(istore1), inv(groupblock(gndx0, lax0, m)), n ∈ gstore, istore1 ⊑ istore2, ¬ dups(nx0), ¬ n ∈ nx0, ¬ n ∈ ginval1 ⊦ ⟨ax := ([]).to-adr(journal((nx0 + n ').last).lnum), err0 := ESUCCESS; gstore2 := gstore[journal((nx0 + n ').last).lnum, gstore[journal((nx0 + n ').last).lnum].gndlist:= gstore[journal((nx0 + n ').last).lnum].gndlist]; gstore2[journal((nx0 + n ').last).lnum].ladrlist := gstore2[journal((nx0 + n ').last).lnum].ladrlist; if err0 ≠ ESUCCESS then ax := ?, pstate := readonly; syn := ?⟩ (syn ∧ crash(gstore, gstore0, ginval1, nx0 + n ') = crash(gstore2, gstore0, ginval1, nx0 + n ')) |
(elems nx0 ∪ dom gstore0) ++ n = dom gstore ∪ ginval1, gstore[n] = groupblock(gndx0, lax0, m), remove-refsize0(istore1) = istore1, remove-refsize0(gstore0) = gstore0, ginval1 ∩ elems nx0 = ∅, inv(groupblock(gndx0, lax0, m)), inv(istore1), inv(istore2), inv(gstore0), inv(gstore \ ginval1), n ∈ gstore, istore1 ⊑ istore2, journal((nx0 + n ').last).index? ∨ journal((nx0 + n ').last).journal? ⊦ ⟨gstore2 := gstore[journal((nx0 + n ').last).lnum, gstore[journal((nx0 + n ').last).lnum].gndlist:= gstore[journal((nx0 + n ').last).lnum].gndlist]; gstore2[journal((nx0 + n ').last).lnum].ladrlist := gstore2[journal((nx0 + n ').last).lnum].ladrlist; if ESUCCESS ≠ ESUCCESS then ax := ?, pstate := readonly; syn := ?⟩ (syn ∧ crash(gstore, gstore0, ginval1, nx0 + n ') = crash(gstore2, gstore0, ginval1, nx0 + n ')), nx0 + n ' = [], dups(nx0), n ∈ nx0, n ∈ ginval1
Used simplifier rules: ⊦ (nx + n ').last = n; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ ¬ journal(m).index?; (s)% ⊦ journal(m).journal?; (s)% ⊦ nx + n ' ≠ []; (s)