| i ' .fs = mkfs(class, ty0, fieldvar), st[r0 -- _type] .type = mkarraytype(void_type), validref(str, r, ty, st), validvals(str, rkvs0, st), is_array(str, r0, st), ∀ str, r, ty, st. validref(str, r, ty, st) ∧ validvals(str, rkvs0, st) → validref(str, r, ty, st[rkvs0]) ⊦ r0 = jvmref, validref(str, r, ty, st[r0 -- i ', refval(jvmref)]), validref(str, r, ty, st[r0 -- i ', refval(jvmref)][rkvs0]) |
⊦ is_array(str, r, st) ↔ type∃(str, st[r -- _type] .type) ∧ st[r -- _type] .type .jtelemtype ≠ void_type ∧ st[r -- _type] .type .jtelemtype ≠ abstract_type ∧ is_array(r, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mkarraytype(ty) .jtelemtype = ty .jtelemtype], [CSIMPSEQ : ⊦ void_type .jtelemtype = void_type], [CSIMPSEQ : ⊦ void_type ≠ abstract_type])], [EXTRATERMS : (st, r0, str)]]