Theorem: MvPolynomial.vars_sum_of_disjoint
File: Mathlib/Data/MvPolynomial/Variables.lean

tactic: classical
induction t using Finset.induction_on with
| empty => simp
| insert has hsum =>
  rw [Finset.biUnion_insert, Finset.sum_insert has, vars_add_of_disjoint, hsum]
  unfold Pairwise onFun at h
  rw [hsum]
  simp only [Finset.disjoint_iff_ne] at h⊢
  intro v hv v2 hv2
  rw [Finset.mem_biUnion] at hv2
  rcases hv2 with ⟨i, his, hi⟩
  refine' h _ _ hv _ hi
  rintro rfl
  contradiction
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
h : Pairwise (Disjoint on fun i => vars (φ i))
⊢ vars (∑ i in t, φ i) = Finset.biUnion t fun i => vars (φ i)

tactic: induction t using Finset.induction_on with
| empty => simp
| insert has hsum =>
  rw [Finset.biUnion_insert, Finset.sum_insert has, vars_add_of_disjoint, hsum]
  unfold Pairwise onFun at h
  rw [hsum]
  simp only [Finset.disjoint_iff_ne] at h⊢
  intro v hv v2 hv2
  rw [Finset.mem_biUnion] at hv2
  rcases hv2 with ⟨i, his, hi⟩
  refine' h _ _ hv _ hi
  rintro rfl
  contradiction
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
h : Pairwise (Disjoint on fun i => vars (φ i))
⊢ vars (∑ i in t, φ i) = Finset.biUnion t fun i => vars (φ i)

tactic: simp
state_before: case empty
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
h : Pairwise (Disjoint on fun i => vars (φ i))
⊢ vars (∑ i in ∅, φ i) = Finset.biUnion ∅ fun i => vars (φ i)

tactic: rw [Finset.biUnion_insert, Finset.sum_insert has, vars_add_of_disjoint, hsum]
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
h : Pairwise (Disjoint on fun i => vars (φ i))
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
⊢ vars (∑ i in insert a✝ s✝, φ i) = Finset.biUnion (insert a✝ s✝) fun i => vars (φ i)

tactic: unfold Pairwise onFun at h
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
h : Pairwise (Disjoint on fun i => vars (φ i))
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
⊢ Disjoint (vars (φ a✝)) (vars (∑ x in s✝, φ x))

tactic: rw [hsum]
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
h : ∀ ⦃i j : ι⦄, i ≠ j → Disjoint ((fun i => vars (φ i)) i) ((fun i => vars (φ i)) j)
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
⊢ Disjoint (vars (φ a✝)) (vars (∑ x in s✝, φ x))

tactic: simp only [Finset.disjoint_iff_ne] at h⊢
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
h : ∀ ⦃i j : ι⦄, i ≠ j → Disjoint ((fun i => vars (φ i)) i) ((fun i => vars (φ i)) j)
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
⊢ Disjoint (vars (φ a✝)) (Finset.biUnion s✝ fun i => vars (φ i))

tactic: intro v hv v2 hv2
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
h : ∀ ⦃i j : ι⦄, i ≠ j → ∀ (a : σ), a ∈ vars (φ i) → ∀ (b : σ), b ∈ vars (φ j) → a ≠ b
⊢ ∀ (a : σ), a ∈ vars (φ a✝) → ∀ (b : σ), (b ∈ Finset.biUnion s✝ fun i => vars (φ i)) → a ≠ b

tactic: rw [Finset.mem_biUnion] at hv2
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
h : ∀ ⦃i j : ι⦄, i ≠ j → ∀ (a : σ), a ∈ vars (φ i) → ∀ (b : σ), b ∈ vars (φ j) → a ≠ b
v : σ
hv : v ∈ vars (φ a✝)
v2 : σ
hv2 : v2 ∈ Finset.biUnion s✝ fun i => vars (φ i)
⊢ v ≠ v2

tactic: rcases hv2 with ⟨i, his, hi⟩
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
h : ∀ ⦃i j : ι⦄, i ≠ j → ∀ (a : σ), a ∈ vars (φ i) → ∀ (b : σ), b ∈ vars (φ j) → a ≠ b
v : σ
hv : v ∈ vars (φ a✝)
v2 : σ
hv2 : ∃ a, a ∈ s✝ ∧ v2 ∈ vars (φ a)
⊢ v ≠ v2

tactic: refine' h _ _ hv _ hi
state_before: case insert.intro.intro
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
h : ∀ ⦃i j : ι⦄, i ≠ j → ∀ (a : σ), a ∈ vars (φ i) → ∀ (b : σ), b ∈ vars (φ j) → a ≠ b
v : σ
hv : v ∈ vars (φ a✝)
v2 : σ
i : ι
his : i ∈ s✝
hi : v2 ∈ vars (φ i)
⊢ v ≠ v2

tactic: rintro rfl
state_before: case insert.intro.intro
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
h : ∀ ⦃i j : ι⦄, i ≠ j → ∀ (a : σ), a ∈ vars (φ i) → ∀ (b : σ), b ∈ vars (φ j) → a ≠ b
v : σ
hv : v ∈ vars (φ a✝)
v2 : σ
i : ι
his : i ∈ s✝
hi : v2 ∈ vars (φ i)
⊢ a✝ ≠ i

tactic: contradiction
state_before: case insert.intro.intro
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.195288
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) = Finset.biUnion s✝ fun i => vars (φ i)
h : ∀ ⦃i j : ι⦄, i ≠ j → ∀ (a : σ), a ∈ vars (φ i) → ∀ (b : σ), b ∈ vars (φ j) → a ≠ b
v : σ
hv : v ∈ vars (φ a✝)
v2 : σ
his : a✝ ∈ s✝
hi : v2 ∈ vars (φ a✝)
⊢ False