| jvalid ↔ # ndx0 = 1, jvalid1 ↔ true, gnd = mkgnode(ndx0.head, jmaxino0 + # gndx, jvalid0, jvalid), gndx0 = [], jmaxino0 = jmaxino1, jmaxino2 = 0, ndx2 = ndx, ∃ ndx. ( ndx2 = ndx + ndx0 ∧ (ndx0 = [] → transaction(ndx2, gndx)) ∧ (ndx0 ≠ [] → transaction-prefix(ndx2, gndx) ∧ # gndx = # ndx) ∧ jmaxino = gndx.flashsize ∧ (jvalid0 ↔ ndx = [])) ∧ ndx0 = ndx1 ⊦ ⟪jmaxino := jmaxino + gnd.flashsize; ndx0 := ndx0.tail; jvalid0 := false⟫ ∃ ndx. ( ndx2 = ndx + ndx0 ∧ (ndx0 = [] → transaction(ndx2, gndx + gnd)) ∧ (ndx0 ≠ [] → transaction-prefix(ndx2, gndx + gnd) ∧ #(gndx + gnd) = # ndx) ∧ jmaxino = (gndx + gnd).flashsize ∧ (jvalid0 ↔ ndx = [])) ∧ # ndx0 < # ndx1, ndx0 = [] |
jvalid1 ↔ true, jvalid ↔ # ndx0 = 1, gnd = mkgnode(ndx0.head, jmaxino0 + # gndx, jvalid0, jvalid), gndx0 = [], jmaxino0 = jmaxino1, jmaxino2 = 0, ndx2 = ndx, ∃ ndx. ( ndx2 = ndx + ndx0 ∧ (ndx0 = [] → transaction(ndx2, gndx)) ∧ (ndx0 ≠ [] → transaction-prefix(ndx2, gndx) ∧ # gndx = # ndx) ∧ jmaxino = gndx.flashsize ∧ (jvalid0 ↔ ndx = [])) ∧ ndx0 = ndx1 ⊦ ⟪ndx0 := ndx0.tail; jvalid0 := false⟫ ∃ ndx. ( ndx2 = ndx + ndx0 ∧ (ndx0 = [] → transaction(ndx2, gndx + gnd)) ∧ (ndx0 ≠ [] → transaction-prefix(ndx2, gndx + gnd) ∧ #(gndx + gnd) = # ndx) ∧ jmaxino + gnd.flashsize = (gndx + gnd).flashsize ∧ (jvalid0 ↔ ndx = [])) ∧ # ndx0 < # ndx1, ndx0 = []