| st[refs0 .last -- _type] .type = mkclasstype(class), validrefs(`docs2store', st[refs0 .last -- fs '] .refval ' + refs0, mkclasstype(`java.lang.Object' .class), st), fs ' ∈ instfields(class) ⊦ refs0 = [], refs0 .last = jvmref, hasSharing(refs0 .last, st) |
st[refs0 .last -- fs '] = refval(r) ∧ is_referencevalue(st[refs0 .last -- fs ']), st[refs0 .last -- _type] .type = mkclasstype(class), validrefs(`docs2store', r ' + refs0, mkclasstype(`java.lang.Object' .class), st), fs ' ∈ instfields(class) ⊦ refs0 = [], refs0 .last = jvmref, hasSharing(refs0 .last, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ is_referencevalue(val) → val .refval = jvmref], [CSIMPSEQ : ⊦ validrefs (str, jvmref ' + refs, ty, st) ↔ refs = []], [CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPELIM : is_referencevalue(val) ⊦ r = val .refval ↔ val = refval(r)])], [EXTRATERMS : (st[refs0 .last -- fs '], r)]]