| ∃ bits0, bits1. bits = bits0 + bits1 ∧ # bits1 = n, n = # fillsgn(n, sgn(bits)), # sgn(bits) < # bits, # sgn(bits) < n, n < # bits, # sgn(bits) + 1 < # bits ⊦ fillsgn(n, sgn(bits)) = lastn(n, bits), bits = [], n = # bits |
# bits0 = # fillsgn(# bits0, sgn(bits1 + bits0)), # sgn(bits1 + bits0) + 1 < # bits1 + # bits0, # sgn(bits1 + bits0) < # bits0, # sgn(bits1 + bits0) < # bits1 + # bits0 ⊦ bits1 = [], bits1 + bits0 = [], fillsgn(# bits0, sgn(bits1 + bits0)) = lastn(# bits0, bits1 + bits0), bits0 = []
Used simplifier rules: ⊦ m < n → n ≠ 0;% ⊦ m < n ∧ n = n0 → m < n0; (forward)% ⊦ m < n → n ≠ 0; (forward)% ⊦ m < m + n ↔ n ≠ 0;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ # bits = 0 ↔ bits = [];% ⊦ m = m + n ↔ n = 0;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ #(bits + bits0) = # bits + # bits0;