| st[r0 -- _type] .type ≤ ty, is_reftype(ty0), junkrefs(str, r0 ' + acc, ty, st[r -- mkfs(class, ty0, fieldvar) ', refval(jvmref)]), is_obj(str, r0, st), ∀ str, ty, st, fs, r. ¬ junkrefs(str, acc, ty, st) ∧ is_reftype(fs .type) → ¬ junkrefs(str, acc, ty, st[r -- fs ', refval(jvmref)]), r0 ≠ r ∨ _type ≠ mkfs(class, ty0, fieldvar) ' ⊦ r0 = jvmref, junkrefs(str, r0 ' + acc, ty, st), is_obj(str, r0, st[r -- mkfs(class, ty0, fieldvar) ', refval(jvmref)]) |
⊦ is_obj(str, r, st) ∧ oktype(val, ty, st) ∧ ty ≠ void_type → is_obj(str, r, st[r1 -- mkfs(class, ty, fieldvar) ', val])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPSEQ : ⊦ oktype(val, ty, st) ↔ okval(val, ty)], [CSIMPSEQ : ⊦ okval(refval(r), ty) ↔ ty = void_type ∨ is_reftype(ty)], [CSIMPSEQ : ⊦ ¬ is_reftype(void_type)])], [EXTRATERMS : (refval(jvmref), fieldvar, ty0, class, r, st, r0, str)]]