| st[r0 -- _type] = st0[r0 -- _type], path∃(str, r, r0, st), path∃(str, r, r0, st0), is_valid_ref(r0, st0) ⊦ r0 = jvmref, st[r0 -- sk] = st0[r0 -- sk], is_classtype(st0[r0 -- _type] .type), is_arraytype(st0[r0 -- _type] .type) |
⊦ is_valid_ref(r, st) ↔ is_obj(r, st) ∨ is_array(r, st)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : addfuns, , isobj-classtype, ⊦ ¬ is_classtype (st[r -- _type] .type) → ¬ is_obj(r, st)], [CSIMPNAMEDSEQ : okfuns, , isarray-type, ⊦ ¬ is_arraytype (st[r -- _type] .type) → ¬ is_array(r, st)])], [EXTRATERMS : (st0, r0)]]