Documentation

Mathlib.Algebra.Order.Positive.Ring

Algebraic structures on the set of positive numbers #

In this file we define various instances (AddSemigroup, OrderedCommMonoid 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 Positive.instAddSubtypeLtToLTOfNatToOfNat0ToZero {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
Add { x : M // 0 < x }
Equations
  • Positive.instAddSubtypeLtToLTOfNatToOfNat0ToZero = { add := fun (x y : { x : M // 0 < x }) => { val := ↑x + ↑y, property := ⋯ } }
@[simp]
theorem Positive.coe_add {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] (x : { x : M // 0 < x }) (y : { x : M // 0 < x }) :
↑(x + y) = ↑x + ↑y
instance Positive.addSemigroup {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
AddSemigroup { x : M // 0 < x }
Equations
instance Positive.addCommSemigroup {M : Type u_4} [AddCommMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
AddCommSemigroup { x : M // 0 < x }
Equations
instance Positive.addLeftCancelSemigroup {M : Type u_4} [AddLeftCancelMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
AddLeftCancelSemigroup { x : M // 0 < x }
Equations
instance Positive.addRightCancelSemigroup {M : Type u_4} [AddRightCancelMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
AddRightCancelSemigroup { x : M // 0 < x }
Equations
instance Positive.covariantClass_add_lt {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
CovariantClass { x : M // 0 < x } { x : M // 0 < x } (fun (x x_1 : { x : M // 0 < x }) => x + x_1) fun (x x_1 : { x : M // 0 < x }) => x < x_1
Equations
  • ⋯ = ⋯
instance Positive.covariantClass_swap_add_lt {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] [CovariantClass M M (Function.swap fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
CovariantClass { x : M // 0 < x } { x : M // 0 < x } (Function.swap fun (x x_1 : { x : M // 0 < x }) => x + x_1) fun (x x_1 : { x : M // 0 < x }) => x < x_1
Equations
  • ⋯ = ⋯
instance Positive.contravariantClass_add_lt {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] [ContravariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
ContravariantClass { x : M // 0 < x } { x : M // 0 < x } (fun (x x_1 : { x : M // 0 < x }) => x + x_1) fun (x x_1 : { x : M // 0 < x }) => x < x_1
Equations
  • ⋯ = ⋯
instance Positive.contravariantClass_swap_add_lt {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] [ContravariantClass M M (Function.swap fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
ContravariantClass { x : M // 0 < x } { x : M // 0 < x } (Function.swap fun (x x_1 : { x : M // 0 < x }) => x + x_1) fun (x x_1 : { x : M // 0 < x }) => x < x_1
Equations
  • ⋯ = ⋯
instance Positive.contravariantClass_add_le {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] [ContravariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x ≤ x_1] :
ContravariantClass { x : M // 0 < x } { x : M // 0 < x } (fun (x x_1 : { x : M // 0 < x }) => x + x_1) fun (x x_1 : { x : M // 0 < x }) => x ≤ x_1
Equations
  • ⋯ = ⋯
instance Positive.contravariantClass_swap_add_le {M : Type u_1} [AddMonoid M] [Preorder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] [ContravariantClass M M (Function.swap fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x ≤ x_1] :
ContravariantClass { x : M // 0 < x } { x : M // 0 < x } (Function.swap fun (x x_1 : { x : M // 0 < x }) => x + x_1) fun (x x_1 : { x : M // 0 < x }) => x ≤ x_1
Equations
  • ⋯ = ⋯
instance Positive.covariantClass_add_le {M : Type u_1} [AddMonoid M] [PartialOrder M] [CovariantClass M M (fun (x x_1 : M) => x + x_1) fun (x x_1 : M) => x < x_1] :
CovariantClass { x : M // 0 < x } { x : M // 0 < x } (fun (x x_1 : { x : M // 0 < x }) => x + x_1) fun (x x_1 : { x : M // 0 < x }) => x ≤ x_1
Equations
  • ⋯ = ⋯
Equations
  • Positive.instMulSubtypeLtToLTToPreorderToPartialOrderOfNatToOfNat0ToZeroToMonoidWithZeroToSemiring = { mul := fun (x y : { x : R // 0 < x }) => { val := ↑x * ↑y, property := ⋯ } }
@[simp]
theorem Positive.val_mul {R : Type u_2} [StrictOrderedSemiring R] (x : { x : R // 0 < x }) (y : { x : R // 0 < x }) :
↑(x * y) = ↑x * ↑y
Equations
  • Positive.instPowSubtypeLtToLTToPreorderToPartialOrderOfNatToOfNat0ToZeroToMonoidWithZeroToSemiringNat = { pow := fun (x : { x : R // 0 < x }) (n : ℕ) => { val := ↑x ^ n, property := ⋯ } }
@[simp]
theorem Positive.val_pow {R : Type u_2} [StrictOrderedSemiring R] (x : { x : R // 0 < x }) (n : ℕ) :
↑(x ^ n) = ↑x ^ n
Equations
  • Positive.instSemigroupSubtypeLtToLTToPreorderToPartialOrderOfNatToOfNat0ToZeroToMonoidWithZeroToSemiring = Function.Injective.semigroup Subtype.val ⋯ ⋯
Equations
  • Positive.instDistribSubtypeLtToLTToPreorderToPartialOrderOfNatToOfNat0ToZeroToMonoidWithZeroToSemiring = Function.Injective.distrib (fun (a : { x : R // 0 < x }) => ↑a) ⋯ ⋯ ⋯
Equations
  • Positive.instOneSubtypeLtToLTToPreorderToPartialOrderOfNatToOfNat0ToZeroToMonoidWithZeroToSemiring = { one := { val := 1, property := ⋯ } }
@[simp]
theorem Positive.val_one {R : Type u_2} [StrictOrderedSemiring R] [Nontrivial R] :
↑1 = 1
Equations
  • Positive.instMonoidSubtypeLtToLTToPreorderToPartialOrderOfNatToOfNat0ToZeroToMonoidWithZeroToSemiring = Function.Injective.monoid (fun (a : { x : R // 0 < x }) => ↑a) ⋯ ⋯ ⋯ ⋯
Equations

If R is a nontrivial linear ordered commutative semiring, then {x : R // 0 < x} is a linear ordered cancellative commutative monoid.

Equations
  • One or more equations did not get rendered due to their size.