| ⊦ goodfieldsandtypes(r, sk ' + sks, st) ↔ ¬ ¬ (goodfieldandtype(r, sk, st) ∧ goodfieldsandtypes(r, sks, st)) |
⊦ goodfieldsandtypes(r, sk ' + sks, st) ↔ goodfieldandtype(r, sk, st) ∧ goodfieldsandtypes(r, sks, st)
⊦ goodfieldandtype(r, sk, st) ↔ ¬ ¬ (is_fskey(sk) ∧ r -- sk ∈ st ∧ okval(st[r -- sk], sk .fs .type))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_indexkey(sk) → ¬ is_fskey(sk)], [CSIMPSEQ : ⊦ ¬ is_fskey(sk) ↔ is_indexkey(sk)], [CSIMPSEQ : ⊦ (sks + sks0) + sks1 = sks + sks0 + sks1])]]