Theorem: MvPolynomial.uniqueFactorizationMonoid_of_fintype
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: induction' Fintype.card σ with d hd
state_before: R : Type u
S : Type ?u.1021136
σ : Type v
M : Type w
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
D : Type u
inst✝³ : CommRing D
inst✝² : IsDomain D
inst✝¹ : UniqueFactorizationMonoid D
d : ℕ
inst✝ : Fintype σ
⊢ UniqueFactorizationMonoid (MvPolynomial (Fin (Fintype.card σ)) D)

tactic: apply (isEmptyAlgEquiv D (Fin 0)).toMulEquiv.symm.uniqueFactorizationMonoid
state_before: case zero
R : Type u
S : Type ?u.1021136
σ : Type v
M : Type w
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
D : Type u
inst✝³ : CommRing D
inst✝² : IsDomain D
inst✝¹ : UniqueFactorizationMonoid D
d : ℕ
inst✝ : Fintype σ
⊢ UniqueFactorizationMonoid (MvPolynomial (Fin Nat.zero) D)

tactic: infer_instance
state_before: case zero
R : Type u
S : Type ?u.1021136
σ : Type v
M : Type w
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
D : Type u
inst✝³ : CommRing D
inst✝² : IsDomain D
inst✝¹ : UniqueFactorizationMonoid D
d : ℕ
inst✝ : Fintype σ
⊢ UniqueFactorizationMonoid D

tactic: rw [Nat.succ_eq_add_one d]
state_before: case succ
R : Type u
S : Type ?u.1021136
σ : Type v
M : Type w
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
D : Type u
inst✝³ : CommRing D
inst✝² : IsDomain D
inst✝¹ : UniqueFactorizationMonoid D
d✝ : ℕ
inst✝ : Fintype σ
d : ℕ
hd : UniqueFactorizationMonoid (MvPolynomial (Fin d) D)
⊢ UniqueFactorizationMonoid (MvPolynomial (Fin (Nat.succ d)) D)

tactic: apply @MulEquiv.uniqueFactorizationMonoid _ _ (_) (_)
state_before: case succ
R : Type u
S : Type ?u.1021136
σ : Type v
M : Type w
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
D : Type u
inst✝³ : CommRing D
inst✝² : IsDomain D
inst✝¹ : UniqueFactorizationMonoid D
d✝ : ℕ
inst✝ : Fintype σ
d : ℕ
hd : UniqueFactorizationMonoid (MvPolynomial (Fin d) D)
⊢ UniqueFactorizationMonoid (MvPolynomial (Fin (d + 1)) D)

tactic: exact (finSuccEquiv D d).toMulEquiv.symm
state_before: case succ.e
R : Type u
S : Type ?u.1021136
σ : Type v
M : Type w
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
D : Type u
inst✝³ : CommRing D
inst✝² : IsDomain D
inst✝¹ : UniqueFactorizationMonoid D
d✝ : ℕ
inst✝ : Fintype σ
d : ℕ
hd : UniqueFactorizationMonoid (MvPolynomial (Fin d) D)
⊢ ?m.1023575 ≃* MvPolynomial (Fin (d + 1)) D

tactic: apply @Polynomial.uniqueFactorizationMonoid (MvPolynomial (Fin d) D) _ _ ?_
state_before: case succ.hα
R : Type u
S : Type ?u.1021136
σ : Type v
M : Type w
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
D : Type u
inst✝³ : CommRing D
inst✝² : IsDomain D
inst✝¹ : UniqueFactorizationMonoid D
d✝ : ℕ
inst✝ : Fintype σ
d : ℕ
hd : UniqueFactorizationMonoid (MvPolynomial (Fin d) D)
⊢ UniqueFactorizationMonoid (MvPolynomial (Fin d) D)[X]

tactic: assumption
state_before: R : Type u
S : Type ?u.1021136
σ : Type v
M : Type w
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
D : Type u
inst✝³ : CommRing D
inst✝² : IsDomain D
inst✝¹ : UniqueFactorizationMonoid D
d✝ : ℕ
inst✝ : Fintype σ
d : ℕ
hd : UniqueFactorizationMonoid (MvPolynomial (Fin d) D)
⊢ UniqueFactorizationMonoid (MvPolynomial (Fin d) D)