| ⊦ sk ≠ _type ∧ goodfieldandtype(r0, sk, st) ∧ oktype(val0, sk .fs .type, st) ∧ sk ≠ _length → (exactarray(val, ty, i, st[r0 -- sk, val0]) ↔ exactarray(val, ty, i, st)) |
⊦ goodfieldandtype(r, sk, st) ↔ is_fskey(sk) ∧ r -- sk ∈ st ∧ okval(st[r -- sk], sk .fs .type)
⊦ oktype(val, ty, st) ↔ okval(val, ty)
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
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st])]]