| is_fskey(mkfs(class, void_type, `initstate' .field) ') ∧ mkfs(class, void_type, `initstate' .field) ' ≠ _length ∧ mkfs(class, void_type, `initstate' .field) ' ≠ _type ⊦ mkfs(class, void_type, `initstate' .field) ' = _type, (st[jvmref -- mkfs(class, void_type, `initstate' .field) '] ≠ initval(error) ∨ ¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st) ∧ ( ¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ (addarrays(refs, ty, ints, i, st)[jvmref -- mkfs(class, void_type, `initstate' .field) ']) ≠ initval(undone)) ∧ (jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ ¬ _uninit ∈ addarrays(refs, ty, ints, i, st)) ↔ (¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class, void_type, `initstate' .field) '] ≠ initval(error)) ∧ ¬ initundone(class, st) |
⊦ is_fskey(sk) ∧ sk ≠ _length ∧ sk ≠ _type → (addarrays(refs, ty, ints, i, st)[r -- sk]) = st[r -- sk]
⊦ mkfs(class, void_type, `initstate' .field) ' = _type, (st[jvmref -- mkfs(class, void_type, `initstate' .field) '] ≠ initval(error) ∨ ¬ 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) ∧ (jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ ¬ _uninit ∈ addarrays(refs, ty, ints, i, st)) ↔ (¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ st[jvmref -- mkfs(class, void_type, `initstate' .field) '] ≠ initval(error)) ∧ ¬ initundone(class, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_fskey(fs ')], [CSIMPSEQ : ⊦ mkfs (class1, ty, `initstate' .field) ' ≠ _length])]]