| (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), journal((nx0 + n ').last).lnum ∈ gstore[journal((nx0 + n ').last).lnum, gstore[journal((nx0 + n ').last).lnum].gndlist:= gstore[journal((nx0 + n ').last).lnum].gndlist], n ∈ gstore, journal((nx0 + n ').last).lnum ∈ gstore, istore1 ⊑ istore2, journal((nx0 + n ').last).index? ∨ journal((nx0 + n ').last).journal? ⊦ ∃ ax. ⟨syn := ?⟩ ( syn ∧ crash(gstore, gstore0, ginval1, nx0 + n ') = crash (gstore[journal((nx0 + n ').last).lnum, gstore[journal((nx0 + n ').last).lnum].gndlist:= gstore[journal((nx0 + n ').last).lnum].gndlist] [journal((nx0 + n ').last).lnum, gstore [journal((nx0 + n ').last).lnum, gstore[journal((nx0 + n ').last).lnum].gndlist:= gstore[journal((nx0 + n ').last).lnum].gndlist ] [journal((nx0 + n ').last).lnum ] .ladrlist:= gstore [journal((nx0 + n ').last).lnum, gstore[journal((nx0 + n ').last).lnum].gndlist:= gstore[journal((nx0 + n ').last).lnum].gndlist ] [journal((nx0 + n ').last).lnum ] .ladrlist ], gstore0, ginval1, nx0 + n ')), nx0 + n ' = [], gndx = [], dups(nx0), n ∈ ginval1, n ∈ nx0 |
(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 = ∅, gndx ≠ [], inv(gstore \ ginval1), inv(gstore0), inv(istore2), inv(istore1), inv(groupblock(gndx0, lax0, m)), n ∈ gstore, istore1 ⊑ istore2, ¬ dups(nx0), ¬ n ∈ nx0, ¬ n ∈ ginval1 ⊦ ⟨syn := ?⟩ ( syn ∧ crash(gstore, gstore0, ginval1, nx0 + n ') = crash(gstore[n, (gstore[n].gndlist:= gstore[n].gndlist).ladrlist:= gstore[n].ladrlist], gstore0, ginval1, nx0 + n '))
Used simplifier rules: ⊦ gstore[n, gblock][n, gblock0] = gstore[n, gblock0]; (s)% ⊦ (gblock.gndlist:= gndx).ladrlist = gblock.ladrlist; (s)% ⊦ gstore[n, gblock][n] = gblock; (s)% ⊦ journal(m).journal?; (s)% ⊦ ¬ journal(m).index?; (s)% ⊦ n ∈ gstore[n, gblock]; (s)% ⊦ journal(m).lnum = m; (s)% ⊦ (nx + n ').last = n; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ nx + n ' ≠ []; (s)