| jvmref -- _type ∈ addclass(class1, fis, st), jvmref ∈ addclass(class1, fis, st) ⊦ _type ∈ fis, jvmref -- _type ∈ st |
⊦ addclass(class1, [], st) = st[jvmref -- mkfs(class1, void_type, `initstate' .field) ', initval(done)]
∀ class1, st. jvmref -- _type ∈ addclass(class1, fis0, st) ∧ jvmref ∈ addclass(class1, fis0, st) → _type ∈ fis0 ∨ jvmref -- _type ∈ st, jvmref -- _type ∈ addclass(class1, fv + fis0, st), jvmref ∈ addclass(class1, fv + fis0, st) ⊦ _type ∈ fv + fis0, jvmref -- _type ∈ st
[[CONCRETESIMPRULES : ([CSIMPGEN : fieldinits generated by [], +;], [CSIMPSEQ : ⊦ stringvar .field = stringvar0 .field ↔ stringvar = stringvar0], [CSIMPFORWARD : ⊦ _type = mkfs(class1, ty, fieldvar) ' → class1 = `java.lang.Object' .class ∧ ty = void_type ∧ fieldvar = `type' .field], [CSIMPSEQ : ⊦ ¬ sk ∈ []], [CSIMPSEQ : ⊦ r ∈ st[r -- sk, val]], [CSIMPSEQ : sk ≠ sk0 ⊦ r -- sk ∈ st[r -- sk0, val] ↔ r -- sk ∈ st], [CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st])]]