Theorem: MvPolynomial.NewtonIdentities.weight_add_weight_pairMap
File: Mathlib/RingTheory/MvPolynomial/NewtonIdentities.lean

tactic: rw [weight, weight]
state_before: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t ∈ MvPolynomial.NewtonIdentities.pairs σ k
⊢ MvPolynomial.NewtonIdentities.weight σ R k t +
      MvPolynomial.NewtonIdentities.weight σ R k (MvPolynomial.NewtonIdentities.pairMap σ t) =
    0
state_after: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t ∈ MvPolynomial.NewtonIdentities.pairs σ k
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0

tactic: rw [mem_pairs] at h
state_before: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t ∈ MvPolynomial.NewtonIdentities.pairs σ k
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0
state_after: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0

tactic: have h2 (n : ℕ) : -(-1 : MvPolynomial σ R) ^ n = (-1) ^ (n + 1) := by
  rw [← neg_one_mul ((-1 : MvPolynomial σ R) ^ n), pow_add, pow_one, mul_comm]
state_before: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0
state_after: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0

tactic: rcases (em (t.snd ∈ t.fst)) with h1 | h1
state_before: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0
state_after: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0

case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0

tactic: rw [← neg_one_mul ((-1 : MvPolynomial σ R) ^ n), pow_add, pow_one, mul_comm]
state_before: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
n : ℕ
⊢ -(-1) ^ n = (-1) ^ (n + 1)
state_after: no goals

tactic: rw [pairMap_of_snd_mem_fst σ h1]
state_before: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0
state_after: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (t.1.erase t.2, t.2).1.card *
        ((∏ a ∈ (t.1.erase t.2, t.2).1, X a) * X (t.1.erase t.2, t.2).2 ^ (k - (t.1.erase t.2, t.2).1.card)) =
    0

tactic: simp only [← prod_erase_mul t.fst (fun j ↦ (X j : MvPolynomial σ R)) h1,
  mul_assoc (∏ a ∈ erase t.fst t.snd, X a), card_erase_of_mem h1]
state_before: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (t.1.erase t.2, t.2).1.card *
        ((∏ a ∈ (t.1.erase t.2, t.2).1, X a) * X (t.1.erase t.2, t.2).2 ^ (k - (t.1.erase t.2, t.2).1.card)) =
    0
state_after: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * (X t.2 * X t.2 ^ (k - t.1.card))) +
      (-1) ^ (t.1.card - 1) * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0

tactic: nth_rewrite 1 [← pow_one (X t.snd)]
state_before: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * (X t.2 * X t.2 ^ (k - t.1.card))) +
      (-1) ^ (t.1.card - 1) * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0
state_after: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * (X t.2 ^ 1 * X t.2 ^ (k - t.1.card))) +
      (-1) ^ (t.1.card - 1) * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0

tactic: simp only [← pow_add, add_comm]
state_before: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * (X t.2 ^ 1 * X t.2 ^ (k - t.1.card))) +
      (-1) ^ (t.1.card - 1) * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0
state_after: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - t.1.card + 1)) +
      (-1) ^ (t.1.card - 1) * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0

tactic: have h3 : 1 ≤ card t.fst := lt_iff_add_one_le.mp (card_pos.mpr ⟨t.snd, h1⟩)
state_before: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - t.1.card + 1)) +
      (-1) ^ (t.1.card - 1) * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0
state_after: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
h3 : 1 ≤ t.1.card
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - t.1.card + 1)) +
      (-1) ^ (t.1.card - 1) * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0

tactic: rw [← tsub_tsub_assoc h.left h3, ← neg_neg ((-1 : MvPolynomial σ R) ^ (card t.fst - 1)),
  h2 (card t.fst - 1), Nat.sub_add_cancel h3]
state_before: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
h3 : 1 ≤ t.1.card
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - t.1.card + 1)) +
      (-1) ^ (t.1.card - 1) * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0
state_after: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
h3 : 1 ≤ t.1.card
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) +
      -(-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0

tactic: simp
state_before: case inl
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∈ t.1
h3 : 1 ≤ t.1.card
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) +
      -(-1) ^ t.1.card * ((∏ a ∈ t.1.erase t.2, X a) * X t.2 ^ (k - (t.1.card - 1))) =
    0
state_after: no goals

tactic: rw [pairMap_of_snd_nmem_fst σ h1]
state_before: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (MvPolynomial.NewtonIdentities.pairMap σ t).1.card *
        ((∏ a ∈ (MvPolynomial.NewtonIdentities.pairMap σ t).1, X a) *
          X (MvPolynomial.NewtonIdentities.pairMap σ t).2 ^ (k - (MvPolynomial.NewtonIdentities.pairMap σ t).1.card)) =
    0
state_after: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (cons t.2 t.1 h1, t.2).1.card *
        ((∏ a ∈ (cons t.2 t.1 h1, t.2).1, X a) * X (cons t.2 t.1 h1, t.2).2 ^ (k - (cons t.2 t.1 h1, t.2).1.card)) =
    0

tactic: simp only [mul_comm, mul_assoc (∏ a ∈ t.fst, X a), card_cons, prod_cons]
state_before: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (-1) ^ t.1.card * ((∏ a ∈ t.1, X a) * X t.2 ^ (k - t.1.card)) +
      (-1) ^ (cons t.2 t.1 h1, t.2).1.card *
        ((∏ a ∈ (cons t.2 t.1 h1, t.2).1, X a) * X (cons t.2 t.1 h1, t.2).2 ^ (k - (cons t.2 t.1 h1, t.2).1.card)) =
    0
state_after: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ t.1.card) +
      (∏ a ∈ t.1, X a) * (X t.2 * X t.2 ^ (k - (t.1.card + 1)) * (-1) ^ (t.1.card + 1)) =
    0

tactic: nth_rewrite 2 [← pow_one (X t.snd)]
state_before: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ t.1.card) +
      (∏ a ∈ t.1, X a) * (X t.2 * X t.2 ^ (k - (t.1.card + 1)) * (-1) ^ (t.1.card + 1)) =
    0
state_after: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ t.1.card) +
      (∏ a ∈ t.1, X a) * (X t.2 ^ 1 * X t.2 ^ (k - (t.1.card + 1)) * (-1) ^ (t.1.card + 1)) =
    0

tactic: simp only [← pow_add, ← Nat.add_sub_assoc (Nat.lt_of_le_of_ne h.left (mt h.right h1)), add_comm,
  Nat.succ_eq_add_one, Nat.add_sub_add_right]
state_before: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ t.1.card) +
      (∏ a ∈ t.1, X a) * (X t.2 ^ 1 * X t.2 ^ (k - (t.1.card + 1)) * (-1) ^ (t.1.card + 1)) =
    0
state_after: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ t.1.card) +
      (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ (t.1.card + 1)) =
    0

tactic: rw [← neg_neg ((-1 : MvPolynomial σ R) ^ card t.fst), h2]
state_before: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ t.1.card) +
      (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ (t.1.card + 1)) =
    0
state_after: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * -(-1) ^ (t.1.card + 1)) +
      (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ (t.1.card + 1)) =
    0

tactic: simp
state_before: case inr
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
t : Finset σ × σ
h : t.1.card ≤ k ∧ (t.1.card = k → t.2 ∈ t.1)
h2 : ∀ (n : ℕ), -(-1) ^ n = (-1) ^ (n + 1)
h1 : t.2 ∉ t.1
⊢ (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * -(-1) ^ (t.1.card + 1)) +
      (∏ a ∈ t.1, X a) * (X t.2 ^ (k - t.1.card) * (-1) ^ (t.1.card + 1)) =
    0
state_after: no goals