Theorem: WfDvdMonoid.multiplicity_finite_iff (FltRegular/CaseII/AuxLemmas.lean)

State before:
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
⊢ multiplicity.Finite x y ↔ ¬IsUnit x ∧ y ≠ 0
Tactic:
constructor
State after:
case mp
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
⊢ multiplicity.Finite x y → ¬IsUnit x ∧ y ≠ 0

case mpr
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
⊢ ¬IsUnit x ∧ y ≠ 0 → multiplicity.Finite x y

State before:
case mp
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
⊢ multiplicity.Finite x y → ¬IsUnit x ∧ y ≠ 0
Tactic:
rw [← not_imp_not, Ne, ← not_or, not_not]
State after:
case mp
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
⊢ IsUnit x ∨ y = 0 → ¬multiplicity.Finite x y

State before:
case mp
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
⊢ IsUnit x ∨ y = 0 → ¬multiplicity.Finite x y
Tactic:
rintro (hx|hy)
State after:
case mp.inl
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
hx : IsUnit x
⊢ ¬multiplicity.Finite x y

case mp.inr
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
hy : y = 0
⊢ ¬multiplicity.Finite x y

State before:
case mp.inl
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
hx : IsUnit x
⊢ ¬multiplicity.Finite x y
Tactic:
exact fun ⟨n, hn⟩ ↦ hn (hx.pow _).dvd
State after:
no goals

State before:
case mp.inr
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
hy : y = 0
⊢ ¬multiplicity.Finite x y
Tactic:
simp [hy]
State after:
no goals

State before:
case mpr
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
⊢ ¬IsUnit x ∧ y ≠ 0 → multiplicity.Finite x y
Tactic:
intro ⟨hx, hy⟩
State after:
case mpr
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
hx : ¬IsUnit x
hy : y ≠ 0
⊢ multiplicity.Finite x y

State before:
case mpr
K : Type u_1
p : ℕ+
hpri : Fact p.Prime
inst✝⁴ : Field K
inst✝³ : CharZero K
inst✝² : IsCyclotomicExtension {p} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
M : Type u_2
inst✝¹ : CancelCommMonoidWithZero M
inst✝ : WfDvdMonoid M
x y : M
hx : ¬IsUnit x
hy : y ≠ 0
⊢ multiplicity.Finite x y
Tactic:
exact WfDvdMonoid.multiplicity_finite hx hy
State after:
no goals