| ⊦ class1 = class2, class2 = `java.lang.Object' .class, (jvmref -- mkfs(class1, void_type, `initstate' .field) ') × initval(undone) ∈ addclass(class2, fis, st) ∨ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ addclass(class2, fis, st) ∧ _uninit ∈ addclass(class2, fis, st) ↔ initundone(class1, st) |
class1 ≠ class2 ⊦ (jvmref -- mkfs(class1, ty, fieldvar) ') × val ∈ addclass(class2, fis, st) ↔ (jvmref -- mkfs(class1, ty, fieldvar) ') × val ∈ st
class1 ≠ class2 ⊦ jvmref -- mkfs(class2, ty, fieldvar) ' ∈ addclass(class1, fis, st) ↔ jvmref -- mkfs(class2, ty, fieldvar) ' ∈ st
⊦ class ≠ `java.lang.Object' .class → (_uninit ∈ addclass(class, fis, st) ↔ _uninit ∈ st)
⊦ class1 = class2, class2 = `java.lang.Object' .class, jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∧ st[jvmref -- mkfs(class1, void_type, `initstate' .field) '] = initval(undone) ∨ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∧ _uninit ∈ st ↔ initundone(class1, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ rk × val ∈ st ↔ rk ∈ st ∧ st[rk] = val])]]