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