| remove-refsize0(gstore3) = gstore3, elems nx3 ∩ jro3 = ∅, dom gstore3 ∪ elems nx3 = dom gstore2 ∪ jro3, jro2 < jmaxino3, jro5 < jmaxino0, fi1.inos < jmaxino3, fi4.inos < jmaxino0, inv(gstore2 \ jro3), inv(gstore3), refsize-cons(gstore2, range fi1), refsize-cons(gstore3, range fi4), ri-inj(fi1), ri-inj(fi4), n ∈ crash(gstore2, gstore3, jro3, nx3), jmaxino0 ≤ jmaxino3, fi1.lebs ⊆ dom gstore2, fi4.lebs ⊆ dom gstore3, jvalid0 ∧ nx3 ≠ [] → valid-journal-head(nx3, gstore2, jro3), n ∈ nx3 ∨ ¬ n ∈ jro3 ⊦ jmaxino0 = 0, jmaxino3 = 0, dups(nx3), inv(groupblock(gstore2[n].gndlist, gstore2[n].ladrlist, (n ∈ gstore3 ⊃ gstore3[n].ref-size;0))) |
Used simplifier rules: ⊦ n ∈ crash(gstore, gstore0, ginval, nx) ↔ n ∈ gstore ∨ n ∈ ginval; (ws)%fwd-inv-gblock-rem: ⊦ inv(gstore \ ginval) ∧ n ∈ gstore ∧ ¬ n ∈ ginval ∧ gstore[n] = gblock → inv(gblock); (forward) from specification apersistence-base% ⊦ inv(groupblock(gndx, lax, m0)) → inv(groupblock(gndx, lax, n0)); (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]%elems-in-notin-ginval: ⊦ n ∈ nx ∧ elems nx ∩ ns = ∅ → ¬ n ∈ ns; (forward) from specification apersistence-base%una: ⊦ (ns ∪ ns0) ∪ ns1 = ns ∪ ns0 ∪ ns1; from specification set-union[nat-set]%unc: ⊦ ns ∪ ns0 = ns0 ∪ ns; from specification set-union[nat-set]%fwd-in-log-in-gstore: ⊦ n ∈ nx ∧ ginval ∩ elems nx = ∅ ∧ dom gstore0 ∪ elems nx = dom gstore ∪ ginval → n ∈ gstore; (forward) from specification apersistence-base%ne-01: ⊦ n ∈ ns → ns ≠ ∅; (forward) from specification set-basic[nat-set]%fwd-in-gstore-loghead: ⊦ nx ≠ [] ∧ ginval ∩ elems nx = ∅ ∧ dom gstore0 ∪ elems nx = dom gstore ∪ ginval → nx.last ∈ gstore; (forward) from specification apersistence-base%fwd-inv-loghead: ⊦ nx ≠ [] ∧ inv(gstore \ ginval) ∧ ginval ∩ elems nx = ∅ ∧ dom gstore0 ∪ elems nx = dom gstore ∪ ginval → inv(gstore[nx.last]); (forward) from specification apersistence-base%⊦ (gndx = gblock.gndlist ∧ lax = gblock.ladrlist) ∧ m = gblock.ref-size ↔ gblock = groupblock(gndx, lax, m); (elim) Used terms: gstore2[n], gndx, lax, m