Theorem: Polynomial.Monic.natDegree_eq_zero_iff_eq_one
File: Mathlib/Algebra/Polynomial/Monic.lean

tactic: constructor <;> intro h
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
⊢ p.natDegree = 0 ↔ p = 1
state_after: case mp
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
⊢ p = 1

case mpr
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p = 1
⊢ p.natDegree = 0

tactic: swap
state_before: case mp
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
⊢ p = 1

case mpr
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p = 1
⊢ p.natDegree = 0
state_after: case mpr
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p = 1
⊢ p.natDegree = 0

case mp
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
⊢ p = 1

tactic: have : p = C (p.coeff 0) := by
  rw [← Polynomial.degree_le_zero_iff]
  rwa [Polynomial.natDegree_eq_zero_iff_degree_le_zero] at h
state_before: case mp
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
⊢ p = 1
state_after: case mp
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
this : p = C (p.coeff 0)
⊢ p = 1

tactic: rw [this]
state_before: case mp
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
this : p = C (p.coeff 0)
⊢ p = 1
state_after: case mp
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
this : p = C (p.coeff 0)
⊢ C (p.coeff 0) = 1

tactic: rw [← h, ← Polynomial.leadingCoeff, Monic.def.1 hp, C_1]
state_before: case mp
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
this : p = C (p.coeff 0)
⊢ C (p.coeff 0) = 1
state_after: no goals

tactic: rw [h]
state_before: case mpr
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p = 1
⊢ p.natDegree = 0
state_after: case mpr
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p = 1
⊢ natDegree 1 = 0

tactic: exact natDegree_one
state_before: case mpr
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p = 1
⊢ natDegree 1 = 0
state_after: no goals

tactic: rw [← Polynomial.degree_le_zero_iff]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
⊢ p = C (p.coeff 0)
state_after: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
⊢ p.degree ≤ 0

tactic: rwa [Polynomial.natDegree_eq_zero_iff_degree_le_zero] at h
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p.Monic
h : p.natDegree = 0
⊢ p.degree ≤ 0
state_after: no goals