| okbytearray(r, st), unchanged(str, r, st, st0) ⊦ st[r -- _length] = st0[r -- _length], st[r -- _length] .intval = 0 ∧ ¬ 0 < st0[r -- _length] .intval, st[r -- _length] .intval = st0[r -- _length] .intval ∧ (0 ≤ j ∧ j < st[r -- _length] .intval → st[r -- j '] .byteval = st0[r -- j '] .byteval) |
⊦ unchanged(str, r, st, st0) ∧ path∃(str, r, r0, st) ∧ r0 ≠ jvmref ∧ (is_classtype(st[r0 -- _type] .type) → sk ∈ instfields(st[r0 -- _type] .type .class)) ∧ (is_arraytype(st[r0 -- _type] .type) → sk = _length ∨ is_indexkey(sk) ∧ 0 ≤ sk .index ∧ sk .index < st[r0 -- _length] .intval) → st[r0 -- sk] = st0[r0 -- sk]
⊦ unchanged(str, jvmref, st, st0)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : cyclic, , pathex-one, ⊦ path∃(str, r, r, st) ↔ r = jvmref ∨ r ≠ jvmref ∧ is_valid_ref(str, r, st)], [CSIMPNAMEDSEQ : addfuns, , is_valid_ref-okbytearray, ⊦ okbytearray(r, st) → is_valid_ref(str, r, st)], [CSIMPNAMEDSEQ : okfuns, , okbytearray-type, ⊦ okbytearray(r, st) → st[r -- _type] = typeval (mkarraytype(byte_type))], [CSIMPNAMEDSEQ : javavalue, , sel-11, ⊦ typeval(ty) .type = ty], [CSIMPNAMEDSEQ : javatype, , test-16, ⊦ ¬ is_classtype (mkarraytype(ty))], [CSIMPNAMEDSEQ : javatype, , test-09, ⊦ is_arraytype(mkarraytype(ty))], [CSIMPNAMEDSEQ : okfuns, , okbar, ⊦ ¬ okbytearray(jvmref, st)])], [EXTRATERMS : (str, r, st, st0, r, _length)]]