| j0 < 2, i0 ≤ 2 ^ i, 0 ≤ j0, 0 ≤ i0, 0 ≤ 2 ^ i, 0 ≤ i ⊦ i0 * 2 + j0 ≤ 2 ^ i * 2 + 1 |
j * i < j * i0 + j0, abs(j0) < j ⊦ i ≤ i0
Used simplifier rules: ls-pos-2pot: ⊦ 0 ≤ j → (2 ^ j < 2 ^ j0 ↔ j < j0);% ⊦ i ≤ j → (j ≤ i ↔ i = j); (s)% ⊦ i ≤ j ↔ ¬ j < i; (ss)%forward-le-01: ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j; (forward) from specification int-abs% ⊦ i ≤ 0 ∧ 0 ≤ j → i ≤ j; (s)% ⊦ i + j < i + i0 ↔ j < i0; (s)%i + 1 = i0 ⊦ j < (* i0) → ¬ (* i) < j; (s)%add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%add-c: ⊦ i + j = j + i; from specification int-basic2% ⊦ 0 ≤ i → abs(i) = i; (s)%j0 ≠ 0, j ≤ j0 ⊦ i < (* j) → i < (* j0); (s)% ⊦ i < j ↔ ¬ j ≤ i; (ss)%commutativity: ⊦ i * j = j * i; from specification int-mult%forward-lsle: ⊦ i < j ∧ j ≤ j0 → i < j0; (forward) from specification int-abs% ⊦ j0 < j ∧ 0 ≤ i ∧ 0 ≤ i0 ∧ 0 ≤ j0 → (i * j + j0 < i0 * j ↔ i < i0); (s)% ⊦ ¬ i < i; (s)%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult Used terms: 2, 2 ^ i, i0, j0