Theorem: WeierstrassCurve.Affine.CoordinateRing.degree_norm_ne_one
File: Mathlib/AlgebraicGeometry/EllipticCurve/Group.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
x : W.CoordinateRing
⊢ ((Algebra.norm R[X]) x).degree ≠ 1
state_after: case intro.intro
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ ((Algebra.norm R[X]) (p • 1 + q • (mk W) Y)).degree ≠ 1
tactic: rcases exists_smul_basis_eq x with ⟨p, q, rfl⟩
state_before: case intro.intro
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ ((Algebra.norm R[X]) (p • 1 + q • (mk W) Y)).degree ≠ 1
state_after: case intro.intro
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ max (2 • p.degree) (2 • q.degree + 3) ≠ 1
tactic: rw [degree_norm_smul_basis]
state_before: case intro.intro
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ max (2 • p.degree) (2 • q.degree + 3) ≠ 1
state_after: case intro.intro.none.bot
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ max (2 • none) (2 • ⊥ + 3) ≠ 1

case intro.intro.none.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
a✝ : ℕ
⊢ max (2 • none) (2 • ↑a✝ + 3) ≠ 1

case intro.intro.some.zero.bot
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ max (2 • some 0) (2 • ⊥ + 3) ≠ 1

case intro.intro.some.zero.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
a✝ : ℕ
⊢ max (2 • some 0) (2 • ↑a✝ + 3) ≠ 1

case intro.intro.some.succ.zero.bot
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ max (2 • some (0 + 1)) (2 • ⊥ + 3) ≠ 1

case intro.intro.some.succ.zero.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
a✝ : ℕ
⊢ max (2 • some (0 + 1)) (2 • ↑a✝ + 3) ≠ 1

case intro.intro.some.succ.succ.bot
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
n✝ : ℕ
⊢ max (2 • some (n✝ + 1 + 1)) (2 • ⊥ + 3) ≠ 1

case intro.intro.some.succ.succ.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
n✝ a✝ : ℕ
⊢ max (2 • some (n✝ + 1 + 1)) (2 • ↑a✝ + 3) ≠ 1
tactic: rcases p.degree with (_ | _ | _ | _) <;> cases q.degree
state_before: case intro.intro.none.bot
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ max (2 • none) (2 • ⊥ + 3) ≠ 1

case intro.intro.none.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
a✝ : ℕ
⊢ max (2 • none) (2 • ↑a✝ + 3) ≠ 1

case intro.intro.some.zero.bot
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ max (2 • some 0) (2 • ⊥ + 3) ≠ 1

case intro.intro.some.zero.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
a✝ : ℕ
⊢ max (2 • some 0) (2 • ↑a✝ + 3) ≠ 1

case intro.intro.some.succ.zero.bot
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
⊢ max (2 • some (0 + 1)) (2 • ⊥ + 3) ≠ 1

case intro.intro.some.succ.zero.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
a✝ : ℕ
⊢ max (2 • some (0 + 1)) (2 • ↑a✝ + 3) ≠ 1

case intro.intro.some.succ.succ.bot
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
n✝ : ℕ
⊢ max (2 • some (n✝ + 1 + 1)) (2 • ⊥ + 3) ≠ 1

case intro.intro.some.succ.succ.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
n✝ a✝ : ℕ
⊢ max (2 • some (n✝ + 1 + 1)) (2 • ↑a✝ + 3) ≠ 1
state_after: case intro.intro.some.succ.succ.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
n✝ a✝ : ℕ
⊢ max (2 • some (n✝ + 1 + 1)) (2 • ↑a✝ + 3) ≠ 1
tactic: any_goals rintro (_ | _)
state_before: case intro.intro.some.succ.succ.coe
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W : Affine R
f : R →+* S
inst✝ : IsDomain R
p q : R[X]
n✝ a✝ : ℕ
⊢ max (2 • some (n✝ + 1 + 1)) (2 • ↑a✝ + 3) ≠ 1
state_after: no goals
tactic: exact (lt_max_of_lt_right <| by exact (cmp_eq_lt_iff ..).mp rfl).ne'