| ⊦ ⟪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)) |
jvalid2 ↔ jvalid, jvalid1 ↔ jvalid0, fi = fi1, fi0 = fi2, gstore = gstore1, gstore0 = gstore2, jmaxino0 = jmaxino3, jmaxino1 = LEB_SIZE, jmaxino2 = jmaxino4, jro0 = jro ⊦ ⟪if jmaxino1 = LEB_SIZE then {jmaxino0 := ROOT_INO + 1; jmaxino := 0; jvalid0 := true; jvalid := jvalid2; index_format#(jmaxino2, jmaxino1, jmaxino0; ; fi0, fi, jro0, gstore0, gstore, nx, pmaxino, p_os, jvalid1, err); if err ≠ ESUCCESS then debug#("gjournal: persistence format failed"); jro := ∅} else abort⟫ ( err = ESUCCESS → jvalid1 ∧ jro < jmaxino0 ∧ p_os < pmaxino ∧ pmaxino ≤ jmaxino0 ∧ fi0.inos < jmaxino0 ∧ fi.inos < pmaxino ∧ jmaxino0 ≠ 0 ∧ pmaxino ≠ 0 ∧ (jvalid0 ∧ nx ≠ [] → valid-journal-head(nx, gstore0, jro0)) ∧ fi0.lebs ⊆ dom gstore0 ∧ fi.lebs ⊆ dom gstore ∧ refsize-cons(gstore0, range fi0) ∧ refsize-cons(gstore, range fi) ∧ inv(gstore0 \ jro0) ∧ inv(gstore) ∧ elems nx ∩ jro0 = ∅ ∧ ¬ dups(nx) ∧ dom gstore ∪ elems nx = dom gstore0 ∪ jro0 ∧ remove-refsize0(gstore) = gstore ∧ ri-inj(fi0) ∧ ri-inj(fi))
Used simplifier rules: format: ⊦ ;