| uint2bits(i) = boolvar + bits ∧ uint2bits(i) ≠ [], 0 ≤ i ⊦ bits2uint(uint2bits(i)) = i, boolvar |
uint2bits(i) = false ' + bits, 0 ≤ i, false ∈ uint2bits(i) ⊦ bits2uint(uint2bits(i)) = i
Used simplifier rules: uint2bits-empty: 0 ≤ i ⊦ uint2bits(i) ≠ [];%uint2bits-firstpos: ⊦ uint2bits(j) = boolvar ' + bits ∧ 0 ≤ j → ¬ boolvar;% ⊦ boolvar ' + bits = bits0 → boolvar ∈ bits0; (forward)% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ ¬ i ≤ j ↔ j < i;% ⊦ i ≤ j → (¬ ¬ j < i ↔ false);% ⊦ boolvar + bits = boolvar ' + bits;