Theorem: AffineIndependent.exists_mem_inter_of_exists_mem_inter_affineSpan
File: Mathlib/LinearAlgebra/AffineSpace/Independent.lean

tactic: rw [Set.image_eq_range] at hp0s1 hp0s2
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
ha : AffineIndependent k p
s1 s2 : Set ι
p0 : P
hp0s1 : p0 ∈ affineSpan k (p '' s1)
hp0s2 : p0 ∈ affineSpan k (p '' s2)
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: rw [mem_affineSpan_iff_eq_affineCombination, ←
  Finset.eq_affineCombination_subset_iff_eq_affineCombination_subtype] at hp0s1 hp0s2
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
ha : AffineIndependent k p
s1 s2 : Set ι
p0 : P
hp0s1 : p0 ∈ affineSpan k (Set.range fun x => p ↑x)
hp0s2 : p0 ∈ affineSpan k (Set.range fun x => p ↑x)
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: rcases hp0s1 with ⟨fs1, hfs1, w1, hw1, hp0s1⟩
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
ha : AffineIndependent k p
s1 s2 : Set ι
p0 : P
hp0s1 : ∃ fs x w x, p0 = ↑(Finset.affineCombination k fs p) w
hp0s2 : ∃ fs x w x, p0 = ↑(Finset.affineCombination k fs p) w
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: rcases hp0s2 with ⟨fs2, hfs2, w2, hw2, hp0s2⟩
state_before: case 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
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
ha : AffineIndependent k p
s1 s2 : Set ι
p0 : P
hp0s2 : ∃ fs x w x, p0 = ↑(Finset.affineCombination k fs p) w
fs1 : Finset ι
hfs1 : ↑fs1 ⊆ s1
w1 : ι → k
hw1 : ∑ i in fs1, w1 i = 1
hp0s1 : p0 = ↑(Finset.affineCombination k fs1 p) w1
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: rw [affineIndependent_iff_indicator_eq_of_affineCombination_eq] at ha
state_before: case intro.intro.intro.intro.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
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
ha : AffineIndependent k p
s1 s2 : Set ι
p0 : P
fs1 : Finset ι
hfs1 : ↑fs1 ⊆ s1
w1 : ι → k
hw1 : ∑ i in fs1, w1 i = 1
hp0s1 : p0 = ↑(Finset.affineCombination k fs1 p) w1
fs2 : Finset ι
hfs2 : ↑fs2 ⊆ s2
w2 : ι → k
hw2 : ∑ i in fs2, w2 i = 1
hp0s2 : p0 = ↑(Finset.affineCombination k fs2 p) w2
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: replace ha := ha fs1 fs2 w1 w2 hw1 hw2 (hp0s1 ▸ hp0s2)
state_before: case intro.intro.intro.intro.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
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
ha :
  ∀ (s1 s2 : Finset ι) (w1 w2 : ι → k),
    ∑ i in s1, w1 i = 1 →
      ∑ i in s2, w2 i = 1 →
        ↑(Finset.affineCombination k s1 p) w1 = ↑(Finset.affineCombination k s2 p) w2 →
          Set.indicator (↑s1) w1 = Set.indicator (↑s2) w2
s1 s2 : Set ι
p0 : P
fs1 : Finset ι
hfs1 : ↑fs1 ⊆ s1
w1 : ι → k
hw1 : ∑ i in fs1, w1 i = 1
hp0s1 : p0 = ↑(Finset.affineCombination k fs1 p) w1
fs2 : Finset ι
hfs2 : ↑fs2 ⊆ s2
w2 : ι → k
hw2 : ∑ i in fs2, w2 i = 1
hp0s2 : p0 = ↑(Finset.affineCombination k fs2 p) w2
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: have hnz : (∑ i in fs1, w1 i) ≠ 0 := hw1.symm ▸ one_ne_zero
state_before: case intro.intro.intro.intro.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
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
s1 s2 : Set ι
p0 : P
fs1 : Finset ι
hfs1 : ↑fs1 ⊆ s1
w1 : ι → k
hw1 : ∑ i in fs1, w1 i = 1
hp0s1 : p0 = ↑(Finset.affineCombination k fs1 p) w1
fs2 : Finset ι
hfs2 : ↑fs2 ⊆ s2
w2 : ι → k
hw2 : ∑ i in fs2, w2 i = 1
hp0s2 : p0 = ↑(Finset.affineCombination k fs2 p) w2
ha : Set.indicator (↑fs1) w1 = Set.indicator (↑fs2) w2
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: rcases Finset.exists_ne_zero_of_sum_ne_zero hnz with ⟨i, hifs1, hinz⟩
state_before: case intro.intro.intro.intro.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
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
s1 s2 : Set ι
p0 : P
fs1 : Finset ι
hfs1 : ↑fs1 ⊆ s1
w1 : ι → k
hw1 : ∑ i in fs1, w1 i = 1
hp0s1 : p0 = ↑(Finset.affineCombination k fs1 p) w1
fs2 : Finset ι
hfs2 : ↑fs2 ⊆ s2
w2 : ι → k
hw2 : ∑ i in fs2, w2 i = 1
hp0s2 : p0 = ↑(Finset.affineCombination k fs2 p) w2
ha : Set.indicator (↑fs1) w1 = Set.indicator (↑fs2) w2
hnz : ∑ i in fs1, w1 i ≠ 0
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: simp_rw [← Set.indicator_of_mem (Finset.mem_coe.2 hifs1) w1, ha] at hinz
state_before: case intro.intro.intro.intro.intro.intro.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
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
s1 s2 : Set ι
p0 : P
fs1 : Finset ι
hfs1 : ↑fs1 ⊆ s1
w1 : ι → k
hw1 : ∑ i in fs1, w1 i = 1
hp0s1 : p0 = ↑(Finset.affineCombination k fs1 p) w1
fs2 : Finset ι
hfs2 : ↑fs2 ⊆ s2
w2 : ι → k
hw2 : ∑ i in fs2, w2 i = 1
hp0s2 : p0 = ↑(Finset.affineCombination k fs2 p) w2
ha : Set.indicator (↑fs1) w1 = Set.indicator (↑fs2) w2
hnz : ∑ i in fs1, w1 i ≠ 0
i : ι
hifs1 : i ∈ fs1
hinz : w1 i ≠ 0
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: use i, hfs1 hifs1
state_before: case intro.intro.intro.intro.intro.intro.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
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
s1 s2 : Set ι
p0 : P
fs1 : Finset ι
hfs1 : ↑fs1 ⊆ s1
w1 : ι → k
hw1 : ∑ i in fs1, w1 i = 1
hp0s1 : p0 = ↑(Finset.affineCombination k fs1 p) w1
fs2 : Finset ι
hfs2 : ↑fs2 ⊆ s2
w2 : ι → k
hw2 : ∑ i in fs2, w2 i = 1
hp0s2 : p0 = ↑(Finset.affineCombination k fs2 p) w2
ha : Set.indicator (↑fs1) w1 = Set.indicator (↑fs2) w2
hnz : ∑ i in fs1, w1 i ≠ 0
i : ι
hifs1 : i ∈ fs1
hinz : Set.indicator (↑fs2) w2 i ≠ 0
⊢ ∃ i, i ∈ s1 ∩ s2

tactic: exact hfs2 (Set.mem_of_indicator_ne_zero hinz)
state_before: case intro.intro.intro.intro.intro.intro.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
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
s1 s2 : Set ι
p0 : P
fs1 : Finset ι
hfs1 : ↑fs1 ⊆ s1
w1 : ι → k
hw1 : ∑ i in fs1, w1 i = 1
hp0s1 : p0 = ↑(Finset.affineCombination k fs1 p) w1
fs2 : Finset ι
hfs2 : ↑fs2 ⊆ s2
w2 : ι → k
hw2 : ∑ i in fs2, w2 i = 1
hp0s2 : p0 = ↑(Finset.affineCombination k fs2 p) w2
ha : Set.indicator (↑fs1) w1 = Set.indicator (↑fs2) w2
hnz : ∑ i in fs1, w1 i ≠ 0
i : ι
hifs1 : i ∈ fs1
hinz : Set.indicator (↑fs2) w2 i ≠ 0
⊢ i ∈ s2