Kollár's Step 3 on the monomial state, and its termination #
The phases 3.1, …, 3.n of [Kol07, 111, Step 3] on the combinatorial state of
Hironaka/Resolution/Algebraic/Monomial/State.lean. phase r st hs runs phase r (Kollár's Step
3.r): while Kollár's choice at phase r is nonempty, blow up its centre. The recursion is well
founded on measure r, which decreases at every blow-up (measure_blowUp_lt of
Hironaka/Resolution/Algebraic/Monomial/Measure.lean), and the hypothesis hs, (∗_s) for s < r, is carried along by star_blowUp. step3 st runs the phases 1, …, n in order (structural
recursion on the number of phases; (∗_1), …, (∗_r) hold when phase r + 1 starts). The result
is the final state and the list of centres, in order.
Postconditions, Kollár's "eventually we reach the stage where the property (∗_r) also holds"
and the end of Step 3.n: step3_star gives (∗_s) for every s, hence every face of the
final nerve has sum < m (step3_maxOrd_lt, the combinatorial form of
max-ord (M(I), m) < m). The run is recorded by IsRun: each centre of the list is Kollár's
nonempty choice at some phase r ∈ [1, n] of the state reached before it, and the final state
is the fold of the centres (step3_isRun, IsRun.fold).
phaseFuel/step3Fuel are executable copies with a fuel parameter (structural recursion) that
agree with phase/step3 whenever the fuel suffices (phase_eq_of_phaseFuel,
step3_eq_of_step3Fuel); the example computations of HironakaExamples/Monomial/Example112.lean
and HironakaExamples/MonomialState.lean run them by decide, since a definition by well-founded
recursion does not reduce in the kernel.
Kollár's text is the source of the phases and of the measure; the run as a list of centres, the
predicate IsRun and the fuelled copies are bookkeeping not in the sources. The geometric
realisation of a run, blow-up by blow-up, is Hironaka.Monomial.PieceFamily.realize
(Hironaka/Resolution/Algebraic/Monomial/Geometric/Pieces.lean); functoriality of step3 under
restriction and refinement of the state is Hironaka/Resolution/Algebraic/Monomial/Restrict.lean
and its submodules.
One phase #
Phase r of Step 3 ([Kol07, 111, Step 3.r]): while Kollár's choice at phase r is
nonempty, blow up its centre; well-founded recursion on measure r, with (∗_s) for s < r
preserved along the run (star_blowUp). Returns the final state of the phase and its list of
centres.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A run of Step 3: each centre is Kollár's nonempty choice at some phase r, 1 ≤ r ≤ n, of
the state reached before it.
- nil (st : MonomialState) : st.IsRun [] st
- cons {st st' : MonomialState} {L : List (Finset (Finset ℕ))} (r : ℕ) (hr : 1 ≤ r) (hrn : r ≤ st.n) (h : (st.choice r).Nonempty) (hL : (st.blowUp (st.choice r)).IsRun L st') : st.IsRun (st.choice r :: L) st'
Instances For
Every centre of a run is Kollár's choice at some size r on the state reached so far (the
fold of the preceding centres), nonempty and within the dimension bound.
The final state of a run is the fold of its centres.
At the end of phase r, (∗_r) holds: Kollár's "eventually we reach the stage where the
property (∗_r) also holds" of [Kol07, 111, Step 3.r].
(∗_s), s < r, still holds at the end of phase r (star_blowUp along the run).
The phases r, r + 1, … and Step 3 #
(∗_s) for s < r + 1 from (∗_s) for s < r at the end of phase r.
k consecutive phases starting at phase r.
Equations
Instances For
After the phases r, …, r + k - 1, (∗_s) holds for every s < r + k.
(∗_0) holds since faces are nonempty (star_zero).
Step 3 of [Kol07, 111]: the phases 1, …, n in order, each by well-founded recursion on
(m_r, n_r); the final state and the list of centres.
Equations
- st.step3 = Hironaka.Monomial.MonomialState.phases st.n 1 st ⋯
Instances For
At the end of Step 3, (∗_s) holds for every s.
The postcondition of [Kol07, 111, Step 3] ("at the end of Step 3.n we are done"): every face
of the final nerve has sum < m. On the geometric side this is max-ord (M(I), m) < m.
The list of centres of Step 3 is a run: each centre is Kollár's nonempty choice at a phase
r ∈ [1, n] of the state before it, and the final state is their fold.
Executable copies with fuel #
phase with fuel: none when the fuel runs out.
Equations
- One or more equations did not get rendered due to their size.
- Hironaka.Monomial.MonomialState.phaseFuel 0 x✝¹ x✝ = none
Instances For
phases with fuel per phase.
Equations
Instances For
step3 with fuel per phase.
Equations
- Hironaka.Monomial.MonomialState.step3Fuel fuel st = Hironaka.Monomial.MonomialState.phasesFuel fuel st.n 1 st
Instances For
Any function f of the run read off the fuelled copy (for decide: the final state has
function fields, so it is compared through f).