| fs = mkfs(class0, ty0, fieldvar0), ty0 = void_type, fieldvar0 = `initstate' .field, jvmref -- fs ' ∈ st, jvmref ∈ st, ∀ rk. rk ∈ st ∧ rk .ref = jvmref ∧ ¬ is_indexkey(rk .key) ∧ rk .key .fs .type = void_type ∧ rk .key .fs .field = `initstate' .field → st[rk] ≠ initval(undone) ∧ st[rk] ≠ initval(error) ⊦ ty = void_type, fs = mkfs(class, ty, fieldvar), _uninit ∈ st, st[jvmref -- fs '] ≠ initval(undone) ∧ st[jvmref -- fs '] ≠ initval(error) |
jvmref -- mkfs(class0, void_type, `initstate' .field) ' ∈ st, jvmref ∈ st, ∀ rk. rk ∈ st ∧ rk .ref = jvmref ∧ ¬ is_indexkey(rk .key) ∧ rk .key .fs .type = void_type ∧ rk .key .fs .field = `initstate' .field → st[rk] ≠ initval(undone) ∧ st[rk] ≠ initval(error) ⊦ ty = void_type, _uninit ∈ st, st[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(undone) ∧ st[jvmref -- mkfs(class0, void_type, `initstate' .field) '] ≠ initval(error)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mkfs(class1, ty, fieldvar) = mkfs(class2, ty0, fieldvar0) ↔ ¬ ¬ ( class1 = class2 ∧ ty = ty0 ∧ fieldvar = fieldvar0)])]]