| ⊦ initundone(class1, st[r -- _length, 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)
⊦ _uninit ∈ st[r -- _length, val] ∧ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class1, void_type, `initstate' .field) '] = initval(undone) ∧ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st[r -- _length, val] ↔ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∧ st[jvmref -- mkfs(class1, void_type, `initstate' .field) '] = initval(undone) ∨ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∧ _uninit ∈ st
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ rk × val ∈ st ↔ ¬ ¬ (rk ∈ st ∧ st[rk] = val)], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)], [CSIMPSEQ : ⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st], [CSIMPSEQ : ⊦ mkfs (class1, ty, `initstate' .field) ' ≠ _length], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ r = r0 ∧ sk = sk0], [CSIMPSEQ : ⊦ (st[rk0, val][rk]) = ((rk = rk0 ⊃ val; st[rk]))], [CSIMPSEQ : ⊦ rk × val ∈ st ↔ rk ∈ st ∧ st[rk] = val])]]