| m ≤ # vals0, ∀ m0, val1. ¬ # vals0 ≤ m0 → intvalues(vals0[m0, val1]) = (intvalues(vals0)[m0, val1 .intval]) ⊦ intvalues((val0 ' + vals0)[m, val]) = (val0 .intval ' + intvalues(vals0))[m, val .intval] |
⊦ n ≠ 0 ∧ vals ≠ [] → vals[n, val] = vals .first ' + (vals .rest)[n -1, val]
⊦ intvalues(val ' + vals) = val .intval + intvalues(vals)
m ≠ 0 ∧ val0 ' + vals0 ≠ [], m ≤ # vals0, ∀ m0, val1. ¬ # vals0 ≤ m0 → intvalues(vals0[m0, val1]) = (intvalues(vals0)[m0, val1 .intval]) ⊦ intvalues((val0 ' + vals0) .first ' + ((val0 ' + vals0) .rest)[m -1, val]) = (val0 .intval ' + intvalues(vals0))[m, val .intval]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ vals + vals0 ≠ [] ↔ vals = [] ∧ vals0 = []], [CSIMPSEQ : ⊦ val ' ≠ []], [CSIMPSEQ : ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1], [CSIMPSEQ : ⊦ (val ' + vals)[0, val0] = val0 + vals], [CSIMPSEQ : ⊦ val + vals = val ' + vals], [CSIMPSEQ : ⊦ i + ints = i ' + ints], [CSIMPSEQ : ⊦ (i ' + ints)[0, i0] = i0 + ints], [CSIMPSEQ : ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1], [CSIMPSEQ : ⊦ ints + ints0 = ints + ints1 ↔ ints0 = ints1])], [EXTRATERMS : (val, m, val0 ' + vals0)]]