| st[r -- _type] .type = mkclasstype(class), st[r -- sk0] = refval(r0), st[r -- sk] = refval(r0), sk0 ∈ instfields(class), sk ∈ instfields(class) ⊦ r0 = jvmref, sk0 = sk, r = jvmref, fits(r, sk ', st) ∧ r ≠ jvmref ∧ is_referencevalue(st[r -- sk0]) ∧ (is_classtype(st[r -- _type] .type) → sk0 ∈ instfields(st[r -- _type] .type .class)) ∧ (is_arraytype(st[r -- _type] .type) → is_indexkey(sk0) ∧ 0 ≤ sk0 .index ∧ sk0 .index < st[r -- _length] .intval) |
st[r -- sk] = refval(r0), st[r -- sk0] = refval(r0), st[r -- _type] .type = mkclasstype(class), sk ∈ instfields(class), sk0 ∈ instfields(class) ⊦ r = jvmref, sk0 = sk, r0 = jvmref, fits(r, sk ', st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ is_arraytype(mkclasstype(class))], [CSIMPSEQ : ⊦ mkclasstype(class) .class = class], [CSIMPSEQ : ⊦ is_classtype(mkclasstype(class))], [CSIMPSEQ : ⊦ is_referencevalue(refval(r))], [CSIMPSEQ : ⊦ ¬ i < j ↔ j ≤ i], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)])]]