| 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] |
⊦ intvalues(val ' + vals) = val .intval + intvalues(vals)
m ≤ # vals0, ∀ m0, val1. ¬ # vals0 ≤ m0 → intvalues(vals0[m0, val1]) = (intvalues(vals0)[m0, val1 .intval]) ⊦ m = 0, val0 .intval ' + intvalues(vals0[m - 1, val]) = (val0 .intval ' + intvalues(vals0))[m, val .intval]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ val ' + vals ≠ []], [CSIMPSEQ : ⊦ i + ints = i ' + ints], [CSIMPSEQ : ⊦ n -1 = n - 1], [CSIMPSEQ : ⊦ (val ' + vals) .rest = vals], [CSIMPSEQ : ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1], [CSIMPSEQ : ⊦ (val ' + vals) .first = val])]]