Documentation

Hironaka.Manifold.FiniteSuccession.Functor.EraseEmptyLemmas

The clauses of eraseEmpty and map on lists of centres #

The recursion BlowUpSequence.eraseEmpty (Hironaka.Manifold.FiniteSuccession.Functor.EraseEmpty) deletes the empty steps of a list of centres and carries the tails back along the analytic isomorphisms Bl_โˆ… M โ‰ƒ M; here are its clauses: the equations on nil and cons (eraseEmpty_nil, eraseEmpty_cons_of_ne_empty, eraseEmpty_cons_empty); the transport map keeps the length and the (non-)emptiness of the centres (length_map, noEmptyCenters_map_iff); the cleaned list has no empty centre (noEmptyCenters_eraseEmpty); the deletion is the identity exactly on lists without empty centres (eraseEmpty_eq_self_iff) and is idempotent (eraseEmpty_eraseEmpty); a functor's outputs are fixed by it (eraseEmpty_seq, the convention of [Kol07, 32]). A functor is its assignment of lists (AnalyticBlowUpSequenceAssignment.ext).

theorem Manifold.AnalyticBlowUpSequenceAssignment.ext {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {Dom : {M : AnalyticManifold ๐•œ E} โ†’ AnalyticTriple ฯˆโ‚€ M โ†’ Prop} {B B' : AnalyticBlowUpSequenceAssignment ฯˆโ‚€ fun {M : AnalyticManifold ๐•œ E} => Dom} (h : โˆ€ {M : AnalyticManifold ๐•œ E} (T : AnalyticTriple ฯˆโ‚€ M) (hT : Dom T), B.seq T hT = B'.seq T hT) :
B = B'

A functor is its assignment of lists of centres (the other field is a proof).

The equations of eraseEmpty #

@[simp]
theorem AnalyticManifold.BlowUpSequence.eraseEmpty_nil {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} :
theorem AnalyticManifold.BlowUpSequence.eraseEmpty_cons {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} {Y : Set M.carrier} {c : โ„•} (hY : Manifold.IsClosedSubmanifold ฯˆโ‚€ Y c) (rest : BlowUpSequence ฯˆโ‚€ (Manifold.blowUp ฯˆโ‚€ hY)) :
theorem AnalyticManifold.BlowUpSequence.eraseEmpty_cons_of_ne_empty {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} {Y : Set M.carrier} {c : โ„•} (hY : Manifold.IsClosedSubmanifold ฯˆโ‚€ Y c) (rest : BlowUpSequence ฯˆโ‚€ (Manifold.blowUp ฯˆโ‚€ hY)) (hne : Y โ‰  โˆ…) :
(cons hY rest).eraseEmpty = cons hY rest.eraseEmpty
theorem AnalyticManifold.BlowUpSequence.eraseEmpty_cons_of_eq_empty {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} {Y : Set M.carrier} {c : โ„•} (hY : Manifold.IsClosedSubmanifold ฯˆโ‚€ Y c) (rest : BlowUpSequence ฯˆโ‚€ (Manifold.blowUp ฯˆโ‚€ hY)) (hYโ‚€ : Y = โˆ…) :
(cons hY rest).eraseEmpty = map (emptyBlowUpDiffeomorph hY hYโ‚€) rest.eraseEmpty
theorem AnalyticManifold.BlowUpSequence.eraseEmpty_cons_empty {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} {Y : Set M.carrier} {c : โ„•} (hY : Manifold.IsClosedSubmanifold ฯˆโ‚€ Y c) (rest : BlowUpSequence ฯˆโ‚€ (Manifold.blowUp ฯˆโ‚€ hY)) (hYโ‚€ : Y = โˆ…) :
โˆƒ (g : Diffeomorph (modelWithCornersSelf ๐•œ E) (modelWithCornersSelf ๐•œ E) (Manifold.blowUp ฯˆโ‚€ hY).carrier M.carrier โŠค), (โˆ€ (p : (Manifold.blowUp ฯˆโ‚€ hY).carrier), g p = (Manifold.blowUpฯ€ ฯˆโ‚€ hY) p) โˆง (cons hY rest).eraseEmpty = map g rest.eraseEmpty

Lengths and empty centres #

theorem AnalyticManifold.BlowUpSequence.length_nil {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} :
(nil M).length = 0
theorem AnalyticManifold.BlowUpSequence.length_cons {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} {Y : Set M.carrier} {c : โ„•} (hY : Manifold.IsClosedSubmanifold ฯˆโ‚€ Y c) (rest : BlowUpSequence ฯˆโ‚€ (Manifold.blowUp ฯˆโ‚€ hY)) :
(cons hY rest).length = rest.length + 1
theorem AnalyticManifold.BlowUpSequence.length_map {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M N : AnalyticManifold ๐•œ E} (g : Diffeomorph (modelWithCornersSelf ๐•œ E) (modelWithCornersSelf ๐•œ E) M.carrier N.carrier โŠค) (L : BlowUpSequence ฯˆโ‚€ M) :
(map g L).length = L.length
theorem AnalyticManifold.BlowUpSequence.noEmptyCenters_nil {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} :

No empty centre in nil.

theorem AnalyticManifold.FiniteSuccession.isEmptyAt_cons_zero {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} {Y : Set M.carrier} {c : โ„•} (hY : Manifold.IsClosedSubmanifold ฯˆโ‚€ Y c) (R : (Manifold.blowUp ฯˆโ‚€ hY).FiniteSuccession) :
(cons ฯˆโ‚€ hY R).IsEmptyAt 0 โ†” Y = โˆ…

The first centre of the succession cons hY R is empty iff Y = โˆ… (isEmptyAt_iff with cosupport_idealSheaf).

theorem AnalyticManifold.FiniteSuccession.isEmptyAt_cons_succ {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} {Y : Set M.carrier} {c : โ„•} (hY : Manifold.IsClosedSubmanifold ฯˆโ‚€ Y c) (R : (Manifold.blowUp ฯˆโ‚€ hY).FiniteSuccession) (i : Fin R.length) :
(cons ฯˆโ‚€ hY R).IsEmptyAt i.succ โ†” R.IsEmptyAt i

The later centres of cons hY R are those of R.

@[simp]
theorem AnalyticManifold.BlowUpSequence.noEmptyCenters_cons_iff {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} {Y : Set M.carrier} {c : โ„•} (hY : Manifold.IsClosedSubmanifold ฯˆโ‚€ Y c) (rest : BlowUpSequence ฯˆโ‚€ (Manifold.blowUp ฯˆโ‚€ hY)) :

cons hY rest has no empty centre iff Y โ‰  โˆ… and rest has none.

theorem AnalyticManifold.BlowUpSequence.noEmptyCenters_map_iff {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M N : AnalyticManifold ๐•œ E} (g : Diffeomorph (modelWithCornersSelf ๐•œ E) (modelWithCornersSelf ๐•œ E) M.carrier N.carrier โŠค) (L : BlowUpSequence ฯˆโ‚€ M) :

The transport along an analytic isomorphism keeps the (non-)emptiness of every centre.

theorem AnalyticManifold.BlowUpSequence.noEmptyCenters_eraseEmpty {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} (L : BlowUpSequence ฯˆโ‚€ M) :
theorem AnalyticManifold.BlowUpSequence.eraseEmpty_of_noEmptyCenters {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} (L : BlowUpSequence ฯˆโ‚€ M) :
theorem AnalyticManifold.BlowUpSequence.eraseEmpty_eq_self_iff {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} (L : BlowUpSequence ฯˆโ‚€ M) :
theorem AnalyticManifold.BlowUpSequence.eraseEmpty_eraseEmpty {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {M : AnalyticManifold ๐•œ E} (L : BlowUpSequence ฯˆโ‚€ M) :
theorem Manifold.AnalyticBlowUpSequenceAssignment.eraseEmpty_seq {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {n : โ„•} {ฯˆโ‚€ : E โ‰ƒL[๐•œ] Fin n โ†’ ๐•œ} {Dom : {M : AnalyticManifold ๐•œ E} โ†’ AnalyticTriple ฯˆโ‚€ M โ†’ Prop} (B : AnalyticBlowUpSequenceAssignment ฯˆโ‚€ fun {M : AnalyticManifold ๐•œ E} => Dom) {M : AnalyticManifold ๐•œ E} (T : AnalyticTriple ฯˆโ‚€ M) (hT : Dom T) :
(B.seq T hT).eraseEmpty = B.seq T hT

[Kol07, 32]: deleting empty blow-ups from an output of a functor changes nothing.