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.
Equations
- instPreorderENat = { toLE := instLEENat, toLT := instLTENat, le_refl := instPreorderENat._proof_1, le_trans := instPreorderENat._proof_2, lt_iff_le_not_ge := instPreorderENat._proof_3 }
Equations
- instOrderBotENat = { toBot := instBotENat, bot_le := instOrderBotENat._proof_1 }
Equations
- instAddENat = { add := instAddENat._aux_1 }
Equations
- instLEENat = { le := instLEENat._aux_1 }
Equations
- One or more equations did not get rendered due to their size.
Equations
- instLTENat = { lt := instLTENat._aux_1 }
Equations
- instSuccOrderENat = { succ := instSuccOrderENat._aux_1, le_succ := instSuccOrderENat._proof_3, max_of_succ_le := @instSuccOrderENat._proof_4, succ_le_of_lt := @instSuccOrderENat._proof_5 }
Equations
- instSubENat = { sub := instSubENat._aux_1 }
Equations
Equations
- instBotENat = { bot := instBotENat._aux_1 }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- instOrderTopENat = { toTop := instTopENat, le_top := instOrderTopENat._proof_1 }
Equations
- One or more equations did not get rendered due to their size.
Lemmas about WithTop expect (and can output) WithTop.some but the normal form for coercion
ℕ → ℕ∞ is Nat.cast.
Equations
- ENat.instSuccAddOrder = { toSuccOrder := instSuccOrderENat, succ_eq_add_one := ⋯ }
Equations
- ENat.instWellFoundedRelation = { rel := fun (x1 x2 : ℕ∞) => x1 < x2, wf := ENat.instWellFoundedRelation._proof_1 }
Conversion of ℕ∞ to ℕ sending ∞ to 0.
Equations
Instances For
Homomorphism from ℕ∞ to ℕ sending ∞ to 0.
Equations
- ENat.toNatHom = { toFun := ENat.toNat, map_zero' := ENat.toNatHom._proof_1, map_one' := ENat.toNatHom._proof_2, map_mul' := ⋯ }
Instances For
Alias of the reverse direction of ENat.coe_toNat_eq_self.
Version of WithTop.forall_coe_le_iff_le using Nat.cast rather than WithTop.some.
Version of WithTop.eq_of_forall_coe_le_iff using Nat.cast rather than WithTop.some.
Equations
- ENat.instUniqueUnits = { toInhabited := Units.instInhabited, uniq := ⋯ }
A version of WithTop.map for AddMonoidHoms.
Instances For
A version of ENat.map for MonoidWithZeroHoms.
Instances For
A version of ENat.map for RingHoms.