| sks ≠ [], (addarray(r, ty, vals, st)[r -- sks0]) = refval(r0), (addarray(r, ty, vals, st)[r -- sks]) = refval(r0), newref(r, st), validreflist(str, vals, ty, st), disjoint(str, vals .nonnullrefs, st), r ≠ jvmref ∧ is_referencevalue(addarray(r, ty, vals, st)[r -- sks .first]) ∧ (is_classtype((addarray(r, ty, vals, st)[r -- _type]) .type) → sks .first ∈ instfields((addarray(r, ty, vals, st)[r -- _type]) .type .class)) ∧ ( is_arraytype((addarray(r, ty, vals, st)[r -- _type]) .type) → is_indexkey(sks .first) ∧ 0 ≤ sks .first .index ∧ sks .first .index < (addarray(r, ty, vals, st)[r -- _length]) .intval) ∧ fits((addarray(r, ty, vals, st)[r -- sks .first]) .refval, sks .rest, addarray(r, ty, vals, st)), fits(r, sks0, addarray(r, ty, vals, st)) ⊦ sks0 = sks, sks0 = [], sks = [], r0 = jvmref, r = jvmref, hasSharing(vals .nonnullrefs, st), dups(vals .nonnullrefs) |
(addarray(r, ty, vals, st)[r -- sks]) = refval(r0), (addarray(r, ty, vals, st)[r -- sks0]) = refval(r0), 0 ≤ sks .first .index, sks .first .index < n→i(# vals), is_indexkey(sks .first), fits(r, sks0, addarray(r, ty, vals, st)), fits((addarray(r, ty, vals, st)[r -- sks .first]) .refval, sks .rest, addarray(r, ty, vals, st)), is_referencevalue(addarray(r, ty, vals, st)[r -- sks .first]), disjoint(str, vals .nonnullrefs, st), validreflist(str, vals, ty, st), newref(r, st) ⊦ sks = [], r = jvmref, r0 = jvmref, sks0 = [], sks0 = sks, vals = [], dups(vals .nonnullrefs), hasSharing(vals .nonnullrefs, st)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : list-data, javavalues, l, ⊦ # vals = 0 ↔ vals = []], [CSIMPNAMEDSEQ : nat-basic1, , z, ⊦ 0 < n ↔ n ≠ 0], [CSIMPNAMEDSEQ : intnat, , num-n2i-ls-02, 0 ≤ i ⊦ ((* i)) < n→i(n) ↔ i→n(i) < n], [CSIMPNAMEDFORWARD : int-abs, , forward-le-01, ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPNAMEDFORWARD : int-abs, , forward-le-05, ⊦ i < j ∧ 0 ≤ i → 0 < j], [CSIMPNAMEDSEQ : javavalue, , sel-04, ⊦ intval(i) .intval = i], [CSIMPNAMEDSEQ : addarray, , length-1init-01, ⊦ (addarray(r, ty, vals, st) [r -- _length ] ) = intval(n→i(# vals))], [CSIMPNAMEDSEQ : javatype, , test-09, ⊦ is_arraytype(mkarraytype(ty))], [CSIMPNAMEDSEQ : javatype, , test-16, ⊦ ¬ is_classtype (mkarraytype(ty))], [CSIMPNAMEDSEQ : javavalue, , sel-11, ⊦ typeval(ty) .type = ty], [CSIMPNAMEDSEQ : addarray, , type-1init, ⊦ (addarray(r, ty, vals, st) [r -- _type ] ) = typeval(mkarraytype(ty))])]]