English
If there is a prime P in R and an I in S which is prime and hIP holds, there exists Q in S, prime, with Q.comap (algebraMap R S) = P.
Русский
Если существует простой идеал P в R и I в S, который прост и выполняется hIP, тогда существует Q в S, простой, с Q.comap (algebraMap R S) = P.
LaTeX
$$$$\exists Q \ge I,\ Q \text{ prime},\ Q^{\mathrm{comap}} = P.$$$$
Lean4
/-- More general going-up theorem than `exists_ideal_over_prime_of_isIntegral_of_isDomain`.
TODO: Version of going-up theorem with arbitrary length chains (by induction on this)?
Not sure how best to write an ascending chain in Lean -/
theorem exists_ideal_over_prime_of_isIntegral_of_isPrime [Algebra.IsIntegral R S] (P : Ideal R) [IsPrime P]
(I : Ideal S) [IsPrime I] (hIP : I.comap (algebraMap R S) ≤ P) :
∃ Q ≥ I, IsPrime Q ∧ Q.comap (algebraMap R S) = P :=
by
obtain ⟨Q' : Ideal (S ⧸ I), ⟨Q'_prime, hQ'⟩⟩ :=
@exists_ideal_over_prime_of_isIntegral_of_isDomain (R ⧸ I.comap (algebraMap R S)) _ (S ⧸ I) _ Ideal.quotientAlgebra
_ _ (map (Ideal.Quotient.mk (I.comap (algebraMap R S))) P)
(map_isPrime_of_surjective Quotient.mk_surjective (by simp [hIP]))
(le_trans (le_of_eq ((RingHom.injective_iff_ker_eq_bot _).1 algebraMap_quotient_injective)) bot_le)
refine ⟨Q'.comap _, le_trans (le_of_eq mk_ker.symm) (ker_le_comap _), ⟨comap_isPrime _ Q', ?_⟩⟩
rw [comap_comap]
refine _root_.trans ?_ (_root_.trans (congr_arg (comap (Ideal.Quotient.mk (comap (algebraMap R S) I))) hQ') ?_)
· rw [comap_comap]
exact congr_arg (comap · Q') (RingHom.ext fun r => rfl)
· refine _root_.trans (comap_map_of_surjective _ Quotient.mk_surjective _) (sup_eq_left.2 ?_)
simpa [← RingHom.ker_eq_comap_bot] using hIP