Module docstring
{"# Ordered algebras
This file proves properties of algebras where both rings are ordered compatibly.
TODO
positivity extension for algebraMap
"}
{"# Ordered algebras
This file proves properties of algebras where both rings are ordered compatibly.
positivity extension for algebraMap
"}
algebraMap_mono
theorem
: Monotone (algebraMap α β)
@[mono] lemma algebraMap_mono : Monotone (algebraMap α β) :=
fun a₁ a₂ ha ↦ by
simpa only [Algebra.algebraMap_eq_smul_one] using smul_le_smul_of_nonneg_right ha zero_le_one
GCongr.algebraMap_le_algebraMap
theorem
{a₁ a₂ : α} (ha : a₁ ≤ a₂) : algebraMap α β a₁ ≤ algebraMap α β a₂
/-- A version of `algebraMap_mono` for use by `gcongr` since it currently does not preprocess
`Monotone` conclusions. -/
@[gcongr] protected lemma GCongr.algebraMap_le_algebraMap {a₁ a₂ : α} (ha : a₁ ≤ a₂) :
algebraMap α β a₁ ≤ algebraMap α β a₂ := algebraMap_mono _ ha
algebraMap_nonneg
theorem
(ha : 0 ≤ a) : 0 ≤ algebraMap α β a
lemma algebraMap_nonneg (ha : 0 ≤ a) : 0 ≤ algebraMap α β a := by simpa using algebraMap_mono β ha
algebraMap_le_algebraMap
theorem
: algebraMap α β a₁ ≤ algebraMap α β a₂ ↔ a₁ ≤ a₂
@[simp] lemma algebraMap_le_algebraMap : algebraMapalgebraMap α β a₁ ≤ algebraMap α β a₂ ↔ a₁ ≤ a₂ := by
simp [Algebra.algebraMap_eq_smul_one]
algebraMap_strictMono
theorem
: StrictMono (algebraMap α β)
@[mono] lemma algebraMap_strictMono : StrictMono (algebraMap α β) :=
fun a₁ a₂ ha ↦ by
simpa only [Algebra.algebraMap_eq_smul_one] using smul_lt_smul_of_pos_right ha zero_lt_one
GCongr.algebraMap_lt_algebraMap
theorem
{a₁ a₂ : α} (ha : a₁ < a₂) : algebraMap α β a₁ < algebraMap α β a₂
/-- A version of `algebraMap_strictMono` for use by `gcongr` since it currently does not preprocess
`Monotone` conclusions. -/
@[gcongr] protected lemma GCongr.algebraMap_lt_algebraMap {a₁ a₂ : α} (ha : a₁ < a₂) :
algebraMap α β a₁ < algebraMap α β a₂ := algebraMap_strictMono _ ha
algebraMap_pos
theorem
(ha : 0 < a) : 0 < algebraMap α β a
lemma algebraMap_pos (ha : 0 < a) : 0 < algebraMap α β a := by
simpa using algebraMap_strictMono β ha
algebraMap_lt_algebraMap
theorem
: algebraMap α β a₁ < algebraMap α β a₂ ↔ a₁ < a₂
@[simp] lemma algebraMap_lt_algebraMap : algebraMapalgebraMap α β a₁ < algebraMap α β a₂ ↔ a₁ < a₂ := by
simp [Algebra.algebraMap_eq_smul_one]
Mathlib.Meta.Positivity.evalAlgebraMap
definition
: PositivityExt
/-- Extension for `algebraMap`. -/
@[positivity algebraMap _ _ _]
def evalAlgebraMap : PositivityExt where eval {u β} _zβ _pβ e := do
let ~q(@algebraMap $α _ $instα $instβ $instαβ $a) := e | throwError "not `algebraMap`"
let pα ← synthInstanceQ q(PartialOrder $α)
match ← core q(inferInstance) pα a with
| .positive pa =>
let _instαSemiring ← synthInstanceQ q(Semiring $α)
let _instαPartialOrder ← synthInstanceQ q(PartialOrder $α)
try
let _instβSemiring ← synthInstanceQ q(Semiring $β)
let _instβPartialOrder ← synthInstanceQ q(PartialOrder $β)
let _instβIsStrictOrderedRing ← synthInstanceQ q(IsStrictOrderedRing $β)
let _instαβsmul ← synthInstanceQ q(SMulPosStrictMono $α $β)
assertInstancesCommute
return .positive q(algebraMap_pos $β $pa)
catch _ =>
let _instβSemiring ← synthInstanceQ q(Semiring $β)
let _instβPartialOrder ← synthInstanceQ q(PartialOrder $β)
let _instβIsOrderedRing ← synthInstanceQ q(IsOrderedRing $β)
let _instαβsmul ← synthInstanceQ q(SMulPosMono $α $β)
assertInstancesCommute
return .nonnegative q(algebraMap_nonneg $β <| le_of_lt $pa)
| .nonnegative pa =>
let _instαSemiring ← synthInstanceQ q(CommSemiring $α)
let _instαPartialOrder ← synthInstanceQ q(PartialOrder $α)
let _instβSemiring ← synthInstanceQ q(Semiring $β)
let _instβPartialOrder ← synthInstanceQ q(PartialOrder $β)
let _instβIsOrderedRing ← synthInstanceQ q(IsOrderedRing $β)
let _instαβsmul ← synthInstanceQ q(SMulPosMono $α $β)
assertInstancesCommute
return .nonnegative q(algebraMap_nonneg $β $pa)
| _ => pure .none