| 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) |
⊦ 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)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ ¬ i < j ↔ j ≤ i], [CSIMPSEQ : ⊦ is_referencevalue(refval(r))], [CSIMPSEQ : ⊦ is_classtype(mkclasstype(class))], [CSIMPSEQ : ⊦ mkclasstype(class) .class = class], [CSIMPSEQ : ⊦ ¬ is_arraytype(mkclasstype(class))])], [EXTRATERMS : (st, sk, r)]]