| n = m + 1, n ≤ # vals0, ∀ n. n < # vals0 → (booleanvalues(vals0)[n] ↔ vals0[n] .boolval) ⊦ n = 0, (val .boolval ' + booleanvalues(vals0))[n] ↔ vals0[m] .boolval |
m < # vals0, ∀ n. n < # vals0 → (booleanvalues(vals0)[n] ↔ vals0[n] .boolval) ⊦ booleanvalues(vals0)[m] ↔ vals0[m] .boolval, vals0 = []
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : list-data, javavalues, l, ⊦ # vals = 0 ↔ vals = []], [CSIMPNAMEDFORWARD : nat-basic1, , f, ⊦ m < n → n ≠ 0], [CSIMPNAMEDSEQ : nat, , succ-01, ⊦ m + 1 ≤ n ↔ m < n], [CSIMPNAMEDSEQ : list, bitlista, a, ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1], [CSIMPNAMEDSEQ : list-del, bitlista, get-succ, ⊦ (boolvar ' + bits)[n + 1] ↔ bits[n]], [CSIMPNAMEDSEQ : nat-basic2, , c, ⊦ m + n = n + m], [CSIMPNAMEDSEQ : nat-basic2, , a, ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPNAMEDSEQ : nat-basic2, , oz, ⊦ m + 1 ≠ 0])]]