| ⊦ 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 ∨ ¬ jvmref -- mkfs(`java.lang.Object' .class, void_type, `uninit' .field) ' ∈ addarrays(refs, ty, ints, i, st)) ↔ (¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ st ∨ 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(`java.lang.Object' .class, void_type, `uninit' .field) ' ∈ st) |
⊦ is_fskey(sk) ∧ sk ≠ _length ∧ sk ≠ _type → (r -- sk ∈ addarrays(refs, ty, ints, i, st) ↔ r -- sk ∈ st)
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ _type = mkfs(class1, ty, fieldvar) ' → class1 = `java.lang.Object' .class ∧ ty = void_type ∧ fieldvar = `type' .field], [CSIMPSEQ : ⊦ stringvar .field = stringvar0 .field ↔ stringvar = stringvar0], [CSIMPFORWARD : ⊦ mkfs(class1, ty, fieldvar) ' = _length → class1 = `*Array*' .class ∧ ty = int_type ∧ fieldvar = `length' .field], [CSIMPSEQ : ⊦ is_fskey(fs ')], [CSIMPSEQ : ⊦ ¬ rk ∈ st → st[rk] = ∅[rk]], [CSIMPSEQ : ⊦ ∅[rk] = noval], [CSIMPSEQ : ⊦ noval ≠ initval(istate)])], [EXTRATERMS : (st, i, ints, ty, refs, mkfs (`java.lang.Object' .class, void_type, `uninit' .field) ', jvmref)]]