| sk .fs = mkfs(class, ty, fieldvar), st[r -- sk] = refval(r0), unchanged(str, r, st, st0), is_arraytype(st[r -- _type] .type) → is_indexkey(sk) ∧ 0 ≤ sk .index ∧ sk .index < st[r -- _length] .intval, is_classtype(st[r -- _type] .type) → sk ∈ instfields(st[r -- _type] .type .class) ⊦ is_classtype(st[r -- _type] .type), r = jvmref, junkref(str, r, st), unchanged(str, r0, st, st0), sk ∈ instfields(st[r -- _type] .type .class) ∧ is_obj(str, r, st) ∧ (r0 ≠ jvmref → st[r0 -- _type] .type ≤ ty ∧ is_valid_ref(str, r0, st)) |
sk .fs = mkfs(class, ty, fieldvar), st[r -- sk] = refval(r0), unchanged(str, r, st, st0), is_arraytype(st[r -- _type] .type), is_indexkey(sk), sk .index < st[r -- _length] .intval, 0 ≤ sk .index, 0 < st[r -- _length] .intval ⊦ r = jvmref, junkref(str, r, st), unchanged(str, r0, st, st0)
[[CONCRETESIMPRULES : ([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 : addfuns, , instfields-index-01, ⊦ is_indexkey(sk) → ¬ sk ∈ instfields(class)], [CSIMPNAMEDSEQ : javatype, , diff-01, ⊦ is_arraytype(ty) → ¬ is_classtype(ty)], [CSIMPNAMEDSEQ : junkrefs, , junkref-bad-type, ⊦ ¬ is_classtype (st[r -- _type] .type) ∧ ¬ is_arraytype (st[r -- _type] .type) → ( junkref(str, r, st) ↔ r ≠ jvmref)])]]