| st0[r -- _type] .type = mkclasstype(class0), validref(str, r, mkclasstype(class), st0), mkfs(class1, ty, fieldvar) ' ∈ instfields(class) ⊦ st[r -- mkfs(class1, ty, fieldvar) '] = noval, r = jvmref, r -- mkfs(class1, ty, fieldvar) ' ∈ st0, class0 ≤ class, mkfs(class1, ty, fieldvar) ' ∈ instfields(class0) ∧ (is_reftype(ty) ∨ ty = abstract_type) ∧ noval .refval ≠ jvmref |
⊦ validref(str, r, ty, st) ↔ r = jvmref ∨ st[r -- _type] .type ≤ ty ∧ ¬ junkref(str, r, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mkclasstype(class1) ≤ mkclasstype(class2) ↔ class1 ≤ class2], [CSIMPSEQ : ⊦ fs ' ∈ instfields(class) ∧ class0 ≤ class → fs ' ∈ instfields(class0)])], [EXTRATERMS : (st0, mkclasstype(class), r, str)]]