| ∃ refs. dups(refs) ∧ refs .first = r ∧ validrefs(str, refs, (addarray(r, ty, vals, st)[r -- _type]) .type, addarray(r, ty, vals, st)), newref(r, st), ∀ r. refval(r) ∈ vals → ¬ junkref(str, r, st) ∧ ¬ cyclic(str, r, st) ⊦ r = jvmref |
newref(refs .first, st), dups(refs), validrefs(str, refs, mkarraytype(ty), addarray(refs .first, ty, vals, st)), ∀ r. refval(r) ∈ vals → ¬ junkref(str, r, st) ∧ ¬ cyclic(str, r, st) ⊦ refs .first = jvmref
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ newref(r, st) → r ≠ jvmref], [CSIMPSEQ : ⊦ typeval(ty) .type = ty], [CSIMPSEQ : ⊦ (addarray(r, ty, vals, st) [r -- _type ] ) = typeval(mkarraytype(ty))])]]