| st[r -- _type] .type = mkclasstype(class0), is_obj(str, r, st[r -- mkfs(class, mkclasstype(class1), fieldvar) ', refval(r)]), is_valid_ref(str, r, st), mkfs(class, mkclasstype(class1), fieldvar) ' ∈ instfields(class0), class0 ≤ class1 ⊦ r = jvmref, ∃ fs. fs ' ∈ instfields(class0) ∧ is_referencevalue(st[r -- mkfs(class, mkclasstype(class1), fieldvar) ', refval(r)][r -- fs ']) ∧ r = (st[r -- mkfs(class, mkclasstype(class1), fieldvar) ', refval(r)][r -- fs ']) .refval ∧ validrefs(str, r ', fs .type, st[r -- mkfs(class, mkclasstype(class1), fieldvar) ', refval(r)]) |
st[r -- _type] .type = mkclasstype(class0), is_obj(str, r, st[r -- mkfs(class, mkclasstype(class1), fieldvar) ', refval(r)]), is_valid_ref(str, r, st), mkfs(class, mkclasstype(class1), fieldvar) ' ∈ instfields(class0), class0 ≤ class1 ⊦ r = jvmref, mkfs(class, mkclasstype(class1), fieldvar) ' ∈ instfields(class0) ∧ is_referencevalue(st[r -- mkfs(class, mkclasstype(class1), fieldvar) ', refval(r)][r -- mkfs(class, mkclasstype(class1), fieldvar) ']) ∧ r = (st[r -- mkfs(class, mkclasstype(class1), fieldvar) ', refval(r)][r -- mkfs(class, mkclasstype(class1), fieldvar) ']) .refval ∧ validrefs(str, r ', mkfs(class, mkclasstype(class1), fieldvar) .type, st[r -- mkfs(class, mkclasstype(class1), fieldvar) ', refval(r)])
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (mkfs(class, mkclasstype(class1), fieldvar))]]