| ∀ sk, r0, st, val. sk = _type ∨ (goodfieldsandtypes(r0, sks0, st[jvmref -- sk, val]) ↔ goodfieldsandtypes(r0, sks0, st)) ∨ sk ∈ sks0 ⊦ sk0 = _type ∨ (goodfieldsandtypes(r0, sk + sks0, st[jvmref -- sk0, val]) ↔ goodfieldsandtypes(r0, sk + sks0, st)) ∨ sk0 ∈ sk + sks0 |
⊦ 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))
⊦ sk ≠ _type ∧ sk ≠ sk0 → (goodfieldandtype(r0, sk0, st[jvmref -- sk, val]) ↔ goodfieldandtype(r0, sk0, st))
∀ sk, r0, st, val. sk = _type ∨ (goodfieldsandtypes(r0, sks0, st[jvmref -- sk, val]) ↔ goodfieldsandtypes(r0, sks0, st)) ∨ sk ∈ sks0 ⊦ sk0 = sk, sk0 = _type, goodfieldsandtypes(r0, sks0, st[jvmref -- sk0, val]) ∧ goodfieldandtype(r0, sk, st) ↔ goodfieldandtype(r0, sk, st) ∧ goodfieldsandtypes(r0, sks0, st), sk0 ∈ sks0
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ sk ∈ sk0 ' + sks ↔ sk ≠ sk0 ∧ ¬ sk ∈ sks], [CSIMPSEQ : ⊦ (sks + sks0) + sks1 = sks + sks0 + sks1], [CSIMPSEQ : ⊦ sk + sks = sk ' + sks])]]