| ⊦ _uninit ∈ st[_out, val] ∧ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∨ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st[_out, val] ∧ st[jvmref -- mkfs(class1, void_type, `initstate' .field) '] = initval(undone) ↔ 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 |
_uninit ∈ st[_out, val] ∧ ¬ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st ∨ jvmref -- mkfs(class1, void_type, `initstate' .field) ' ∈ st[_out, val] ∧ st[jvmref -- mkfs(class1, void_type, `initstate' .field) '] = initval(undone) ⊦ 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 ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st], [CSIMPSEQ : ⊦ _uninit ≠ _out], [CSIMPSEQ : ⊦ _out = jvmref -- sk ↔ sk = mkfs (`java.lang.Object' .class, void_type, `out' .field) '], [CSIMPSEQ : ⊦ fs ' = fs0 ' ↔ fs = fs0], [CSIMPSEQ : ⊦ mkfs(class1, ty, fieldvar) = mkfs(class2, ty0, fieldvar0) ↔ ¬ ¬ ( class1 = class2 ∧ ty = ty0 ∧ fieldvar = fieldvar0)], [CSIMPSEQ : ⊦ stringvar .field = stringvar0 .field ↔ stringvar = stringvar0])]]