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

tactic: have hfin_w : (support (w ∘ PLift.down)).Finite := by
  by_contra H
  rw [finsum, dif_neg H] at h₁
  exact zero_ne_one h₁
state_before: R : Type u_3
E : Type u_2
F : Type ?u.101329
ι✝ : Type ?u.101332
ι' : Type ?u.101335
α : Type ?u.101338
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module 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_1
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

tactic: have hsub : support ((fun i => w i • z i) ∘ PLift.down) ⊆ hfin_w.toFinset :=
  (support_smul_subset_left _ _).trans hfin_w.coe_toFinset.ge
state_before: R : Type u_3
E : Type u_2
F : Type ?u.101329
ι✝ : Type ?u.101332
ι' : Type ?u.101335
α : Type ?u.101338
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module 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_1
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

tactic: rw [finsum_eq_sum_pLift_of_support_subset hsub]
state_before: R : Type u_3
E : Type u_2
F : Type ?u.101329
ι✝ : Type ?u.101332
ι' : Type ?u.101335
α : Type ?u.101338
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module 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_1
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

tactic: refine' hs.sum_mem (fun _ _ => h₀ _) _ fun i hi => hz _ _
state_before: R : Type u_3
E : Type u_2
F : Type ?u.101329
ι✝ : Type ?u.101332
ι' : Type ?u.101335
α : Type ?u.101338
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module 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_1
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

tactic: by_contra H
state_before: R : Type u_3
E : Type u_2
F : Type ?u.101329
ι✝ : Type ?u.101332
ι' : Type ?u.101335
α : Type ?u.101338
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module 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_1
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))

tactic: rw [finsum, dif_neg H] at h₁
state_before: R : Type u_3
E : Type u_2
F : Type ?u.101329
ι✝ : Type ?u.101332
ι' : Type ?u.101335
α : Type ?u.101338
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module 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_1
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

tactic: exact zero_ne_one h₁
state_before: R : Type u_3
E : Type u_2
F : Type ?u.101329
ι✝ : Type ?u.101332
ι' : Type ?u.101335
α : Type ?u.101338
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module 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_1
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

tactic: rwa [finsum, dif_pos hfin_w] at h₁
state_before: case refine'_1
R : Type u_3
E : Type u_2
F : Type ?u.101329
ι✝ : Type ?u.101332
ι' : Type ?u.101335
α : Type ?u.101338
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module 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_1
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

tactic: rwa [hfin_w.mem_toFinset] at hi
state_before: case refine'_2
R : Type u_3
E : Type u_2
F : Type ?u.101329
ι✝ : Type ?u.101332
ι' : Type ?u.101335
α : Type ?u.101338
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module 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_1
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