| 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), inv(crash(gstore2, gstore3, jro3, nx3)), refsize-cons(gstore2, range fi1), refsize-cons(gstore3, range fi4), ri-inj(fi1), ri-inj(fi4), jmaxino0 ≤ jmaxino3, fi1.lebs ⊆ dom gstore2, fi4.lebs ⊆ dom gstore3, jvalid0 ∧ nx3 ≠ [] → valid-journal-head(nx3, gstore2, jro3) ⊦ jmaxino0 = 0, jmaxino3 = 0, dups(nx3), fi4.lebs ⊆ dom gstore2 ∪ jro3, dom gstore3 ⊆ dom gstore2 ∪ jro3 |
⊦ ns ⊆ ns0 ↔ (∀ n. n ∈ ns → n ∈ ns0)
Used simplifier rules: ⊦ n ∈ dom gstore ↔ n ∈ gstore; (s)% ⊦ n ∈ ns ∪ ns0 ↔ ¬(¬ n ∈ ns ∧ ¬ n ∈ ns0); (ss)%una: ⊦ (ns ∪ ns0) ∪ ns1 = ns ∪ ns0 ∪ ns1; from specification set-union[nat-set]%unc: ⊦ ns ∪ ns0 = ns0 ∪ ns; from specification set-union[nat-set]%notin-gstore-ginval-notin-gstore0: ⊦ dom gstore0 ∪ elems nx = dom gstore ∪ ginval ∧ ¬ n ∈ gstore ∧ n ∈ gstore0 → n ∈ ginval; (forward) from specification apersistence-base Used terms: dom gstore2 ∪ jro3, dom gstore3