The monomial state: Kollár's Step 3 as a combinatorial object #
Step 3 of the proof of [Kol07, Theorem 107] ([Kol07, 111, Step 3]) reduces the order of a
monomial ideal 𝒪_X(-∑ a_j E^j), E = ∑ E^j a simple normal crossing divisor with an ordered
index set, below the mark m by blowing up intersections of the E^j in a prescribed order. The
procedure only looks at which intersections are nonempty and at the exponents, so this module
runs it on a purely combinatorial state, with no scheme in sight. The state records the
irreducible components of the divisors as natural numbers below nextComp, each with the
label of its divisor E^j (a natural number below nextLabel; the exceptional divisor of a
blow-up gets the label nextLabel, [Kol07, Definition 65]: the new divisor is put last) and an
exponent, and the nerve: the finite family of nonempty sets of components with nonempty
common intersection. The nerve is down-closed, its faces have size at most the dimension bound
n and carry at most one component per label; dead components (empty divisors) lie in no face.
Deviation from the source. Kollár's state has one exponent per divisor E^j and blows up the
whole intersection E^{j₁} ∩ ⋯ ∩ E^{j_r}. Here every irreducible component of E^j has its own
exponent (the order of the ideal along that component, the fine monomial split of
Hironaka/Resolution/Algebraic/MarkedOrderReduction/MonomialPart.lean), and the centre at a phase
is a set of faces with a common label tuple, each of which contributes its own exceptional component
with its own exponent. With one component per label the two procedures coincide. The refinement is
forced by functoriality under open immersions: with one exponent per possibly reducible member the
procedure is not even compatible with restriction to an open subscheme
(HironakaExamples/Monomial/Examples.lean, coarseX and coarseU, and the computation
split_coarse_runs of HironakaExamples/Monomial/Example112.lean). Not in the sources in this
form.
MonomialState;total(the suma(T)of the exponents of a face),labels,labelTuple(the sorted list of the labels of a face, Kollár's(j₁ < ⋯ < j_r)).blowUp st S: the transition for a centreS(a finset of faces with a common label tuple): new labelnextLabel; one new componentnewComp S Pper faceP ∈ Swith that label and exponenta(P) - m; the nerve transformed by the ruleN ↦ {T ∈ N : P ⊄ T} ∪ {T₁ ∪ {c_P} : T₁ ∪ P ∈ N, P ⊄ T₁}for the facesPof the centre. The definition applies the rule to all faces ofSat once and asks, for the new faces ofP, that no face of the centre be contained inT₁; for a centre this is the conditionP ⊄ T₁of the rule (mem_blowUp_nerve), and it makes the transition a total function of the state and an arbitrary finset of faces, preserving every invariant of the state. That this rule is what the total transform of the boundary does under the blow-up of the centre is proved on schemes inHironaka/Resolution/Algebraic/Monomial/Geometric/Kernel.lean(nerve_blowUpPieces).faces st r,maxTotal,numMax,measure st r = toLex (m_r, n_r)andStar st s: Kollár's(m_r(E), n_r(E))and(∗_s)of [Kol07, 111, Step 3.r], counting faces of components.choice st r: Kollár's choice at phaser, the faces of sizerof maximal sum among those of sum≥ m, whose label tuple is lexicographically smallest among the maximizers; empty when nor-face has sum≥ m(mem_choice,choice_eq_empty_iff).Valid,ofValid,valid_self: the invariants as a decidable predicate on the raw data, so that concrete states can be built bydecide.
The measure decreases under a blow-up along choice st r
(Hironaka/Resolution/Algebraic/Monomial/Measure.lean); the phases and their termination are
Hironaka/Resolution/Algebraic/Monomial/Step3Phases.lean. The geometric realisation of the state on
a scheme is Hironaka.Monomial.PieceFamily
(Hironaka/Resolution/Algebraic/Monomial/Geometric/Pieces.lean), and the real-analytic strand
(Hironaka/Resolution/Analytic/OrderReduction/BMO/Step3Monomial/) runs the same combinatorial
procedure on its own piece families.
The combinatorial state of the monomial procedure of [Kol07, 111, Step 3]. Components and
labels are natural numbers below nextComp and nextLabel; label c is the divisor E^j the
component c belongs to, a c its exponent; nerve is the family of faces (nonempty sets of
components with nonempty common intersection): down-closed, every face of size at most the
dimension bound n, with injective labels. Dead components lie in no face.
- n : ℕ
- m : ℕ
The marking
m ≥ 1of the marked monomial ideal. - nextComp : ℕ
- nextLabel : ℕ
The label (index of the divisor
E^j) of a component.The exponent of a component.
The nerve: the faces.
Instances For
The sum a(T) = ∑_{c ∈ T} a_c of the exponents of a set of components.
Instances For
The set of labels of a set of components.
Equations
- st.labels T = Finset.image st.label T
Instances For
The elements of a finset of naturals as an increasing list: the numbers below sup + 1 that
lie in the set. (Mathlib's Finset.sort is defined by well-founded recursion and does not
reduce in the kernel; this enumeration does, so that the example computations run by
decide.)
Equations
- Hironaka.Monomial.MonomialState.sortedList s = List.filter (fun (x : ℕ) => decide (x ∈ s)) (List.range (s.sup id + 1))
Instances For
sortedList s is increasing.
The label tuple of a face: its labels as an increasing list, Kollár's (j₁ < ⋯ < j_r),
compared lexicographically.
Equations
- st.labelTuple T = Hironaka.Monomial.MonomialState.sortedList (st.labels T)
Instances For
The nonempty subsets of a face are faces.
Kollár's measure and (∗_s) #
Kollár's m_r(E) of [Kol07, 111, Step 3.r]: the maximal sum of an r-face (0 if there is
none).
Instances For
(∗_0) holds vacuously: faces are nonempty.
Kollár's choice #
The candidates of maximal sum.
Equations
- st.maximizers r = {T ∈ st.candidates r | st.total T = (st.candidates r).sup st.total}
Instances For
Kollár's choice at phase r ([Kol07, 111, Steps 3.1, 3.2 and 3.r]): the faces of size r
of maximal sum among those of sum ≥ m whose label tuple is lexicographically smallest among
the maximizers; empty when no r-face has sum ≥ m. With one component per label these are
the faces of the lexicographically smallest (j₁ < ⋯ < j_r) with E^{j₁} ∩ ⋯ ∩ E^{j_r} ≠ ∅ and
a_{j₁} + ⋯ + a_{j_r} ≥ m maximal, as in the source.
Equations
- st.choice r = {T ∈ st.maximizers r | ∀ T' ∈ st.maximizers r, st.labelTuple T ≤ st.labelTuple T'}
Instances For
The characterization of Kollár's choice: the faces of size r of sum ≥ m and of maximal sum
among those, whose label tuple is lexicographically smallest among the faces of that sum.
The faces of the center have a common label tuple.
Kollár's choice is empty exactly when (∗_r) holds.
The transition #
The nerve rule for the faces of a centre S, with c P the new component of the face P:
the old faces containing no face of the centre, and for each P ∈ S the faces T₁ ∪ {c P} with
T₁ ∪ P an old face and no face of the centre inside T₁.
Equations
Instances For
The components of a face as an increasing list: the key ordering the faces of a center.
Instances For
The rank of the face P among the faces of the center S, in the order of faceList.
Equations
Instances For
The transition for a centre S ([Kol07, 111, Step 3.2 and 3.r]: the new divisor is put
last with exponent a_{j₁} + ⋯ + a_{j_r} - m). New label nextLabel; for each P ∈ S a new
component newComp S P with label nextLabel and exponent a(P) - m; the other exponents and
labels unchanged; the nerve transformed by the rule of blowUpNerve.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The transition, read off #
The sum of a new face T₁ ∪ {c_P}: a(T₁) + (a(P) - m).
A centre: a finset of faces with a common label tuple (each face of sum ≥ m is the
admissibility condition, not part of this predicate).
Instances For
Kollár's choice is a center.
Two faces of a center contained in a common face are equal (the components of a label are disjoint: a face has injective labels).
For a centre, the rule reads as stated in the module docstring: the new faces of P are
the T₁ ∪ {c_P} with T₁ ∪ P ∈ N and P ⊄ T₁.
A decidable constructor (for the example computations by decide) #
Equations
- Hironaka.Monomial.MonomialState.decidableValid n m k L label N = id inferInstance