| r ∈ st, r -- sk ∈ st, unique_al(fv ' + fis0), instore(r, class, fv ' + fis0, st), ∀ r0, class0, sk0, val0, st0, r2. instore(r0, class0, (sk0 × val0) ' + fis0, st0) ∧ unique_al(fis0) → instore(r0, class0, (sk0 × refval(r2)) ', st0[r0 -- sk0, refval(r2)]) ∨ _type = sk0 ∨ sk0 ∈ fis0 ⊦ _type = sk, sk ∈ fis0, sk ∈ fv ', _type ∈ fis0, _type ∈ fv ', r ≠ jvmref ∧ r -- _type ∈ st[r -- sk, refval(r1)] ∧ (st[r -- sk, refval(r1)][r -- _type]) = typeval(mkclasstype(class)) ∧ (r -- sk) × refval(r1) ∈ st[r -- sk, refval(r1)] |
⊦ ¬ instore(jvmref, class, fis, st)
r ∈ st, r -- sk ∈ st, unique_al(fv ' + fis0), instore(r, class, fv ' + fis0, st), ∀ r0, class0, sk0, val0, st0, r2. instore(r0, class0, (sk0 × val0) ' + fis0, st0) ∧ unique_al(fis0) → instore(r0, class0, (sk0 × refval(r2)) ', st0[r0 -- sk0, refval(r2)]) ∨ _type = sk0 ∨ sk0 ∈ fis0 ⊦ _type = sk, r = jvmref, sk ∈ fis0, sk ∈ fv ', _type ∈ fis0, _type ∈ fv ', st[r -- _type] = typeval(mkclasstype(class)) ∧ r -- _type ∈ st
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ refval(r) = refval(r0) ↔ r = r0], [CSIMPSEQ : ⊦ (st[rk, val][rk]) = val], [CSIMPSEQ : ⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st], [CSIMPSEQ : ⊦ rk × val ∈ st ↔ ¬ ¬ (rk ∈ st ∧ st[rk] = val)], [CSIMPSEQ : ⊦ sk ≠ sk0 → (st[r -- sk, val][r0 -- sk0]) = st[r0 -- sk0]], [CSIMPSEQ : sk ≠ sk0 ⊦ r -- sk ∈ st[r -- sk0, val] ↔ r -- sk ∈ st])]]