| j < n→i(# int2bytes(i)), 0 ≤ j, i→n(n→i(# int2bytes(i)) - j + 1) < # int2bytes(i) ⊦ int2bytes(i)[i→n(j)] = i2b(bytes2int(firstn(# int2bytes(i) - i→n(n→i(# int2bytes(i)) - j + 1), int2bytes(i)))) |
⊦ bytes ≠ [] → i2b(bytes2int(bytes)) = bytes.last
firstn(# 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)] = firstn(# int2bytes(i) - i→n(n→i(# int2bytes(i)) - j + 1), int2bytes(i)).last
Used simplifier rules: ⊦ firstn(n, bytes) = [] ↔ n = 0;% ⊦ n < m → m - n ≠ 0; Used terms: firstn (# int2bytes(i) - i→n(n→i(# int2bytes(i)) - j + 1), int2bytes(i))