| fis .keys = instfields(class), validFields(r, fis, addobj(r, class, fis, st)), newref(r, st), validref(str, r, mkclasstype(class), addobj(r, class, fis, st)), fs ' × refval(r0) ∈ fis, fs ' ∈ instfields(class), validrefs(str, r0 ' + refs0, mkclasstype(`java.lang.Object' .class), st) ⊦ r = jvmref, validrefs(str, r ' + r0 ' + refs0, mkclasstype(`java.lang.Object' .class), addobj(r, class, fis, st)) |
⊦ validFields(r, fis, addobj(r, class, fis, st)) ∧ fis .keys = instfields(class) ∧ newref(r, st) ∧ class+∃(str, class) ∧ ¬ is_abstract(class) ∧ validref(str, r, mkclasstype(class), addobj(r, class, fis, st)) ∧ fs ' × refval(refs .first) ∈ fis ∧ fs ' ∈ instfields(class) ∧ refs ≠ [] ∧ validrefs(str, refs, ty, st) → validrefs(str, r ' + refs, (addobj(r, class, fis, st)[r -- _type]) .type, addobj(r, class, fis, st))
validFields(r, fis, addobj(r, class, fis, st)) ∧ fis .keys = instfields(class) ∧ newref(r, st) ∧ class+∃(str, class) ∧ ¬ is_abstract(class) ∧ validref(str, r, mkclasstype(class), addobj(r, class, fis, st)) ∧ fs ' × refval((r0 ' + refs0) .first) ∈ fis ∧ fs ' ∈ instfields(class) ∧ r0 ' + refs0 ≠ [] ∧ validrefs(str, r0 ' + refs0, mkclasstype(`java.lang.Object' .class), st) → validrefs(str, r ' + r0 ' + refs0, (addobj(r, class, fis, st)[r -- _type]) .type, addobj(r, class, fis, st)), fis .keys = instfields(class), validFields(r, fis, addobj(r, class, fis, st)), newref(r, st), validref(str, r, mkclasstype(class), addobj(r, class, fis, st)), fs ' × refval(r0) ∈ fis, fs ' ∈ instfields(class), validrefs(str, r0 ' + refs0, mkclasstype(`java.lang.Object' .class), st) ⊦ r = jvmref, validrefs(str, r ' + r0 ' + refs0, mkclasstype(`java.lang.Object' .class), addobj(r, class, fis, st))
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (fis, r, st, str, class, fs, r0 ' + refs0, mkclasstype(`java.lang.Object' .class))]]