Algebraic structures on the set of positive numbers #
In this file we define various instances (AddSemigroup, IsOrderedMonoid etc) on the
type {x : R // 0 < x}. In each case we try to require the weakest possible typeclass
assumptions on R but possibly, there is a room for improvements.
@[instance_reducible]
Equations
- Positive.addSemigroup = { toAdd := Positive.instAddSubtypeLtOfNat_mathlib, add_assoc := ⋯ }
@[instance_reducible]
instance Positive.addCommSemigroup {M : Type u_3} [AddCommMonoid M] [Preorder M] [AddLeftStrictMono M] :
Equations
- Positive.addCommSemigroup = { toAddSemigroup := Positive.addSemigroup, add_comm := ⋯ }
@[instance_reducible]
instance Positive.addLeftCancelSemigroup {M : Type u_3} [AddLeftCancelMonoid M] [Preorder M] [AddLeftStrictMono M] :
Equations
- Positive.addLeftCancelSemigroup = { toAddSemigroup := Positive.addSemigroup, toIsLeftCancelAdd := ⋯ }
@[instance_reducible]
instance Positive.addRightCancelSemigroup {M : Type u_3} [AddRightCancelMonoid M] [Preorder M] [AddLeftStrictMono M] :
Equations
- Positive.addRightCancelSemigroup = { toAddSemigroup := Positive.addSemigroup, toIsRightCancelAdd := ⋯ }
instance Positive.addLeftStrictMono {M : Type u_1} [AddMonoid M] [Preorder M] [AddLeftStrictMono M] :
instance Positive.addRightStrictMono {M : Type u_1} [AddMonoid M] [Preorder M] [AddLeftStrictMono M] [AddRightStrictMono M] :
instance Positive.addLeftReflectLT {M : Type u_1} [AddMonoid M] [Preorder M] [AddLeftStrictMono M] [AddLeftReflectLT M] :
instance Positive.addRightReflectLT {M : Type u_1} [AddMonoid M] [Preorder M] [AddLeftStrictMono M] [AddRightReflectLT M] :
instance Positive.addLeftReflectLE {M : Type u_1} [AddMonoid M] [Preorder M] [AddLeftStrictMono M] [AddLeftReflectLE M] :
instance Positive.addRightReflectLE {M : Type u_1} [AddMonoid M] [Preorder M] [AddLeftStrictMono M] [AddRightReflectLE M] :
@[simp]
theorem Positive.val_mul {R : Type u_2} [Semiring R] [PartialOrder R] [IsStrictOrderedRing R] (x y : { x : R // 0 < x }) :
@[simp]
theorem Positive.val_pow {R : Type u_2} [Semiring R] [PartialOrder R] [IsStrictOrderedRing R] (x : { x : R // 0 < x }) (n : ℕ) :
@[instance_reducible]
instance Positive.instSemigroupSubtypeLtOfNat {R : Type u_2} [Semiring R] [PartialOrder R] [IsStrictOrderedRing R] :
Equations
- Positive.instSemigroupSubtypeLtOfNat = { toMul := Positive.instMulSubtypeLtOfNat_mathlib, mul_assoc := ⋯ }
@[instance_reducible]
instance Positive.instDistribSubtypeLtOfNat {R : Type u_2} [Semiring R] [PartialOrder R] [IsStrictOrderedRing R] :
Equations
- Positive.instDistribSubtypeLtOfNat = { toMul := Positive.instMulSubtypeLtOfNat_mathlib, toAdd := Positive.instAddSubtypeLtOfNat_mathlib, left_distrib := ⋯, right_distrib := ⋯ }
@[instance_reducible]
instance Positive.instOneSubtypeLtOfNat_mathlib {R : Type u_2} [Semiring R] [PartialOrder R] [IsStrictOrderedRing R] :
@[simp]
@[instance_reducible]
instance Positive.instMonoidSubtypeLtOfNat {R : Type u_2} [Semiring R] [PartialOrder R] [IsStrictOrderedRing R] :
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
instance Positive.commMonoid {R : Type u_2} [CommSemiring R] [PartialOrder R] [IsStrictOrderedRing R] :
Equations
- Positive.commMonoid = { toMonoid := Positive.instMonoidSubtypeLtOfNat, mul_comm := ⋯ }
instance Positive.isOrderedMonoid {R : Type u_2} [CommSemiring R] [PartialOrder R] [IsStrictOrderedRing R] :
instance Positive.isOrderedCancelMonoid {R : Type u_2} [CommSemiring R] [LinearOrder R] [IsStrictOrderedRing R] :
If R is a nontrivial linear ordered commutative semiring, then {x : R // 0 < x} is a linear
ordered cancellative commutative monoid.