Theorem: Polynomial.card_support_eq_two
File: Mathlib/Algebra/Polynomial/EraseLead.lean

tactic: refine ⟨fun h => ?_, ?_⟩
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
⊢ f.support.card = 2 ↔ ∃ k m, ∃ (_ : k < m), ∃ x y, ∃ (_ : x ≠ 0) (_ : y ≠ 0), f = C x * X ^ k + C y * X ^ m
state_after: case refine_1
R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f.support.card = 2
⊢ ∃ k m, ∃ (_ : k < m), ∃ x y, ∃ (_ : x ≠ 0) (_ : y ≠ 0), f = C x * X ^ k + C y * X ^ m

case refine_2
R : Type u_1
inst✝ : Semiring R
f : R[X]
⊢ (∃ k m, ∃ (_ : k < m), ∃ x y, ∃ (_ : x ≠ 0) (_ : y ≠ 0), f = C x * X ^ k + C y * X ^ m) → f.support.card = 2

tactic: obtain ⟨k, x, hk, hx, rfl⟩ := card_support_eq.mp h
state_before: case refine_1
R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f.support.card = 2
⊢ ∃ k m, ∃ (_ : k < m), ∃ x y, ∃ (_ : x ≠ 0) (_ : y ≠ 0), f = C x * X ^ k + C y * X ^ m
state_after: case refine_1.intro.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
k : Fin 2 → ℕ
x : Fin 2 → R
hk : StrictMono k
hx : ∀ (i : Fin 2), x i ≠ 0
h : (∑ i : Fin 2, C (x i) * X ^ k i).support.card = 2
⊢ ∃ k_1 m,
    ∃ (_ : k_1 < m),
      ∃ x_1 y, ∃ (_ : x_1 ≠ 0) (_ : y ≠ 0), ∑ i : Fin 2, C (x i) * X ^ k i = C x_1 * X ^ k_1 + C y * X ^ m

tactic: refine ⟨k 0, k 1, hk Nat.zero_lt_one, x 0, x 1, hx 0, hx 1, ?_⟩
state_before: case refine_1.intro.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
k : Fin 2 → ℕ
x : Fin 2 → R
hk : StrictMono k
hx : ∀ (i : Fin 2), x i ≠ 0
h : (∑ i : Fin 2, C (x i) * X ^ k i).support.card = 2
⊢ ∃ k_1 m,
    ∃ (_ : k_1 < m),
      ∃ x_1 y, ∃ (_ : x_1 ≠ 0) (_ : y ≠ 0), ∑ i : Fin 2, C (x i) * X ^ k i = C x_1 * X ^ k_1 + C y * X ^ m
state_after: case refine_1.intro.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
k : Fin 2 → ℕ
x : Fin 2 → R
hk : StrictMono k
hx : ∀ (i : Fin 2), x i ≠ 0
h : (∑ i : Fin 2, C (x i) * X ^ k i).support.card = 2
⊢ ∑ i : Fin 2, C (x i) * X ^ k i = C (x 0) * X ^ k 0 + C (x 1) * X ^ k 1

tactic: rw [Fin.sum_univ_castSucc, Fin.sum_univ_one]
state_before: case refine_1.intro.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
k : Fin 2 → ℕ
x : Fin 2 → R
hk : StrictMono k
hx : ∀ (i : Fin 2), x i ≠ 0
h : (∑ i : Fin 2, C (x i) * X ^ k i).support.card = 2
⊢ ∑ i : Fin 2, C (x i) * X ^ k i = C (x 0) * X ^ k 0 + C (x 1) * X ^ k 1
state_after: case refine_1.intro.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
k : Fin 2 → ℕ
x : Fin 2 → R
hk : StrictMono k
hx : ∀ (i : Fin 2), x i ≠ 0
h : (∑ i : Fin 2, C (x i) * X ^ k i).support.card = 2
⊢ C (x (Fin.castSucc 0)) * X ^ k (Fin.castSucc 0) + C (x (Fin.last 1)) * X ^ k (Fin.last 1) =
    C (x 0) * X ^ k 0 + C (x 1) * X ^ k 1

tactic: rfl
state_before: case refine_1.intro.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
k : Fin 2 → ℕ
x : Fin 2 → R
hk : StrictMono k
hx : ∀ (i : Fin 2), x i ≠ 0
h : (∑ i : Fin 2, C (x i) * X ^ k i).support.card = 2
⊢ C (x (Fin.castSucc 0)) * X ^ k (Fin.castSucc 0) + C (x (Fin.last 1)) * X ^ k (Fin.last 1) =
    C (x 0) * X ^ k 0 + C (x 1) * X ^ k 1
state_after: no goals

tactic: rintro ⟨k, m, hkm, x, y, hx, hy, rfl⟩
state_before: case refine_2
R : Type u_1
inst✝ : Semiring R
f : R[X]
⊢ (∃ k m, ∃ (_ : k < m), ∃ x y, ∃ (_ : x ≠ 0) (_ : y ≠ 0), f = C x * X ^ k + C y * X ^ m) → f.support.card = 2
state_after: case refine_2.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
k m : ℕ
hkm : k < m
x y : R
hx : x ≠ 0
hy : y ≠ 0
⊢ (C x * X ^ k + C y * X ^ m).support.card = 2

tactic: exact card_support_binomial hkm.ne hx hy
state_before: case refine_2.intro.intro.intro.intro.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
k m : ℕ
hkm : k < m
x y : R
hx : x ≠ 0
hy : y ≠ 0
⊢ (C x * X ^ k + C y * X ^ m).support.card = 2
state_after: no goals