| ¬ false ∈ bits ∧ # bits0 ≤ # bits ∧ bits0.first ∧ bits0 ≠ [], n = # fillsgn(n, bits), mklist(true, # bits) = bits, true ∈ bits, # bits < n ⊦ bits = [], bits0 = [], lastn(n, fillsgn(n, bits0)) = lastn(n, fillsgn(n, fillsgn(# bits, bits0))) |
n = # fillsgn(n, bits), # bits0 ≤ # bits, bits0.first, true ∈ bits, # bits < n, # bits0 < n ⊦ bits0 = [], bits = [], lastn(n, fillsgn(n, bits0)) = lastn(n, fillsgn(n, mklist(true, # bits - # bits0) + bits0)), false ∈ bits
Used simplifier rules: ⊦ m < n ∧ n = n0 → m < n0; (forward)% ⊦ m ≤ n ∧ n < n0 → m < n0; (forward)%⊦ # bits ≤ n ∧ bits ≠ [] → fillsgn(n, bits) = mklist(bits.first, n - # bits) + bits;% ⊦ ¬ false ∈ bits → mklist(true, # bits) = bits;