| initdone(class2, st), tdname∃(str, class2), mkfs(class0, ty, fieldvar) ' ∈ statfields(class2), tdname∃(str, class0), mkfs(class0, ty, fieldvar) ' ∈ statfields(class0), initdone(class0, addclass(class, fis + (mkfs(class, void_type, `initstate' .field) ' × initval(error)) ', st)), initdone(class0, st) → validfield(str, jvmref, mkfs(class0, ty, fieldvar) ', st) ⊦ class = `java.lang.Object' .class, initdone(class, st), mkfs(class, void_type, `initstate' .field) ' ∈ fis, validfield(str, jvmref, mkfs(class0, ty, fieldvar) ', addclass(class, fis + (mkfs(class, void_type, `initstate' .field) ' × initval(error)) ', st)) |
class1 ≠ class2, class2 ≠ `java.lang.Object' .class ⊦ initdone(class1, addclass(class2, fis, st)) ↔ initdone(class1, st)
class0 ≠ class ∧ class ≠ `java.lang.Object' .class, initdone(class2, st), tdname∃(str, class2), mkfs(class0, ty, fieldvar) ' ∈ statfields(class2), tdname∃(str, class0), mkfs(class0, ty, fieldvar) ' ∈ statfields(class0), initdone(class0, st), initdone(class0, st) → validfield(str, jvmref, mkfs(class0, ty, fieldvar) ', st) ⊦ class = `java.lang.Object' .class, initdone(class, st), mkfs(class, void_type, `initstate' .field) ' ∈ fis, validfield(str, jvmref, mkfs(class0, ty, fieldvar) ', addclass(class, fis + (mkfs(class, void_type, `initstate' .field) ' × initval(error)) ', st))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ¬ mkfs (class1, void_type, `initstate' .field) ' ∈ fis ⊦ initdone (class1, addclass (class1, fis + ( mkfs (class1, void_type, `initstate' .field) ' × val ) ', st)) ↔ val ≠ initval(error) ∧ val ≠ initval(undone)], [CSIMPSEQ : ⊦ (fis + fis0) + fis1 = fis + fis0 + fis1])], [EXTRATERMS : (st, fis + ( mkfs(class, void_type, `initstate' .field) ' × initval(error) ) ', class, class0)]]