Theorem: IsLocalization.Away.auxInv_auxHom
File: Mathlib/RingTheory/MvPolynomial/Localization.lean

tactic: rw [← RingHom.cancel_right (Ideal.Quotient.mk_surjective)]
state_before: σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
⊢ (IsLocalization.Away.auxInv S r).comp (IsLocalization.Away.auxHom S r).toRingHom =
    RingHom.id (MvPolynomial Unit R ⧸ Ideal.span {C r * X () - 1})
state_after: σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
⊢ ((IsLocalization.Away.auxInv S r).comp (IsLocalization.Away.auxHom S r).toRingHom).comp
      (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) =
    (RingHom.id (MvPolynomial Unit R ⧸ Ideal.span {C r * X () - 1})).comp
      (Ideal.Quotient.mk (Ideal.span {C r * X () - 1}))

tactic: ext x
state_before: σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
⊢ ((IsLocalization.Away.auxInv S r).comp (IsLocalization.Away.auxHom S r).toRingHom).comp
      (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) =
    (RingHom.id (MvPolynomial Unit R ⧸ Ideal.span {C r * X () - 1})).comp
      (Ideal.Quotient.mk (Ideal.span {C r * X () - 1}))
state_after: case hC.a
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : R
⊢ ((((IsLocalization.Away.auxInv S r).comp (IsLocalization.Away.auxHom S r).toRingHom).comp
            (Ideal.Quotient.mk (Ideal.span {C r * X () - 1}))).comp
        C)
      x =
    (((RingHom.id (MvPolynomial Unit R ⧸ Ideal.span {C r * X () - 1})).comp
            (Ideal.Quotient.mk (Ideal.span {C r * X () - 1}))).comp
        C)
      x

case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ (((IsLocalization.Away.auxInv S r).comp (IsLocalization.Away.auxHom S r).toRingHom).comp
        (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})))
      (X x) =
    ((RingHom.id (MvPolynomial Unit R ⧸ Ideal.span {C r * X () - 1})).comp
        (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})))
      (X x)

tactic: simp [auxInv]
state_before: case hC.a
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : R
⊢ ((((IsLocalization.Away.auxInv S r).comp (IsLocalization.Away.auxHom S r).toRingHom).comp
            (Ideal.Quotient.mk (Ideal.span {C r * X () - 1}))).comp
        C)
      x =
    (((RingHom.id (MvPolynomial Unit R ⧸ Ideal.span {C r * X () - 1})).comp
            (Ideal.Quotient.mk (Ideal.span {C r * X () - 1}))).comp
        C)
      x
state_after: no goals

tactic: simp only [auxInv, AlgHom.toRingHom_eq_coe, RingHom.coe_comp, RingHom.coe_coe,
  Function.comp_apply, auxHom_mk, aeval_X, RingHomCompTriple.comp_eq]
state_before: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ (((IsLocalization.Away.auxInv S r).comp (IsLocalization.Away.auxHom S r).toRingHom).comp
        (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})))
      (X x) =
    ((RingHom.id (MvPolynomial Unit R ⧸ Ideal.span {C r * X () - 1})).comp
        (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})))
      (X x)
state_after: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ (lift r ⋯) (invSelf r) = (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (X x)

tactic: erw [IsLocalization.lift_mk'_spec]
state_before: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ (lift r ⋯) (invSelf r) = (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (X x)
state_after: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ ((Ideal.Quotient.mk (Ideal.span {C r * X () - 1})).comp C) 1 =
    ((Ideal.Quotient.mk (Ideal.span {C r * X () - 1})).comp C) ↑⟨r, ⋯⟩ *
      (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (X x)

tactic: simp only [map_one, RingHom.coe_comp, Function.comp_apply]
state_before: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ ((Ideal.Quotient.mk (Ideal.span {C r * X () - 1})).comp C) 1 =
    ((Ideal.Quotient.mk (Ideal.span {C r * X () - 1})).comp C) ↑⟨r, ⋯⟩ *
      (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (X x)
state_after: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ 1 = (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (C r) * (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (X x)

tactic: rw [← _root_.map_one (Ideal.Quotient.mk _)]
state_before: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ 1 = (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (C r) * (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (X x)
state_after: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) 1 =
    (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (C r) * (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (X x)

tactic: rw [← _root_.map_mul, Ideal.Quotient.mk_eq_mk_iff_sub_mem, ← Ideal.neg_mem_iff, neg_sub]
state_before: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) 1 =
    (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (C r) * (Ideal.Quotient.mk (Ideal.span {C r * X () - 1})) (X x)
state_after: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ C r * X x - 1 ∈ Ideal.span {C r * X () - 1}

tactic: exact Ideal.mem_span_singleton_self (C r * X x - 1)
state_before: case hX
σ : Type u_1
R : Type u_2
inst✝³ : CommRing R
M : Submonoid R
S : Type u_3
inst✝² : CommRing S
inst✝¹ : Algebra R S
r : R
inst✝ : Away r S
x : Unit
⊢ C r * X x - 1 ∈ Ideal.span {C r * X () - 1}
state_after: no goals