| sk .fs = mkfs(class, ty, fieldvar), sk0 × val0 ∈ fis0, ∀ sk1, val1. sk1 × val1 ∈ fis0 ∨ sk1 = sk ∧ val1 = val → is_integervalue(val1) ∧ is_fskey(sk1) ∧ is_arraytype(sk1 .fs .type) ∧ okarray(st[r -- sk1], sk1 .fs .type .type, val1 .intval, st) ⊦ okarrays(r, fis0, st), is_integervalue(val0) ∧ ¬ is_indexkey(sk0) ∧ is_arraytype(sk0 .fs .type) ∧ okarray(st[r -- sk0], sk0 .fs .type .type, val0 .intval, st) |
sk0 .fs = mkfs(class0, ty0, fieldvar0), sk .fs = mkfs(class, ty, fieldvar), sk0 × val0 ∈ fis0, ∀ sk1, val1. sk1 × val1 ∈ fis0 ∨ sk1 = sk ∧ val1 = val → is_integervalue(val1) ∧ is_fskey(sk1) ∧ is_arraytype(sk1 .fs .type) ∧ okarray(st[r -- sk1], sk1 .fs .type .type, val1 .intval, st) ⊦ okarrays(r, fis0, st), is_integervalue(val0) ∧ ¬ is_indexkey(sk0) ∧ is_arraytype(ty0) ∧ okarray(st[r -- sk0], ty0 .type, val0 .intval, st)
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ class = fs .class ∧ ty = fs .type ∧ fieldvar = fs .field ↔ fs = mkfs(class, ty, fieldvar)])], [EXTRATERMS : (sk0 .fs, class0, ty0, fieldvar0)]]