| err = ESUCCESS, err = err0, ginval = ∅, ginval0 = ∅, gstore = ∅, gstore0 = ∅, istore = ∅, istore0 = (∅ )[n0, indexblock (indexnode(mkbrarray(BRANCH_SIZE), true, 0) ', @(maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ', indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ], maxino = maxino4, nx = [], inv ((∅ )[n0, indexblock (indexnode(mkbrarray(BRANCH_SIZE), true, 0) ', @(maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ', indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ]), inv((∅)[n0, indexblock(indexnode(mkbrarray(BRANCH_SIZE), true, 0) ', @(maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ', 0)]), inv((∅)[n0, indexblock([], [], 0)]), indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize ≤ LEB_SIZE, index(n0).index? ∨ index(n0).journal?, ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪maxino := maxino4; pstate := unbuffered; ginval1 := ?⟫ ( ( err = ESUCCESS → (∃ ri, fi. btree-inv (null, @(index(n0).lnum, maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize), remove-refsize0(istore0), remove-refsize0(istore0), zh, ri, fi)) ∧ inv(remove-refsize0(gstore0) \ ∅) ∧ inv(remove-refsize0(gstore0)) ∧ elems [] ∩ ∅ = ∅ ∧ ¬ dups([]) ∧ dom remove-refsize0(gstore0) ∪ elems [] = dom remove-refsize0(gstore0) ∪ ∅ ∧ remove-refsize0(remove-refsize0(gstore0)) = remove-refsize0(gstore0) ∧ inv(remove-refsize0(istore0)) ∧ inv(remove-refsize0(istore0)) ∧ remove-refsize0(istore0) ⊑ remove-refsize0(istore0) ∧ remove-refsize0(remove-refsize0(istore0)) = remove-refsize0(istore0) ∧ (pstate.journal? → [] ≠ [] ∧ pstate.lnum = [].last ∧ pstate.lnum ∈ remove-refsize0(gstore0)) ∧ (pstate.index? → pstate.lnum ∈ remove-refsize0(istore0))) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → btree-inv (null, @(index(n0).lnum, maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize), remove-refsize0(istore0), remove-refsize0(istore0), zh, ∅, ∅) ∧ remove-refsize0(gstore0) = ∅ ∧ ∅ = ∅ ∧ maxino = maxino4 ∧ [] = [] ∧ ∅ = ∅)) |
err = err0, err = ESUCCESS, ginval = ∅, ginval0 = ∅, gstore = ∅, gstore0 = ∅, istore = ∅, istore0 = (∅ )[n0, indexblock (indexnode(mkbrarray(BRANCH_SIZE), true, 0) ', @(maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ', indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ], maxino = maxino4, nx = [], inv((∅)[n0, indexblock([], [], 0)]), inv((∅)[n0, indexblock(indexnode(mkbrarray(BRANCH_SIZE), true, 0) ', @(maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ', 0)]), inv ((∅ )[n0, indexblock (indexnode(mkbrarray(BRANCH_SIZE), true, 0) ', @(maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ', indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize) ]), indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize ≤ LEB_SIZE, ⌊err0⌋ ∨ err0 = ESUCCESS, index(n0).index? ∨ index(n0).journal? ⊦ ⟪pstate := unbuffered; ginval1 := ?⟫ ( ( err = ESUCCESS → (∃ ri, fi. btree-inv (null, @(index(n0).lnum, maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize), remove-refsize0(istore0), remove-refsize0(istore0), zh, ri, fi)) ∧ inv(remove-refsize0(gstore0) \ ∅) ∧ inv(remove-refsize0(gstore0)) ∧ elems [] ∩ ∅ = ∅ ∧ ¬ dups([]) ∧ dom remove-refsize0(gstore0) ∪ elems [] = dom remove-refsize0(gstore0) ∪ ∅ ∧ remove-refsize0(remove-refsize0(gstore0)) = remove-refsize0(gstore0) ∧ inv(remove-refsize0(istore0)) ∧ inv(remove-refsize0(istore0)) ∧ remove-refsize0(istore0) ⊑ remove-refsize0(istore0) ∧ remove-refsize0(remove-refsize0(istore0)) = remove-refsize0(istore0) ∧ (pstate.journal? → [] ≠ [] ∧ pstate.lnum = [].last ∧ pstate.lnum ∈ remove-refsize0(gstore0)) ∧ (pstate.index? → pstate.lnum ∈ remove-refsize0(istore0))) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → btree-inv (null, @(index(n0).lnum, maxino2, indexnode(mkbrarray(BRANCH_SIZE), true, 0).flashsize), remove-refsize0(istore0), remove-refsize0(istore0), zh, ∅, ∅) ∧ remove-refsize0(gstore0) = ∅ ∧ ∅ = ∅ ∧ maxino4 = maxino4 ∧ [] = [] ∧ ∅ = ∅))