Nonnegative real numbers #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define nnreal (notation: ℝ≥0) to be the type of non-negative real numbers,
a.k.a. the interval [0, ∞). We also define the following operations and structures on ℝ≥0:
-
the order on
ℝ≥0is the restriction of the order onℝ; these relations define a conditionally complete linear order with a bottom element,conditionally_complete_linear_order_bot; -
a + banda * bare the restrictions of addition and multiplication of real numbers toℝ≥0; these operations together with0 = ⟨0, _⟩and1 = ⟨1, _⟩turnℝ≥0into a conditionally complete linear ordered archimedean commutative semifield; we have no typeclass for this inmathlibyet, so we define the following instances instead:linear_ordered_semiring ℝ≥0;ordered_comm_semiring ℝ≥0;canonically_ordered_comm_semiring ℝ≥0;linear_ordered_comm_group_with_zero ℝ≥0;canonically_linear_ordered_add_monoid ℝ≥0;archimedean ℝ≥0;conditionally_complete_linear_order_bot ℝ≥0.
These instances are derived from corresponding instances about the type
{x : α // 0 ≤ x}in an appropriate ordered field/ring/group/monoidα. Seealgebra/order/nonneg. -
real.to_nnreal xis defined as⟨max x 0, _⟩, i.e.↑(real.to_nnreal x) = xwhen0 ≤ xand↑(real.to_nnreal x) = 0otherwise.
We also define an instance can_lift ℝ ℝ≥0. This instance can be used by the lift tactic to
replace x : ℝ and hx : 0 ≤ x in the proof context with x : ℝ≥0 while replacing all occurences
of x with ↑x. This tactic also works for a function f : α → ℝ with a hypothesis
hf : ∀ x, 0 ≤ f x.
Notations #
This file defines ℝ≥0 as a localized notation for nnreal.
Nonnegative real numbers.
Instances for nnreal
- nnreal.strict_ordered_semiring
- nnreal.comm_monoid_with_zero
- nnreal.floor_semiring
- nnreal.comm_semiring
- nnreal.semiring
- nnreal.semilattice_inf
- nnreal.semilattice_sup
- nnreal.distrib_lattice
- nnreal.densely_ordered
- nnreal.order_bot
- nnreal.canonically_linear_ordered_semifield
- nnreal.linear_ordered_comm_group_with_zero
- nnreal.archimedean
- nnreal.linear_ordered_semiring
- nnreal.ordered_comm_semiring
- nnreal.canonically_ordered_comm_semiring
- nnreal.has_sub
- nnreal.has_ordered_sub
- nnreal.has_div
- nnreal.inhabited
- nnreal.real.has_coe
- nnreal.can_lift
- nnreal.mul_action
- nnreal.is_scalar_tower
- nnreal.smul_comm_class_left
- nnreal.smul_comm_class_right
- nnreal.distrib_mul_action
- nnreal.module
- nnreal.algebra
- nnreal.conditionally_complete_linear_order_bot
- nnreal.covariant_add
- nnreal.contravariant_add
- nnreal.covariant_mul
- ennreal.has_coe
- ennreal.can_lift
- ennreal.mul_action
- ennreal.is_scalar_tower
- ennreal.smul_comm_class_left
- ennreal.smul_comm_class_right
- ennreal.distrib_mul_action
- ennreal.module
- ennreal.algebra
- nnreal.pseudo_metric_space
- nnreal.metric_space
- nnreal.topological_space
- nnreal.topological_semiring
- nnreal.topological_space.second_countable_topology
- nnreal.order_topology
- nnreal.has_continuous_sub
- nnreal.has_continuous_inv₀
- nnreal.has_continuous_smul
- nnreal.has_lipschitz_add
- nnreal.has_bounded_smul
Equations
- nnreal.real.has_coe = {coe := subtype.val (λ (r : ℝ), 0 ≤ r)}
Equations
- nnreal.can_lift = subtype.can_lift (λ (r : ℝ), 0 ≤ r)
Reinterpret a real number r as a non-negative real number. Returns 0 if r < 0.
Equations
- r.to_nnreal = ⟨linear_order.max r 0, _⟩
Coercion ℝ≥0 → ℝ as a ring_hom.
Equations
A mul_action over ℝ restricts to a mul_action over ℝ≥0.
A distrib_mul_action over ℝ restricts to a distrib_mul_action over ℝ≥0.
An algebra over ℝ restricts to an algebra over ℝ≥0.
Equations
- nnreal.algebra = {to_has_smul := {smul := has_smul.smul smul_zero_class.to_has_smul}, to_ring_hom := (algebra_map ℝ A).comp nnreal.to_real_hom, commutes' := _, smul_def' := _}
real.to_nnreal and coe : ℝ≥0 → ℝ form a Galois insertion.
Equations
- nnreal.gi = galois_insertion.monotone_intro nnreal.coe_mono real.to_nnreal_mono real.le_coe_to_nnreal nnreal.gi._proof_1
If a is a nonnegative real number, then the closed interval [0, a] in ℝ is order
isomorphic to the interval set.Iic a.
Equations
- a.order_iso_Icc_zero_coe = {to_equiv := equiv.set.sep (set.Ici 0) (λ (x : ℝ), x ≤ ↑a), map_rel_iff' := _}
Equations
- nnreal.conditionally_complete_linear_order_bot = nonneg.conditionally_complete_linear_order_bot nnreal.conditionally_complete_linear_order_bot._proof_1
Lemmas about subtraction #
In this section we provide a few lemmas about subtraction that do not fit well into any other
typeclass. For lemmas about subtraction and addition see lemmas
about has_ordered_sub in the file algebra.order.sub. See also mul_tsub and tsub_mul.