Theorem: convexHull_basis_eq_stdSimplex
File: Mathlib/Analysis/Convex/Combination.lean

tactic: refine' Subset.antisymm (convexHull_min _ (convex_stdSimplex R ι)) _
state_before: R : Type u_1
E : Type ?u.418534
F : Type ?u.418537
ι : Type u_2
ι' : Type ?u.418543
α : Type ?u.418546
inst✝⁸ : LinearOrderedField R
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : LinearOrderedAddCommGroup α
inst✝⁴ : Module R E
inst✝³ : Module R F
inst✝² : Module R α
inst✝¹ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
inst✝ : Fintype ι
f : ι → R
⊢ ↑(convexHull R).toOrderHom (Set.range fun i j => if i = j then 1 else 0) = stdSimplex R ι

tactic: rintro _ ⟨i, rfl⟩
state_before: case refine'_1
R : Type u_1
E : Type ?u.418534
F : Type ?u.418537
ι : Type u_2
ι' : Type ?u.418543
α : Type ?u.418546
inst✝⁸ : LinearOrderedField R
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : LinearOrderedAddCommGroup α
inst✝⁴ : Module R E
inst✝³ : Module R F
inst✝² : Module R α
inst✝¹ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
inst✝ : Fintype ι
f : ι → R
⊢ (Set.range fun i j => if i = j then 1 else 0) ⊆ stdSimplex R ι

tactic: exact ite_eq_mem_stdSimplex R i
state_before: case refine'_1.intro
R : Type u_1
E : Type ?u.418534
F : Type ?u.418537
ι : Type u_2
ι' : Type ?u.418543
α : Type ?u.418546
inst✝⁸ : LinearOrderedField R
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : LinearOrderedAddCommGroup α
inst✝⁴ : Module R E
inst✝³ : Module R F
inst✝² : Module R α
inst✝¹ : OrderedSMul R α
s : Set E
i✝ j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
inst✝ : Fintype ι
f : ι → R
i : ι
⊢ (fun i j => if i = j then 1 else 0) i ∈ stdSimplex R ι

tactic: rintro w ⟨hw₀, hw₁⟩
state_before: case refine'_2
R : Type u_1
E : Type ?u.418534
F : Type ?u.418537
ι : Type u_2
ι' : Type ?u.418543
α : Type ?u.418546
inst✝⁸ : LinearOrderedField R
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : LinearOrderedAddCommGroup α
inst✝⁴ : Module R E
inst✝³ : Module R F
inst✝² : Module R α
inst✝¹ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
inst✝ : Fintype ι
f : ι → R
⊢ stdSimplex R ι ⊆ ↑(convexHull R).toOrderHom (Set.range fun i j => if i = j then 1 else 0)

tactic: rw [pi_eq_sum_univ w, ← Finset.univ.centerMass_eq_of_sum_1 _ hw₁]
state_before: case refine'_2.intro
R : Type u_1
E : Type ?u.418534
F : Type ?u.418537
ι : Type u_2
ι' : Type ?u.418543
α : Type ?u.418546
inst✝⁸ : LinearOrderedField R
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : LinearOrderedAddCommGroup α
inst✝⁴ : Module R E
inst✝³ : Module R F
inst✝² : Module R α
inst✝¹ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w✝ : ι → R
z : ι → E
inst✝ : Fintype ι
f w : ι → R
hw₀ : ∀ (x : ι), 0 ≤ w x
hw₁ : ∑ x : ι, w x = 1
⊢ w ∈ ↑(convexHull R).toOrderHom (Set.range fun i j => if i = j then 1 else 0)

tactic: exact Finset.univ.centerMass_mem_convexHull (fun i _ => hw₀ i) (hw₁.symm ▸ zero_lt_one)
  fun i _ => mem_range_self i
state_before: case refine'_2.intro
R : Type u_1
E : Type ?u.418534
F : Type ?u.418537
ι : Type u_2
ι' : Type ?u.418543
α : Type ?u.418546
inst✝⁸ : LinearOrderedField R
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : LinearOrderedAddCommGroup α
inst✝⁴ : Module R E
inst✝³ : Module R F
inst✝² : Module R α
inst✝¹ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w✝ : ι → R
z : ι → E
inst✝ : Fintype ι
f w : ι → R
hw₀ : ∀ (x : ι), 0 ≤ w x
hw₁ : ∑ x : ι, w x = 1
⊢ (centerMass Finset.univ (fun i => w i) fun i j => if i = j then 1 else 0) ∈
    ↑(convexHull R).toOrderHom (Set.range fun i j => if i = j then 1 else 0)