internlm/Lean-Github huggingface dataset:
Theorem: basisQuotientOfLocalRing_repr
Proof state before:
case a.a
R : Type u_3
S : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : Algebra R S
inst✝⁵ : LocalRing R
inst✝⁴ : Module.Free R S
inst✝³ : Module.Finite R S
p : Ideal R
inst✝² : p.IsMaximal
inst✝¹ : LocalRing R
ι : Type u_1
inst✝ : Fintype ι
b : Basis ι R S
x : S
i : ι
⊢ (Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x =
    (Finsupp.total ι (S ⧸ Ideal.map (algebraMap R S) p) (R ⧸ p) ⇑(basisQuotientOfLocalRing b))
      ((Finsupp.linearEquivFunOnFinite (R ⧸ p) (R ⧸ p) ι).symm (⇑(Ideal.Quotient.mk p) ∘ ⇑(b.repr x)))
Tactic:
rw [Finsupp.total_eq_fintype_total_apply _ (R ⧸ p), Fintype.total_apply]
Proof state after:
case a.a
R : Type u_3
S : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : Algebra R S
inst✝⁵ : LocalRing R
inst✝⁴ : Module.Free R S
inst✝³ : Module.Finite R S
p : Ideal R
inst✝² : p.IsMaximal
inst✝¹ : LocalRing R
ι : Type u_1
inst✝ : Fintype ι
b : Basis ι R S
x : S
i : ι
⊢ (Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x =
    ∑ i : ι, (⇑(Ideal.Quotient.mk p) ∘ ⇑(b.repr x)) i • (basisQuotientOfLocalRing b) i
Theorem: basisQuotientOfLocalRing_repr
Proof state before:
case a.a
R : Type u_3
S : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : Algebra R S
inst✝⁵ : LocalRing R
inst✝⁴ : Module.Free R S
inst✝³ : Module.Finite R S
p : Ideal R
inst✝² : p.IsMaximal
inst✝¹ : LocalRing R
ι : Type u_1
inst✝ : Fintype ι
b : Basis ι R S
x : S
i : ι
⊢ (Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x =
    ∑ i : ι, (⇑(Ideal.Quotient.mk p) ∘ ⇑(b.repr x)) i • (basisQuotientOfLocalRing b) i
Tactic:
simp only [Function.comp_apply, basisQuotientOfLocalRing_apply,
  Ideal.Quotient.mk_smul_mk_quotient_map_quotient, ← Algebra.smul_def]
Proof state after:
case a.a
R : Type u_3
S : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : Algebra R S
inst✝⁵ : LocalRing R
inst✝⁴ : Module.Free R S
inst✝³ : Module.Finite R S
p : Ideal R
inst✝² : p.IsMaximal
inst✝¹ : LocalRing R
ι : Type u_1
inst✝ : Fintype ι
b : Basis ι R S
x : S
i : ι
⊢ (Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x =
    ∑ x_1 : ι, (Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) ((b.repr x) x_1 • b x_1)
Theorem: basisQuotientOfLocalRing_repr
Proof state before:
case a.a
R : Type u_3
S : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : Algebra R S
inst✝⁵ : LocalRing R
inst✝⁴ : Module.Free R S
inst✝³ : Module.Finite R S
p : Ideal R
inst✝² : p.IsMaximal
inst✝¹ : LocalRing R
ι : Type u_1
inst✝ : Fintype ι
b : Basis ι R S
x : S
i : ι
⊢ (Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x =
    ∑ x_1 : ι, (Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) ((b.repr x) x_1 • b x_1)
Tactic:
rw [← map_sum, Basis.sum_repr b x]
Proof state after:
no goals
Theorem: Algebra.trace_quotient_mk
Proof state before:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
⊢ (trace (R ⧸ p) (S ⧸ Ideal.map (algebraMap R S) p)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) =
    (Ideal.Quotient.mk p) ((trace R S) x)
Tactic:
classical
let ι := Module.Free.ChooseBasisIndex R S
let b : Basis ι R S := Module.Free.chooseBasis R S
rw [trace_eq_matrix_trace b, trace_eq_matrix_trace (basisQuotientOfLocalRing b)]
show _ = (Ideal.Quotient.mk p).toAddMonoidHom _
rw [AddMonoidHom.map_trace]
congr 1
ext i j
simp only [leftMulMatrix_apply, coe_lmul_eq_mul, LinearMap.toMatrix_apply,
  basisQuotientOfLocalRing_apply, LinearMap.mul_apply', RingHom.toAddMonoidHom_eq_coe,
  AddMonoidHom.mapMatrix_apply, AddMonoidHom.coe_coe, Matrix.map_apply, ← map_mul,
  basisQuotientOfLocalRing_repr]
Proof state after:
no goals
Theorem: Algebra.trace_quotient_mk
Proof state before:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
⊢ (trace (R ⧸ p) (S ⧸ Ideal.map (algebraMap R S) p)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) =
    (Ideal.Quotient.mk p) ((trace R S) x)
Tactic:
let ι := Module.Free.ChooseBasisIndex R S
Proof state after:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
⊢ (trace (R ⧸ p) (S ⧸ Ideal.map (algebraMap R S) p)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) =
    (Ideal.Quotient.mk p) ((trace R S) x)
Theorem: Algebra.trace_quotient_mk
Proof state before:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
⊢ (trace (R ⧸ p) (S ⧸ Ideal.map (algebraMap R S) p)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) =
    (Ideal.Quotient.mk p) ((trace R S) x)
Tactic:
let b : Basis ι R S := Module.Free.chooseBasis R S
Proof state after:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ (trace (R ⧸ p) (S ⧸ Ideal.map (algebraMap R S) p)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) =
    (Ideal.Quotient.mk p) ((trace R S) x)
Theorem: Algebra.trace_quotient_mk
Proof state before:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ (trace (R ⧸ p) (S ⧸ Ideal.map (algebraMap R S) p)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) =
    (Ideal.Quotient.mk p) ((trace R S) x)
Tactic:
rw [trace_eq_matrix_trace b, trace_eq_matrix_trace (basisQuotientOfLocalRing b)]
Proof state after:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ ((leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x)).trace =
    (Ideal.Quotient.mk p) ((leftMulMatrix b) x).trace
Theorem: Algebra.trace_quotient_mk
Proof state before:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ ((leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x)).trace =
    (Ideal.Quotient.mk p) ((leftMulMatrix b) x).trace
Tactic:
show _ = (Ideal.Quotient.mk p).toAddMonoidHom _
Proof state after:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ ((leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x)).trace =
    (Ideal.Quotient.mk p).toAddMonoidHom ((leftMulMatrix b) x).trace
Theorem: Algebra.trace_quotient_mk
Proof state before:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ ((leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x)).trace =
    (Ideal.Quotient.mk p).toAddMonoidHom ((leftMulMatrix b) x).trace
Tactic:
rw [AddMonoidHom.map_trace]
Proof state after:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ ((leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x)).trace =
    ((Ideal.Quotient.mk p).toAddMonoidHom.mapMatrix ((leftMulMatrix b) x)).trace
Theorem: Algebra.trace_quotient_mk
Proof state before:
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ ((leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x)).trace =
    ((Ideal.Quotient.mk p).toAddMonoidHom.mapMatrix ((leftMulMatrix b) x)).trace
Tactic:
congr 1
Proof state after:
case e_A
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ (leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) =
    (Ideal.Quotient.mk p).toAddMonoidHom.mapMatrix ((leftMulMatrix b) x)
Theorem: Algebra.trace_quotient_mk
Proof state before:
case e_A
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
⊢ (leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) =
    (Ideal.Quotient.mk p).toAddMonoidHom.mapMatrix ((leftMulMatrix b) x)
Tactic:
ext i j
Proof state after:
case e_A.a
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
i j : ι
⊢ (leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) i j =
    (Ideal.Quotient.mk p).toAddMonoidHom.mapMatrix ((leftMulMatrix b) x) i j
Theorem: Algebra.trace_quotient_mk
Proof state before:
case e_A.a
R : Type u_1
S : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
inst✝⁴ : LocalRing R
inst✝³ : Module.Free R S
inst✝² : Module.Finite R S
p : Ideal R
inst✝¹ : p.IsMaximal
inst✝ : LocalRing R
x : S
ι : Type u_2 := Module.Free.ChooseBasisIndex R S
b : Basis ι R S := Module.Free.chooseBasis R S
i j : ι
⊢ (leftMulMatrix (basisQuotientOfLocalRing b)) ((Ideal.Quotient.mk (Ideal.map (algebraMap R S) p)) x) i j =
    (Ideal.Quotient.mk p).toAddMonoidHom.mapMatrix ((leftMulMatrix b) x) i j
Tactic:
simp only [leftMulMatrix_apply, coe_lmul_eq_mul, LinearMap.toMatrix_apply,
  basisQuotientOfLocalRing_apply, LinearMap.mul_apply', RingHom.toAddMonoidHom_eq_coe,
  AddMonoidHom.mapMatrix_apply, AddMonoidHom.coe_coe, Matrix.map_apply, ← map_mul,
  basisQuotientOfLocalRing_repr]
Proof state after:
no goals
Theorem: IsLocalization.AtPrime.map_eq_maximalIdeal
Proof state before:
R : Type u_2
S : Type ?u.237688
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type u_1
Sₚ : Type ?u.238163
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
⊢ Ideal.map (algebraMap R Rₚ) p = maximalIdeal Rₚ
Tactic:
convert congr_arg (Ideal.map (algebraMap R Rₚ))
  (IsLocalization.AtPrime.comap_maximalIdeal Rₚ p).symm
Proof state after:
case h.e'_3
R : Type u_2
S : Type ?u.237688
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type u_1
Sₚ : Type ?u.238163
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
⊢ maximalIdeal Rₚ = Ideal.map (algebraMap R Rₚ) (Ideal.comap (algebraMap R Rₚ) (maximalIdeal Rₚ))
Theorem: IsLocalization.AtPrime.map_eq_maximalIdeal
Proof state before:
case h.e'_3
R : Type u_2
S : Type ?u.237688
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type u_1
Sₚ : Type ?u.238163
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
⊢ maximalIdeal Rₚ = Ideal.map (algebraMap R Rₚ) (Ideal.comap (algebraMap R Rₚ) (maximalIdeal Rₚ))
Tactic:
rw [map_comap p.primeCompl]
Proof state after:
no goals
Theorem: comap_map_eq_map_of_isLocalization_algebraMapSubmonoid
Proof state before:
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
⊢ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap R Sₚ) p) = pS
Tactic:
rw [IsScalarTower.algebraMap_eq R S Sₚ, ← Ideal.map_map, eq_comm]
Proof state after:
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
⊢ pS = Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
Theorem: comap_map_eq_map_of_isLocalization_algebraMapSubmonoid
Proof state before:
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
⊢ pS = Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
Tactic:
apply Ideal.le_comap_map.antisymm
Proof state after:
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
⊢ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS) ≤ pS
Theorem: comap_map_eq_map_of_isLocalization_algebraMapSubmonoid
Proof state before:
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
⊢ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS) ≤ pS
Tactic:
intro x hx
Proof state after:
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
x : S
hx : x ∈ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
⊢ x ∈ pS
Theorem: comap_map_eq_map_of_isLocalization_algebraMapSubmonoid
Proof state before:
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
x : S
hx : x ∈ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
⊢ x ∈ pS
Tactic:
obtain ⟨α, hα, hαx⟩ : ∃ α ∉ p, α • x ∈ pS
Proof state after:
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
x : S
hx : x ∈ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
⊢ ∃ α ∉ p, α • x ∈ pS

case intro.intro
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
x : S
hx : x ∈ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
α : R
hα : α ∉ p
hαx : α • x ∈ pS
⊢ x ∈ pS
Theorem: comap_map_eq_map_of_isLocalization_algebraMapSubmonoid
Proof state before:
case intro.intro
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
x : S
hx : x ∈ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
α : R
hα : α ∉ p
hαx : α • x ∈ pS
⊢ x ∈ pS
Tactic:
obtain ⟨β, γ, hγ, hβ⟩ : ∃ β γ, γ ∈ p ∧ β * α = 1 + γ
Proof state after:
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
x : S
hx : x ∈ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
α : R
hα : α ∉ p
hαx : α • x ∈ pS
⊢ ∃ β, ∃ γ ∈ p, β * α = 1 + γ

case intro.intro.intro.intro.intro
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
x : S
hx : x ∈ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
α : R
hα : α ∉ p
hαx : α • x ∈ pS
β γ : R
hγ : γ ∈ p
hβ : β * α = 1 + γ
⊢ x ∈ pS
Theorem: comap_map_eq_map_of_isLocalization_algebraMapSubmonoid
Proof state before:
case intro.intro.intro.intro.intro
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
x : S
hx : x ∈ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
α : R
hα : α ∉ p
hαx : α • x ∈ pS
β γ : R
hγ : γ ∈ p
hβ : β * α = 1 + γ
⊢ x ∈ pS
Tactic:
have := Ideal.mul_mem_left _ (algebraMap _ _ β) hαx
Proof state after:
case intro.intro.intro.intro.intro
R : Type u_3
S : Type u_1
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing S
inst✝¹³ : Algebra R S
p : Ideal R
inst✝¹² : p.IsMaximal
Rₚ : Type ?u.245679
Sₚ : Type u_2
inst✝¹¹ : CommRing Rₚ
inst✝¹⁰ : CommRing Sₚ
inst✝⁹ : Algebra R Rₚ
inst✝⁸ : IsLocalization.AtPrime Rₚ p
inst✝⁷ : LocalRing Rₚ
inst✝⁶ : CommRing Sₚ
inst✝⁵ : Algebra S Sₚ
inst✝⁴ : Algebra R Sₚ
inst✝³ : Algebra Rₚ Sₚ
inst✝² : IsLocalization (Algebra.algebraMapSubmonoid S p.primeCompl) Sₚ
inst✝¹ : IsScalarTower R S Sₚ
inst✝ : IsScalarTower R Rₚ Sₚ
x : S
hx : x ∈ Ideal.comap (algebraMap S Sₚ) (Ideal.map (algebraMap S Sₚ) pS)
α : R
hα : α ∉ p
hαx : α • x ∈ pS
β γ : R
hγ : γ ∈ p
hβ : β * α = 1 + γ
this : (algebraMap R S) β * α • x ∈ pS
⊢ x ∈ pS