| st[r0 -- _length] = intval(i), st[r0 -- _type] = typeval(mkarraytype(int_type)), r0 ∈ st, r0 -- _type ∈ st, is_integervalue(val), is_arrayref(r0, i, st), r0 -- _length ∈ st, 0 ≤ i, ∀ j1. ¬ j1 < 0 ∧ ¬ i ≤ j1 → is_integervalue(st[r0 -- j1 ']) ⊦ okreftype(refval(r0), mkarraytype(int_type), st[r0 -- j ', val]), r0 = jvmref |
⊦ 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)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_referencevalue(refval(r))], [CSIMPSEQ : ⊦ refval(r) .refval = r], [CSIMPSEQ : ⊦ r -- _type ∈ st[r0 -- i ', val0] ↔ r -- _type ∈ st], [CSIMPSEQ : ⊦ (st[r -- i ', val][r0 -- _type]) = st[r0 -- _type]], [CSIMPSEQ : ⊦ is_typevalue(typeval(ty))], [CSIMPSEQ : ⊦ typeval(ty) .type = ty], [CSIMPSEQ : ⊦ mkarraytype(ty) ≤ mkarraytype(ty0) ↔ ty ≤ ty0], [CSIMPSEQ : ⊦ int_type ≤ ty ↔ ty = int_type])], [EXTRATERMS : (st[r0 -- j ', val], mkarraytype(int_type), refval(r0))]]