| sk .fs = mkfs(class, ty, fieldvar), validval(str, r -- sk, val0, st), (is_fskey(_type) → validval(str, val, _type .fs .type, st) ∧ _type .fs .type ≠ void_type ∧ _type ≠ _length) ∧ (is_indexkey(_type) → validval(str, val, st[r -- _type] .type .type, st)) ⊦ (is_fskey(sk) → validval(str, val0, ty, st[r -- _type, val]) ∧ ty ≠ void_type ∧ sk ≠ _length) ∧ (is_indexkey(sk) → validval(str, val0, val .type .type, st[r -- _type, val])) |
sk .fs = mkfs(class, ty, fieldvar), validval(str, r -- sk, val0, st), validval(str, val, _type .fs .type, st) ⊦ _type .fs .type = void_type, (is_fskey(sk) → validval(str, val0, ty, st[r -- _type, val]) ∧ ty ≠ void_type ∧ sk ≠ _length) ∧ (is_indexkey(sk) → validval(str, val0, val .type .type, st[r -- _type, val]))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)], [CSIMPSEQ : ⊦ _type ≠ _length], [CSIMPSEQ : ⊦ is_fskey(_type)])]]