| is_fskey(sk), r0 -- sk ∈ st, okval(st[r0 -- sk], sk .fs .type), okval(val0, sk .fs .type), r0 ∈ st ⊦ exactarray(val, ty, i, st[r0 -- sk, val0]) ↔ exactarray(val, ty, i, st), sk = _length, sk = _type |
sk .fs = mkfs(class, ty0, fieldvar), is_fskey(sk), r0 -- sk ∈ st, okval(st[r0 -- sk], ty0), okval(val0, ty0), r0 ∈ st ⊦ exactarray(val, ty, i, st[r0 -- sk, val0]) ↔ exactarray(val, ty, i, st), sk = _length, sk = _type
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ class = fs .class ∧ ty = fs .type ∧ fieldvar = fs .field ↔ fs = mkfs(class, ty, fieldvar)])], [EXTRATERMS : (sk .fs, class, ty0, fieldvar)]]