Module docstring
{"# Definition and basic properties of extended natural numbers
In this file we define ENat (notation: ℕ∞) to be WithTop ℕ and prove some basic lemmas
about this type.
Implementation details
There are two natural coercions from ℕ to WithTop ℕ = ENat: WithTop.some and Nat.cast. In
Lean 3, this difference was hidden in typeclass instances. Since these instances were definitionally
equal, we did not duplicate generic lemmas about WithTop α and WithTop.some coercion for ENat
and Nat.cast coercion. If you need to apply a lemma about WithTop, you may either rewrite back
and forth using ENat.some_eq_coe, or restate the lemma for ENat.
TODO
Unify ENat.add_iSup/ENat.iSup_add with ENNReal.add_iSup/ENNReal.iSup_add. The key property
of ENat and ENNReal we are using is that all a are either absorbing for addition (a + b = a
for all b), or that it's order-cancellable (a + b ≤ a + c → b ≤ c for all b, c), and
similarly for multiplication.
"}