| uint2bits(i) = false ' + ((¬ bits0.first)' + bitsinvert(bits0.rest)) + true ', 0 ≤ i, 0 < i, 1 < i, false ∈ uint2bits(i), (¬ bits0.first) ∈ uint2bits(i) ⊦ bits0 = [], false ∈ bits0 |
Used simplifier rules: uint2bits-false: ⊦ 0 ≤ i → uint2bits(i) ≠ false ' + false ' + bits;% ⊦ boolvar + bits = boolvar ' + bits;% ⊦ boolvar ' + bits ≠ [];% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;%⊦ ¬ boolvar ∈ boolvar0 ' + bits ↔ ¬(boolvar ↔ boolvar0) ∧ ¬ boolvar ∈ bits;% ⊦ bits = bits0 + boolvar ' + bits1 → boolvar ∈ bits; (forward)%⊦ bits ≠ [] → ( (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0); (elim) Used terms: bits0, boolvar, bits