Skip to content

Commit 7d20fac

Browse files
FordUniverFordUniver
andcommitted
feat: variant of the binary AM-GM inequality (#17877)
added variant of binary AM-GM inequality Co-authored-by: FordUniver <61389961+FordUniver@users.noreply.github.com>
1 parent abad5bb commit 7d20fac

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

Mathlib/Algebra/Order/Ring/Unbundled/Basic.lean

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -751,8 +751,8 @@ lemma max_mul_mul_le_max_mul_max [PosMulMono α] [MulPosMono α] (b c : α) (ha
751751
mul_le_mul (le_max_right a c) (le_max_right b d) hd (le_trans ha (le_max_left a c))
752752
max_le (by simpa [mul_comm, max_comm] using ba) (by simpa [mul_comm, max_comm] using cd)
753753

754-
/-- Binary **arithmetic mean-geometric mean inequality** (aka AM-GM inequality) for linearly ordered
755-
commutative semirings. -/
754+
/-- Binary, squared, and division-free **arithmetic mean-geometric mean inequality**
755+
(aka AM-GM inequality) for linearly ordered commutative semirings. -/
756756
lemma two_mul_le_add_sq [ExistsAddOfLE α] [MulPosStrictMono α]
757757
[ContravariantClass α α (· + ·) (· ≤ ·)] [CovariantClass α α (· + ·) (· ≤ ·)]
758758
(a b : α) : 2 * a * b ≤ a ^ 2 + b ^ 2 := by
@@ -761,6 +761,19 @@ lemma two_mul_le_add_sq [ExistsAddOfLE α] [MulPosStrictMono α]
761761

762762
alias two_mul_le_add_pow_two := two_mul_le_add_sq
763763

764+
/-- Binary, squared, and division-free **arithmetic mean-geometric mean inequality**
765+
(aka AM-GM inequality) for linearly ordered commutative semirings. -/
766+
lemma four_mul_le_sq_add [ExistsAddOfLE α] [MulPosStrictMono α]
767+
[ContravariantClass α α (· + ·) (· ≤ ·)] [CovariantClass α α (· + ·) (· ≤ ·)]
768+
(a b : α) : 4 * a * b ≤ (a + b) ^ 2 := by
769+
calc 4 * a * b
770+
_ = 2 * a * b + 2 * a * b := by rw [mul_assoc, two_add_two_eq_four.symm, add_mul, mul_assoc]
771+
_ ≤ a ^ 2 + b ^ 2 + 2 * a * b := by gcongr; exact two_mul_le_add_sq _ _
772+
_ = a ^ 2 + 2 * a * b + b ^ 2 := by rw [add_right_comm]
773+
_ = (a + b) ^ 2 := (add_sq a b).symm
774+
775+
alias four_mul_le_pow_two_add := four_mul_le_sq_add
776+
764777
end LinearOrderedCommSemiring
765778

766779
section LinearOrderedRing

Mathlib/Data/Nat/Cast/Defs.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,7 @@ theorem three_add_one_eq_four [AddMonoidWithOne R] : 3 + 1 = (4 : R) := by
199199
← Nat.cast_add, ← Nat.cast_add, ← Nat.cast_add]
200200
apply congrArg
201201
decide
202+
203+
theorem two_add_two_eq_four [AddMonoidWithOne R] : 2 + 2 = (4 : R) := by
204+
simp [← one_add_one_eq_two, ← Nat.cast_one, ← three_add_one_eq_four,
205+
← two_add_one_eq_three, add_assoc]

0 commit comments

Comments
 (0)