| gstore ↓[adr] = mkgnode(nd, m, boolvar, boolvar0), fi = ri, fs = nodes(gstore ↓, jro0), log = abs-log(nx, gstore ↓), remove-refsize0(gstore0) = gstore0, elems nx ∩ jro0 = ∅, dom gstore0 ∪ elems nx = dom gstore ∪ jro0, p_os.keys.inodes?, jro.keys.inodes?, fi1.inos < pmaxino, ri.inos < jmaxino, p_os < pmaxino, jro < jmaxino, inv(gstore0), inv(gstore \ jro0), key-cons(key, nd), log-cons(abs-log(nx, gstore ↓), nodes(gstore ↓, jro0)), refsize-cons(gstore0, range fi1), refsize-cons(gstore, range ri), ri-inj(fi1), ri-inj(ri), adr ∈ nodes(gstore ↓, jro0), pmaxino ≤ jmaxino, fi1.lebs ⊆ dom gstore0, ri.lebs ⊆ dom gstore, jvalid1 ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro0), jvalid → jvalid0 ⊦ jmaxino = 0, pmaxino = 0, dups(nx), adr ∈ ri, jro < jmaxino ∧ p_os < pmaxino ∧ pmaxino ≤ jmaxino ∧ fi.inos < jmaxino ∧ fi1.inos < pmaxino ∧ jmaxino ≠ 0 ∧ pmaxino ≠ 0 ∧ (jvalid1 ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro0)) ∧ fi.lebs ⊆ dom gstore ∧ fi1.lebs ⊆ dom gstore0 ∧ refsize-cons(gstore, range fi) ∧ refsize-cons(gstore0, range fi1) ∧ inv-journal(nx, gstore, gstore0, jro0) ∧ ri-inj(fi) ∧ ri-inj(fi1) ∧ ¬ adr ∈ fi ∧ adr ∈ gstore ∧ key-cons(key, gstore[adr].nd) ∧ gstore = gstore ∧ fi = fi |
gstore ↓[adr] = mkgnode(nd, m, boolvar, boolvar0), remove-refsize0(gstore0) = gstore0, elems nx ∩ jro0 = ∅, dom gstore0 ∪ elems nx = dom gstore ∪ jro0, p_os.keys.inodes?, jro.keys.inodes?, fi1.inos < pmaxino, ri.inos < jmaxino, p_os < pmaxino, jro < jmaxino, inv(gstore0), inv(gstore \ jro0), key-cons(key, nd), log-cons(abs-log(nx, gstore ↓), nodes(gstore ↓, jro0)), refsize-cons(gstore0, range fi1), refsize-cons(gstore, range ri), ri-inj(fi1), ri-inj(ri), adr ∈ nodes(gstore ↓, jro0), adr ∈ gstore, pmaxino ≤ jmaxino, fi1.lebs ⊆ dom gstore0, ri.lebs ⊆ dom gstore, jvalid1 ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro0), jvalid → jvalid0 ⊦ jmaxino = 0, pmaxino = 0, dups(nx), key-cons(key, gstore[adr].nd), adr ∈ ri
Used simplifier rules: ⊦ ¬ adr ∈ gstore → ¬ adr ∈ nodes(gstore ↓, ginval); (s)%⊦ 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)