| ∃ bits. uint2bits(j) = false ' + true ' + bits, 0 ≤ j, 0 ≤ j ⊦ 2 ^ n→i(# uint2bits(j).rest) = j + 1, false ∈ uint2bits(j).rest |
uint2bits(j) = false ' + true ' + bits, 0 ≤ j ⊦ 2 ^ n→i(# uint2bits(j).rest) = j + 1, false ∈ uint2bits(j).rest
Used simplifier rules: uint2bits-firstpos: ⊦ uint2bits(j) = boolvar ' + bits ∧ 0 ≤ j → ¬ boolvar;%uint2bits-first: ⊦ 0 ≤ i → ¬ uint2bits(i).first;%uint2bits-empty: 0 ≤ i ⊦ uint2bits(i) ≠ [];% ⊦ bits = bits0 + boolvar ' + bits1 → boolvar ∈ bits;% ⊦ ¬ i ≤ j ↔ j < i;% ⊦ i ≤ j → (¬ ¬ j < i ↔ false);%⊦ ¬ boolvar ∈ bits.rest → (boolvar ∈ bits ↔ (boolvar ↔ bits.first) ∧ bits ≠ []);% ⊦ bits = bits0 + boolvar ' + bits1 → boolvar ∈ bits; (forward)% ⊦ boolvar ' + bits = bits0 → boolvar ∈ bits0; (forward)% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;