| st[r -- _length] .intval = n→i(n), okarray(r, byte_type, st), r ∈ st ⊦ # getbytearray(r, st) = n, r = jvmref |
⊦ okarray(r, ty, st) ↔ okreftype(refval(r), mkarraytype(ty), st) ∧ r ≠ jvmref ∧ r -- _length ∈ st ∧ is_integervalue(st[r -- _length]) ∧ 0 ≤ st[r -- _length] .intval ∧ is_arrayref(r, st[r -- _length] .intval, st) ∧ (∀ j. 0 ≤ j ∧ j < st[r -- _length] .intval → oktype(st[r -- j '], ty, st))
⊦ okreftype(val, ty, st) ↔ is_referencevalue(val) ∧ (val .refval ≠ jvmref → val .refval -- _type ∈ st ∧ is_typevalue(st[val .refval -- _type]) ∧ st[val .refval -- _type] .type ≤ ty)
⊦ oktype(val, byte_type, st) ↔ is_bytevalue(val)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : storearrays, , getbar-len-03, ⊦ 0 ≤ st[r -- _length] .intval → # getbytearray(r, st) = i→n (st[r -- _length] .intval)], [CSIMPNAMEDSEQ : javavalue, , test-19, ⊦ is_referencevalue(refval(r))], [CSIMPNAMEDSEQ : javavalue, , sel-09, ⊦ refval(r) .refval = r], [CSIMPNAMEDSEQ : typefuns, , bytearray, ⊦ ty ≤ mkarraytype(byte_type) ↔ ty = mkarraytype(byte_type)], [CSIMPNAMEDSEQ : int-abs, , lels-01, ⊦ ¬ i ≤ j ↔ j < i], [CSIMPNAMEDSEQ : int-abs, , lels, ⊦ ¬ i < j ↔ j ≤ i], [CSIMPNAMEDFORWARD : storefuns, , instore-01, ⊦ r -- sk ∈ st → r ∈ st], [CSIMPNAMEDFORWARD : int-abs, , forward-le-01, ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPNAMEDSEQ : intnat, , n2n, ⊦ i→n(n→i(n)) = n])], [EXTRATERMS : (st, byte_type, r)]]