| st0[_mode] = throw(r, mkclasstype(class1)), st0 =mode st, ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(error), ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(undone) ⊦ ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∧ _uninit ∈ st, (¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st0 ∨ st0[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(error)) ∧ (¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st0 ∨ st0[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(undone)) ∧ (jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st0 ∨ ¬ _uninit ∈ st0) |
⊦ st =mode st0 ↔ st = st0 ∨ (∃ r, class1. st = (st0[r -- _type, typeval(mkclasstype(class1))][_mode, throw(r, mkclasstype(class1))]) ∧ newref(r, st0))
st0[_mode] = throw(r, mkclasstype(class1)), st0 = st ∨ (∃ r, class1. st0 = (st[r -- _type, typeval(mkclasstype(class1))][_mode, throw(r, mkclasstype(class1))]) ∧ newref(r, st)), ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(error), ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(undone) ⊦ ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∧ _uninit ∈ st, (¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st0 ∨ st0[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(error)) ∧ (¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st0 ∨ st0[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(undone)) ∧ (jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st0 ∨ ¬ _uninit ∈ st0)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, st0)]]