| st[jvmref -- sks0] = refval(r0), st[r -- _type] .type = mkclasstype(class), st[jvmref -- sks] = refval(r0), fits(jvmref, sks, st), fits(jvmref, sks0, st), validref(str, r, ty, st), fs ' ∈ instfields(class) ⊦ r = jvmref, sks0 = sks, sks0 = [], sks = [], r0 = jvmref, is_referencevalue(st[r -- fs ']) |
⊦ r ≠ jvmref ∧ validref(str, r, mkclasstype(class), st0) ∧ fs ' ∈ instfields(class) ∧ is_reftype(fs .type) → validref(str, st0[r -- fs '] .refval, fs .type, st0)
r ≠ jvmref ∧ validref(str, r, mkclasstype(class), st) ∧ fs ' ∈ instfields(class) ∧ is_reftype(fs .type) → validref(str, st[r -- fs '] .refval, fs .type, st), st[jvmref -- sks0] = refval(r0), st[r -- _type] .type = mkclasstype(class), st[jvmref -- sks] = refval(r0), fits(jvmref, sks, st), fits(jvmref, sks0, st), validref(str, r, ty, st), fs ' ∈ instfields(class) ⊦ r = jvmref, sks0 = sks, sks0 = [], sks = [], r0 = jvmref, is_referencevalue(st[r -- fs '])
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (r, str, class, st, fs)]]