A prime unramified in two number fields is unramified in their compositum
OpenNumberField.isUnramifiedIn_supLet be a field of characteristic zero, let be number fields (subfields that are finite over ), and let be a prime number. Assume that is unramified in and in . The statement asserts that is unramified in the compositum:
No Galois hypothesis is necessary.
Proof idea. Local proof: the completion of at a prime over is the compositum of completions of and , and a compositum of unramified extensions of is unramified. Global proof: after localization at , the ring is finite étale over ; its image in is a finite étale domain, hence normal, hence equal to the localized ring of integers of . A third proof for Galois fields uses inertia groups: the inertia group of the compositum embeds in the product of the two inertia groups.
Use. A child of the tame step NumberField.exists_isUnramifiedIn_le_sup_of_prime_ne of the Kronecker-Weber theorem. There it is used for abelian fields only.
Formalization Note. "Unramified" is Algebra.IsUnramifiedIn (𝓞 E) (Ideal.span {(ℓ : ℤ)}), where 𝓞 E is the integral closure of ℤ in E. The compositum is E₁ ⊔ E₂ : IntermediateField ℚ Ω. The hypothesis hℓ is not necessary for the truth of the statement. Mathlib has NumberField.not_dvd_discr_iff_isUnramifiedIn (an integer prime is unramified if and only if it does not divide the discriminant); it has no statement on the discriminant or the ramification of a compositum.
import Mathlib open NumberField
theorem NumberField.isUnramifiedIn_sup {Ω : Type*} [Field Ω] [Algebra ℚ Ω]
(E₁ E₂ : IntermediateField ℚ Ω) [FiniteDimensional ℚ E₁] [FiniteDimensional ℚ E₂]
(ℓ : ℕ) (hℓ : ℓ.Prime)
(h₁ : Algebra.IsUnramifiedIn (𝓞 E₁) (Ideal.span {(ℓ : ℤ)}))
(h₂ : Algebra.IsUnramifiedIn (𝓞 E₂) (Ideal.span {(ℓ : ℤ)})) :
Algebra.IsUnramifiedIn (𝓞 ↥(E₁ ⊔ E₂)) (Ideal.span {(ℓ : ℤ)}) := by sorry