Theorem: Finset.eq_weightedVSubOfPoint_subset_iff_eq_weightedVSubOfPoint_subtype
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp_rw [weightedVSubOfPoint_apply]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
v : V
x : k
s : Set ι
p : ι → P
b : P
⊢ (∃ fs, ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = x ∧ v = (fs.weightedVSubOfPoint p b) w) ↔
    ∃ fs w, ∑ i ∈ fs, w i = x ∧ v = (fs.weightedVSubOfPoint (fun i => p ↑i) b) w
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
v : V
x : k
s : Set ι
p : ι → P
b : P
⊢ (∃ fs, ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p i -ᵥ b)) ↔
    ∃ fs w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p ↑i -ᵥ b)

tactic: constructor
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
v : V
x : k
s : Set ι
p : ι → P
b : P
⊢ (∃ fs, ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p i -ᵥ b)) ↔
    ∃ fs w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p ↑i -ᵥ b)
state_after: case mp
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
v : V
x : k
s : Set ι
p : ι → P
b : P
⊢ (∃ fs, ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p i -ᵥ b)) →
    ∃ fs w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p ↑i -ᵥ b)

case mpr
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
v : V
x : k
s : Set ι
p : ι → P
b : P
⊢ (∃ fs w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p ↑i -ᵥ b)) →
    ∃ fs, ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p i -ᵥ b)

tactic: rintro ⟨fs, hfs, w, rfl, rfl⟩
state_before: case mp
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
v : V
x : k
s : Set ι
p : ι → P
b : P
⊢ (∃ fs, ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p i -ᵥ b)) →
    ∃ fs w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p ↑i -ᵥ b)
state_after: case mp.intro.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
s : Set ι
p : ι → P
b : P
fs : Finset ι
hfs : ↑fs ⊆ s
w : ι → k
⊢ ∃ fs_1 w_1, ∑ i ∈ fs_1, w_1 i = ∑ i ∈ fs, w i ∧ ∑ i ∈ fs, w i • (p i -ᵥ b) = ∑ i ∈ fs_1, w_1 i • (p ↑i -ᵥ b)

tactic: exact ⟨fs.subtype s, fun i => w i, sum_subtype_of_mem _ hfs, (sum_subtype_of_mem _ hfs).symm⟩
state_before: case mp.intro.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
s : Set ι
p : ι → P
b : P
fs : Finset ι
hfs : ↑fs ⊆ s
w : ι → k
⊢ ∃ fs_1 w_1, ∑ i ∈ fs_1, w_1 i = ∑ i ∈ fs, w i ∧ ∑ i ∈ fs, w i • (p i -ᵥ b) = ∑ i ∈ fs_1, w_1 i • (p ↑i -ᵥ b)
state_after: no goals

tactic: rintro ⟨fs, w, rfl, rfl⟩
state_before: case mpr
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
v : V
x : k
s : Set ι
p : ι → P
b : P
⊢ (∃ fs w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p ↑i -ᵥ b)) →
    ∃ fs, ↑fs ⊆ s ∧ ∃ w, ∑ i ∈ fs, w i = x ∧ v = ∑ i ∈ fs, w i • (p i -ᵥ b)
state_after: case mpr.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
s : Set ι
p : ι → P
b : P
fs : Finset ↑s
w : ↑s → k
⊢ ∃ fs_1,
    ↑fs_1 ⊆ s ∧ ∃ w_1, ∑ i ∈ fs_1, w_1 i = ∑ i ∈ fs, w i ∧ ∑ i ∈ fs, w i • (p ↑i -ᵥ b) = ∑ i ∈ fs_1, w_1 i • (p i -ᵥ b)

tactic: refine
    ⟨fs.map (Function.Embedding.subtype _), map_subtype_subset _, fun i =>
      if h : i ∈ s then w ⟨i, h⟩ else 0, ?_, ?_⟩ <;>
  simp
state_before: case mpr.intro.intro.intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
s : Set ι
p : ι → P
b : P
fs : Finset ↑s
w : ↑s → k
⊢ ∃ fs_1,
    ↑fs_1 ⊆ s ∧ ∃ w_1, ∑ i ∈ fs_1, w_1 i = ∑ i ∈ fs, w i ∧ ∑ i ∈ fs, w i • (p ↑i -ᵥ b) = ∑ i ∈ fs_1, w_1 i • (p i -ᵥ b)
state_after: no goals