| ¬ ( ¬ junkrefs(str, refs, ty, st) ∧ ¬ junkref(str, r0, st) ∧ st[r0 -- _type] .type ≤ mkfs(class, mkarraytype(byte_type), fieldvar) .type ∧ r0 ≠ jvmref ∧ mkfs(class, mkarraytype(byte_type), fieldvar) .type ≠ void_type ∧ mkfs(class, mkarraytype(byte_type), fieldvar) ' ≠ _length), st[r0 -- _type] = typeval(mkarraytype(byte_type)), is_array(r0, st), junkrefs(str, refs, ty, st[r1 -- mkfs(class, mkarraytype(byte_type), fieldvar) ', refval(r0)]) ⊦ junkrefs(str, refs, ty, st) |
st[r0 -- _type] = typeval(mkarraytype(byte_type)), junkrefs(str, refs, ty, st[r1 -- mkfs(class, mkarraytype(byte_type), fieldvar) ', refval(r0)]), is_array(r0, st), junkref(str, r0, st) ⊦ r0 = jvmref, mkfs(class, mkarraytype(byte_type), fieldvar) ' = _length, junkrefs(str, refs, ty, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mkarraytype(ty) = mkarraytype(ty0) ↔ ty = ty0], [CSIMPSEQ : ⊦ typeval(ty) .type = ty], [CSIMPSEQ : ⊦ int_type ≠ mkarraytype(ty)], [CSIMPFORWARD : ⊦ mkfs(class1, ty, fieldvar) ' = _length → class1 = `*Array*' .class ∧ ty = int_type ∧ fieldvar = `length' .field], [CSIMPSEQ : ⊦ ¬ is_array(jvmref, st)], [CSIMPSEQ : ⊦ mkarraytype(ty) ≠ void_type], [CSIMPSEQ : ⊦ ty ≤ mkarraytype(byte_type) ↔ ty = mkarraytype(byte_type)], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) .type = ty])]]