| ∀ vals0, i, vals1, r, st. n→i(# vals0) = i ∧ # vals1 = # bytes0 → putByteArray(bytes0, r, i, addarray(r, byte_type, vals0 + vals1, st)) = addarray(r, byte_type, vals0 + mkjavavalues(bytes0), st) ⊦ n→i(# vals0) = i ∧ # vals1 = # (by + bytes0) → putByteArray(by + bytes0, r, i, addarray(r, byte_type, vals0 + vals1, st)) = addarray(r, byte_type, vals0 + mkjavavalues(by + bytes0), st) |
# 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)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mkjavavalues(by ' + bytes) = byteval(by) ' + mkjavavalues(bytes)], [CSIMPSEQ : ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1], [CSIMPSEQ : ⊦ # by ' = 0 +1], [CSIMPSEQ : ⊦ # (bytes + bytes0) = # bytes + # bytes0], [CSIMPSEQ : ⊦ by + bytes = by ' + bytes])]]