Notation
We use superscript to denote an arbitrary length ordered array, usually
corresponding to the Vec type in Rust.
denotes the non-negative integers. denotes restricted to the range
corresponding to u64 in Rust of .
denotes a single byte corresponding to u8 in Rust.
We use for an arbitrary sequence of bytes.
Use for converting between the integer to
in little-endian order.
with is used for concatenation of arbitrary bytes.
refers to binary bits.
denotes the image of a function .
with denotes the sequences of values starting with 1.