| ⊦ ty = void_type, (∀ class0. tdname∃(str, class0) → ( ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∨ (st[r -- mkfs(class, ty, fieldvar) ', val][jvmref -- mkfs(class0, void_type, `initstate' .field) ']) ≠ initval(error)) ∧ ( ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∨ (st[r -- mkfs(class, ty, fieldvar) ', val][jvmref -- mkfs(class0, void_type, `initstate' .field) ']) ≠ initval(undone)) ∧ ( jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st[r -- mkfs(class, ty, fieldvar) ', val] ∨ _uninit ≠ r -- mkfs(class, ty, fieldvar) ' ∧ ¬ _uninit ∈ st)) ↔ (∀ class. tdname∃(str, class) → initdone(class, st)) |
⊦ initdone(class1, st) ↔ ¬ ¬ (¬ initerror(class1, st) ∧ ¬ initundone(class1, st))
⊦ initerror(class1, st) ↔ (jvmref -- mkfs(class1, void_type, `initstate' .field) ') × initval(error) ∈ st
⊦ initundone(class1, st) ↔ ¬ ¬ ( (jvmref -- mkfs(class1, void_type, `initstate' .field) ') × initval(undone) ∈ st ∨ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∧ _uninit ∈ st)
⊦ ty = void_type, (∀ class0. tdname∃(str, class0) → ( ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∨ (st[r -- mkfs(class, ty, fieldvar) ', val][jvmref -- mkfs(class0, void_type, `initstate' .field) ']) ≠ initval(error)) ∧ ( ¬ jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st ∨ (st[r -- mkfs(class, ty, fieldvar) ', val][jvmref -- mkfs(class0, void_type, `initstate' .field) ']) ≠ initval(undone)) ∧ ( jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st[r -- mkfs(class, ty, fieldvar) ', val] ∨ _uninit ≠ r -- mkfs(class, ty, fieldvar) ' ∧ ¬ _uninit ∈ st)) ↔ (∀ class. tdname∃(str, class) → (¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class, void_type, `initstate' .field) '] ≠ initval(error)) ∧ (¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class, void_type, `initstate' .field) '] ≠ initval(undone)) ∧ (jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ ¬ _uninit ∈ st))
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : store, javastore, In-store, ⊦ rk × val ∈ st ↔ rk ∈ st ∧ st[rk] = val])]]