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

tactic: refine' Subset.antisymm (convexHull_min _ _) _
state_before: R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
⊢ ↑(convexHull R).toOrderHom (Set.range v) = {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x}

tactic: intro x hx
state_before: case refine'_1
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
⊢ Set.range v ⊆ {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x}

tactic: obtain ⟨i, hi⟩ := Set.mem_range.mp hx
state_before: case refine'_1
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
x : E
hx : x ∈ Set.range v
⊢ x ∈ {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x}

tactic: refine' ⟨{i}, Function.const ι (1 : R), by simp, by simp, by simp [hi]⟩
state_before: case refine'_1.intro
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
x : E
hx : x ∈ Set.range v
i : ι
hi : v i = x
⊢ x ∈ {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x}

tactic: simp
state_before: R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
x : E
hx : x ∈ Set.range v
i : ι
hi : v i = x
⊢ ∀ (i_1 : ι), i_1 ∈ {i} → 0 ≤ const ι 1 i_1

tactic: simp
state_before: R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
x : E
hx : x ∈ Set.range v
i : ι
hi : v i = x
⊢ Finset.sum {i} (const ι 1) = 1

tactic: simp [hi]
state_before: R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
x : E
hx : x ∈ Set.range v
i : ι
hi : v i = x
⊢ ↑(affineCombination R {i} v) (const ι 1) = x

tactic: rintro x ⟨s, w, hw₀, hw₁, rfl⟩ y ⟨s', w', hw₀', hw₁', rfl⟩ a b ha hb hab
state_before: case refine'_2
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
⊢ Convex R {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x}

tactic: let W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • ↑(affineCombination R s v) w + b • ↑(affineCombination R s' v) w' ∈
    {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x}

tactic: have hW₁ : (s ∪ s').sum W = 1 := by
  rw [sum_add_distrib, ← sum_subset (subset_union_left s s'),
    ← sum_subset (subset_union_right s s'), sum_ite_of_true _ _ fun i hi => hi,
    sum_ite_of_true _ _ fun i hi => hi, ← mul_sum, ← mul_sum, hw₁, hw₁', ← add_mul, hab,
    mul_one] <;> intro i _ hi' <;> simp [hi']
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
⊢ a • ↑(affineCombination R s v) w + b • ↑(affineCombination R s' v) w' ∈
    {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x}

tactic: refine' ⟨s ∪ s', W, _, hW₁, _⟩
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
⊢ a • ↑(affineCombination R s v) w + b • ↑(affineCombination R s' v) w' ∈
    {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x}

tactic: rw [sum_add_distrib, ← sum_subset (subset_union_left s s'),
  ← sum_subset (subset_union_right s s'), sum_ite_of_true _ _ fun i hi => hi,
  sum_ite_of_true _ _ fun i hi => hi, ← mul_sum, ← mul_sum, hw₁, hw₁', ← add_mul, hab,
  mul_one] <;> intro i _ hi' <;> simp [hi']
state_before: R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
⊢ Finset.sum (s ∪ s') W = 1

tactic: rintro i -
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
⊢ ∀ (i : ι), i ∈ s ∪ s' → 0 ≤ W i

tactic: by_cases hi : i ∈ s <;> by_cases hi' : i ∈ s' <;>
  simp [hi, hi', add_nonneg, mul_nonneg ha (hw₀ i _), mul_nonneg hb (hw₀' i _)]
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
i : ι
⊢ 0 ≤ W i

tactic: simp_rw [affineCombination_eq_linear_combination (s ∪ s') v _ hW₁,
  affineCombination_eq_linear_combination s v w hw₁,
  affineCombination_eq_linear_combination s' v w' hw₁', add_smul, sum_add_distrib]
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
⊢ ↑(affineCombination R (s ∪ s') v) W = a • ↑(affineCombination R s v) w + b • ↑(affineCombination R s' v) w'

tactic: rw [← sum_subset (subset_union_left s s'), ← sum_subset (subset_union_right s s')]
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
⊢ ∑ x in s ∪ s', (if x ∈ s then a * w x else 0) • v x + ∑ x in s ∪ s', (if x ∈ s' then b * w' x else 0) • v x =
    a • ∑ i in s, w i • v i + b • ∑ i in s', w' i • v i

tactic: simp only [ite_smul, sum_ite_of_true _ _ fun _ hi => hi, mul_smul, ← smul_sum]
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
⊢ ∑ x in s, (if x ∈ s then a * w x else 0) • v x + ∑ x in s', (if x ∈ s' then b * w' x else 0) • v x =
    a • ∑ i in s, w i • v i + b • ∑ i in s', w' i • v i

tactic: intro i _ hi'
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
⊢ ∀ (x : ι), x ∈ s ∪ s' → ¬x ∈ s' → (if x ∈ s' then b * w' x else 0) • v x = 0

tactic: simp [hi']
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
i : ι
a✝ : i ∈ s ∪ s'
hi' : ¬i ∈ s'
⊢ (if i ∈ s' then b * w' i else 0) • v i = 0

tactic: intro i _ hi'
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
⊢ ∀ (x : ι), x ∈ s ∪ s' → ¬x ∈ s → (if x ∈ s then a * w x else 0) • v x = 0

tactic: simp [hi']
state_before: case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
s' : Finset ι
w' : ι → R
hw₀' : ∀ (i : ι), i ∈ s' → 0 ≤ w' i
hw₁' : Finset.sum s' w' = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
hW₁ : Finset.sum (s ∪ s') W = 1
i : ι
a✝ : i ∈ s ∪ s'
hi' : ¬i ∈ s
⊢ (if i ∈ s then a * w i else 0) • v i = 0

tactic: rintro x ⟨s, w, hw₀, hw₁, rfl⟩
state_before: case refine'_3
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
⊢ {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x} ⊆ ↑(convexHull R).toOrderHom (Set.range v)

tactic: exact affineCombination_mem_convexHull hw₀ hw₁
state_before: case refine'_3.intro.intro.intro.intro
R : Type u_2
E : Type u_1
F : Type ?u.160371
ι : Type u_3
ι' : Type ?u.160377
α : Type ?u.160380
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 v : ι → E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
⊢ ↑(affineCombination R s v) w ∈ ↑(convexHull R).toOrderHom (Set.range v)