| rk = r0 -- sk0, r0 = jvmref, sk0 .fs .type = void_type, sk0 .fs .field = `initstate' .field, is_fskey(sk0), rk ∈ st, ∀ rk0. rk0 ∈ st ∧ rk0 .ref = jvmref ∧ ¬ is_indexkey(rk0 .key) ∧ rk0 .key .fs .type = void_type ∧ rk0 .key .fs .field = `initstate' .field → st[rk0] ≠ initval(undone) ∧ st[rk0] ≠ initval(error) ⊦ r = jvmref, rk = r -- sk, _uninit ∈ st, st[rk] ≠ initval(undone) ∧ st[rk] ≠ initval(error) |
⊦ r -- sk ∈ st → r ∈ st
sk0 .fs .type = void_type, sk0 .fs .field = `initstate' .field, is_fskey(sk0), jvmref -- sk0 ∈ st, jvmref ∈ st, ∀ rk0. rk0 ∈ st ∧ rk0 .ref = jvmref ∧ ¬ is_indexkey(rk0 .key) ∧ rk0 .key .fs .type = void_type ∧ rk0 .key .fs .field = `initstate' .field → st[rk0] ≠ initval(undone) ∧ st[rk0] ≠ initval(error) ⊦ r = jvmref, _uninit ∈ st, st[jvmref -- sk0] ≠ initval(undone) ∧ st[jvmref -- sk0] ≠ initval(error)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)])]]