Nonnegative real numbers #
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,ConditionallyCompleteLinearOrderBot; -
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:LinearOrderedSemiring ℝ≥0;OrderedCommSemiring ℝ≥0;CanonicallyOrderedCommSemiring ℝ≥0;LinearOrderedCommGroupWithZero ℝ≥0;CanonicallyLinearOrderedAddMonoid ℝ≥0;Archimedean ℝ≥0;ConditionallyCompleteLinearOrderBot ℝ≥0.
These instances are derived from corresponding instances about the type
{x : α // 0 ≤ x}in an appropriate ordered field/ring/group/monoidα, seeMathlib.Algebra.Order.Nonneg.Ring. -
Real.toNNReal xis defined as⟨max x 0, _⟩, i.e.↑(Real.toNNReal x) = xwhen0 ≤ xand↑(Real.toNNReal x) = 0otherwise.
We also define an instance CanLift ℝ ℝ≥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 occurrences
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.
Equations
- NNReal.«termℝ≥0» = Lean.ParserDescr.node `NNReal.termℝ≥0 1024 (Lean.ParserDescr.symbol "ℝ≥0")
Instances For
Equations
- NNReal.instFloorSemiringNNRealToOrderedSemiringInstNNRealOrderedCommSemiring = Nonneg.floorSemiring
Equations
- NNReal.instSubNNReal = Nonneg.sub
Equations
- One or more equations did not get rendered due to their size.
Equations
- NNReal.instCanonicallyLinearOrderedSemifieldNNReal = Nonneg.canonicallyLinearOrderedSemifield
Equations
- NNReal.instCoeNNRealReal = { coe := NNReal.toReal }
Equations
Reinterpret a real number r as a non-negative real number. Returns 0 if r < 0.
Equations
- Real.toNNReal r = { val := max r 0, property := (_ : 0 ≤ max r 0) }
Instances For
A MulAction over ℝ restricts to a MulAction over ℝ≥0.
Equations
- NNReal.instMulActionNNRealToMonoidToMonoidWithZeroInstNNRealSemiring = MulAction.compHom M ↑NNReal.toRealHom
Equations
- One or more equations did not get rendered due to their size.
A DistribMulAction over ℝ restricts to a DistribMulAction over ℝ≥0.
Equations
- NNReal.instDistribMulActionNNRealToMonoidToMonoidWithZeroInstNNRealSemiring = DistribMulAction.compHom M ↑NNReal.toRealHom
A Module over ℝ restricts to a Module over ℝ≥0.
Equations
- NNReal.instModuleNNRealInstNNRealSemiring = Module.compHom M NNReal.toRealHom
Real.toNNReal and NNReal.toReal : ℝ≥0 → ℝ form a Galois insertion.
Equations
- NNReal.gi = GaloisInsertion.monotoneIntro NNReal.coe_mono Real.toNNReal_mono Real.le_coe_toNNReal (_ : ∀ (x : NNReal), Real.toNNReal ↑x = x)
Instances For
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 OrderedSub in the file
Mathlib.Algebra.Order.Sub.Basic. See also mul_tsub and tsub_mul.
The absolute value on ℝ as a map to ℝ≥0.
Equations
- Real.nnabs = { toZeroHom := { toFun := fun x => { val := |x|, property := (_ : 0 ≤ |x|) }, map_zero' := Real.nnabs.proof_2 }, map_one' := Real.nnabs.proof_3, map_mul' := Real.nnabs.proof_4 }
Instances For
Extension for the positivity tactic: cast from ℝ≥0 to ℝ.
Equations
- One or more equations did not get rendered due to their size.