| st[r -- mkfs(class, ty, fieldvar) '] = refval(r0), st[r -- _type] .type = mkclasstype(class0), unchanged(str, r, st, st0), mkfs(class, ty, fieldvar) ' ∈ instfields(class0), is_obj(str, r, st) ⊦ r0 = jvmref, r = jvmref, unchanged(str, r0, st, st0), st[r0 -- _type] .type ≤ ty ∧ is_valid_ref(str, r0, st), ∃ fs. fs ' ∈ instfields(class0) ∧ is_referencevalue(st[r -- fs ']) ∧ st[r -- fs '] .refval ≠ jvmref ∧ (¬ st[st[r -- fs '] .refval -- _type] .type ≤ fs .type ∨ junkref(str, st[r -- fs '] .refval, st)) |
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : fieldspec, , sel-03, ⊦ mkfs(class, ty, fieldvar) .type = ty], [CSIMPNAMEDSEQ : javavalue, , test-19, ⊦ is_referencevalue(refval(r))], [CSIMPNAMEDSEQ : javavalue, , sel-09, ⊦ refval(r) .refval = r], [CSIMPNAMEDSEQ : junkrefs, , junkref-not-valid-01, ⊦ ¬ is_valid_ref(str, r, st) ∧ r ≠ jvmref → junkref(str, r, st)])], [EXTRATERMS : (mkfs(class, ty, fieldvar))]]