| persistence_encode_group_nodes#(NODELIST, LNUM, N; ; BUF, ADRLIST, ERR) {ERR := ESUCCESS; BUF := mkbuf(NODELIST.flashsize); ADRLIST := []; let IDX = 0, OFFSET = 0 in while ERR = ESUCCESS ∧ IDX < # NODELIST do {/* (prepost-encode-group-nodes : invariant IDX ≤ # NODELIST ∧ (ERR = ESUCCESS ∨ ⌊ERR⌋ ) ∧ ( ERR = ESUCCESS → # BUF = # BUF` ∧ (∃ gndx0, gndx1. NODELIST = gndx0 + gndx1 ∧ # gndx0 = IDX ∧ OFFSET = gndx0.flashsize ∧ (∃ lax, buf0, buf1. lax.to-adr(LNUM) = ADRLIST ∧ BUF = buf0 + buf1 ∧ # buf0 = OFFSET ∧ abs-nodes(buf0, N, gndx0, lax, false)))) wfbound # NODELIST - IDX) */; let SIZE = ? in {encode_group_node#(NODELIST[IDX], OFFSET; SIZE, BUF; ERR); ADRLIST := ADRLIST + @(LNUM, N + OFFSET, SIZE); OFFSET := OFFSET + SIZE}; IDX := IDX + 1} } |