| ⊦ ¬ true ∈ bits ∧ 0 ≤ i → (uint2bits(i) = false ' + true ' + bits ↔ i = 2 ^ n→i(# bits)) |
uint2bits(i) = false ' + true ' + bits, false ∈ uint2bits(i), 0 ≤ i ⊦ i = 2 ^ n→i(# bits), true ∈ bits
Used simplifier rules: uint2bits-2pot: 0 ≤ i ⊦ uint2bits(2 ^ i) = false ' + true ' + mklist(false, i→n(i));%uint2bits-firstpos: ⊦ uint2bits(j) = boolvar ' + bits ∧ 0 ≤ j → ¬ boolvar;% ⊦ bits = bits0 + boolvar ' + bits1 → boolvar ∈ bits;% ⊦ bits = bits0 + boolvar ' + bits1 → boolvar ∈ bits; (forward)% ⊦ boolvar ' + bits = bits0 → boolvar ∈ bits0; (forward)% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits + bits0 = bits + bits1 ↔ bits0 = bits1;% ⊦ ¬ true ∈ bits → mklist(false, # bits) = bits;% ⊦ i→n(n→i(n)) = n;% ⊦ 0 ≤ n→i(n);