Theorem: Balanced.convexHull
File: Mathlib/Analysis/LocallyConvex/Basic.lean

tactic: suffices Convex ℝ { x | ∀ a : 𝕜, ‖a‖ ≤ 1 → a • x ∈ convexHull ℝ s } by
  rw [balanced_iff_smul_mem] at hs ⊢
  refine fun a ha x hx => convexHull_min ?_ this hx a ha
  exact fun y hy a ha => subset_convexHull ℝ s (hs ha hy)
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : Balanced 𝕜 s
⊢ Balanced 𝕜 ((convexHull ℝ) s)
state_after: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : Balanced 𝕜 s
⊢ Convex ℝ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}

tactic: intro x hx y hy u v hu hv huv a ha
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : Balanced 𝕜 s
⊢ Convex ℝ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
state_after: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : Balanced 𝕜 s
x : E
hx : x ∈ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
y : E
hy : y ∈ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
u v : ℝ
hu : 0 ≤ u
hv : 0 ≤ v
huv : u + v = 1
a : 𝕜
ha : ‖a‖ ≤ 1
⊢ a • (u • x + v • y) ∈ (convexHull ℝ) s

tactic: simp only [smul_add, ← smul_comm]
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : Balanced 𝕜 s
x : E
hx : x ∈ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
y : E
hy : y ∈ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
u v : ℝ
hu : 0 ≤ u
hv : 0 ≤ v
huv : u + v = 1
a : 𝕜
ha : ‖a‖ ≤ 1
⊢ a • (u • x + v • y) ∈ (convexHull ℝ) s
state_after: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : Balanced 𝕜 s
x : E
hx : x ∈ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
y : E
hy : y ∈ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
u v : ℝ
hu : 0 ≤ u
hv : 0 ≤ v
huv : u + v = 1
a : 𝕜
ha : ‖a‖ ≤ 1
⊢ u • a • x + v • a • y ∈ (convexHull ℝ) s

tactic: exact convex_convexHull ℝ s (hx a ha) (hy a ha) hu hv huv
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : Balanced 𝕜 s
x : E
hx : x ∈ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
y : E
hy : y ∈ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
u v : ℝ
hu : 0 ≤ u
hv : 0 ≤ v
huv : u + v = 1
a : 𝕜
ha : ‖a‖ ≤ 1
⊢ u • a • x + v • a • y ∈ (convexHull ℝ) s
state_after: no goals

tactic: rw [balanced_iff_smul_mem] at hs ⊢
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : Balanced 𝕜 s
this : Convex ℝ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
⊢ Balanced 𝕜 ((convexHull ℝ) s)
state_after: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : ∀ ⦃a : 𝕜⦄, ‖a‖ ≤ 1 → ∀ ⦃x : E⦄, x ∈ s → a • x ∈ s
this : Convex ℝ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
⊢ ∀ ⦃a : 𝕜⦄, ‖a‖ ≤ 1 → ∀ ⦃x : E⦄, x ∈ (convexHull ℝ) s → a • x ∈ (convexHull ℝ) s

tactic: refine fun a ha x hx => convexHull_min ?_ this hx a ha
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : ∀ ⦃a : 𝕜⦄, ‖a‖ ≤ 1 → ∀ ⦃x : E⦄, x ∈ s → a • x ∈ s
this : Convex ℝ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
⊢ ∀ ⦃a : 𝕜⦄, ‖a‖ ≤ 1 → ∀ ⦃x : E⦄, x ∈ (convexHull ℝ) s → a • x ∈ (convexHull ℝ) s
state_after: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : ∀ ⦃a : 𝕜⦄, ‖a‖ ≤ 1 → ∀ ⦃x : E⦄, x ∈ s → a • x ∈ s
this : Convex ℝ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
a : 𝕜
ha : ‖a‖ ≤ 1
x : E
hx : x ∈ (convexHull ℝ) s
⊢ s ⊆ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}

tactic: exact fun y hy a ha => subset_convexHull ℝ s (hs ha hy)
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
s : Set E
inst✝¹ : Module ℝ E
inst✝ : SMulCommClass ℝ 𝕜 E
hs : ∀ ⦃a : 𝕜⦄, ‖a‖ ≤ 1 → ∀ ⦃x : E⦄, x ∈ s → a • x ∈ s
this : Convex ℝ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
a : 𝕜
ha : ‖a‖ ≤ 1
x : E
hx : x ∈ (convexHull ℝ) s
⊢ s ⊆ {x | ∀ (a : 𝕜), ‖a‖ ≤ 1 → a • x ∈ (convexHull ℝ) s}
state_after: no goals