| 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], is_classtype(st0[r0 -- _type] .type), path∃(str, r, r0, st), path∃(str, r, r0, st0), sk ∈ instfields(st0[r0 -- _type] .type .class), ∀ fs. fs ' ∈ instfields(st0[r0 -- _type] .type .class) → st[r0 -- fs '] = st0[r0 -- fs '] ⊦ r0 = jvmref, st[r0 -- sk] = st0[r0 -- sk]
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : javatype, , diff, ⊦ is_classtype(ty) → ¬ is_arraytype(ty)])]]