| 8 < # bits, ∀ boolvar, bits0. # bits0 < # bits → true → bits0 ≠ [] → (boolvar ∈ bytes2bits(bits2bytes(bits0)) ↔ boolvar ∈ bits0) ⊦ bits = [], boolvar ∈ bytes2bits(bits2bytes(firstn(# bits - 8, bits)) + i2b(bits2int(lastn(8, bits)))) ↔ boolvar ∈ bits |
8 < # bits, ∀ boolvar, bits0. # bits0 < # bits → true → bits0 ≠ [] → (boolvar ∈ bytes2bits(bits2bytes(bits0)) ↔ boolvar ∈ bits0) ⊦ boolvar ∈ bytes2bits(bits2bytes(firstn(# bits - 8, bits))) ∨ boolvar ∈ byte2bits(i2b(bits2int(lastn(8, bits)))) ↔ boolvar ∈ bits, bits = []
Used simplifier rules: bytes2bits-append: ⊦ bytes2bits(bytes + bytes0) = bytes2bits(bytes) + bytes2bits(bytes0);%bytes2bits-one: ⊦ bytes2bits(by ') = byte2bits(by);% ⊦ # bits = 0 ↔ bits = [];% ⊦ m < n → n ≠ 0; (forward)% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);% ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1;% ⊦ bytes + by = bytes + by ';