| p_os < pmaxino, pmaxino ≤ jmaxino, fi.inos < jmaxino, fi0.inos < pmaxino, pmaxino ≠ 0, jvalid ∧ 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), gstore1 = gstore, nx0 = nx, jro0 = jro ⊦ ⟪gjournal_journal_addn#(ndx, jvalid0, fi, fi0, gstore0, pmaxino, p_os; ax, jvalid, jmaxino0, jro, gstore, nx, jvalid1; err)⟫ ( (jvalid ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro)) ∧ fi.lebs ⊆ dom gstore ∧ refsize-cons(gstore, range fi) ∧ inv-journal(nx, gstore, gstore0, jro) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ dom gstore1 ⊆ dom gstore ∧ (nx.toSet \ nx0.toSet) ∩ dom gstore1 = ∅ ∧ ( err = ESUCCESS → # ax = # ndx ∧ ¬ dups(ax) ∧ nodes-cons(ax, ndx, gstore, jro) ∧ abs-log(nx, gstore ↓) = abs-log(nx0, gstore1 ↓) + ax ∧ nodes(gstore ↓, jro) = nodes(gstore1 ↓, jro0)[ax, ndx] ∧ new(ax, nodes(gstore1 ↓, jro0))) ∧ (err ≠ ESUCCESS → abs-log(nx, gstore ↓) = abs-log(nx0, gstore1 ↓) ∧ nodes(gstore ↓, jro) = nodes(gstore1 ↓, jro0))) |