| # 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) ⊦ vals1 = [], putByteArray(bytes0, r, n→i(# vals0) + 1, addarray(r, byte_type, vals0 + vals1[0, byteval(by)], st)) = addarray(r, byte_type, vals0 + byteval(by) ' + mkjavavalues(bytes0), st) |
⊦ vals ≠ [] → vals[0, val] = val ' + vals .rest
vals1 ≠ [], # 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) ⊦ vals1 = [], putByteArray(bytes0, r, n→i(# vals0) + 1, addarray(r, byte_type, vals0 + byteval(by) ' + vals1 .rest, st)) = addarray(r, byte_type, vals0 + byteval(by) ' + mkjavavalues(bytes0), st)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (byteval(by), vals1)]]