File: Mathlib/RingTheory/MvPowerSeries/Inverse.lean

full_name: MvPowerSeries.inv.aux
code: /-- Auxiliary definition that unifies
 the totalised inverse formal power series `(_)⁻¹` and
 the inverse formal power series that depends on
 an inverse of the constant coefficient `invOfUnit`. -/
protected noncomputable def inv.aux (a : R) (φ : MvPowerSeries σ R) : MvPowerSeries σ R
  
goal: MvPowerSeries σ R

full_name: MvPowerSeries.coeff_inv_aux
code: theorem coeff_inv_aux [DecidableEq σ] (n : σ →₀ ℕ) (a : R) (φ : MvPowerSeries σ R) :
    coeff R n (inv.aux a φ) =
      if n = 0 then a
      else
        -a *
          ∑ x ∈ antidiagonal n, if x.2 < n then coeff R x.1 φ * coeff R x.2 (inv.aux a φ) else 0 
goal: (MvPowerSeries.coeff R n) (MvPowerSeries.inv.aux a φ) =
  if n = 0 then a
  else
    -a *
      ∑ x ∈ Finset.antidiagonal n,
        if x.2 < n then (MvPowerSeries.coeff R x.1) φ * (MvPowerSeries.coeff R x.2) (MvPowerSeries.inv.aux a φ) else 0

full_name: MvPowerSeries.invOfUnit
code: /-- A multivariate formal power series is invertible if the constant coefficient is invertible. -/
def invOfUnit (φ : MvPowerSeries σ R) (u : Rˣ) : MvPowerSeries σ R 
goal: MvPowerSeries σ R

full_name: MvPowerSeries.coeff_invOfUnit
code: theorem coeff_invOfUnit [DecidableEq σ] (n : σ →₀ ℕ) (φ : MvPowerSeries σ R) (u : Rˣ) :
    coeff R n (invOfUnit φ u) =
      if n = 0 then ↑u⁻¹
      else
        -↑u⁻¹ *
          ∑ x ∈ antidiagonal n,
            if x.2 < n then coeff R x.1 φ * coeff R x.2 (invOfUnit φ u) else 0 
goal: (MvPowerSeries.coeff R n) (φ.invOfUnit u) =
  if n = 0 then ↑u⁻¹
  else
    -↑u⁻¹ *
      ∑ x ∈ Finset.antidiagonal n,
        if x.2 < n then (MvPowerSeries.coeff R x.1) φ * (MvPowerSeries.coeff R x.2) (φ.invOfUnit u) else 0

full_name: MvPowerSeries.constantCoeff_invOfUnit
code: @[simp]
theorem constantCoeff_invOfUnit (φ : MvPowerSeries σ R) (u : Rˣ) :
    constantCoeff σ R (invOfUnit φ u) = ↑u⁻¹ 
goal: (MvPowerSeries.constantCoeff σ R) (φ.invOfUnit u) = ↑u⁻¹

full_name: MvPowerSeries.mul_invOfUnit
code: @[simp]
theorem mul_invOfUnit (φ : MvPowerSeries σ R) (u : Rˣ) (h : constantCoeff σ R φ = u) :
    φ * invOfUnit φ u = 1 
goal: φ * φ.invOfUnit u = 1

full_name: MvPowerSeries.invOfUnit_mul
code: @[simp]
theorem invOfUnit_mul (φ : MvPowerSeries σ R) (u : Rˣ) (h : constantCoeff σ R φ = u) :
    invOfUnit φ u * φ = 1 
goal: φ.invOfUnit u * φ = 1

full_name: MvPowerSeries.isUnit_iff_constantCoeff
code: theorem isUnit_iff_constantCoeff {φ : MvPowerSeries σ R} :
    IsUnit φ ↔ IsUnit (constantCoeff σ R φ) 
goal: IsUnit φ ↔ IsUnit ((MvPowerSeries.constantCoeff σ R) φ)

full_name: MvPowerSeries.instLocalRing
code: /-- Multivariate formal power series over a local ring form a local ring. -/
instance [LocalRing R] : LocalRing (MvPowerSeries σ R) 
goal: LocalRing (MvPowerSeries σ R)

full_name: MvPowerSeries.map.isLocalRingHom
code: /-- The map between multivariate formal power series over the same indexing set
 induced by a local ring hom `A → B` is local -/
instance map.isLocalRingHom : IsLocalRingHom (map σ f) 
goal: IsLocalRingHom (MvPowerSeries.map σ f)

full_name: MvPowerSeries.inv
code: /-- The inverse `1/f` of a multivariable power series `f` over a field -/
protected def inv (φ : MvPowerSeries σ k) : MvPowerSeries σ k 
goal: MvPowerSeries σ k

full_name: MvPowerSeries.instInv
code: instance : Inv (MvPowerSeries σ k) 
goal: Inv (MvPowerSeries σ k)

full_name: MvPowerSeries.coeff_inv
code: theorem coeff_inv [DecidableEq σ] (n : σ →₀ ℕ) (φ : MvPowerSeries σ k) :
    coeff k n φ⁻¹ =
      if n = 0 then (constantCoeff σ k φ)⁻¹
      else
        -(constantCoeff σ k φ)⁻¹ *
          ∑ x ∈ antidiagonal n, if x.2 < n then coeff k x.1 φ * coeff k x.2 φ⁻¹ else 0 
goal: (MvPowerSeries.coeff k n) φ⁻¹ =
  if n = 0 then ((MvPowerSeries.constantCoeff σ k) φ)⁻¹
  else
    -((MvPowerSeries.constantCoeff σ k) φ)⁻¹ *
      ∑ x ∈ Finset.antidiagonal n,
        if x.2 < n then (MvPowerSeries.coeff k x.1) φ * (MvPowerSeries.coeff k x.2) φ⁻¹ else 0

full_name: MvPowerSeries.constantCoeff_inv
code: @[simp]
theorem constantCoeff_inv (φ : MvPowerSeries σ k) :
    constantCoeff σ k φ⁻¹ = (constantCoeff σ k φ)⁻¹ 
goal: (MvPowerSeries.constantCoeff σ k) φ⁻¹ = ((MvPowerSeries.constantCoeff σ k) φ)⁻¹

full_name: MvPowerSeries.inv_eq_zero
code: theorem inv_eq_zero {φ : MvPowerSeries σ k} : φ⁻¹ = 0 ↔ constantCoeff σ k φ = 0 
goal: φ⁻¹ = 0 ↔ (MvPowerSeries.constantCoeff σ k) φ = 0

full_name: MvPowerSeries.zero_inv
code: @[simp]
theorem zero_inv : (0 : MvPowerSeries σ k)⁻¹ = 0 
goal: 0⁻¹ = 0

full_name: MvPowerSeries.invOfUnit_eq
code: theorem invOfUnit_eq (φ : MvPowerSeries σ k) (h : constantCoeff σ k φ ≠ 0) :
    invOfUnit φ (Units.mk0 _ h) = φ⁻¹ 
goal: φ.invOfUnit (Units.mk0 ((MvPowerSeries.constantCoeff σ k) φ) h) = φ⁻¹

full_name: MvPowerSeries.invOfUnit_eq'
code: @[simp]
theorem invOfUnit_eq' (φ : MvPowerSeries σ k) (u : Units k) (h : constantCoeff σ k φ = u) :
    invOfUnit φ u = φ⁻¹ 
goal: φ.invOfUnit u = φ⁻¹

full_name: MvPowerSeries.mul_inv_cancel
code: @[simp]
protected theorem mul_inv_cancel (φ : MvPowerSeries σ k) (h : constantCoeff σ k φ ≠ 0) :
    φ * φ⁻¹ = 1 
goal: φ * φ⁻¹ = 1

full_name: MvPowerSeries.inv_mul_cancel
code: @[simp]
protected theorem inv_mul_cancel (φ : MvPowerSeries σ k) (h : constantCoeff σ k φ ≠ 0) :
    φ⁻¹ * φ = 1 
goal: φ⁻¹ * φ = 1

full_name: MvPowerSeries.eq_mul_inv_iff_mul_eq
code: protected theorem eq_mul_inv_iff_mul_eq {φ₁ φ₂ φ₃ : MvPowerSeries σ k}
    (h : constantCoeff σ k φ₃ ≠ 0) : φ₁ = φ₂ * φ₃⁻¹ ↔ φ₁ * φ₃ = φ₂ 
goal: φ₁ = φ₂ * φ₃⁻¹ ↔ φ₁ * φ₃ = φ₂

full_name: MvPowerSeries.eq_inv_iff_mul_eq_one
code: protected theorem eq_inv_iff_mul_eq_one {φ ψ : MvPowerSeries σ k} (h : constantCoeff σ k ψ ≠ 0) :
    φ = ψ⁻¹ ↔ φ * ψ = 1 
goal: φ = ψ⁻¹ ↔ φ * ψ = 1

full_name: MvPowerSeries.inv_eq_iff_mul_eq_one
code: protected theorem inv_eq_iff_mul_eq_one {φ ψ : MvPowerSeries σ k} (h : constantCoeff σ k ψ ≠ 0) :
    ψ⁻¹ = φ ↔ φ * ψ = 1 
goal: ψ⁻¹ = φ ↔ φ * ψ = 1

full_name: MvPowerSeries.mul_inv_rev
code: @[simp]
protected theorem mul_inv_rev (φ ψ : MvPowerSeries σ k) :
    (φ * ψ)⁻¹ = ψ⁻¹ * φ⁻¹ 
goal: (φ * ψ)⁻¹ = ψ⁻¹ * φ⁻¹

full_name: MvPowerSeries.instInvOneClass
code: instance : InvOneClass (MvPowerSeries σ k) 
goal: InvOneClass (MvPowerSeries σ k)

full_name: MvPowerSeries.C_inv
code: @[simp]
theorem C_inv (r : k) : (C σ k r)⁻¹ = C σ k r⁻¹ 
goal: ((MvPowerSeries.C σ k) r)⁻¹ = (MvPowerSeries.C σ k) r⁻¹

full_name: MvPowerSeries.X_inv
code: @[simp]
theorem X_inv (s : σ) : (X s : MvPowerSeries σ k)⁻¹ = 0 
goal: (MvPowerSeries.X s)⁻¹ = 0

full_name: MvPowerSeries.smul_inv
code: @[simp]
theorem smul_inv (r : k) (φ : MvPowerSeries σ k) : (r • φ)⁻¹ = r⁻¹ • φ⁻¹ 
goal: (r • φ)⁻¹ = r⁻¹ • φ⁻¹