BridgelandStability Comparator Manual

8. Slicing.Defs🔗

Module BridgelandStability.Slicing.Defs7 declarations (Structure, Definition, Theorem)

8.1. CategoryTheory.Triangulated.HNFiltration🔗

Structure | BridgelandStability.Slicing.Defs | Source | Open Issue

/-- A Harder-Narasimhan (HN) filtration of an object `E` with respect to a phase predicate `P`. This extends a `PostnikovTower` with phase data: each factor is semistable with a given phase, and the phases are strictly decreasing. -/ @[informal "Definition 3.3" "axiom (c): HN decomposition data for triangulated categories"] structure HNFiltration (P : ObjectProperty C) (E : C) extends PostnikovTower C E where /-- The phases of the semistable factors, in strictly decreasing order. -/ φ : Fin n /-- The phases are strictly decreasing (higher phase factors appear first). -/ : StrictAnti φ /-- Each factor is semistable of the given phase. -/ semistable : j, (P (φ j)) (toPostnikovTower.factor j)

8.2. CategoryTheory.Triangulated.Slicing🔗

Structure | BridgelandStability.Slicing.Defs | Source | Open Issue

/-- A slicing of a pretriangulated category `C`, as defined in Bridgeland (2007), Definition 5.1. A slicing assigns to each real number `φ` a full subcategory of semistable objects `P(φ)` (as an `ObjectProperty`), subject to shift, Hom-vanishing, and Harder-Narasimhan existence axioms. Each `P(φ)` is an `ObjectProperty C`, enabling use of the `ObjectProperty` API (e.g. `FullSubcategory`, shift stability, closure properties). -/ @[informal "Definition 3.3"] structure Slicing where /-- For each phase `φ ∈ ℝ`, the property of semistable objects of phase `φ`. -/ P : ObjectProperty C /-- Each phase slice is closed under isomorphisms. -/ closedUnderIso : (φ : ), (P φ).IsClosedUnderIsomorphisms /-- The zero object satisfies every phase predicate. -/ zero_mem : (φ : ), (P φ) (0 : C) /-- Shifting by `[1]` increases the phase by 1, and conversely. -/ shift_iff : (φ : ) (X : C), (P φ) X (P (φ + 1)) (X(1 : )) /-- Morphisms from higher-phase to lower-phase nonzero semistable objects vanish. -/ hom_vanishing : (φ₁ φ₂ : ) (A B : C), φ₂ < φ₁ (P φ₁) A (P φ₂) B (f : A B), f = 0 /-- Every object has a Harder-Narasimhan filtration. -/ hn_exists : (E : C), Nonempty (HNFiltration C P E)

8.3. CategoryTheory.Triangulated.Slicing.intervalProp🔗

Definition | BridgelandStability.Slicing.Defs | Source | Open Issue

/-- The interval subcategory predicate `P((a,b))`: an object `E` belongs to the interval subcategory if it is zero or all phases in its HN filtration lie in `(a,b)`. -/ def Slicing.intervalProp (s : Slicing C) (a b : ) : ObjectProperty C := fun E IsZero E (F : HNFiltration C s.P E), i, a < F.φ i F.φ i < b

8.4. CategoryTheory.Triangulated.HNFiltration.exists_nonzero_first🔗

Theorem | BridgelandStability.Slicing.Defs | Source | Open Issue

/-- For any nonzero object, there exists an HN filtration with nonzero first factor. Proved by repeatedly dropping zero first factors; terminates since `n` decreases and some factor must be nonzero (by `exists_nonzero_factor`). -/ lemma HNFiltration.exists_nonzero_first (s : Slicing C) {E : C} (hE : ¬IsZero E) : (F : HNFiltration C s.P E) (hn : 0 < F.n), ¬IsZero (F.triangle 0, hn).obj₃
Show proof:= C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero E F, (hn : 0 < F.n), ¬IsZero (F.triangle 0, hn).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P E F, (hn : 0 < F.n), ¬IsZero (F.triangle 0, hn).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P E (m : ) (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃ induction m with C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P E (G : HNFiltration C s.P E), G.n 0 H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃ intro G C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P EG:HNFiltration C s.P EhGn:G.n 0 F, (hn : 0 < F.n), ¬IsZero (F.triangle 0, hn).obj₃ exact absurd (G.zero_isZero (C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P EG:HNFiltration C s.P EhGn:G.n 0G.n = 0 All goals completed! 🐙)) hE C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃ (G : HNFiltration C s.P E), G.n m + 1 H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃ intro G C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1 F, (hn : 0 < F.n), ¬IsZero (F.triangle 0, hn).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.n H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:IsZero (G.triangle 0, hGn0).obj₃ H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:¬IsZero (G.triangle 0, hGn0).obj₃ H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:IsZero (G.triangle 0, hGn0).obj₃ H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃ -- First factor is zero; drop it and recurse have hn1 : 1 < G.n := C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero E F, (hn : 0 < F.n), ¬IsZero (F.triangle 0, hn).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:IsZero (G.triangle 0, hGn0).obj₃h:¬1 < G.nFalse; C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:IsZero (G.triangle 0, hGn0).obj₃h:G.n 1False have : (i : Fin G.n), IsZero (G.triangle i).obj₃ := fun i C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:IsZero (G.triangle 0, hGn0).obj₃h:G.n 1i:Fin G.nIsZero (G.triangle i).obj₃ have : i = 0, hGn0 := Fin.ext (C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:IsZero (G.triangle 0, hGn0).obj₃h:G.n 1i:Fin G.ni = 0, hGn0 All goals completed! 🐙) C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:IsZero (G.triangle 0, hGn0).obj₃h:G.n 1IsZero (G.triangle 0, hGn0).obj₃; All goals completed! 🐙 All goals completed! 🐙 have hdrop : (G.dropFirst C hn1 hfirst).n m := C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero E F, (hn : 0 < F.n), ¬IsZero (F.triangle 0, hn).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:IsZero (G.triangle 0, hGn0).obj₃hn1:1 < G.nG.n - 1 m; All goals completed! 🐙 All goals completed! 🐙 C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhfirst:¬IsZero (G.triangle 0, hGn0).obj₃ H, (hn : 0 < H.n), ¬IsZero (H.triangle 0, hn).obj₃ All goals completed! 🐙

8.5. CategoryTheory.Triangulated.HNFiltration.exists_nonzero_last🔗

Theorem | BridgelandStability.Slicing.Defs | Source | Open Issue

/-- For any nonzero object, there exists an HN filtration with nonzero last factor. Proved by repeatedly dropping zero last factors. -/ lemma HNFiltration.exists_nonzero_last (s : Slicing C) {E : C} (hE : ¬IsZero E) : (F : HNFiltration C s.P E) (hn : 0 < F.n), ¬IsZero (F.triangle F.n - 1, C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Ehn:0 < F.nF.n - 1 < F.n All goals completed! 🐙).obj₃
Show proof:= C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero E F, (hn : 0 < F.n), ¬IsZero (F.triangle F.n - 1, ).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P E F, (hn : 0 < F.n), ¬IsZero (F.triangle F.n - 1, ).obj₃ suffices hmain : (m : ) (G : HNFiltration C s.P E), G.n m (H : HNFiltration C s.P E) (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:G:HNFiltration C s.P EH:HNFiltration C s.P Ehn:0 < H.nH.n - 1 < H.n All goals completed! 🐙).obj₃ from hmain F.n F le_rfl C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃ induction m with C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P E (G : HNFiltration C s.P E), G.n 0 H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃ intro G C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P EG:HNFiltration C s.P EhGn:G.n 0 F, (hn : 0 < F.n), ¬IsZero (F.triangle F.n - 1, ).obj₃ exact absurd (G.zero_isZero (C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P EG:HNFiltration C s.P EhGn:G.n 0G.n = 0 All goals completed! 🐙)) hE C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃ (G : HNFiltration C s.P E), G.n m + 1 H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃ intro G C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1 F, (hn : 0 < F.n), ¬IsZero (F.triangle F.n - 1, ).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.n H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃ by_cases hlast : IsZero (G.triangle G.n - 1, C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nG.n - 1 < G.n All goals completed! 🐙).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhlast:IsZero (G.triangle G.n - 1, ).obj₃ H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃ have hn1 : 1 < G.n := C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero E F, (hn : 0 < F.n), ¬IsZero (F.triangle F.n - 1, ).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhlast:IsZero (G.triangle G.n - 1, ).obj₃h:¬1 < G.nFalse; C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhlast:IsZero (G.triangle G.n - 1, ).obj₃h:G.n 1False have : (i : Fin G.n), IsZero (G.triangle i).obj₃ := fun i C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhlast:IsZero (G.triangle G.n - 1, ).obj₃h:G.n 1i:Fin G.nIsZero (G.triangle i).obj₃ have : i = G.n - 1, C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhlast:IsZero (G.triangle G.n - 1, ).obj₃h:G.n 1i:Fin G.nG.n - 1 < G.n All goals completed! 🐙 := Fin.ext (C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhlast:IsZero (G.triangle G.n - 1, ).obj₃h:G.n 1i:Fin G.ni = G.n - 1, All goals completed! 🐙) C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhlast:IsZero (G.triangle G.n - 1, ).obj₃h:G.n 1IsZero (G.triangle G.n - 1, ).obj₃; All goals completed! 🐙 All goals completed! 🐙 have hdrop : (G.dropLast C hn1 hlast).n m := C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero E F, (hn : 0 < F.n), ¬IsZero (F.triangle F.n - 1, ).obj₃ C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhlast:IsZero (G.triangle G.n - 1, ).obj₃hn1:1 < G.nG.n - 1 m; All goals completed! 🐙 All goals completed! 🐙 C:Type uinst✝⁵:Category.{v, u} Cinst✝⁴:HasZeroObject Cinst✝³:HasShift C inst✝²:Preadditive Cinst✝¹: (n : ), (shiftFunctor C n).Additiveinst✝:Pretriangulated Cs:Slicing CE:ChE:¬IsZero EF:HNFiltration C s.P Em:ih: (G : HNFiltration C s.P E), G.n m H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃G:HNFiltration C s.P EhGn:G.n m + 1hGn0:0 < G.nhlast:¬IsZero (G.triangle G.n - 1, ).obj₃ H, (hn : 0 < H.n), ¬IsZero (H.triangle H.n - 1, ).obj₃ All goals completed! 🐙

8.6. CategoryTheory.Triangulated.Slicing.phiPlus🔗

Definition | BridgelandStability.Slicing.Defs | Source | Open Issue

/-- The intrinsic highest phase of a nonzero object with respect to a slicing. This is the phase of the first factor in any HN filtration with nonzero first factor. Well-defined by `phiPlus_eq_of_nonzero_factors`. -/ noncomputable def Slicing.phiPlus (s : Slicing C) (E : C) (hE : ¬IsZero E) : := let F := (HNFiltration.exists_nonzero_first C s hE).choose let hn := (HNFiltration.exists_nonzero_first C s hE).choose_spec.choose F.φ 0, hn

8.7. CategoryTheory.Triangulated.Slicing.phiMinus🔗

Definition | BridgelandStability.Slicing.Defs | Source | Open Issue

/-- The intrinsic lowest phase of a nonzero object with respect to a slicing. This is the phase of the last factor in any HN filtration with nonzero last factor. Well-defined by `phiMinus_eq_of_nonzero_last_factors`. -/ noncomputable def Slicing.phiMinus (s : Slicing C) (E : C) (hE : ¬IsZero E) : := let F := (HNFiltration.exists_nonzero_last C s hE).choose let hn : 0 < F.n := (HNFiltration.exists_nonzero_last C s hE).choose_spec.choose F.φ F.n - 1, Nat.sub_one_lt_of_le hn le_rfl