| st0[r0 -- _length] = intval(i0), is_arraytype(st[r0 -- _type] .type), st[r0 -- _type] .type .type ≤ ty0, i < i0, 0 ≤ i, validref(str, r0, mkarraytype(ty0), st), st ⊆ st0, 0 ≤ i0, type∃(str, st[r0 -- _type] .type) ∧ st[r0 -- _type] .type .jtelemtype ≠ void_type ∧ st[r0 -- _type] .type .jtelemtype ≠ abstract_type ∧ is_array(r0, st) ⊦ r0 = jvmref, r0 -- i ' ∈ st, noval .refval ∈ acc, r1 ≠ r2 ∧ ¬ r1 ∈ refs, ¬ r2 ∈ acc ∧ r2 ≠ r1 |
st0[r0 -- _length] = intval(i0), is_arraytype(st[r0 -- _type] .type), st[r0 -- _type] .type .type ≤ ty0, i < i0, 0 ≤ i, validref(str, r0, mkarraytype(ty0), st), st ⊆ st0, 0 ≤ i0, type∃(str, st[r0 -- _type] .type), is_array(r0, st) ⊦ r0 = jvmref, st[r0 -- _type] .type .type .jtelemtype = abstract_type, st[r0 -- _type] .type .type .jtelemtype = void_type, r0 -- i ' ∈ st, noval .refval ∈ acc, r1 ≠ r2 ∧ ¬ r1 ∈ refs, ¬ r2 ∈ acc ∧ r2 ≠ r1
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_arraytype(ty) → ty .jtelemtype = ty .type .jtelemtype])]]