| is_arraytype(st[r -- _type] .type), is_array(str, r, st) ⊦ r = jvmref, sk = _type, junkref(str, r, st), path∃(str, r, r0, st), st[r -- _length] = (st[r0 -- sk, val][r -- _length]) ∧ (0 ≤ i ∧ i < st[r -- _length] .intval → st[r -- i '] = (st[r0 -- sk, val][r -- i '])) |
⊦ rk ≠ rk0 → (st[rk0, val][rk]) = st[rk]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ _type ≠ _length], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ r = r0 ∧ sk = sk0], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)], [CSIMPSEQ : ⊦ path∃(str, r, r, st) ↔ r = jvmref ∨ r ≠ jvmref ∧ is_valid_ref(str, r, st)], [CSIMPSEQ : ⊦ is_arraytype (st[r -- _type] .type) ∧ r ≠ jvmref → ( is_valid_ref(str, r, st) ↔ is_array(str, r, st))], [CSIMPSEQ : ⊦ r ≠ r0 → (st[r0 -- sk0, val][r -- sk]) = st[r -- sk]])], [EXTRATERMS : (r -- _length, val, r0 -- sk, st)]]