| validstatfields(str, sks, st), is_predefined_class(class), newref(r, st) ⊦ r = jvmref, validstatfields(str, sks, addobj(r, class, [], st)[_mode, throw(r, mkclasstype(class))]) |
⊦ rk .ref = jvmref ∧ ¬ rk .key ∈ sks ∧ ( ¬ is_fskey(rk .key) ∨ rk .key .fs .type ≠ void_type ∨ rk .key .fs .field ≠ `initstate' .field ∧ rk .key .fs ≠ mkfs(`java.lang.Object' .class, void_type, `uninit' .field)) → (validstatfields(str, sks, st[rk, val]) ↔ validstatfields(str, sks, st))
⊦ mkfs(class, void_type, fieldvar) ' ∈ sks → ¬ validstatfields(str, sks, st)
_mode .ref = jvmref ∧ ¬ _mode .key ∈ sks ∧ ( ¬ is_fskey(_mode .key) ∨ _mode .key .fs .type ≠ void_type ∨ _mode .key .fs .field ≠ `initstate' .field ∧ _mode .key .fs ≠ mkfs(`java.lang.Object' .class, void_type, `uninit' .field)), validstatfields(str, sks, st), is_predefined_class(class), newref(r, st) ⊦ r = jvmref, validstatfields(str, sks, addobj(r, class, [], st))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ _mode .ref = jvmref], [CSIMPSEQ : ⊦ _mode .key = mkfs (`java.lang.Object' .class, void_type, `mode' .field) '], [CSIMPSEQ : ⊦ is_fskey(fs ')], [CSIMPSEQ : ⊦ fs ' .fs = fs], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) .type = ty], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) .field = fieldvar], [CSIMPSEQ : ⊦ stringvar .field = stringvar0 .field ↔ stringvar = stringvar0], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) = mkfs(class0, ty0, fieldvar0) ↔ class = class0 ∧ ty = ty0 ∧ fieldvar = fieldvar0])], [EXTRATERMS : (throw(r, mkclasstype(class)), _mode, addobj(r, class, [], st), sks, str)]]