Semifield structure on the type of nonnegative elements #
This file defines instances and prove some properties about the nonnegative elements
{x : α // 0 ≤ x}
of an arbitrary type α
.
This is used to derive algebraic structures on ℝ≥0
and ℚ≥0
automatically.
Main declarations #
{x : α // 0 ≤ x}
is aCanonicallyLinearOrderedSemifield
ifα
is aLinearOrderedField
.
@[simp]
@[simp]
@[simp]
theorem
Nonneg.coe_div
{α : Type u_1}
[LinearOrderedSemifield α]
(a : { x : α // 0 ≤ x })
(b : { x : α // 0 ≤ x })
:
@[simp]
theorem
Nonneg.mk_div_mk
{α : Type u_1}
[LinearOrderedSemifield α]
{x : α}
{y : α}
(hx : 0 ≤ x)
(hy : 0 ≤ y)
:
@[simp]
theorem
Nonneg.coe_zpow
{α : Type u_1}
[LinearOrderedSemifield α]
(a : { x : α // 0 ≤ x })
(n : ℤ)
:
@[simp]
@[simp]
@[simp]
theorem
Nonneg.mk_nnratCast
{α : Type u_1}
[LinearOrderedSemifield α]
(q : ℚ≥0)
:
{ val := ↑q, property := ⋯ } = ↑q
@[simp]
theorem
Nonneg.coe_nnqsmul
{α : Type u_1}
[LinearOrderedSemifield α]
(q : ℚ≥0)
(a : { x : α // 0 ≤ x })
:
@[simp]
theorem
Nonneg.mk_nnqsmul
{α : Type u_1}
[LinearOrderedSemifield α]
(q : ℚ≥0)
(a : α)
(ha : 0 ≤ a)
:
instance
Nonneg.linearOrderedSemifield
{α : Type u_1}
[LinearOrderedSemifield α]
:
LinearOrderedSemifield { x : α // 0 ≤ x }
Equations
- Nonneg.linearOrderedSemifield = Function.Injective.linearOrderedSemifield (fun (a : { x : α // 0 ≤ x }) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
instance
Nonneg.canonicallyLinearOrderedSemifield
{α : Type u_1}
[LinearOrderedField α]
:
CanonicallyLinearOrderedSemifield { x : α // 0 ≤ x }
Equations
- One or more equations did not get rendered due to their size.
instance
Nonneg.linearOrderedCommGroupWithZero
{α : Type u_1}
[LinearOrderedField α]
:
LinearOrderedCommGroupWithZero { x : α // 0 ≤ x }
Equations
- Nonneg.linearOrderedCommGroupWithZero = inferInstance