| ∀ st, ty, sks, class, r0, r, vals0. # vals0 < # vals → (true → r = r0 ∨ (is_obj(r0, class, sks, addarray(r, ty, vals0, st)) ↔ is_obj(r0, class, sks, st))) ⊦ r = r0, vals = [], is_obj(r0, class, sks, addarray(r, ty, vals .butlast, st)) ↔ is_obj(r0, class, sks, st) |
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ vals ≠ [] → # vals .butlast = # vals - 1], [CSIMPSEQ : ⊦ ¬ m < n ↔ n ≤ m], [CSIMPFORWARD : ⊦ m ≤ m - 1 → m = 0], [CSIMPSEQ : ⊦ # vals = 0 ↔ vals = []])], [EXTRATERMS : (st, ty, sks, class, r0, r, vals .butlast)]]