| ⊦ initundone(class1, st[_mode, val]) ↔ initundone(class1, st) |
⊦ initundone(class1, st) ↔ ¬ ¬ ( (jvmref -- mkfs(class1, void_type, `initstate' .field) ') × initval(undone) ∈ st ∨ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∧ _uninit ∈ st)
⊦ initundone(class1, st) ↔ (jvmref -- mkfs(class1, void_type, `initstate' .field) ') × initval(undone) ∈ st ∨ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∧ _uninit ∈ st
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ rk × val ∈ st ↔ ¬ ¬ (rk ∈ st ∧ st[rk] = val)], [CSIMPSEQ : ⊦ _uninit ∈ st[_mode, val] ↔ _uninit ∈ st], [CSIMPSEQ : ⊦ stringvar .field = stringvar0 .field ↔ stringvar = stringvar0], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) = mkfs(class0, ty0, fieldvar0) ↔ class = class0 ∧ ty = ty0 ∧ fieldvar = fieldvar0], [CSIMPSEQ : ⊦ fs ' = fs0 ' ↔ fs = fs0], [CSIMPSEQ : ⊦ _mode = jvmref -- sk ↔ sk = mkfs (`java.lang.Object' .class, void_type, `mode' .field) '], [CSIMPSEQ : ⊦ (st[rk0, val][rk]) = ((rk = rk0 ⊃ val; st[rk]))], [CSIMPSEQ : ⊦ r0 -- mkfs (class0, ty0, `initstate' .field) ' ∈ st[_mode, val] ↔ r0 -- mkfs (class0, ty0, `initstate' .field) ' ∈ st], [CSIMPSEQ : ⊦ rk × val ∈ st ↔ rk ∈ st ∧ st[rk] = val])]]