Theorem: PowerSeries.maximalIdeal_eq_span_X
File: Mathlib/RingTheory/PowerSeries/Inverse.lean

tactic: rw [LocalRing.eq_maximalIdeal hX]
state_before: R : Type u_1
k : Type u_2
inst✝ : Field k
hX : (Ideal.span {X}).IsMaximal
⊢ LocalRing.maximalIdeal k⟦X⟧ = Ideal.span {X}
state_after: no goals

tactic: rw [Ideal.isMaximal_iff]
state_before: R : Type u_1
k : Type u_2
inst✝ : Field k
⊢ (Ideal.span {X}).IsMaximal
state_after: R : Type u_1
k : Type u_2
inst✝ : Field k
⊢ 1 ∉ Ideal.span {X} ∧ ∀ (J : Ideal k⟦X⟧) (x : k⟦X⟧), Ideal.span {X} ≤ J → x ∉ Ideal.span {X} → x ∈ J → 1 ∈ J

tactic: constructor
state_before: R : Type u_1
k : Type u_2
inst✝ : Field k
⊢ 1 ∉ Ideal.span {X} ∧ ∀ (J : Ideal k⟦X⟧) (x : k⟦X⟧), Ideal.span {X} ≤ J → x ∉ Ideal.span {X} → x ∈ J → 1 ∈ J
state_after: case left
R : Type u_1
k : Type u_2
inst✝ : Field k
⊢ 1 ∉ Ideal.span {X}

case right
R : Type u_1
k : Type u_2
inst✝ : Field k
⊢ ∀ (J : Ideal k⟦X⟧) (x : k⟦X⟧), Ideal.span {X} ≤ J → x ∉ Ideal.span {X} → x ∈ J → 1 ∈ J

tactic: rw [Ideal.mem_span_singleton]
state_before: case left
R : Type u_1
k : Type u_2
inst✝ : Field k
⊢ 1 ∉ Ideal.span {X}
state_after: case left
R : Type u_1
k : Type u_2
inst✝ : Field k
⊢ ¬X ∣ 1

tactic: exact Prime.not_dvd_one X_prime
state_before: case left
R : Type u_1
k : Type u_2
inst✝ : Field k
⊢ ¬X ∣ 1
state_after: no goals

tactic: intro I f hI hfX hfI
state_before: case right
R : Type u_1
k : Type u_2
inst✝ : Field k
⊢ ∀ (J : Ideal k⟦X⟧) (x : k⟦X⟧), Ideal.span {X} ≤ J → x ∉ Ideal.span {X} → x ∈ J → 1 ∈ J
state_after: case right
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : f ∉ Ideal.span {X}
hfI : f ∈ I
⊢ 1 ∈ I

tactic: rw [Ideal.mem_span_singleton, X_dvd_iff] at hfX
state_before: case right
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : f ∉ Ideal.span {X}
hfI : f ∈ I
⊢ 1 ∈ I
state_after: case right
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
⊢ 1 ∈ I

tactic: have hfI0 : C k (f 0) ∈ I := by
  have : C k (f 0) = f - (f - C k (f 0)) := by rw [sub_sub_cancel]
  rw [this]
  apply Ideal.sub_mem I hfI
  apply hI
  rw [Ideal.mem_span_singleton, X_dvd_iff, map_sub, constantCoeff_C, ←
    coeff_zero_eq_constantCoeff_apply, sub_eq_zero, coeff_zero_eq_constantCoeff]
  rfl
state_before: case right
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
⊢ 1 ∈ I
state_after: case right
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
hfI0 : (C k) (f 0) ∈ I
⊢ 1 ∈ I

tactic: rw [← Ideal.eq_top_iff_one]
state_before: case right
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
hfI0 : (C k) (f 0) ∈ I
⊢ 1 ∈ I
state_after: case right
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
hfI0 : (C k) (f 0) ∈ I
⊢ I = ⊤

tactic: apply Ideal.eq_top_of_isUnit_mem I hfI0 (IsUnit.map (C k) (Ne.isUnit hfX))
state_before: case right
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
hfI0 : (C k) (f 0) ∈ I
⊢ I = ⊤
state_after: no goals

tactic: have : C k (f 0) = f - (f - C k (f 0)) := by rw [sub_sub_cancel]
state_before: R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
⊢ (C k) (f 0) ∈ I
state_after: R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ (C k) (f 0) ∈ I

tactic: rw [this]
state_before: R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ (C k) (f 0) ∈ I
state_after: R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ f - (f - (C k) (f 0)) ∈ I

tactic: apply Ideal.sub_mem I hfI
state_before: R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ f - (f - (C k) (f 0)) ∈ I
state_after: R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ f - (C k) (f 0) ∈ I

tactic: apply hI
state_before: R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ f - (C k) (f 0) ∈ I
state_after: case a
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ f - (C k) (f 0) ∈ Ideal.span {X}

tactic: rw [Ideal.mem_span_singleton, X_dvd_iff, map_sub, constantCoeff_C, ←
  coeff_zero_eq_constantCoeff_apply, sub_eq_zero, coeff_zero_eq_constantCoeff]
state_before: case a
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ f - (C k) (f 0) ∈ Ideal.span {X}
state_after: case a
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ (constantCoeff k) f = f 0

tactic: rfl
state_before: case a
R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
this : (C k) (f 0) = f - (f - (C k) (f 0))
⊢ (constantCoeff k) f = f 0
state_after: no goals

tactic: rw [sub_sub_cancel]
state_before: R : Type u_1
k : Type u_2
inst✝ : Field k
I : Ideal k⟦X⟧
f : k⟦X⟧
hI : Ideal.span {X} ≤ I
hfX : ¬(constantCoeff k) f = 0
hfI : f ∈ I
⊢ (C k) (f 0) = f - (f - (C k) (f 0))
state_after: no goals