| 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, is_array(str, r0, st) ⊦ r0 = jvmref, r0 -- i ' ∈ st, noval .refval ∈ acc, r1 ≠ r2 ∧ ¬ r1 ∈ refs, ¬ r2 ∈ acc ∧ r2 ≠ r1 |
⊦ 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)
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
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, r0, str)]]