| n = m + 1, n ≤ # vals0, ∀ n, bv. n < # vals0 → (booleanvalues(vals0)[n, bv]) = booleanvalues(vals0[n, boolval(bv)]) ⊦ n = 0, (val .boolval ' + booleanvalues(vals0))[n, bv] = val .boolval ' + booleanvalues(vals0[m, boolval(bv)]) |
m < # vals0, ∀ n, bv. n < # vals0 → (booleanvalues(vals0)[n, bv]) = booleanvalues(vals0[n, boolval(bv)]) ⊦ (booleanvalues(vals0)[m, bv]) = booleanvalues(vals0[m, boolval(bv)]), 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, app-01, ⊦ bits + bits0 = bits + bits1 ↔ bits0 = bits1], [CSIMPNAMEDSEQ : list, bitlista, a, ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1], [CSIMPNAMEDSEQ : list, bitlista, c, ⊦ boolvar + bits = boolvar ' + bits], [CSIMPNAMEDSEQ : list-del, bitlista, put-succ, ⊦ (boolvar ' + bits)[n + 1, boolvar0] = boolvar + bits[n, boolvar0]], [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])]]