| abs-log(nx0, gstore1 ↓) = abs-log(nx, gstore ↓) + adr0 ', fs = nodes(gstore ↓, jro0), log = abs-log(nx, gstore ↓), nodes(gstore1 ↓, jro) = nodes(gstore ↓, jro0)[adr0, nd], remove-refsize0(gstore0) = gstore0, elems nx0 ∩ jro = ∅, (nx0.toSet \ nx.toSet) ∩ dom gstore = ∅, elems nx ∩ jro0 = ∅, dom gstore0 ∪ elems nx0 = dom gstore1 ∪ jro, dom gstore0 ∪ elems nx = dom gstore ∪ jro0, p_os.keys.inodes?, jro1.keys.inodes?, fi1.inos < pmaxino, ri.inos < jmaxino1, p_os < pmaxino, jro1 < jmaxino1, inv(gstore1 \ jro), inv(gstore0), inv(gstore \ jro0), log-cons(abs-log(nx, gstore ↓), nodes(gstore ↓, jro0)), node-cons(nd.key, nd), nodes-cons(adr0 ', nd ', gstore1, jro), refsize-cons(gstore1, range ri), refsize-cons(gstore0, range fi1), refsize-cons(gstore, range ri), ri-cons(ri, nodes(gstore ↓, jro0)), ri-inj(fi1), ri-inj(ri), adr0 ∈ abs-log(nx0, gstore1 ↓), pmaxino ≤ jmaxino1, dom gstore ⊆ dom gstore1, fi1.lebs ⊆ dom gstore0, ri.lebs ⊆ dom gstore, ri.lebs ⊆ dom gstore1, jvalid3 ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro0), jvalid5 → jvalid4, jvalid0 ∧ nx0 ≠ [] → valid-journal-head(nx0, gstore1, jro) ⊦ (∀ adr1. ¬(new(adr1 ', fs) ∧ ¬ dups(adr1 '))) ∧ ⟨err := ENOSPC; jvalid := ?⟩ (log = abs-log(nx0, gstore1 ↓) ∧ fs = nodes(gstore1 ↓, jro) ∧ (jvalid → jvalid1) ∧ adr0 = adr ∧ ESUCCESS = err), ∃ adr1. (new(adr1 ', fs) ∧ ¬ dups(adr1 ')) ∧ ⟨adr := adr1; fs[adr] := nd, log := log + adr, err := ESUCCESS; jvalid := ?⟩ (log = abs-log(nx0, gstore1 ↓) ∧ fs = nodes(gstore1 ↓, jro) ∧ (jvalid → jvalid1) ∧ adr0 = adr ∧ ESUCCESS = err), ∃ err0. ⌊err0⌋ ∧ ⟨err := err0; adr := ?; jvalid := ?⟩ ( abs-log(nx, gstore ↓) = abs-log(nx0, gstore1 ↓) ∧ nodes(gstore ↓, jro0) = nodes(gstore ↓, jro0)[adr, nd] ∧ (jvalid → jvalid1) ∧ adr0 = adr ∧ ESUCCESS = err), jmaxino1 = 0, pmaxino = 0, dups(nx0), dups(nx), adr0 ∈ nodes(gstore ↓, jro0) |
abs-log(nx0, gstore1 ↓) = abs-log(nx, gstore ↓) + adr0 ', nodes(gstore1 ↓, jro) = nodes(gstore ↓, jro0)[adr0, nd], remove-refsize0(gstore0) = gstore0, elems nx0 ∩ jro = ∅, (nx0.toSet \ nx.toSet) ∩ dom gstore = ∅, elems nx ∩ jro0 = ∅, dom gstore0 ∪ elems nx0 = dom gstore1 ∪ jro, dom gstore0 ∪ elems nx = dom gstore ∪ jro0, jmaxino1 ≠ 0, pmaxino ≠ 0, p_os.keys.inodes?, jro1.keys.inodes?, fi1.inos < pmaxino, ri.inos < jmaxino1, p_os < pmaxino, jro1 < jmaxino1, inv(gstore1 \ jro), inv(gstore0), inv(gstore \ jro0), log-cons(abs-log(nx, gstore ↓), nodes(gstore ↓, jro0)), node-cons(nd.key, nd), nodes-cons(adr0 ', nd ', gstore1, jro), refsize-cons(gstore1, range ri), refsize-cons(gstore0, range fi1), refsize-cons(gstore, range ri), ri-cons(ri, nodes(gstore ↓, jro0)), ri-inj(fi1), ri-inj(ri), adr0 ∈ abs-log(nx0, gstore1 ↓), pmaxino ≤ jmaxino1, dom gstore ⊆ dom gstore1, fi1.lebs ⊆ dom gstore0, ri.lebs ⊆ dom gstore, ri.lebs ⊆ dom gstore1, ¬ dups(nx0), ¬ dups(nx), ¬ adr0 ∈ nodes(gstore ↓, jro0), jvalid3 ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro0), jvalid5 → jvalid4, jvalid0 ∧ nx0 ≠ [] → valid-journal-head(nx0, gstore1, jro) ⊦ ∃ adr2. ¬ adr2 ∈ nodes(gstore ↓, jro0) ∧ ⟨adr := adr2; fs := nodes(gstore ↓, jro0)[adr, nd], log := abs-log(nx, gstore ↓) + adr ', err := ESUCCESS; jvalid := ?⟩ (log = abs-log(nx0, gstore1 ↓) ∧ fs = nodes(gstore1 ↓, jro) ∧ (jvalid → jvalid1) ∧ adr0 = adr ∧ ESUCCESS = err), ∃ err0. ⌊err0⌋ ∧ ⟨err := err0; adr := ?; jvalid := ?⟩ ( abs-log(nx, gstore ↓) = abs-log(nx0, gstore1 ↓) ∧ nodes(gstore ↓, jro0) = nodes(gstore ↓, jro0)[adr, nd] ∧ (jvalid → jvalid1) ∧ adr0 = adr ∧ ESUCCESS = err), adr1 ∈ nodes(gstore ↓, jro0) ∧ ⟨err := ENOSPC; jvalid := ?⟩ ( abs-log(nx, gstore ↓) = abs-log(nx0, gstore1 ↓) ∧ nodes(gstore ↓, jro0) = nodes(gstore ↓, jro0)[adr, nd] ∧ (jvalid → jvalid1) ∧ adr0 = adr ∧ ESUCCESS = err)
Used simplifier rules: ⊦ ax + adr = ax + adr '; (s)% ⊦ ¬ dups(adr '); (s)% ⊦ new(adr ', fs) ↔ ¬ adr ∈ fs; (s)