Close-up: two-generator ideals #
The crux case of Heitmann's Lemma 4: given an A-extension R of a Noetherian local domain T and an ideal I = (a, b) with a nonzero element c in the span, produce a new A-extension in which the close-up condition holds for I. The coprime case is handled directly the general case reduces to it by extracting common factors.
Crux case: two generators (n = 2) #
If I = (y₁, y₂)R and c ∈ IT ∩ R, write c = t₁y₁ + t₂y₂. Parameterize: c = (t₁ + ty₂)y₁ + (t₂ - ty₁)y₂. Choose t via avoidance, set x₁ = t₁ + ty₂, x₂ = t₂ - ty₁. The ring Rbar = R[x₁, y₂⁻¹] ∩ R[x₂, y₁⁻¹] localized at M is an A-extension with c = x₁y₁ + x₂y₂ ∈ IRbar.
Proof strategy (single adjoin + generalized close_up) #
- Decompose c = t₁·y₁ + t₂·y₂ in T (from Submodule.mem_span_pair)
- Choose t via countable_avoidance so x₁ = t₁ + t·y₂ is transcendental over R and avoids associated primes of T/rT for all nonzero r ∈ R
- Adjoin x₁ to R via adjoin_transcendental_isNSubring → get S with x₁ ∈ S
- In S: c - x₁·y₁ = (t₂ - t·y₁)·y₂ ∈ y₂·T, and c - x₁·y₁ ∈ S
- By close_up_dvd on S: c - x₁·y₁ ∈ y₂·S, i.e., ∃ x₂' ∈ S, c - x₁·y₁ = x₂'·y₂
- Then c = x₁·y₁ + x₂'·y₂ ∈ span{y₁, y₂} in S
Coprime case of two-generator close-up: when y₁, y₂ have no common prime factor in R, find A-extension S with c - x₁·y₁ ∈ span{y₂} in S. This is the hard case requiring Krull domain intersection machinery.
Key construction for the common factor case of close_up_two_gen: Given y₁ = pa, y₂ = pb with p prime and c ∈ span{y₁,y₂}T, factor out p using close_up_dvd, cancel it, and reduce to (a,b). Uses WF induction on y₁ via DvdNotUnit to handle the recursive case.
Close-up for two-generator ideals: if I = (y₁, y₂) and c ∈ IT ∩ R, there exists an A-extension S with c ∈ IS. This is the crux of Lemma 4.
General case: n generators (induction) #
For n > 2, reduce to the n-1 case by factoring out common prime factors and applying the two-generator case.
Local copy of isAExtension_trans (CombinedStep.lean has circular import).