| ¬ (is_array(str, r0, st) ∧ okval(refval(r2), st[r0 -- _type] .type .type)), st[r0 -- _type] .type = mkarraytype(ty), is_array(str, r0, st), i < st[r0 -- _length] .intval, validref(str, r2, ty, st), 0 < st[r0 -- _length] .intval, 0 ≤ i, validrefs(str, r0 ' + refs0, mkarraytype(ty), st[r0 -- i ', refval(r2)]), r2 = jvmref → is_reftype(ty) ⊦ r0 = (r0 ' + refs0) .last, r0 = jvmref, r0 ∈ refs0, dups(refs0), path∃(str, r0, (r0 ' + refs0) .last, st), path∃(str, r2, (r0 ' + refs0) .last, st), is_array(str, r0, st[r0 -- i ', refval(r2)]) |
st[r0 -- _type] .type = mkarraytype(ty), validrefs(str, r0 ' + refs0, mkarraytype(ty), st[r0 -- i ', refval(r2)]), 0 ≤ i, 0 < st[r0 -- _length] .intval, validref(str, r2, ty, st), i < st[r0 -- _length] .intval, is_array(str, r0, st) ⊦ r0 = jvmref, r0 = (r0 ' + refs0) .last, ty = void_type, r2 = jvmref, is_array(str, r0, st[r0 -- i ', refval(r2)]), path∃(str, r2, (r0 ' + refs0) .last, st), path∃(str, r0, (r0 ' + refs0) .last, st), dups(refs0), r0 ∈ refs0, is_reftype(ty)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : javatype, , sel-01, ⊦ mkarraytype(ty) .type = ty], [CSIMPNAMEDSEQ : valuefuns, , okval-refval, ⊦ okval(refval(r), ty) ↔ ty = void_type ∨ is_reftype(ty)])]]