| st[r0 -- _type] = st0[r0 -- _type], path∃(str, r, r0, st), path∃(str, r, r0, st0), is_classtype(st0[r0 -- _type] .type) → sk ∈ instfields(st0[r0 -- _type] .type .class), is_classtype(st0[r0 -- _type] .type) → (∀ fs. fs ' ∈ instfields(st0[r0 -- _type] .type .class) → st[r0 -- fs '] = st0[r0 -- fs ']) ⊦ r0 = jvmref, st[r0 -- sk] = st0[r0 -- sk], is_arraytype(st0[r0 -- _type] .type) |
is_classtype(st0[r0 -- _type] .type), st[r0 -- _type] = st0[r0 -- _type], path∃(str, r, r0, st), path∃(str, r, r0, st0), is_classtype(st0[r0 -- _type] .type) → sk ∈ instfields(st0[r0 -- _type] .type .class), is_classtype(st0[r0 -- _type] .type) → (∀ fs. fs ' ∈ instfields(st0[r0 -- _type] .type .class) → st[r0 -- fs '] = st0[r0 -- fs ']) ⊦ r0 = jvmref, st[r0 -- sk] = st0[r0 -- sk], is_arraytype(st0[r0 -- _type] .type)
st[r0 -- _type] = st0[r0 -- _type], path∃(str, r, r0, st), path∃(str, r, r0, st0), is_classtype(st0[r0 -- _type] .type) → sk ∈ instfields(st0[r0 -- _type] .type .class), is_classtype(st0[r0 -- _type] .type) → (∀ fs. fs ' ∈ instfields(st0[r0 -- _type] .type .class) → st[r0 -- fs '] = st0[r0 -- fs ']) ⊦ is_classtype(st0[r0 -- _type] .type), r0 = jvmref, st[r0 -- sk] = st0[r0 -- sk], is_arraytype(st0[r0 -- _type] .type)
[[CONCRETESIMPRULES : ()], [EXTRAFMAS : (is_classtype(st0[r0 -- _type] .type))]]