| 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 |
st[r0 -- _type] .type = mkarraytype(ty), st0[r0 -- _length] = intval(i0), is_arraytype(st[r0 -- _type] .type), ty ≤ 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, ty .jtelemtype = abstract_type, ty .jtelemtype = void_type, r0 -- i ' ∈ st, noval .refval ∈ acc, r1 ≠ r2 ∧ ¬ r1 ∈ refs, ¬ r2 ∈ acc ∧ r2 ≠ r1
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ is_arraytype(ty) → ( ty0 = ty .type ↔ ty = mkarraytype(ty0))])], [EXTRATERMS : (st[r0 -- _type] .type, ty)]]