| ⊦ initundone(class1, addclass(class1, fis + (mkfs(class1, void_type, `initstate' .field) ' × val) ' + fis0, st)) ↔ val = initval(undone), mkfs(class1, void_type, `initstate' .field) ' ∈ fis |
⊦ initundone(class1, st) ↔ (jvmref -- mkfs(class1, void_type, `initstate' .field) ') × initval(undone) ∈ st ∨ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∧ _uninit ∈ st
mkfs(class1, ty, fieldvar) ' ∈ fis ⊦ (jvmref -- mkfs(class1, ty, fieldvar) ') × val ∈ addclass(class1, fis, st) ↔ fis[mkfs(class1, ty, fieldvar) '] = val
⊦ 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))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (fis + fis0) + fis1 = fis + fis0 + fis1], [CSIMPSEQ : ⊦ sk ∈ fis + (sk × val) ' + fis0], [CSIMPSEQ : ⊦ ¬ sk ∈ fis → (fis + (sk × val) ' + fis0)[sk] = val], [CSIMPSEQ : ⊦ initval(istate) = initval(istate0) ↔ istate = istate0])], [EXTRATERMS : (addclass (class1, fis + ( mkfs(class1, void_type, `initstate' .field) ' × val ) ' + fis0, st), class1)]]