| uint2bits(i) = boolvar + bits ∧ uint2bits(i) ≠ [], 0 ≤ i ⊦ # uint2bits(i) = 1, bits.first |
uint2bits(i) = false ' + bits, 0 ≤ i, false ∈ uint2bits(i) ⊦ # uint2bits(i) = 1, bits.first
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;