Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 9b3008e

Browse files
feat(algebra/ordered_monoid): inequalities involving mul/add (#6171)
I couldn't find some statements about inequalities, so I'm adding them. I included all the useful variants I could think of.
1 parent 3c15751 commit 9b3008e

File tree

1 file changed

+79
-9
lines changed

1 file changed

+79
-9
lines changed

src/algebra/ordered_monoid.lean

Lines changed: 79 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,47 @@ ordered_comm_monoid.mul_le_mul_left a b h c
7575
lemma mul_le_mul_right' (h : a ≤ b) (c) : a * c ≤ b * c :=
7676
by { convert mul_le_mul_left' h c using 1; rw mul_comm }
7777

78+
@[to_additive]
79+
lemma mul_lt_of_mul_lt_left (h : a * b < c) (hle : d ≤ b) : a * d < c :=
80+
(mul_le_mul_left' hle a).trans_lt h
81+
82+
@[to_additive]
83+
lemma mul_lt_of_mul_lt_right (h : a * b < c) (hle : d ≤ a) : d * b < c :=
84+
(mul_le_mul_right' hle b).trans_lt h
85+
86+
@[to_additive]
87+
lemma mul_le_of_mul_le_left (h : a * b ≤ c) (hle : d ≤ b) : a * d ≤ c :=
88+
(mul_le_mul_left' hle a).trans h
89+
90+
@[to_additive]
91+
lemma mul_le_of_mul_le_right (h : a * b ≤ c) (hle : d ≤ a) : d * b ≤ c :=
92+
(mul_le_mul_right' hle b).trans h
93+
94+
@[to_additive]
95+
lemma lt_mul_of_lt_mul_left (h : a < b * c) (hle : c ≤ d) : a < b * d :=
96+
h.trans_le (mul_le_mul_left' hle b)
97+
98+
@[to_additive]
99+
lemma lt_mul_of_lt_mul_right (h : a < b * c) (hle : b ≤ d) : a < d * c :=
100+
h.trans_le (mul_le_mul_right' hle c)
101+
102+
@[to_additive]
103+
lemma le_mul_of_le_mul_left (h : a ≤ b * c) (hle : c ≤ d) : a ≤ b * d :=
104+
h.trans (mul_le_mul_left' hle b)
105+
106+
@[to_additive]
107+
lemma le_mul_of_le_mul_right (h : a ≤ b * c) (hle : b ≤ d) : a ≤ d * c :=
108+
h.trans (mul_le_mul_right' hle c)
109+
78110
@[to_additive lt_of_add_lt_add_left]
79111
lemma lt_of_mul_lt_mul_left' : a * b < a * c → b < c :=
80112
ordered_comm_monoid.lt_of_mul_lt_mul_left a b c
81113

114+
@[to_additive lt_of_add_lt_add_right]
115+
lemma lt_of_mul_lt_mul_right' (h : a * b < c * b) : a < c :=
116+
lt_of_mul_lt_mul_left'
117+
(show b * a < b * c, begin rw [mul_comm b a, mul_comm b c], assumption end)
118+
82119
@[to_additive add_le_add]
83120
lemma mul_le_mul' (h₁ : a ≤ b) (h₂ : c ≤ d) : a * c ≤ b * d :=
84121
(mul_le_mul_right' h₁ _).trans $ mul_le_mul_left' h₂ _
@@ -87,22 +124,55 @@ lemma mul_le_mul' (h₁ : a ≤ b) (h₂ : c ≤ d) : a * c ≤ b * d :=
87124
lemma mul_le_mul_three {e f : α} (h₁ : a ≤ d) (h₂ : b ≤ e) (h₃ : c ≤ f) : a * b * c ≤ d * e * f :=
88125
mul_le_mul' (mul_le_mul' h₁ h₂) h₃
89126

127+
-- here we start using properties of one.
90128
@[to_additive le_add_of_nonneg_right]
91129
lemma le_mul_of_one_le_right' (h : 1 ≤ b) : a ≤ a * b :=
92-
have a * 1 ≤ a * b, from mul_le_mul_left' h _,
93-
by rwa mul_one at this
130+
by simpa only [mul_one] using mul_le_mul_left' h a
94131

95132
@[to_additive le_add_of_nonneg_left]
96133
lemma le_mul_of_one_le_left' (h : 1 ≤ b) : a ≤ b * a :=
97-
have 1 * a ≤ b * a, from mul_le_mul_right' h a,
98-
by rwa one_mul at this
134+
by simpa only [one_mul] using mul_le_mul_right' h a
99135

100-
@[to_additive lt_of_add_lt_add_right]
101-
lemma lt_of_mul_lt_mul_right' (h : a * b < c * b) : a < c :=
102-
lt_of_mul_lt_mul_left'
103-
(show b * a < b * c, begin rw [mul_comm b a, mul_comm b c], assumption end)
136+
@[to_additive add_le_of_nonpos_right]
137+
lemma mul_le_of_le_one_right' (h : b ≤ 1) : a * b ≤ a :=
138+
by simpa only [mul_one] using mul_le_mul_left' h a
139+
140+
@[to_additive add_le_of_nonpos_left]
141+
lemma mul_le_of_le_one_left' (h : b ≤ 1) : b * a ≤ a :=
142+
by simpa only [one_mul] using mul_le_mul_right' h a
143+
144+
@[to_additive]
145+
lemma lt_of_mul_lt_of_one_le_left (h : a * b < c) (hle : 1 ≤ b) : a < c :=
146+
(le_mul_of_one_le_right' hle).trans_lt h
147+
148+
@[to_additive]
149+
lemma lt_of_mul_lt_of_one_le_right (h : a * b < c) (hle : 1 ≤ a) : b < c :=
150+
(le_mul_of_one_le_left' hle).trans_lt h
151+
152+
@[to_additive]
153+
lemma le_of_mul_le_of_one_le_left (h : a * b ≤ c) (hle : 1 ≤ b) : a ≤ c :=
154+
(le_mul_of_one_le_right' hle).trans h
155+
156+
@[to_additive]
157+
lemma le_of_mul_le_of_one_le_right (h : a * b ≤ c) (hle : 1 ≤ a) : b ≤ c :=
158+
(le_mul_of_one_le_left' hle).trans h
159+
160+
@[to_additive]
161+
lemma lt_of_lt_mul_of_le_one_left (h : a < b * c) (hle : c ≤ 1) : a < b :=
162+
h.trans_le (mul_le_of_le_one_right' hle)
163+
164+
@[to_additive]
165+
lemma lt_of_lt_mul_of_le_one_right (h : a < b * c) (hle : b ≤ 1) : a < c :=
166+
h.trans_le (mul_le_of_le_one_left' hle)
167+
168+
@[to_additive]
169+
lemma le_of_le_mul_of_le_one_left (h : a ≤ b * c) (hle : c ≤ 1) : a ≤ b :=
170+
h.trans (mul_le_of_le_one_right' hle)
171+
172+
@[to_additive]
173+
lemma le_of_le_mul_of_le_one_right (h : a ≤ b * c) (hle : b ≤ 1) : a ≤ c :=
174+
h.trans (mul_le_of_le_one_left' hle)
104175

105-
-- here we start using properties of one.
106176
@[to_additive]
107177
lemma le_mul_of_one_le_of_le (ha : 1 ≤ a) (hbc : b ≤ c) : b ≤ a * c :=
108178
one_mul b ▸ mul_le_mul' ha hbc

0 commit comments

Comments
 (0)