| # vals1 = 1 + # bytes0, ∀ vals, vals2, r0, st0. # vals2 = # bytes0 → putByteArray(bytes0, r0, n→i(# vals), addarray(r0, byte_type, vals + vals2, st0)) = addarray(r0, byte_type, vals + mkjavavalues(bytes0), st0) ⊦ putByteArray(by ' + bytes0, r, n→i(# vals0), addarray(r, byte_type, vals0 + vals1, st)) = addarray(r, byte_type, vals0 + byteval(by) ' + mkjavavalues(bytes0), st) |
⊦ bytes ≠ [] → putByteArray(bytes, r, i, st) = (putByteArray(bytes .rest, r, i + 1, st)[r -- i ', byteval(bytes .first)])
by ' + bytes0 ≠ [], # vals1 = 1 + # bytes0, ∀ vals, vals2, r0, st0. # vals2 = # bytes0 → putByteArray(bytes0, r0, n→i(# vals), addarray(r0, byte_type, vals + vals2, st0)) = addarray(r0, byte_type, vals + mkjavavalues(bytes0), st0) ⊦ (putByteArray((by ' + bytes0) .rest, r, n→i(# vals0) + 1, addarray(r, byte_type, vals0 + vals1, st)) [r -- n→i(# vals0) ', byteval((by ' + bytes0) .first) ] ) = addarray(r, byte_type, vals0 + byteval(by) ' + mkjavavalues(bytes0), st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ bytes + bytes0 ≠ [] ↔ bytes = [] ∧ bytes0 = []], [CSIMPSEQ : ⊦ by ' ≠ []], [CSIMPSEQ : ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1])], [EXTRATERMS : (addarray(r, byte_type, vals0 + vals1, st), n→i(# vals0), r, by ' + bytes0)]]