| j < n→i(# int2bytes(i)), 0 ≤ j, i→n(n→i(# int2bytes(i)) - j + 1) < # int2bytes(i) ⊦ int2bytes(i)[i→n(j)] = firstn(# int2bytes(i) - i→n(n→i(# int2bytes(i)) - j + 1), int2bytes(i)).last |
⊦ m ≠ 0 ∧ m ≤ # bytes → firstn(m, bytes).last = bytes[m -1]
# int2bytes(i) - i→n(n→i(# int2bytes(i)) - j + 1) ≠ 0 ∧ # int2bytes(i) - i→n(n→i(# int2bytes(i)) - j + 1) ≤ # int2bytes(i), j < n→i(# int2bytes(i)), 0 ≤ j, i→n(n→i(# int2bytes(i)) - j + 1) < # int2bytes(i) ⊦ int2bytes(i)[i→n(j)] = int2bytes(i)[(# int2bytes(i) - i→n(n→i(# int2bytes(i)) - j + 1))-1]
Used simplifier rules: ⊦ n < m → m - n ≠ 0;% ⊦ m < n → ¬ n < m;% ⊦ ¬ m ≤ n ↔ n < m;%n0 ≤ n ⊦ n - n0 ≤ m ↔ n ≤ m + n0;% ⊦ ¬ m + n < m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m; Used terms: int2bytes(i), # int2bytes(i) - i→n(n→i(# int2bytes(i)) - j + 1)