| ⊦ rk ∈ st ∧ is_shortvalue(st[rk]) → (initdone(class, st[rk, shortval(sho)]) ↔ 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
⊦ initdone(class1, st) ↔ ¬ ¬ (¬ initerror(class1, st) ∧ ¬ 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)
rk ∈ st, is_shortvalue(st[rk]) ⊦ ( ¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ ((jvmref -- mkfs(class, void_type, `initstate' .field) ' = rk ⊃ shortval(sho); st[jvmref -- mkfs(class, void_type, `initstate' .field) '])) ≠ initval(error)) ∧ (jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st[rk, shortval(sho)] ∨ ¬ _uninit ∈ st) ∧ ( ¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ ((jvmref -- mkfs(class, void_type, `initstate' .field) ' = rk ⊃ shortval(sho); st[jvmref -- mkfs(class, void_type, `initstate' .field) '])) ≠ initval(undone)) ↔ (¬ 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) ∧ (¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class, void_type, `initstate' .field) '] ≠ initval(error))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ rk × val ∈ st ↔ rk ∈ st ∧ st[rk] = val], [CSIMPSEQ : ⊦ (st[rk0, val][rk]) = ((rk = rk0 ⊃ val; st[rk]))], [CSIMPSEQ : ⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st], [CSIMPSEQ : ⊦ rk × val ∈ st ↔ ¬ ¬ (rk ∈ st ∧ st[rk] = val)])]]