| r ≠ r0 ∨ ¬ sk ∈ sks ∧ sk ≠ _type ⊦ r -- sk ∈ addobj(r0, class, sks, st) ↔ r -- sk ∈ st |
⊦ addobj(r, class, [], st) = st[r -- _type, typeval(mkclasstype(class))]
∀ r, r0, sk, class, st. r ≠ r0 ∨ ¬ sk ∈ sks0 ∧ sk ≠ _type → (r -- sk ∈ addobj(r0, class, sks0, st) ↔ r -- sk ∈ st), r ≠ r0 ∨ ¬ sk ∈ sk0 + sks0 ∧ sk ≠ _type ⊦ r -- sk ∈ addobj(r0, class, sk0 + sks0, st) ↔ r -- sk ∈ st
[[CONCRETESIMPRULES : ([CSIMPGEN : storekeys generated by [], +;], [CSIMPSEQ : ⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ r = r0 ∧ sk = sk0], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)], [CSIMPSEQ : ⊦ ¬ sk ∈ []])]]