| st[(r ' + refs) .last -- _type] .type = mkclasstype(class), st[(r ' + refs) .last -- mkfs(class0, ty, fieldvar) '] = refval(r0), mkfs(class0, ty, fieldvar) ' ∈ instfields(class), validrefs(str, r0 ', ty, st), validrefs(str, r ' + refs, mkclasstype(`java.lang.Object' .class), st), validrefs(str, r ' + refs + r0 ', mkclasstype(`java.lang.Object' .class), st), is_valid_ref(str, r, st), is_obj(str, (r ' + refs) .last, st) ⊦ r = r0, r = jvmref, (r ' + refs) .last = jvmref, ∃ fs0. fs0 ' ∈ instfields(class) ∧ is_referencevalue(st[(r ' + refs) .last -- fs0 ']) ∧ st[(r ' + refs) .last -- fs0 '] .refval = r0 |
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_referencevalue(refval(r))], [CSIMPSEQ : ⊦ refval(r) .refval = r])], [EXTRATERMS : (mkfs(class0, ty, fieldvar))]]