| st[r -- mkfs(class, ty, fieldvar) '] = refval(r0), validrefs(str, r0 ', ty, st), mkfs(class, ty, fieldvar) ' ∈ instfields(st[r -- _type] .type .class), hasSharing(r0, st), is_obj(str, r, st), ∀ st, r, str, refs. # refs < # (r0 ' + []) → (validrefs(str, r ' + refs, st[r -- _type] .type, st) ∧ hasSharing(refs .last, st) → refs = [] ∨ hasSharing(r, st)) ⊦ r = jvmref, hasSharing(r, st) |
⊦ ¬ hasSharing(r, st) ∧ st[r -- sk] = refval(r0) ∧ r ≠ jvmref ∧ sk ∈ instfields(st[r -- _type] .type .class) ∧ is_classtype(st[r -- _type] .type) → ¬ hasSharing(r0, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ is_classtype (st[r -- _type] .type) → ¬ is_obj(str, r, st)])], [EXTRATERMS : (r, st, mkfs(class, ty, fieldvar) ', r0)]]