| jmaxino = LEB_SIZE ⊦ ⟪gjournal_format# (jmaxino0, jmaxino, jvalid; jmaxino1, fi, fi0, jro, gstore, gstore0, nx, pmaxino, p_os, jvalid0; jvalid1, jmaxino2, jro0, jvalid2, err)⟫ ( err = ESUCCESS → jvalid0 ∧ jro0 < jmaxino1 ∧ p_os < pmaxino ∧ pmaxino ≤ jmaxino1 ∧ fi.inos < jmaxino1 ∧ fi0.inos < pmaxino ∧ jmaxino1 ≠ 0 ∧ pmaxino ≠ 0 ∧ (jvalid1 ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro)) ∧ fi.lebs ⊆ dom gstore ∧ fi0.lebs ⊆ dom gstore0 ∧ refsize-cons(gstore, range fi) ∧ refsize-cons(gstore0, range fi0) ∧ inv-journal(nx, gstore, gstore0, jro) ∧ ri-inj(fi) ∧ ri-inj(fi0)) |
⊦ ⟪gjournal_format# (jmaxino0, LEB_SIZE, jvalid; jmaxino1, fi, fi0, jro, gstore, gstore0, nx, pmaxino, p_os, jvalid0; jvalid1, jmaxino2, jro0, jvalid2, err)⟫ ( err = ESUCCESS → jvalid0 ∧ jro0 < jmaxino1 ∧ p_os < pmaxino ∧ pmaxino ≤ jmaxino1 ∧ fi.inos < jmaxino1 ∧ fi0.inos < pmaxino ∧ jmaxino1 ≠ 0 ∧ pmaxino ≠ 0 ∧ (jvalid1 ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro)) ∧ fi.lebs ⊆ dom gstore ∧ fi0.lebs ⊆ dom gstore0 ∧ refsize-cons(gstore, range fi) ∧ refsize-cons(gstore0, range fi0) ∧ inv(gstore \ jro) ∧ inv(gstore0) ∧ elems nx ∩ jro = ∅ ∧ ¬ dups(nx) ∧ dom gstore0 ∪ elems nx = dom gstore ∪ jro ∧ remove-refsize0(gstore0) = gstore0 ∧ ri-inj(fi) ∧ ri-inj(fi0))
Used simplifier rules: ⊦ inv-journal(nx, gstore, gstore0, ginval) ↔ inv(gstore \ ginval) ∧ inv(gstore0) ∧ elems nx ∩ ginval = ∅ ∧ ¬ dups(nx) ∧ dom gstore0 ∪ elems nx = dom gstore ∪ ginval ∧ remove-refsize0(gstore0) = gstore0; (s)