Theorem: Even.convexOn_pow
File: Mathlib/Analysis/Convex/Mul.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
n : ℕ
hn : Even n
⊢ ConvexOn 𝕜 univ fun x => x ^ n
state_after: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
n : ℕ
⊢ ConvexOn 𝕜 univ fun x => x ^ (n + n)
tactic: obtain ⟨n, rfl⟩ := hn
state_before: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
n : ℕ
⊢ ConvexOn 𝕜 univ fun x => x ^ (n + n)
state_after: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
n : ℕ
⊢ ConvexOn 𝕜 univ fun x => (x ^ 2) ^ n
tactic: simp_rw [← two_mul, pow_mul]
state_before: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
n : ℕ
⊢ ConvexOn 𝕜 univ fun x => (x ^ 2) ^ n
state_after: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
n : ℕ
x : 𝕜
x✝¹ : x ∈ univ
y : 𝕜
x✝ : y ∈ univ
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ 0 ≤ a • x ^ 2 + b • y ^ 2 - (a • x + b • y) ^ 2
tactic: refine ConvexOn.pow ⟨convex_univ, fun x _ y _ a b ha hb hab ↦ sub_nonneg.1 ?_⟩
    (fun _ _ ↦ by positivity) _
state_before: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹² : LinearOrderedCommRing 𝕜
inst✝¹¹ : LinearOrderedCommRing E
inst✝¹⁰ : LinearOrderedAddCommGroup F
inst✝⁹ : Module 𝕜 E
inst✝⁸ : Module 𝕜 F
inst✝⁷ : Module E F
inst✝⁶ : IsScalarTower 𝕜 E F
inst✝⁵ : SMulCommClass 𝕜 E F
inst✝⁴ : OrderedSMul 𝕜 E
inst✝³ : OrderedSMul 𝕜 F
inst✝² : OrderedSMul E F
s : Set 𝕜
f✝ : 𝕜 → E
g✝ : 𝕜 → F
inst✝¹ : IsScalarTower 𝕜 E E
inst✝ : SMulCommClass 𝕜 E E
f g : 𝕜 → E
n : ℕ
x : 𝕜
x✝¹ : x ∈ univ
y : 𝕜
x✝ : y ∈ univ
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ 0 ≤ a • x ^ 2 + b • y ^ 2 - (a • x + b • y) ^ 2
state_after: no goals
tactic: calc
    (0 : 𝕜) ≤ (a * b) * (x - y) ^ 2 := by positivity
    _ = _ := by obtain rfl := eq_sub_of_add_eq hab; simp only [smul_eq_mul]; ring