| as = fi1[ks], fi = fi1 \ ks, gstore = gstore1, gstore0 = gstore3, gstore2 = gstore3, ks = datakeys(key, n, fi1), remove-refsize0(gstore1) = gstore1, elems nx ∩ jro = ∅, dom gstore1 ∪ elems nx = dom gstore3 ∪ jro, fi0.inos < pmaxino, fi1.inos < jmaxino, p_os < pmaxino, inv(gstore1), inv(gstore3 \ jro), refsize-cons(gstore1, range fi0), refsize-cons(gstore3, range fi1), ri-inj(fi0), ri-inj(fi1), ri-inj(fi), pmaxino ≤ jmaxino, fi0.lebs ⊆ dom gstore1, fi1.lebs ⊆ dom gstore3, jvalid2 ∧ nx ≠ [] → valid-journal-head(nx, gstore3, jro) ⊦ ⟪gjournal_remove_addresses#(jvalid2, fi, fi0, jro, gstore1, nx, pmaxino, p_os, jvalid; as, gstore3)⟫ ( fi.inos < jmaxino ∧ (jvalid2 ∧ nx ≠ [] → valid-journal-head(nx, gstore3, jro)) ∧ fi.lebs ⊆ dom gstore3 ∧ refsize-cons(gstore3, range fi) ∧ inv(gstore3 \ jro) ∧ dom gstore1 ∪ elems nx = dom gstore3 ∪ jro ∧ gstore3 =○refsize gstore2), pmaxino = 0, dups(nx) |
as = fi1[datakeys(key, n, fi1)], gstore0 = gstore3, remove-refsize0(gstore1) = gstore1, elems nx ∩ jro = ∅, dom gstore1 ∪ elems nx = dom gstore3 ∪ jro, pmaxino ≠ 0, p_os < pmaxino, fi1.inos < jmaxino, fi0.inos < pmaxino, inv(gstore3 \ jro), inv(gstore1), refsize-cons(gstore3, range fi1), refsize-cons(gstore1, range fi0), ri-inj(fi1 \ datakeys(key, n, fi1)), ri-inj(fi1), ri-inj(fi0), pmaxino ≤ jmaxino, fi1.lebs ⊆ dom gstore3, fi0.lebs ⊆ dom gstore1, ¬ dups(nx), jvalid2 ∧ nx ≠ [] → valid-journal-head(nx, gstore3, jro) ⊦ ⟪gjournal_remove_addresses#(jvalid2, fi1 \ datakeys(key, n, fi1), fi0, jro, gstore1, nx, pmaxino, p_os, jvalid; as, gstore3)⟫ ( (jvalid2 ∧ nx ≠ [] → valid-journal-head(nx, gstore3, jro)) ∧ (fi1 \ datakeys(key, n, fi1)).lebs ⊆ dom gstore3 ∧ refsize-cons(gstore3, range(fi1 \ datakeys(key, n, fi1))) ∧ inv(gstore3 \ jro) ∧ dom gstore1 ∪ elems nx = dom gstore3 ∪ jro ∧ gstore3 =○refsize gstore0)
Used simplifier rules: ⊦ ri.inos < maxino → (ri \ ks).inos < maxino; (s)