| (addarray(r, ty, mkjavavalues(refs), st)[refs[i→n(i0)] -- sks]) = refval(r0), (addarray(r, ty, mkjavavalues(refs), st)[refs[i→n(i)] -- sks1]) = refval(r0), st ⊆ addarray(r, ty, mkjavavalues(refs), st), is_referencevalue(addarray(r, ty, mkjavavalues(refs), st)[r -- (i ' ' + sks1)]), is_referencevalue(addarray(r, ty, mkjavavalues(refs), st)[r -- (i0 ' ' + sks)]), i→n(i) < # refs, 0 ≤ i0, fits(refs[i→n(i0)], sks, st), fits(refs[i→n(i)], sks1, st), disjoint(str, refs, st), validreflist(str, mkjavavalues(refs), ty, st), newref(r, st), 0 ≤ i, i→n(i0) < # refs, i0 < n→i(# refs), i < n→i(# refs) ⊦ i0 ' ' + sks = i ' ' + sks1, r = jvmref, refs = [], r0 = jvmref, junkref(str, refs[i→n(i)], st), dups(refs), hasSharing(refs, st), junkref(str, refs[i→n(i0)], st), refs[i→n(i0)] -- sks ∈ st |
⊦ sks ≠ [] ∧ ¬ junkref(str, r, st) ∧ fits(r, sks, st) → r -- sks ∈ st
⊦ fits(r, [], st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ st[r -- []] = refval(r)], [CSIMPSEQ : ⊦ refval(r) = refval(r0) ↔ r = r0], [CSIMPSEQ : ⊦ sks + [] = sks], [CSIMPSEQ : ⊦ (sks + sks0) + sks1 = sks + sks0 + sks1], [CSIMPSEQ : ⊦ st[r -- sk '] = st[r -- sk]], [CSIMPSEQ : ⊦ r -- [] ∈ st ↔ r ∈ st], [CSIMPSEQ : ⊦ ¬ r ∈ st → ( junkref(str, r, st) ↔ r ≠ jvmref)])], [EXTRATERMS : (sks, str, refs[i→n(i0)], st)]]