| 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)]) |
⊦ is_array(str, r, st) ∧ okval(val, st[r -- _type] .type .type) → is_array(str, r, st[r -- i ', val])
¬ (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)])
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (refval(r2), i, st, r0, str)]]