| 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) ∧ fits(r, sk0 ', st) |
⊦ fits(r, sk ', st) ↔ r ≠ jvmref ∧ is_referencevalue(st[r -- sk]) ∧ (is_classtype(st[r -- _type] .type) → sk ∈ instfields(st[r -- _type] .type .class)) ∧ (is_arraytype(st[r -- _type] .type) → is_indexkey(sk) ∧ 0 ≤ sk .index ∧ sk .index < st[r -- _length] .intval)
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)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, sk0, r)]]