| st[rk] = refval(r0), is_shortvalue(st[r -- mkfs(class, short_type, fieldvar) ']), rk ∈ st, validrefnotnull(str, r0, ty, st) ⊦ r0 = jvmref, r = jvmref, is_referencevalue(st[r -- mkfs(class, short_type, fieldvar) ', shortval(sho)][rk]) ∧ validrefnotnull (str, (st[r -- mkfs(class, short_type, fieldvar) ', shortval(sho)][rk]) .refval, ty, st[r -- mkfs(class, short_type, fieldvar) ', shortval(sho)]) |
⊦ rk ≠ rk0 → (st[rk0, val][rk]) = st[rk]
rk ≠ r -- mkfs(class, short_type, fieldvar) ', st[rk] = refval(r0), is_shortvalue(st[r -- mkfs(class, short_type, fieldvar) ']), rk ∈ st, validrefnotnull(str, r0, ty, st) ⊦ r0 = jvmref, r = jvmref, is_referencevalue(st[rk]) ∧ validrefnotnull(str, st[rk] .refval, ty, st[r -- mkfs(class, short_type, fieldvar) ', shortval(sho)])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (st[rk, val][rk]) = val], [CSIMPSEQ : ⊦ ¬ is_referencevalue(shortval(sho))], [CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st], [CSIMPSEQ : ⊦ ¬ is_shortvalue(refval(r))])], [EXTRATERMS : (rk, shortval(sho), r -- mkfs(class, short_type, fieldvar) ', st)]]