| 0 ≤ i, is_fskey(sk) ∧ sk ≠ _length ∧ sk ≠ _type ∨ is_indexkey(sk) ∧ (sk .index < 0 ∨ i ≤ sk .index) ⊦ r -- sk ∈ addarray(r, ty, i, st) ↔ r -- sk ∈ addarray(r, ty, mklist(initial_value(ty), i→n(i)), st) |
⊦ r ≠ r0 ∨ r = r0 ∧ is_fskey(sk) ∧ sk ≠ _length ∧ sk ≠ _type ∨ r = r0 ∧ is_indexkey(sk) ∧ (sk .index < 0 ∨ j ≤ sk .index) → (r0 -- sk ∈ addarray(r, ty, j, st) ↔ r0 -- sk ∈ st)
⊦ r -- _length ∈ addarray(r, ty, i, st)
⊦ r -- _length ∈ addarray(r0, ty, vals, st) ↔ r = r0 ∨ r -- _length ∈ st
⊦ r -- _length ∈ addarray(r, ty, vals, st)
⊦ r -- _type ∈ addarray(r, ty, i, st)
⊦ r -- _type ∈ addarray(r, ty, vals, st)
r ≠ r ∨ r = r ∧ is_fskey(sk) ∧ sk ≠ _length ∧ sk ≠ _type ∨ r = r ∧ is_indexkey(sk) ∧ (sk .index < 0 ∨ i ≤ sk .index), 0 ≤ i, is_fskey(sk) ∧ sk ≠ _length ∧ sk ≠ _type ∨ is_indexkey(sk) ∧ (sk .index < 0 ∨ i ≤ sk .index) ⊦ r -- sk ∈ st ↔ r -- sk ∈ addarray(r, ty, mklist(initial_value(ty), i→n(i)), st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ is_fskey(sk) ↔ is_indexkey(sk)], [CSIMPSEQ : ⊦ is_indexkey(sk) → ¬ is_fskey(sk)], [CSIMPSEQ : ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)])], [EXTRATERMS : (st, i, ty, r, sk, r)]]