| err = err0, ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪if err = ESUCCESS then pmaxino := ROOT_INO + 1, jvalid := true, p_os := ∅, nx := [], gstore0 := ∅, gstore := ∅, jro := ∅, fi0 := ∅, fi := ∅ else pmaxino := ?, jvalid := ?, p_os := ?, nx := ?, gstore0 := ?, gstore := ?, jro := ?, fi0 := ?, fi := ?; if err ≠ ESUCCESS then debug#("gjournal: persistence format failed"); jro1 := ∅⟫ ( err = ESUCCESS → jvalid ∧ jro1 < ROOT_INO + 1 ∧ p_os < pmaxino ∧ pmaxino ≤ ROOT_INO + 1 ∧ fi0.inos < ROOT_INO + 1 ∧ fi.inos < pmaxino ∧ pmaxino ≠ 0 ∧ (nx ≠ [] → valid-journal-head(nx, gstore0, jro)) ∧ fi0.lebs ⊆ dom gstore0 ∧ fi.lebs ⊆ dom gstore ∧ refsize-cons(gstore0, range fi0) ∧ refsize-cons(gstore, range fi) ∧ inv(gstore0 \ jro) ∧ inv(gstore) ∧ elems nx ∩ jro = ∅ ∧ ¬ dups(nx) ∧ dom gstore ∪ elems nx = dom gstore0 ∪ jro ∧ remove-refsize0(gstore) = gstore ∧ ri-inj(fi0) ∧ ri-inj(fi)) |
err = ESUCCESS, err = err0, ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪pmaxino := ROOT_INO + 1, jvalid := true, p_os := ∅, nx := [], gstore0 := ∅, gstore := ∅, jro := ∅, fi0 := ∅, fi := ∅; if err ≠ ESUCCESS then debug#("gjournal: persistence format failed"); jro1 := ∅⟫ ( err = ESUCCESS → jvalid ∧ jro1 < ROOT_INO + 1 ∧ p_os < pmaxino ∧ pmaxino ≤ ROOT_INO + 1 ∧ fi0.inos < ROOT_INO + 1 ∧ fi.inos < pmaxino ∧ pmaxino ≠ 0 ∧ (nx ≠ [] → valid-journal-head(nx, gstore0, jro)) ∧ fi0.lebs ⊆ dom gstore0 ∧ fi.lebs ⊆ dom gstore ∧ refsize-cons(gstore0, range fi0) ∧ refsize-cons(gstore, range fi) ∧ inv(gstore0 \ jro) ∧ inv(gstore) ∧ elems nx ∩ jro = ∅ ∧ ¬ dups(nx) ∧ dom gstore ∪ elems nx = dom gstore0 ∪ jro ∧ remove-refsize0(gstore) = gstore ∧ ri-inj(fi0) ∧ ri-inj(fi))
err = err0, ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪pmaxino := ?, jvalid := ?, p_os := ?, nx := ?, gstore0 := ?, gstore := ?, jro := ?, fi0 := ?, fi := ?; if err ≠ ESUCCESS then debug#("gjournal: persistence format failed"); jro1 := ∅⟫ ( err = ESUCCESS → jvalid ∧ jro1 < ROOT_INO + 1 ∧ p_os < pmaxino ∧ pmaxino ≤ ROOT_INO + 1 ∧ fi0.inos < ROOT_INO + 1 ∧ fi.inos < pmaxino ∧ pmaxino ≠ 0 ∧ (nx ≠ [] → valid-journal-head(nx, gstore0, jro)) ∧ fi0.lebs ⊆ dom gstore0 ∧ fi.lebs ⊆ dom gstore ∧ refsize-cons(gstore0, range fi0) ∧ refsize-cons(gstore, range fi) ∧ inv(gstore0 \ jro) ∧ inv(gstore) ∧ elems nx ∩ jro = ∅ ∧ ¬ dups(nx) ∧ dom gstore ∪ elems nx = dom gstore0 ∪ jro ∧ remove-refsize0(gstore) = gstore ∧ ri-inj(fi0) ∧ ri-inj(fi)), err = ESUCCESS