[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
⊢ centerMass ∅ w z = 0
[PROOFSTEP]
simp only [centerMass, sum_empty, smul_zero]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hne : i ≠ j
⊢ centerMass {i, j} w z = (w i / (w i + w j)) • z i + (w j / (w i + w j)) • z j
[PROOFSTEP]
simp only [centerMass, sum_pair hne, smul_add, (mul_smul _ _ _).symm, div_eq_inv_mul]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
ha : ¬i ∈ t
hw : ∑ j in t, w j ≠ 0
⊢ centerMass (insert i t) w z =
    (w i / (w i + ∑ j in t, w j)) • z i + ((∑ j in t, w j) / (w i + ∑ j in t, w j)) • centerMass t w z
[PROOFSTEP]
simp only [centerMass, sum_insert ha, smul_add, (mul_smul _ _ _).symm, ← div_eq_inv_mul]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
ha : ¬i ∈ t
hw : ∑ j in t, w j ≠ 0
⊢ (w i / (w i + ∑ i in t, w i)) • z i + (w i + ∑ i in t, w i)⁻¹ • ∑ i in t, w i • z i =
    (w i / (w i + ∑ i in t, w i)) • z i +
      ((∑ i in t, w i) / (w i + ∑ i in t, w i) * (∑ i in t, w i)⁻¹) • ∑ i in t, w i • z i
[PROOFSTEP]
congr 2
[GOAL]
case e_a.e_a
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
ha : ¬i ∈ t
hw : ∑ j in t, w j ≠ 0
⊢ (w i + ∑ i in t, w i)⁻¹ = (∑ i in t, w i) / (w i + ∑ i in t, w i) * (∑ i in t, w i)⁻¹
[PROOFSTEP]
rw [div_mul_eq_mul_div, mul_inv_cancel hw, one_div]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hw : w i ≠ 0
⊢ centerMass {i} w z = z i
[PROOFSTEP]
rw [centerMass, sum_singleton, sum_singleton, ← mul_smul, inv_mul_cancel hw, one_smul]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hw : ∑ i in t, w i = 1
⊢ centerMass t w z = ∑ i in t, w i • z i
[PROOFSTEP]
simp only [Finset.centerMass, hw, inv_one, one_smul]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
⊢ (centerMass t w fun i => c • z i) = c • centerMass t w z
[PROOFSTEP]
simp only [Finset.centerMass, Finset.smul_sum, (mul_smul _ _ _).symm, mul_comm c, mul_assoc]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
t : Finset ι'
ws : ι → R
zs : ι → E
wt : ι' → R
zt : ι' → E
hws : ∑ i in s, ws i = 1
hwt : ∑ i in t, wt i = 1
a b : R
hab : a + b = 1
⊢ a • centerMass s ws zs + b • centerMass t wt zt =
    centerMass (disjSum s t) (Sum.elim (fun i => a * ws i) fun j => b * wt j) (Sum.elim zs zt)
[PROOFSTEP]
rw [s.centerMass_eq_of_sum_1 _ hws, t.centerMass_eq_of_sum_1 _ hwt, smul_sum, smul_sum, ← Finset.sum_sum_elim,
  Finset.centerMass_eq_of_sum_1]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
t : Finset ι'
ws : ι → R
zs : ι → E
wt : ι' → R
zt : ι' → E
hws : ∑ i in s, ws i = 1
hwt : ∑ i in t, wt i = 1
a b : R
hab : a + b = 1
⊢ ∑ x in disjSum s t, Sum.elim (fun x => a • ws x • zs x) (fun x => b • wt x • zt x) x =
    ∑ i in disjSum s t, Sum.elim (fun i => a * ws i) (fun j => b * wt j) i • Sum.elim zs zt i
[PROOFSTEP]
congr with ⟨⟩
[GOAL]
case e_f.h.inl
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
t : Finset ι'
ws : ι → R
zs : ι → E
wt : ι' → R
zt : ι' → E
hws : ∑ i in s, ws i = 1
hwt : ∑ i in t, wt i = 1
a b : R
hab : a + b = 1
val✝ : ι
⊢ Sum.elim (fun x => a • ws x • zs x) (fun x => b • wt x • zt x) (Sum.inl val✝) =
    Sum.elim (fun i => a * ws i) (fun j => b * wt j) (Sum.inl val✝) • Sum.elim zs zt (Sum.inl val✝)
[PROOFSTEP]
simp only [Sum.elim_inl, Sum.elim_inr, mul_smul]
[GOAL]
case e_f.h.inr
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
t : Finset ι'
ws : ι → R
zs : ι → E
wt : ι' → R
zt : ι' → E
hws : ∑ i in s, ws i = 1
hwt : ∑ i in t, wt i = 1
a b : R
hab : a + b = 1
val✝ : ι'
⊢ Sum.elim (fun x => a • ws x • zs x) (fun x => b • wt x • zt x) (Sum.inr val✝) =
    Sum.elim (fun i => a * ws i) (fun j => b * wt j) (Sum.inr val✝) • Sum.elim zs zt (Sum.inr val✝)
[PROOFSTEP]
simp only [Sum.elim_inl, Sum.elim_inr, mul_smul]
[GOAL]
case hw
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
t : Finset ι'
ws : ι → R
zs : ι → E
wt : ι' → R
zt : ι' → E
hws : ∑ i in s, ws i = 1
hwt : ∑ i in t, wt i = 1
a b : R
hab : a + b = 1
⊢ ∑ i in disjSum s t, Sum.elim (fun i => a * ws i) (fun j => b * wt j) i = 1
[PROOFSTEP]
rw [sum_sum_elim, ← mul_sum, ← mul_sum, hws, hwt, mul_one, mul_one, hab]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
w₁ w₂ : ι → R
z : ι → E
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
a b : R
hab : a + b = 1
⊢ a • centerMass s w₁ z + b • centerMass s w₂ z = centerMass s (fun i => a * w₁ i + b * w₂ i) z
[PROOFSTEP]
have hw : (∑ i in s, (a * w₁ i + b * w₂ i)) = 1 := by simp only [mul_sum.symm, sum_add_distrib, mul_one, *]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
w₁ w₂ : ι → R
z : ι → E
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
a b : R
hab : a + b = 1
⊢ ∑ i in s, (a * w₁ i + b * w₂ i) = 1
[PROOFSTEP]
simp only [mul_sum.symm, sum_add_distrib, mul_one, *]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
w₁ w₂ : ι → R
z : ι → E
hw₁ : ∑ i in s, w₁ i = 1
hw₂ : ∑ i in s, w₂ i = 1
a b : R
hab : a + b = 1
hw : ∑ i in s, (a * w₁ i + b * w₂ i) = 1
⊢ a • centerMass s w₁ z + b • centerMass s w₂ z = centerMass s (fun i => a * w₁ i + b * w₂ i) z
[PROOFSTEP]
simp only [Finset.centerMass_eq_of_sum_1, Finset.centerMass_eq_of_sum_1 _ _ hw, smul_sum, sum_add_distrib, add_smul,
  mul_smul, *]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hi : i ∈ t
⊢ centerMass t (fun j => if i = j then 1 else 0) z = z i
[PROOFSTEP]
rw [Finset.centerMass_eq_of_sum_1]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hi : i ∈ t
⊢ ∑ i_1 in t, (if i = i_1 then 1 else 0) • z i_1 = z i
case hw
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hi : i ∈ t
⊢ (∑ i_1 in t, if i = i_1 then 1 else 0) = 1
[PROOFSTEP]
trans ∑ j in t, if i = j then z i else 0
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hi : i ∈ t
⊢ ∑ i_1 in t, (if i = i_1 then 1 else 0) • z i_1 = ∑ j in t, if i = j then z i else 0
[PROOFSTEP]
congr with i
[GOAL]
case e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hi : i✝ ∈ t
i : ι
⊢ (if i✝ = i then 1 else 0) • z i = if i✝ = i then z i✝ else 0
[PROOFSTEP]
split_ifs with h
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hi : i✝ ∈ t
i : ι
h : i✝ = i
⊢ 1 • z i = z i✝
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hi : i✝ ∈ t
i : ι
h : ¬i✝ = i
⊢ 0 • z i = 0
[PROOFSTEP]
exacts [h ▸ one_smul _ _, zero_smul _ _]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hi : i ∈ t
⊢ (∑ j in t, if i = j then z i else 0) = z i
[PROOFSTEP]
rw [sum_ite_eq, if_pos hi]
[GOAL]
case hw
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hi : i ∈ t
⊢ (∑ i_1 in t, if i = i_1 then 1 else 0) = 1
[PROOFSTEP]
rw [sum_ite_eq, if_pos hi]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
t' : Finset ι
ht : t ⊆ t'
h : ∀ (i : ι), i ∈ t' → ¬i ∈ t → w i = 0
⊢ centerMass t w z = centerMass t' w z
[PROOFSTEP]
rw [centerMass, sum_subset ht h, smul_sum, centerMass, smul_sum]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
t' : Finset ι
ht : t ⊆ t'
h : ∀ (i : ι), i ∈ t' → ¬i ∈ t → w i = 0
⊢ ∑ x in t, (∑ x in t', w x)⁻¹ • w x • z x = ∑ x in t', (∑ i in t', w i)⁻¹ • w x • z x
[PROOFSTEP]
apply sum_subset ht
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
t' : Finset ι
ht : t ⊆ t'
h : ∀ (i : ι), i ∈ t' → ¬i ∈ t → w i = 0
⊢ ∀ (x : ι), x ∈ t' → ¬x ∈ t → (∑ x in t', w x)⁻¹ • w x • z x = 0
[PROOFSTEP]
intro i hit' hit
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
t' : Finset ι
ht : t ⊆ t'
h : ∀ (i : ι), i ∈ t' → ¬i ∈ t → w i = 0
i : ι
hit' : i ∈ t'
hit : ¬i ∈ t
⊢ (∑ x in t', w x)⁻¹ • w i • z i = 0
[PROOFSTEP]
rw [h i hit' hit, zero_smul, smul_zero]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
i : ι
hit : i ∈ t
hit' : ¬i ∈ filter (fun i => w i ≠ 0) t
⊢ w i = 0
[PROOFSTEP]
simpa only [hit, mem_filter, true_and_iff, Ne.def, Classical.not_not] using hit'
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
f : ι → α
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : 0 < ∑ i in s, w i
⊢ s ≠ ∅
[PROOFSTEP]
rintro rfl
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
f : ι → α
w : ι → R
hw₀ : ∀ (i : ι), i ∈ ∅ → 0 ≤ w i
hw₁ : 0 < ∑ i in ∅, w i
⊢ False
[PROOFSTEP]
simp at hw₁ 
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
f : ι → α
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : 0 < ∑ i in s, w i
⊢ centerMass s w f ≤ sup' s (_ : Finset.Nonempty s) f
[PROOFSTEP]
rw [centerMass, inv_smul_le_iff hw₁, sum_smul]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
f : ι → α
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : 0 < ∑ i in s, w i
⊢ ∑ i in s, w i • f i ≤ ∑ i in s, w i • sup' s (_ : Finset.Nonempty s) f
[PROOFSTEP]
exact sum_le_sum fun i hi => smul_le_smul_of_nonneg (le_sup' _ hi) <| hw₀ i hi
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
f : ι → α
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : 0 < ∑ i in s, w i
⊢ s ≠ ∅
[PROOFSTEP]
rintro rfl
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
f : ι → α
w : ι → R
hw₀ : ∀ (i : ι), i ∈ ∅ → 0 ≤ w i
hw₁ : 0 < ∑ i in ∅, w i
⊢ False
[PROOFSTEP]
simp at hw₁ 
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
⊢ (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
[PROOFSTEP]
induction' t using Finset.induction with i t hi ht
[GOAL]
case empty
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
⊢ (∀ (i : ι), i ∈ ∅ → 0 ≤ w i) → 0 < ∑ i in ∅, w i → (∀ (i : ι), i ∈ ∅ → z i ∈ s) → centerMass ∅ w z ∈ s
[PROOFSTEP]
simp [lt_irrefl]
[GOAL]
case insert
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
⊢ (∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1) →
    0 < ∑ i in insert i t, w i → (∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s) → centerMass (insert i t) w z ∈ s
[PROOFSTEP]
intro h₀ hpos hmem
[GOAL]
case insert
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < ∑ i in insert i t, w i
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
⊢ centerMass (insert i t) w z ∈ s
[PROOFSTEP]
have zi : z i ∈ s := hmem _ (mem_insert_self _ _)
[GOAL]
case insert
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < ∑ i in insert i t, w i
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
⊢ centerMass (insert i t) w z ∈ s
[PROOFSTEP]
have hs₀ : ∀ j ∈ t, 0 ≤ w j := fun j hj => h₀ j <| mem_insert_of_mem hj
[GOAL]
case insert
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < ∑ i in insert i t, w i
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
⊢ centerMass (insert i t) w z ∈ s
[PROOFSTEP]
rw [sum_insert hi] at hpos 
[GOAL]
case insert
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
⊢ centerMass (insert i t) w z ∈ s
[PROOFSTEP]
by_cases hsum_t : ∑ j in t, w j = 0
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ∑ j in t, w j = 0
⊢ centerMass (insert i t) w z ∈ s
[PROOFSTEP]
have ws : ∀ j ∈ t, w j = 0 := (sum_eq_zero_iff_of_nonneg hs₀).1 hsum_t
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ∑ j in t, w j = 0
ws : ∀ (j : ι), j ∈ t → w j = 0
⊢ centerMass (insert i t) w z ∈ s
[PROOFSTEP]
have wz : ∑ j in t, w j • z j = 0 := sum_eq_zero fun i hi => by simp [ws i hi]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i✝ : ι
t : Finset ι
hi✝ : ¬i✝ ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i : ι), i ∈ insert i✝ t → 0 ≤ w i
hpos : 0 < w i✝ + ∑ x in t, w x
hmem : ∀ (i : ι), i ∈ insert i✝ t → z i ∈ s
zi : z i✝ ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ∑ j in t, w j = 0
ws : ∀ (j : ι), j ∈ t → w j = 0
i : ι
hi : i ∈ t
⊢ w i • z i = 0
[PROOFSTEP]
simp [ws i hi]
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ∑ j in t, w j = 0
ws : ∀ (j : ι), j ∈ t → w j = 0
wz : ∑ j in t, w j • z j = 0
⊢ centerMass (insert i t) w z ∈ s
[PROOFSTEP]
simp only [centerMass, sum_insert hi, wz, hsum_t, add_zero]
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ∑ j in t, w j = 0
ws : ∀ (j : ι), j ∈ t → w j = 0
wz : ∑ j in t, w j • z j = 0
⊢ (w i)⁻¹ • w i • z i ∈ s
[PROOFSTEP]
simp only [hsum_t, add_zero] at hpos 
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ∑ j in t, w j = 0
ws : ∀ (j : ι), j ∈ t → w j = 0
wz : ∑ j in t, w j • z j = 0
hpos : 0 < w i
⊢ (w i)⁻¹ • w i • z i ∈ s
[PROOFSTEP]
rw [← mul_smul, inv_mul_cancel (ne_of_gt hpos), one_smul]
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ∑ j in t, w j = 0
ws : ∀ (j : ι), j ∈ t → w j = 0
wz : ∑ j in t, w j • z j = 0
hpos : 0 < w i
⊢ z i ∈ s
[PROOFSTEP]
exact zi
[GOAL]
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ¬∑ j in t, w j = 0
⊢ centerMass (insert i t) w z ∈ s
[PROOFSTEP]
rw [Finset.centerMass_insert _ _ _ hi hsum_t]
[GOAL]
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ¬∑ j in t, w j = 0
⊢ (w i / (w i + ∑ j in t, w j)) • z i + ((∑ j in t, w j) / (w i + ∑ j in t, w j)) • centerMass t (fun j => w j) z ∈ s
[PROOFSTEP]
refine' convex_iff_div.1 hs zi (ht hs₀ _ _) _ (sum_nonneg hs₀) hpos
[GOAL]
case neg.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ¬∑ j in t, w j = 0
⊢ 0 < ∑ i in t, w i
[PROOFSTEP]
exact lt_of_le_of_ne (sum_nonneg hs₀) (Ne.symm hsum_t)
[GOAL]
case neg.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ¬∑ j in t, w j = 0
⊢ ∀ (i : ι), i ∈ t → z i ∈ s
[PROOFSTEP]
intro j hj
[GOAL]
case neg.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ¬∑ j in t, w j = 0
j : ι
hj : j ∈ t
⊢ z j ∈ s
[PROOFSTEP]
exact hmem j (mem_insert_of_mem hj)
[GOAL]
case neg.refine'_3
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
i : ι
t : Finset ι
hi : ¬i ∈ t
ht : (∀ (i : ι), i ∈ t → 0 ≤ w i) → 0 < ∑ i in t, w i → (∀ (i : ι), i ∈ t → z i ∈ s) → centerMass t w z ∈ s
h₀ : ∀ (i_1 : ι), i_1 ∈ insert i t → 0 ≤ w i_1
hpos : 0 < w i + ∑ x in t, w x
hmem : ∀ (i_1 : ι), i_1 ∈ insert i t → z i_1 ∈ s
zi : z i ∈ s
hs₀ : ∀ (j : ι), j ∈ t → 0 ≤ w j
hsum_t : ¬∑ j in t, w j = 0
⊢ 0 ≤ w i
[PROOFSTEP]
exact h₀ _ (mem_insert_self _ _)
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
hs : Convex R s
h₀ : ∀ (i : ι), i ∈ t → 0 ≤ w i
h₁ : ∑ i in t, w i = 1
hz : ∀ (i : ι), i ∈ t → z i ∈ s
⊢ ∑ i in t, w i • z i ∈ s
[PROOFSTEP]
simpa only [h₁, centerMass, inv_one, one_smul] using hs.centerMass_mem h₀ (h₁.symm ▸ zero_lt_one) hz
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Sort u_7
w : ι → R
z : ι → E
s : Set E
hs : Convex R s
h₀ : ∀ (i : ι), 0 ≤ w i
h₁ : ∑ᶠ (i : ι), w i = 1
hz : ∀ (i : ι), w i ≠ 0 → z i ∈ s
⊢ ∑ᶠ (i : ι), w i • z i ∈ s
[PROOFSTEP]
have hfin_w : (support (w ∘ PLift.down)).Finite := by
  by_contra H
  rw [finsum, dif_neg H] at h₁ 
  exact zero_ne_one h₁
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Sort u_7
w : ι → R
z : ι → E
s : Set E
hs : Convex R s
h₀ : ∀ (i : ι), 0 ≤ w i
h₁ : ∑ᶠ (i : ι), w i = 1
hz : ∀ (i : ι), w i ≠ 0 → z i ∈ s
⊢ Set.Finite (support (w ∘ PLift.down))
[PROOFSTEP]
by_contra H
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Sort u_7
w : ι → R
z : ι → E
s : Set E
hs : Convex R s
h₀ : ∀ (i : ι), 0 ≤ w i
h₁ : ∑ᶠ (i : ι), w i = 1
hz : ∀ (i : ι), w i ≠ 0 → z i ∈ s
H : ¬Set.Finite (support (w ∘ PLift.down))
⊢ False
[PROOFSTEP]
rw [finsum, dif_neg H] at h₁ 
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Sort u_7
w : ι → R
z : ι → E
s : Set E
hs : Convex R s
h₀ : ∀ (i : ι), 0 ≤ w i
h₁ : 0 = 1
hz : ∀ (i : ι), w i ≠ 0 → z i ∈ s
H : ¬Set.Finite (support (w ∘ PLift.down))
⊢ False
[PROOFSTEP]
exact zero_ne_one h₁
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Sort u_7
w : ι → R
z : ι → E
s : Set E
hs : Convex R s
h₀ : ∀ (i : ι), 0 ≤ w i
h₁ : ∑ᶠ (i : ι), w i = 1
hz : ∀ (i : ι), w i ≠ 0 → z i ∈ s
hfin_w : Set.Finite (support (w ∘ PLift.down))
⊢ ∑ᶠ (i : ι), w i • z i ∈ s
[PROOFSTEP]
have hsub : support ((fun i => w i • z i) ∘ PLift.down) ⊆ hfin_w.toFinset :=
  (support_smul_subset_left _ _).trans hfin_w.coe_toFinset.ge
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Sort u_7
w : ι → R
z : ι → E
s : Set E
hs : Convex R s
h₀ : ∀ (i : ι), 0 ≤ w i
h₁ : ∑ᶠ (i : ι), w i = 1
hz : ∀ (i : ι), w i ≠ 0 → z i ∈ s
hfin_w : Set.Finite (support (w ∘ PLift.down))
hsub : support ((fun i => w i • z i) ∘ PLift.down) ⊆ ↑(Finite.toFinset hfin_w)
⊢ ∑ᶠ (i : ι), w i • z i ∈ s
[PROOFSTEP]
rw [finsum_eq_sum_pLift_of_support_subset hsub]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Sort u_7
w : ι → R
z : ι → E
s : Set E
hs : Convex R s
h₀ : ∀ (i : ι), 0 ≤ w i
h₁ : ∑ᶠ (i : ι), w i = 1
hz : ∀ (i : ι), w i ≠ 0 → z i ∈ s
hfin_w : Set.Finite (support (w ∘ PLift.down))
hsub : support ((fun i => w i • z i) ∘ PLift.down) ⊆ ↑(Finite.toFinset hfin_w)
⊢ ∑ i in Finite.toFinset hfin_w, w i.down • z i.down ∈ s
[PROOFSTEP]
refine' hs.sum_mem (fun _ _ => h₀ _) _ fun i hi => hz _ _
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Sort u_7
w : ι → R
z : ι → E
s : Set E
hs : Convex R s
h₀ : ∀ (i : ι), 0 ≤ w i
h₁ : ∑ᶠ (i : ι), w i = 1
hz : ∀ (i : ι), w i ≠ 0 → z i ∈ s
hfin_w : Set.Finite (support (w ∘ PLift.down))
hsub : support ((fun i => w i • z i) ∘ PLift.down) ⊆ ↑(Finite.toFinset hfin_w)
⊢ ∑ i in Finite.toFinset hfin_w, w i.down = 1
[PROOFSTEP]
rwa [finsum, dif_pos hfin_w] at h₁ 
[GOAL]
case refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Sort u_7
w : ι → R
z : ι → E
s : Set E
hs : Convex R s
h₀ : ∀ (i : ι), 0 ≤ w i
h₁ : ∑ᶠ (i : ι), w i = 1
hz : ∀ (i : ι), w i ≠ 0 → z i ∈ s
hfin_w : Set.Finite (support (w ∘ PLift.down))
hsub : support ((fun i => w i • z i) ∘ PLift.down) ⊆ ↑(Finite.toFinset hfin_w)
i : PLift ι
hi : i ∈ Finite.toFinset hfin_w
⊢ w i.down ≠ 0
[PROOFSTEP]
rwa [hfin_w.mem_toFinset] at hi 
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
⊢ Convex R s ↔
    ∀ (t : Finset E) (w : E → R),
      (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
[PROOFSTEP]
refine' ⟨fun hs t w hw₀ hw₁ hts => hs.sum_mem hw₀ hw₁ hts, _⟩
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
⊢ (∀ (t : Finset E) (w : E → R),
      (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s) →
    Convex R s
[PROOFSTEP]
intro h x hx y hy a b ha hb hab
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • x + b • y ∈ s
[PROOFSTEP]
by_cases h_cases : x = y
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : x = y
⊢ a • x + b • y ∈ s
[PROOFSTEP]
rw [h_cases, ← add_smul, hab, one_smul]
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : x = y
⊢ y ∈ s
[PROOFSTEP]
exact hy
[GOAL]
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
⊢ a • x + b • y ∈ s
[PROOFSTEP]
convert
  h { x, y } (fun z => if z = y then b else a) _ _
    _
      -- Porting note: Original proof had 2 `simp_intro i hi`
[GOAL]
case h.e'_4
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
⊢ a • x + b • y = ∑ x in {x, y}, (if x = y then b else a) • x
[PROOFSTEP]
simp only [sum_pair h_cases, if_neg h_cases, if_pos trivial]
[GOAL]
case neg.convert_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
⊢ ∀ (i : E), i ∈ {x, y} → 0 ≤ (fun z => if z = y then b else a) i
[PROOFSTEP]
intro i _
[GOAL]
case neg.convert_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
i : E
a✝ : i ∈ {x, y}
⊢ 0 ≤ (fun z => if z = y then b else a) i
[PROOFSTEP]
simp only
[GOAL]
case neg.convert_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
i : E
a✝ : i ∈ {x, y}
⊢ 0 ≤ if i = y then b else a
[PROOFSTEP]
split_ifs
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
i : E
a✝ : i ∈ {x, y}
h✝ : i = y
⊢ 0 ≤ b
[PROOFSTEP]
assumption
[GOAL]
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
i : E
a✝ : i ∈ {x, y}
h✝ : ¬i = y
⊢ 0 ≤ a
[PROOFSTEP]
assumption
[GOAL]
case neg.convert_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
⊢ ∑ i in {x, y}, (fun z => if z = y then b else a) i = 1
[PROOFSTEP]
simp only [sum_pair h_cases, if_neg h_cases, if_pos trivial, hab]
[GOAL]
case neg.convert_3
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
⊢ ∀ (x_1 : E), x_1 ∈ {x, y} → x_1 ∈ s
[PROOFSTEP]
intro i hi
[GOAL]
case neg.convert_3
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
i : E
hi : i ∈ {x, y}
⊢ i ∈ s
[PROOFSTEP]
simp only [Finset.mem_singleton, Finset.mem_insert] at hi 
[GOAL]
case neg.convert_3
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
i : E
hi : i = x ∨ i = y
⊢ i ∈ s
[PROOFSTEP]
cases hi
[GOAL]
case neg.convert_3.inl
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
i : E
h✝ : i = x
⊢ i ∈ s
[PROOFSTEP]
subst i
[GOAL]
case neg.convert_3.inr
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
i : E
h✝ : i = y
⊢ i ∈ s
[PROOFSTEP]
subst i
[GOAL]
case neg.convert_3.inl
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
⊢ x ∈ s
[PROOFSTEP]
assumption
[GOAL]
case neg.convert_3.inr
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
h :
  ∀ (t : Finset E) (w : E → R),
    (∀ (i : E), i ∈ t → 0 ≤ w i) → ∑ i in t, w i = 1 → (∀ (x : E), x ∈ t → x ∈ s) → ∑ x in t, w x • x ∈ s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
h_cases : ¬x = y
⊢ y ∈ s
[PROOFSTEP]
assumption
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
t : Finset ι
p : ι → E
w : ι → R
hw₂ : ∑ i in t, w i = 1
⊢ ↑(affineCombination R t p) w = centerMass t w p
[PROOFSTEP]
rw [affineCombination_eq_weightedVSubOfPoint_vadd_of_sum_eq_one _ w _ hw₂ (0 : E), Finset.weightedVSubOfPoint_apply,
  vadd_eq_add, add_zero, t.centerMass_eq_of_sum_1 _ hw₂]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
t : Finset ι
p : ι → E
w : ι → R
hw₂ : ∑ i in t, w i = 1
⊢ ∑ i in t, w i • (p i -ᵥ 0) = ∑ i in t, w i • p i
[PROOFSTEP]
simp_rw [vsub_eq_sub, sub_zero]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
v : ι → E
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
⊢ ↑(affineCombination R s v) w ∈ ↑(convexHull R) (Set.range v)
[PROOFSTEP]
rw [affineCombination_eq_centerMass hw₁]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
v : ι → E
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
⊢ centerMass s (fun i => w i) v ∈ ↑(convexHull R) (Set.range v)
[PROOFSTEP]
apply s.centerMass_mem_convexHull hw₀
[GOAL]
case hws
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
v : ι → E
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
⊢ 0 < ∑ i in s, w i
[PROOFSTEP]
simp [hw₁]
[GOAL]
case hz
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset ι
v : ι → E
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
⊢ ∀ (i : ι), i ∈ s → v i ∈ Set.range v
[PROOFSTEP]
simp
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
hs : Finset.Nonempty s
⊢ centroid R s id ∈ ↑(convexHull R) ↑s
[PROOFSTEP]
rw [s.centroid_eq_centerMass hs]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
hs : Finset.Nonempty s
⊢ centerMass s (centroidWeights R s) id ∈ ↑(convexHull R) ↑s
[PROOFSTEP]
apply s.centerMass_id_mem_convexHull
[GOAL]
case hw₀
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
hs : Finset.Nonempty s
⊢ ∀ (i : E), i ∈ s → 0 ≤ centroidWeights R s i
[PROOFSTEP]
simp only [inv_nonneg, imp_true_iff, Nat.cast_nonneg, Finset.centroidWeights_apply]
[GOAL]
case hws
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
hs : Finset.Nonempty s
⊢ 0 < ∑ i in s, centroidWeights R s i
[PROOFSTEP]
have hs_card : (s.card : R) ≠ 0 := by simp [Finset.nonempty_iff_ne_empty.mp hs]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
hs : Finset.Nonempty s
⊢ ↑(card s) ≠ 0
[PROOFSTEP]
simp [Finset.nonempty_iff_ne_empty.mp hs]
[GOAL]
case hws
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
hs : Finset.Nonempty s
hs_card : ↑(card s) ≠ 0
⊢ 0 < ∑ i in s, centroidWeights R s i
[PROOFSTEP]
simp only [hs_card, Finset.sum_const, nsmul_eq_mul, mul_inv_cancel, Ne.def, not_false_iff, Finset.centroidWeights_apply,
  zero_lt_one]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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) (Set.range v) = {x | ∃ s w x_1 x_2, ↑(affineCombination R s v) w = x}
[PROOFSTEP]
refine' Subset.antisymm (convexHull_min _ _) _
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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}
[PROOFSTEP]
intro x hx
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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}
[PROOFSTEP]
obtain ⟨i, hi⟩ := Set.mem_range.mp hx
[GOAL]
case refine'_1.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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}
[PROOFSTEP]
refine' ⟨{ i }, Function.const ι (1 : R), by simp, by simp, by simp [hi]⟩
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
simp
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
simp
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
simp [hi]
[GOAL]
case refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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}
[PROOFSTEP]
rintro x ⟨s, w, hw₀, hw₁, rfl⟩ y ⟨s', w', hw₀', hw₁', rfl⟩ a b ha hb hab
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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}
[PROOFSTEP]
let W : ι → R := fun i => (if i ∈ s then a * w i else 0) + if i ∈ s' then b * w' i else 0
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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}
[PROOFSTEP]
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']
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
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]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
⊢ ∀ (x : ι), x ∈ s ∪ s' → ¬x ∈ s' → (if x ∈ s' then b * w' x else 0) = 0
[PROOFSTEP]
intro i _ hi'
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
⊢ ∀ (x : ι), x ∈ s ∪ s' → ¬x ∈ s → (if x ∈ s then a * w x else 0) = 0
[PROOFSTEP]
intro i _ hi'
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
i : ι
a✝ : i ∈ s ∪ s'
hi' : ¬i ∈ s'
⊢ (if i ∈ s' then b * w' i else 0) = 0
[PROOFSTEP]
simp [hi']
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
i : ι
a✝ : i ∈ s ∪ s'
hi' : ¬i ∈ s
⊢ (if i ∈ s then a * w i else 0) = 0
[PROOFSTEP]
simp [hi']
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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}
[PROOFSTEP]
refine' ⟨s ∪ s', W, _, hW₁, _⟩
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
rintro i -
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
by_cases hi : i ∈ s
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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 : ι
hi : i ∈ s
⊢ 0 ≤ W i
[PROOFSTEP]
by_cases hi' : i ∈ s'
[GOAL]
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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 : ι
hi : ¬i ∈ s
⊢ 0 ≤ W i
[PROOFSTEP]
by_cases hi' : i ∈ s'
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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 : ι
hi : i ∈ s
hi' : i ∈ s'
⊢ 0 ≤ W i
[PROOFSTEP]
simp [hi, hi', add_nonneg, mul_nonneg ha (hw₀ i _), mul_nonneg hb (hw₀' i _)]
[GOAL]
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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 : ι
hi : i ∈ s
hi' : ¬i ∈ s'
⊢ 0 ≤ W i
[PROOFSTEP]
simp [hi, hi', add_nonneg, mul_nonneg ha (hw₀ i _), mul_nonneg hb (hw₀' i _)]
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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 : ι
hi : ¬i ∈ s
hi' : i ∈ s'
⊢ 0 ≤ W i
[PROOFSTEP]
simp [hi, hi', add_nonneg, mul_nonneg ha (hw₀ i _), mul_nonneg hb (hw₀' i _)]
[GOAL]
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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 : ι
hi : ¬i ∈ s
hi' : ¬i ∈ s'
⊢ 0 ≤ W i
[PROOFSTEP]
simp [hi, hi', add_nonneg, mul_nonneg ha (hw₀ i _), mul_nonneg hb (hw₀' i _)]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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'
[PROOFSTEP]
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]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
rw [← sum_subset (subset_union_left s s'), ← sum_subset (subset_union_right s s')]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
simp only [ite_smul, sum_ite_of_true _ _ fun _ hi => hi, mul_smul, ← smul_sum]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
intro i _ hi'
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
simp [hi']
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
intro i _ hi'
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
[PROOFSTEP]
simp [hi']
[GOAL]
case refine'_3
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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) (Set.range v)
[PROOFSTEP]
rintro x ⟨s, w, hw₀, hw₁, rfl⟩
[GOAL]
case refine'_3.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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) (Set.range v)
[PROOFSTEP]
exact affineCombination_mem_convexHull hw₀ hw₁
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
⊢ ↑(convexHull R) s = {x | ∃ ι t w z x_1 x_2 x_3, centerMass t w z = x}
[PROOFSTEP]
refine' Subset.antisymm (convexHull_min _ _) _
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
⊢ s ⊆ {x | ∃ ι t w z x_1 x_2 x_3, centerMass t w z = x}
[PROOFSTEP]
intro x hx
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
x : E
hx : x ∈ s
⊢ x ∈ {x | ∃ ι t w z x_1 x_2 x_3, centerMass t w z = x}
[PROOFSTEP]
use PUnit, { PUnit.unit }, fun _ => 1, fun _ => x, fun _ _ => zero_le_one, Finset.sum_singleton, fun _ _ => hx
[GOAL]
case h
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
x : E
hx : x ∈ s
⊢ (centerMass {PUnit.unit} (fun x => 1) fun x_1 => x) = x
[PROOFSTEP]
simp only [Finset.centerMass, Finset.sum_singleton, inv_one, one_smul]
[GOAL]
case refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
⊢ Convex R {x | ∃ ι t w z x_1 x_2 x_3, centerMass t w z = x}
[PROOFSTEP]
rintro x ⟨ι, sx, wx, zx, hwx₀, hwx₁, hzx, rfl⟩ y ⟨ι', sy, wy, zy, hwy₀, hwy₁, hzy, rfl⟩ a b ha hb hab
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • centerMass sx wx zx + b • centerMass sy wy zy ∈ {x | ∃ ι t w z x_1 x_2 x_3, centerMass t w z = x}
[PROOFSTEP]
rw [Finset.centerMass_segment' _ _ _ _ _ _ hwx₁ hwy₁ _ _ hab]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ centerMass (disjSum sx sy) (Sum.elim (fun i => a * wx i) fun j => b * wy j) (Sum.elim zx zy) ∈
    {x | ∃ ι t w z x_1 x_2 x_3, centerMass t w z = x}
[PROOFSTEP]
refine' ⟨_, _, _, _, _, _, _, rfl⟩
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ ∀ (i : ι ⊕ ι'), i ∈ disjSum sx sy → 0 ≤ Sum.elim (fun i => a * wx i) (fun j => b * wy j) i
[PROOFSTEP]
rintro i hi
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
i : ι ⊕ ι'
hi : i ∈ disjSum sx sy
⊢ 0 ≤ Sum.elim (fun i => a * wx i) (fun j => b * wy j) i
[PROOFSTEP]
rw [Finset.mem_disjSum] at hi 
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
i : ι ⊕ ι'
hi : (∃ a, a ∈ sx ∧ Sum.inl a = i) ∨ ∃ b, b ∈ sy ∧ Sum.inr b = i
⊢ 0 ≤ Sum.elim (fun i => a * wx i) (fun j => b * wy j) i
[PROOFSTEP]
rcases hi with (⟨j, hj, rfl⟩ | ⟨j, hj, rfl⟩)
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.inl.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
j : ι
hj : j ∈ sx
⊢ 0 ≤ Sum.elim (fun i => a * wx i) (fun j => b * wy j) (Sum.inl j)
[PROOFSTEP]
simp only [Sum.elim_inl, Sum.elim_inr]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.inr.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
j : ι'
hj : j ∈ sy
⊢ 0 ≤ Sum.elim (fun i => a * wx i) (fun j => b * wy j) (Sum.inr j)
[PROOFSTEP]
simp only [Sum.elim_inl, Sum.elim_inr]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.inl.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
j : ι
hj : j ∈ sx
⊢ 0 ≤ a * wx j
[PROOFSTEP]
apply_rules [mul_nonneg, hwx₀, hwy₀]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1.inr.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
j : ι'
hj : j ∈ sy
⊢ 0 ≤ b * wy j
[PROOFSTEP]
apply_rules [mul_nonneg, hwx₀, hwy₀]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ ∑ i in disjSum sx sy, Sum.elim (fun i => a * wx i) (fun j => b * wy j) i = 1
[PROOFSTEP]
simp [Finset.sum_sum_elim, Finset.mul_sum.symm, *]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ ∀ (i : ι ⊕ ι'), i ∈ disjSum sx sy → Sum.elim zx zy i ∈ s
[PROOFSTEP]
intro i hi
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
i : ι ⊕ ι'
hi : i ∈ disjSum sx sy
⊢ Sum.elim zx zy i ∈ s
[PROOFSTEP]
rw [Finset.mem_disjSum] at hi 
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
i : ι ⊕ ι'
hi : (∃ a, a ∈ sx ∧ Sum.inl a = i) ∨ ∃ b, b ∈ sy ∧ Sum.inr b = i
⊢ Sum.elim zx zy i ∈ s
[PROOFSTEP]
rcases hi with (⟨j, hj, rfl⟩ | ⟨j, hj, rfl⟩)
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.inl.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
j : ι
hj : j ∈ sx
⊢ Sum.elim zx zy (Sum.inl j) ∈ s
[PROOFSTEP]
apply_rules [hzx, hzy]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.inr.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
α : Type u_6
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
s : Set E
ι : Type
sx : Finset ι
wx : ι → R
zx : ι → E
hwx₀ : ∀ (i : ι), i ∈ sx → 0 ≤ wx i
hwx₁ : ∑ i in sx, wx i = 1
hzx : ∀ (i : ι), i ∈ sx → zx i ∈ s
ι' : Type
sy : Finset ι'
wy : ι' → R
zy : ι' → E
hwy₀ : ∀ (i : ι'), i ∈ sy → 0 ≤ wy i
hwy₁ : ∑ i in sy, wy i = 1
hzy : ∀ (i : ι'), i ∈ sy → zy i ∈ s
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
j : ι'
hj : j ∈ sy
⊢ Sum.elim zx zy (Sum.inr j) ∈ s
[PROOFSTEP]
apply_rules [hzx, hzy]
[GOAL]
case refine'_3
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
⊢ {x | ∃ ι t w z x_1 x_2 x_3, centerMass t w z = x} ⊆ ↑(convexHull R) s
[PROOFSTEP]
rintro _ ⟨ι, t, w, z, hw₀, hw₁, hz, rfl⟩
[GOAL]
case refine'_3.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
ι : Type
t : Finset ι
w : ι → R
z : ι → E
hw₀ : ∀ (i : ι), i ∈ t → 0 ≤ w i
hw₁ : ∑ i in t, w i = 1
hz : ∀ (i : ι), i ∈ t → z i ∈ s
⊢ centerMass t w z ∈ ↑(convexHull R) s
[PROOFSTEP]
exact t.centerMass_mem_convexHull hw₀ (hw₁.symm ▸ zero_lt_one) hz
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
⊢ ↑(convexHull R) ↑s = {x | ∃ w x_1 x_2, centerMass s w id = x}
[PROOFSTEP]
refine' Set.Subset.antisymm (convexHull_min _ _) _
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
⊢ ↑s ⊆ {x | ∃ w x_1 x_2, centerMass s w id = x}
[PROOFSTEP]
intro x hx
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
x : E
hx : x ∈ ↑s
⊢ x ∈ {x | ∃ w x_1 x_2, centerMass s w id = x}
[PROOFSTEP]
rw [Finset.mem_coe] at hx 
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
x : E
hx : x ∈ s
⊢ x ∈ {x | ∃ w x_1 x_2, centerMass s w id = x}
[PROOFSTEP]
refine' ⟨_, _, _, Finset.centerMass_ite_eq _ _ _ hx⟩
[GOAL]
case refine'_1.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
x : E
hx : x ∈ s
⊢ ∀ (y : E), y ∈ s → 0 ≤ if x = y then 1 else 0
[PROOFSTEP]
intros
[GOAL]
case refine'_1.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
x : E
hx : x ∈ s
y✝ : E
a✝ : y✝ ∈ s
⊢ 0 ≤ if x = y✝ then 1 else 0
[PROOFSTEP]
split_ifs
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
x : E
hx : x ∈ s
y✝ : E
a✝ : y✝ ∈ s
h✝ : x = y✝
⊢ 0 ≤ 1
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
x : E
hx : x ∈ s
y✝ : E
a✝ : y✝ ∈ s
h✝ : ¬x = y✝
⊢ 0 ≤ 0
[PROOFSTEP]
exacts [zero_le_one, le_refl 0]
[GOAL]
case refine'_1.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
x : E
hx : x ∈ s
⊢ (∑ y in s, if x = y then 1 else 0) = 1
[PROOFSTEP]
rw [Finset.sum_ite_eq, if_pos hx]
[GOAL]
case refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
⊢ Convex R {x | ∃ w x_1 x_2, centerMass s w id = x}
[PROOFSTEP]
rintro x ⟨wx, hwx₀, hwx₁, rfl⟩ y ⟨wy, hwy₀, hwy₁, rfl⟩ a b ha hb hab
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
wx : E → R
hwx₀ : ∀ (y : E), y ∈ s → 0 ≤ wx y
hwx₁ : ∑ y in s, wx y = 1
wy : E → R
hwy₀ : ∀ (y : E), y ∈ s → 0 ≤ wy y
hwy₁ : ∑ y in s, wy y = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • centerMass s wx id + b • centerMass s wy id ∈ {x | ∃ w x_1 x_2, centerMass s w id = x}
[PROOFSTEP]
rw [Finset.centerMass_segment _ _ _ _ hwx₁ hwy₁ _ _ hab]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
wx : E → R
hwx₀ : ∀ (y : E), y ∈ s → 0 ≤ wx y
hwx₁ : ∑ y in s, wx y = 1
wy : E → R
hwy₀ : ∀ (y : E), y ∈ s → 0 ≤ wy y
hwy₁ : ∑ y in s, wy y = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ centerMass s (fun i => a * wx i + b * wy i) id ∈ {x | ∃ w x_1 x_2, centerMass s w id = x}
[PROOFSTEP]
refine' ⟨_, _, _, rfl⟩
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
wx : E → R
hwx₀ : ∀ (y : E), y ∈ s → 0 ≤ wx y
hwx₁ : ∑ y in s, wx y = 1
wy : E → R
hwy₀ : ∀ (y : E), y ∈ s → 0 ≤ wy y
hwy₁ : ∑ y in s, wy y = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ ∀ (y : E), y ∈ s → 0 ≤ a * wx y + b * wy y
[PROOFSTEP]
rintro i hi
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
wx : E → R
hwx₀ : ∀ (y : E), y ∈ s → 0 ≤ wx y
hwx₁ : ∑ y in s, wx y = 1
wy : E → R
hwy₀ : ∀ (y : E), y ∈ s → 0 ≤ wy y
hwy₁ : ∑ y in s, wy y = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
i : E
hi : i ∈ s
⊢ 0 ≤ a * wx i + b * wy i
[PROOFSTEP]
apply_rules [add_nonneg, mul_nonneg, hwx₀, hwy₀]
[GOAL]
case refine'_2.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
wx : E → R
hwx₀ : ∀ (y : E), y ∈ s → 0 ≤ wx y
hwx₁ : ∑ y in s, wx y = 1
wy : E → R
hwy₀ : ∀ (y : E), y ∈ s → 0 ≤ wy y
hwy₁ : ∑ y in s, wy y = 1
a b : R
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ ∑ y in s, (a * wx y + b * wy y) = 1
[PROOFSTEP]
simp only [Finset.sum_add_distrib, Finset.mul_sum.symm, mul_one, *]
[GOAL]
case refine'_3
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
⊢ {x | ∃ w x_1 x_2, centerMass s w id = x} ⊆ ↑(convexHull R) ↑s
[PROOFSTEP]
rintro _ ⟨w, hw₀, hw₁, rfl⟩
[GOAL]
case refine'_3.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
w : E → R
hw₀ : ∀ (y : E), y ∈ s → 0 ≤ w y
hw₁ : ∑ y in s, w y = 1
⊢ centerMass s w id ∈ ↑(convexHull R) ↑s
[PROOFSTEP]
exact s.centerMass_mem_convexHull (fun x hx => hw₀ _ hx) (hw₁.symm ▸ zero_lt_one) fun x hx => hx
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Finset E
x : E
⊢ x ∈ ↑(convexHull R) ↑s ↔ ∃ w x_1 x_2, centerMass s w id = x
[PROOFSTEP]
rw [Finset.convexHull_eq, Set.mem_setOf_eq]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
hs : Set.Finite s
⊢ ↑(convexHull R) s = {x | ∃ w x_1 x_2, centerMass (Finite.toFinset hs) w id = x}
[PROOFSTEP]
simpa only [Set.Finite.coe_toFinset, Set.Finite.mem_toFinset, exists_prop] using hs.toFinset.convexHull_eq
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
⊢ ↑(convexHull R) s = ⋃ (t : Finset E) (_ : ↑t ⊆ s), ↑(convexHull R) ↑t
[PROOFSTEP]
refine' Subset.antisymm _ _
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
⊢ ↑(convexHull R) s ⊆ ⋃ (t : Finset E) (_ : ↑t ⊆ s), ↑(convexHull R) ↑t
[PROOFSTEP]
rw [_root_.convexHull_eq]
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
⊢ {x | ∃ ι t w z x_1 x_2 x_3, centerMass t w z = x} ⊆ ⋃ (t : Finset E) (_ : ↑t ⊆ s), ↑(convexHull R) ↑t
[PROOFSTEP]
rintro x ⟨ι, t, w, z, hw₀, hw₁, hz, rfl⟩
[GOAL]
case refine'_1.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
ι : Type
t : Finset ι
w : ι → R
z : ι → E
hw₀ : ∀ (i : ι), i ∈ t → 0 ≤ w i
hw₁ : ∑ i in t, w i = 1
hz : ∀ (i : ι), i ∈ t → z i ∈ s
⊢ centerMass t w z ∈ ⋃ (t : Finset E) (_ : ↑t ⊆ s), ↑(convexHull R) ↑t
[PROOFSTEP]
simp only [mem_iUnion]
[GOAL]
case refine'_1.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
ι : Type
t : Finset ι
w : ι → R
z : ι → E
hw₀ : ∀ (i : ι), i ∈ t → 0 ≤ w i
hw₁ : ∑ i in t, w i = 1
hz : ∀ (i : ι), i ∈ t → z i ∈ s
⊢ ∃ i i_1, centerMass t w z ∈ ↑(convexHull R) ↑i
[PROOFSTEP]
refine' ⟨t.image z, _, _⟩
[GOAL]
case refine'_1.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
ι : Type
t : Finset ι
w : ι → R
z : ι → E
hw₀ : ∀ (i : ι), i ∈ t → 0 ≤ w i
hw₁ : ∑ i in t, w i = 1
hz : ∀ (i : ι), i ∈ t → z i ∈ s
⊢ ↑(Finset.image z t) ⊆ s
[PROOFSTEP]
rw [coe_image, Set.image_subset_iff]
[GOAL]
case refine'_1.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
ι : Type
t : Finset ι
w : ι → R
z : ι → E
hw₀ : ∀ (i : ι), i ∈ t → 0 ≤ w i
hw₁ : ∑ i in t, w i = 1
hz : ∀ (i : ι), i ∈ t → z i ∈ s
⊢ ↑t ⊆ z ⁻¹' s
[PROOFSTEP]
exact hz
[GOAL]
case refine'_1.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
ι : Type
t : Finset ι
w : ι → R
z : ι → E
hw₀ : ∀ (i : ι), i ∈ t → 0 ≤ w i
hw₁ : ∑ i in t, w i = 1
hz : ∀ (i : ι), i ∈ t → z i ∈ s
⊢ centerMass t w z ∈ ↑(convexHull R) ↑(Finset.image z t)
[PROOFSTEP]
apply t.centerMass_mem_convexHull hw₀
[GOAL]
case refine'_1.intro.intro.intro.intro.intro.intro.intro.refine'_2.hws
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
ι : Type
t : Finset ι
w : ι → R
z : ι → E
hw₀ : ∀ (i : ι), i ∈ t → 0 ≤ w i
hw₁ : ∑ i in t, w i = 1
hz : ∀ (i : ι), i ∈ t → z i ∈ s
⊢ 0 < ∑ i in t, w i
[PROOFSTEP]
simp only [hw₁, zero_lt_one]
[GOAL]
case refine'_1.intro.intro.intro.intro.intro.intro.intro.refine'_2.hz
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
ι : Type
t : Finset ι
w : ι → R
z : ι → E
hw₀ : ∀ (i : ι), i ∈ t → 0 ≤ w i
hw₁ : ∑ i in t, w i = 1
hz : ∀ (i : ι), i ∈ t → z i ∈ s
⊢ ∀ (i : ι), i ∈ t → z i ∈ ↑(Finset.image z t)
[PROOFSTEP]
exact fun i hi => Finset.mem_coe.2 (Finset.mem_image_of_mem _ hi)
[GOAL]
case refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
⊢ ⋃ (t : Finset E) (_ : ↑t ⊆ s), ↑(convexHull R) ↑t ⊆ ↑(convexHull R) s
[PROOFSTEP]
exact iUnion_subset fun i => iUnion_subset convexHull_mono
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
hx : x ∈ ↑(convexHull R) s
hy : y ∈ ↑(convexHull R) t
⊢ (x, y) ∈ ↑(convexHull R) (s ×ˢ t)
[PROOFSTEP]
rw [_root_.convexHull_eq] at hx hy ⊢
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
hx : x ∈ {x | ∃ ι t w z x_1 x_2 x_3, centerMass t w z = x}
hy : y ∈ {x | ∃ ι t_1 w z x_1 x_2 x_3, centerMass t_1 w z = x}
⊢ (x, y) ∈ {x | ∃ ι t_1 w z x_1 x_2 x_3, centerMass t_1 w z = x}
[PROOFSTEP]
obtain ⟨ι, a, w, S, hw, hw', hS, hSp⟩ := hx
[GOAL]
case intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
hy : y ∈ {x | ∃ ι t_1 w z x_1 x_2 x_3, centerMass t_1 w z = x}
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
⊢ (x, y) ∈ {x | ∃ ι t_1 w z x_1 x_2 x_3, centerMass t_1 w z = x}
[PROOFSTEP]
obtain ⟨κ, b, v, T, hv, hv', hT, hTp⟩ := hy
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
⊢ (x, y) ∈ {x | ∃ ι t_1 w z x_1 x_2 x_3, centerMass t_1 w z = x}
[PROOFSTEP]
have h_sum : ∑ i : ι × κ in a ×ˢ b, w i.fst * v i.snd = 1 :=
  by
  rw [Finset.sum_product, ← hw']
  congr
  ext i
  have : ∑ y : κ in b, w i * v y = ∑ y : κ in b, v y * w i :=
    by
    congr
    ext
    simp [mul_comm]
  rw [this, ← Finset.sum_mul, hv']
  simp
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
⊢ ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
[PROOFSTEP]
rw [Finset.sum_product, ← hw']
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
⊢ ∑ x in a, ∑ y in b, w (x, y).fst * v (x, y).snd = ∑ i in a, w i
[PROOFSTEP]
congr
[GOAL]
case e_f
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
⊢ (fun x => ∑ y in b, w (x, y).fst * v (x, y).snd) = fun i => w i
[PROOFSTEP]
ext i
[GOAL]
case e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
i : ι
⊢ ∑ y in b, w (i, y).fst * v (i, y).snd = w i
[PROOFSTEP]
have : ∑ y : κ in b, w i * v y = ∑ y : κ in b, v y * w i :=
  by
  congr
  ext
  simp [mul_comm]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
i : ι
⊢ ∑ y in b, w i * v y = ∑ y in b, v y * w i
[PROOFSTEP]
congr
[GOAL]
case e_f
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
i : ι
⊢ (fun y => w i * v y) = fun y => v y * w i
[PROOFSTEP]
ext
[GOAL]
case e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
i : ι
x✝ : κ
⊢ w i * v x✝ = v x✝ * w i
[PROOFSTEP]
simp [mul_comm]
[GOAL]
case e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
i : ι
this : ∑ y in b, w i * v y = ∑ y in b, v y * w i
⊢ ∑ y in b, w (i, y).fst * v (i, y).snd = w i
[PROOFSTEP]
rw [this, ← Finset.sum_mul, hv']
[GOAL]
case e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
i : ι
this : ∑ y in b, w i * v y = ∑ y in b, v y * w i
⊢ 1 * w i = w i
[PROOFSTEP]
simp
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ (x, y) ∈ {x | ∃ ι t_1 w z x_1 x_2 x_3, centerMass t_1 w z = x}
[PROOFSTEP]
refine' ⟨ι × κ, a ×ˢ b, fun p => w p.1 * v p.2, fun p => (S p.1, T p.2), fun p hp => _, h_sum, fun p hp => _, _⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
p : ι × κ
hp : p ∈ a ×ˢ b
⊢ 0 ≤ (fun p => w p.fst * v p.snd) p
[PROOFSTEP]
rw [mem_product] at hp 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
p : ι × κ
hp : p.fst ∈ a ∧ p.snd ∈ b
⊢ 0 ≤ (fun p => w p.fst * v p.snd) p
[PROOFSTEP]
exact mul_nonneg (hw p.1 hp.1) (hv p.2 hp.2)
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
p : ι × κ
hp : p ∈ a ×ˢ b
⊢ (fun p => (S p.fst, T p.snd)) p ∈ s ×ˢ t
[PROOFSTEP]
rw [mem_product] at hp 
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
p : ι × κ
hp : p.fst ∈ a ∧ p.snd ∈ b
⊢ (fun p => (S p.fst, T p.snd)) p ∈ s ×ˢ t
[PROOFSTEP]
exact ⟨hS p.1 hp.1, hT p.2 hp.2⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ (centerMass (a ×ˢ b) (fun p => w p.fst * v p.snd) fun p => (S p.fst, T p.snd)) = (x, y)
[PROOFSTEP]
ext
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₁
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ (centerMass (a ×ˢ b) (fun p => w p.fst * v p.snd) fun p => (S p.fst, T p.snd)).fst = (x, y).fst
[PROOFSTEP]
rw [← hSp, Finset.centerMass_eq_of_sum_1 _ _ hw', Finset.centerMass_eq_of_sum_1 _ _ h_sum]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₁
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ (∑ i in a ×ˢ b, (w i.fst * v i.snd) • (S i.fst, T i.snd)).fst = (∑ i in a, w i • S i, y).fst
[PROOFSTEP]
simp_rw [Prod.fst_sum, Prod.smul_mk]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₁
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ ∑ x in a ×ˢ b, (w x.fst * v x.snd) • S x.fst = ∑ i in a, w i • S i
[PROOFSTEP]
rw [Finset.sum_product]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₁
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ ∑ x in a, ∑ y in b, (w (x, y).fst * v (x, y).snd) • S (x, y).fst = ∑ i in a, w i • S i
[PROOFSTEP]
congr
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₁.e_f
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ (fun x => ∑ y in b, (w (x, y).fst * v (x, y).snd) • S (x, y).fst) = fun i => w i • S i
[PROOFSTEP]
ext i
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₁.e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
i : ι
⊢ ∑ y in b, (w (i, y).fst * v (i, y).snd) • S (i, y).fst = w i • S i
[PROOFSTEP]
have : (∑ j : κ in b, (w i * v j) • S i) = ∑ j : κ in b, v j • w i • S i :=
  by
  congr
  ext
  rw [mul_smul, smul_comm]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
i : ι
⊢ ∑ j in b, (w i * v j) • S i = ∑ j in b, v j • w i • S i
[PROOFSTEP]
congr
[GOAL]
case e_f
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
i : ι
⊢ (fun j => (w i * v j) • S i) = fun j => v j • w i • S i
[PROOFSTEP]
ext
[GOAL]
case e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
i : ι
x✝ : κ
⊢ (w i * v x✝) • S i = v x✝ • w i • S i
[PROOFSTEP]
rw [mul_smul, smul_comm]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₁.e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
i : ι
this : ∑ j in b, (w i * v j) • S i = ∑ j in b, v j • w i • S i
⊢ ∑ y in b, (w (i, y).fst * v (i, y).snd) • S (i, y).fst = w i • S i
[PROOFSTEP]
rw [this, ← Finset.sum_smul, hv', one_smul]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₂
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ (centerMass (a ×ˢ b) (fun p => w p.fst * v p.snd) fun p => (S p.fst, T p.snd)).snd = (x, y).snd
[PROOFSTEP]
rw [← hTp, Finset.centerMass_eq_of_sum_1 _ _ hv', Finset.centerMass_eq_of_sum_1 _ _ h_sum]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₂
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ (∑ i in a ×ˢ b, (w i.fst * v i.snd) • (S i.fst, T i.snd)).snd = (x, ∑ i in b, v i • T i).snd
[PROOFSTEP]
simp_rw [Prod.snd_sum, Prod.smul_mk]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₂
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ ∑ x in a ×ˢ b, (w x.fst * v x.snd) • T x.snd = ∑ i in b, v i • T i
[PROOFSTEP]
rw [Finset.sum_product, Finset.sum_comm]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₂
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ ∑ y in b, ∑ x in a, (w (x, y).fst * v (x, y).snd) • T (x, y).snd = ∑ i in b, v i • T i
[PROOFSTEP]
congr
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₂.e_f
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
⊢ (fun y => ∑ x in a, (w (x, y).fst * v (x, y).snd) • T (x, y).snd) = fun i => v i • T i
[PROOFSTEP]
ext j
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₂.e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
j : κ
⊢ ∑ x in a, (w (x, j).fst * v (x, j).snd) • T (x, j).snd = v j • T j
[PROOFSTEP]
simp_rw [mul_smul]
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3.h₂.e_f.h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
t : Set F
x : E
y : F
ι : Type
a : Finset ι
w : ι → R
S : ι → E
hw : ∀ (i : ι), i ∈ a → 0 ≤ w i
hw' : ∑ i in a, w i = 1
hS : ∀ (i : ι), i ∈ a → S i ∈ s
hSp : centerMass a w S = x
κ : Type
b : Finset κ
v : κ → R
T : κ → F
hv : ∀ (i : κ), i ∈ b → 0 ≤ v i
hv' : ∑ i in b, v i = 1
hT : ∀ (i : κ), i ∈ b → T i ∈ t
hTp : centerMass b v T = y
h_sum : ∑ i in a ×ˢ b, w i.fst * v i.snd = 1
j : κ
⊢ ∑ x in a, w x • v j • T j = v j • T j
[PROOFSTEP]
rw [← Finset.sum_smul, hw', one_smul]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s t : Set E
⊢ ↑(convexHull R) (s + t) = ↑(convexHull R) s + ↑(convexHull R) t
[PROOFSTEP]
simp_rw [← image2_add, ← image_prod, IsLinearMap.isLinearMap_add.convexHull_image, convexHull_prod]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s t : Set E
⊢ ↑(convexHull R) (s - t) = ↑(convexHull R) s - ↑(convexHull R) t
[PROOFSTEP]
simp_rw [sub_eq_add_neg, convexHull_add, convexHull_neg]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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) (Set.range fun i j => if i = j then 1 else 0) = stdSimplex R ι
[PROOFSTEP]
refine' Subset.antisymm (convexHull_min _ (convex_stdSimplex R ι)) _
[GOAL]
case refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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 ι
[PROOFSTEP]
rintro _ ⟨i, rfl⟩
[GOAL]
case refine'_1.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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 ι
[PROOFSTEP]
exact ite_eq_mem_stdSimplex R i
[GOAL]
case refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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) (Set.range fun i j => if i = j then 1 else 0)
[PROOFSTEP]
rintro w ⟨hw₀, hw₁⟩
[GOAL]
case refine'_2.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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) (Set.range fun i j => if i = j then 1 else 0)
[PROOFSTEP]
rw [pi_eq_sum_univ w, ← Finset.univ.centerMass_eq_of_sum_1 _ hw₁]
[GOAL]
case refine'_2.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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) (Set.range fun i j => if i = j then 1 else 0)
[PROOFSTEP]
exact Finset.univ.centerMass_mem_convexHull (fun i _ => hw₀ i) (hw₁.symm ▸ zero_lt_one) fun i _ => mem_range_self i
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
hs : Set.Finite s
⊢ ↑(convexHull R) s = ↑(∑ x : ↑s, LinearMap.smulRight (LinearMap.proj x) ↑x) '' stdSimplex R ↑s
[PROOFSTEP]
rw [← @convexHull_basis_eq_stdSimplex _ _ _ hs.fintype, ← LinearMap.convexHull_image, ← Set.range_comp]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
hs : Set.Finite s
⊢ ↑(convexHull R) s =
    ↑(convexHull R) (range (↑(∑ x : ↑s, LinearMap.smulRight (LinearMap.proj x) ↑x) ∘ fun i j => if i = j then 1 else 0))
[PROOFSTEP]
simp_rw [Function.comp]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
hs : Set.Finite s
⊢ ↑(convexHull R) s =
    ↑(convexHull R)
      (range fun x => ↑(∑ x : ↑s, LinearMap.smulRight (LinearMap.proj x) ↑x) fun j => if x = j then 1 else 0)
[PROOFSTEP]
apply congr_arg
[GOAL]
case h
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
hs : Set.Finite s
⊢ s = range fun x => ↑(∑ x : ↑s, LinearMap.smulRight (LinearMap.proj x) ↑x) fun j => if x = j then 1 else 0
[PROOFSTEP]
convert Subtype.range_coe.symm
[GOAL]
case h.e'_3.h.e'_3.h
R : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
ι' : Type u_5
α : Type u_6
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
s : Set E
hs : Set.Finite s
x✝ : ↑s
⊢ (↑(∑ x : ↑s, LinearMap.smulRight (LinearMap.proj x) ↑x) fun j => if x✝ = j then 1 else 0) = ↑x✝
[PROOFSTEP]
simp [LinearMap.sum_apply, ite_smul _ (1 : R), Finset.filter_eq, @Finset.mem_univ _ hs.fintype _]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
⊢ ↑(convexHull R) (Set.range ↑b) = {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
[PROOFSTEP]
rw [convexHull_range_eq_exists_affineCombination]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
⊢ {x | ∃ s w x_1 x_2, ↑(affineCombination R s ↑b) w = x} = {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
[PROOFSTEP]
ext x
[GOAL]
case h
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
x : E
⊢ x ∈ {x | ∃ s w x_1 x_2, ↑(affineCombination R s ↑b) w = x} ↔ x ∈ {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
[PROOFSTEP]
refine' ⟨_, fun hx => _⟩
[GOAL]
case h.refine'_1
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
x : E
⊢ x ∈ {x | ∃ s w x_1 x_2, ↑(affineCombination R s ↑b) w = x} → x ∈ {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
[PROOFSTEP]
rintro ⟨s, w, hw₀, hw₁, rfl⟩ i
[GOAL]
case h.refine'_1.intro.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
i : ι
⊢ 0 ≤ ↑(coord b i) (↑(affineCombination R s ↑b) w)
[PROOFSTEP]
by_cases hi : i ∈ s
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
i : ι
hi : i ∈ s
⊢ 0 ≤ ↑(coord b i) (↑(affineCombination R s ↑b) w)
[PROOFSTEP]
rw [b.coord_apply_combination_of_mem hi hw₁]
[GOAL]
case pos
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
i : ι
hi : i ∈ s
⊢ 0 ≤ w i
[PROOFSTEP]
exact hw₀ i hi
[GOAL]
case neg
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
s : Finset ι
w : ι → R
hw₀ : ∀ (i : ι), i ∈ s → 0 ≤ w i
hw₁ : Finset.sum s w = 1
i : ι
hi : ¬i ∈ s
⊢ 0 ≤ ↑(coord b i) (↑(affineCombination R s ↑b) w)
[PROOFSTEP]
rw [b.coord_apply_combination_of_not_mem hi hw₁]
[GOAL]
case h.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
x : E
hx : x ∈ {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
⊢ x ∈ {x | ∃ s w x_1 x_2, ↑(affineCombination R s ↑b) w = x}
[PROOFSTEP]
have hx' : x ∈ affineSpan R (range b) := by
  rw [b.tot]
  exact AffineSubspace.mem_top R E x
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
x : E
hx : x ∈ {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
⊢ x ∈ affineSpan R (Set.range ↑b)
[PROOFSTEP]
rw [b.tot]
[GOAL]
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
x : E
hx : x ∈ {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
⊢ x ∈ ⊤
[PROOFSTEP]
exact AffineSubspace.mem_top R E x
[GOAL]
case h.refine'_2
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
x : E
hx : x ∈ {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
hx' : x ∈ affineSpan R (Set.range ↑b)
⊢ x ∈ {x | ∃ s w x_1 x_2, ↑(affineCombination R s ↑b) w = x}
[PROOFSTEP]
obtain ⟨s, w, hw₁, rfl⟩ := (mem_affineSpan_iff_eq_affineCombination R E).mp hx'
[GOAL]
case h.refine'_2.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
s : Finset ι
w : ι → R
hw₁ : ∑ i in s, w i = 1
hx : ↑(affineCombination R s ↑b) w ∈ {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
hx' : ↑(affineCombination R s ↑b) w ∈ affineSpan R (Set.range ↑b)
⊢ ↑(affineCombination R s ↑b) w ∈ {x | ∃ s w x_1 x_2, ↑(affineCombination R s ↑b) w = x}
[PROOFSTEP]
refine' ⟨s, w, _, hw₁, rfl⟩
[GOAL]
case h.refine'_2.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
s : Finset ι
w : ι → R
hw₁ : ∑ i in s, w i = 1
hx : ↑(affineCombination R s ↑b) w ∈ {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
hx' : ↑(affineCombination R s ↑b) w ∈ affineSpan R (Set.range ↑b)
⊢ ∀ (i : ι), i ∈ s → 0 ≤ w i
[PROOFSTEP]
intro i hi
[GOAL]
case h.refine'_2.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
s : Finset ι
w : ι → R
hw₁ : ∑ i in s, w i = 1
hx : ↑(affineCombination R s ↑b) w ∈ {x | ∀ (i : ι), 0 ≤ ↑(coord b i) x}
hx' : ↑(affineCombination R s ↑b) w ∈ affineSpan R (Set.range ↑b)
i : ι
hi : i ∈ s
⊢ 0 ≤ w i
[PROOFSTEP]
specialize hx i
[GOAL]
case h.refine'_2.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
s : Finset ι
w : ι → R
hw₁ : ∑ i in s, w i = 1
hx' : ↑(affineCombination R s ↑b) w ∈ affineSpan R (Set.range ↑b)
i : ι
hi : i ∈ s
hx : 0 ≤ ↑(coord b i) (↑(affineCombination R s ↑b) w)
⊢ 0 ≤ w i
[PROOFSTEP]
rw [b.coord_apply_combination_of_mem hi hw₁] at hx 
[GOAL]
case h.refine'_2.intro.intro.intro
R : Type u_1
E : Type u_2
F : Type u_3
ι✝ : Type u_4
ι' : Type u_5
α : Type u_6
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
ι : Type u_7
b : AffineBasis ι R E
s : Finset ι
w : ι → R
hw₁ : ∑ i in s, w i = 1
hx' : ↑(affineCombination R s ↑b) w ∈ affineSpan R (Set.range ↑b)
i : ι
hi : i ∈ s
hx : 0 ≤ w i
⊢ 0 ≤ w i
[PROOFSTEP]
exact hx
