Module docstring
{"## Quotient and remainder
There are three main conventions for integer division,
referred here as the E, F, T rounding conventions.
All three pairs satisfy the identity x % y + (x / y) * y = x unconditionally,
and satisfy x / 0 = 0 and x % 0 = x.
Historical notes
In early versions of Lean, the typeclasses provided by / and %
were defined in terms of tdiv and tmod, and these were named simply as div and mod.
However we decided it was better to use ediv and emod for the default typeclass instances,
as they are consistent with the conventions used in SMT-LIB, and Mathlib,
and often mathematical reasoning is easier with these conventions.
At that time, we did not rename div and mod to tdiv and tmod (along with all their lemma).
In September 2024, we decided to do this rename (with deprecations in place),
and later we intend to rename ediv and emod to div and mod, as nearly all users will only
ever need to use these functions and their associated lemmas.
In December 2024, we removed div and mod, but have not yet renamed ediv and emod.
","### E-rounding division
This pair satisfies 0 ≤ emod x y < natAbs y for y ≠ 0.
","### T-rounding division ","### F-rounding division
This pair satisfies fdiv x y = floor (x / y).
","# bmod (\"balanced\" mod)
Balanced mod (and balanced div) are a division and modulus pair such
that b * (Int.bdiv a b) + Int.bmod a b = a and
-b/2 ≤ Int.bmod a b < b/2 for all a : Int and b > 0.
Note that unlike emod, fmod, and tmod,
bmod takes a natural number as the second argument, rather than an integer.
This function is used in omega as well as signed bitvectors.
"}