| is_fskey(sk), is_integervalue(val0), is_arraytype(sk0 .fs .type), okarray(st[r -- sk0], sk0 .fs .type .type, val0 .intval, st), ∀ sk0, r1, st0, r2, val0. ¬ is_indexkey(sk0) → sk0 = _type ∨ sk0 = _length ∨ (okarrays(r1, fis0, st0[r2 -- sk0, val0]) ↔ okarrays(r1, fis0, st0)) ∨ sk0 ∈ fis0 ⊦ sk = sk0, sk = _type, sk = _length, is_fskey(sk0) ∧ okarrays(r, fis0, st[r0 -- sk, val]) ↔ ¬ is_indexkey(sk0) ∧ okarrays(r, fis0, st), sk ∈ fis0 |
sk0 .fs = mkfs(class, ty, fieldvar), is_fskey(sk), is_integervalue(val0), is_arraytype(ty), okarray(st[r -- sk0], ty .type, val0 .intval, st), ∀ sk0, r1, st0, r2, val0. ¬ is_indexkey(sk0) → sk0 = _type ∨ sk0 = _length ∨ (okarrays(r1, fis0, st0[r2 -- sk0, val0]) ↔ okarrays(r1, fis0, st0)) ∨ sk0 ∈ fis0 ⊦ sk = sk0, sk = _type, sk = _length, is_fskey(sk0) ∧ okarrays(r, fis0, st[r0 -- sk, val]) ↔ ¬ is_indexkey(sk0) ∧ okarrays(r, fis0, st), sk ∈ fis0
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ class = fs .class ∧ ty = fs .type ∧ fieldvar = fs .field ↔ fs = mkfs(class, ty, fieldvar)])], [EXTRATERMS : (sk0 .fs, class, ty, fieldvar)]]