BridgelandStability Comparator Manual

7. EulerForm.Basic🔗

Module BridgelandStability.EulerForm.Basic10 declarations (Theorem, Definition, Structure)

7.1. CategoryTheory.Triangulated.eulerFormObj_contravariant_triangleAdditive🔗

Theorem | BridgelandStability.EulerForm.Basic | Source | Open Issue

theorem eulerFormObj_contravariant_triangleAdditive (E : C) : IsTriangleAdditive (fun F eulerFormObj k C E F)
Show proofwhere additive := fun T hT k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangles∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this:F.ShiftSequence := Functor.ShiftSequence.tautological F ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) let δ_lin : (n : ) ((E T.obj₃n) →ₗ[k] (E T.obj₁(n + 1))) := fun n Linear.rightComp k E (T.mor₃n⟧' (shiftFunctorAdd' C 1 n (n + 1) (k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···n:1 + n = n + 1 All goals completed! 🐙)).inv.app T.obj₁) k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + ∑ᶠ (n : ), n.negOnePow * (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) have hδ_eq : n : , ((F.homologySequenceδ T n (n + 1) rfl).hom) = δ_lin n := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)n:ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin n k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)n:x:((F.shift n).obj T.obj₃)(ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) )) x = (δ_lin n) x All goals completed! 🐙 have h_ker_f_aux : m : , Module.finrank k (LinearMap.ker (((F.shift (m + 1)).map T.mor₁).hom)) = r m := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nm:(Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r m k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nm:f_succ:(E (shiftFunctor C (m + 1)).obj T.obj₁) →ₗ[k] E (shiftFunctor C (m + 1)).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)(Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r m have h_exact₁ : LinearMap.range (δ_lin m) = LinearMap.ker f_succ := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ All goals completed! 🐙 All goals completed! 🐙 have hrank : n : , (Module.finrank k (E T.obj₂n) : ) = Module.finrank k (E T.obj₁n) + Module.finrank k (E T.obj₃n) - r (n - 1) - r n := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r n k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r n k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r n have hexact_B : LinearMap.range f_n = LinearMap.ker g_n := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ All goals completed! 🐙 k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝¹:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r n k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝¹:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)h_mid:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k f_n.range) + (Module.finrank k g_n.range)(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r n k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝²:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝¹:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis✝:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)h_mid:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k f_n.range) + (Module.finrank k g_n.range)this:Module.Finite k (E (shiftFunctor C n).obj T.obj₁)(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r n k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝³:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝²:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis✝¹:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)h_mid:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k f_n.range) + (Module.finrank k g_n.range)this✝:Module.Finite k (E (shiftFunctor C n).obj T.obj₁)this:Module.Finite k (E (shiftFunctor C n).obj T.obj₃)(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r n have h_ker_f : Module.finrank k (LinearMap.ker f_n) = r (n - 1) := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝³:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝²:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis✝¹:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)h_mid:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k f_n.range) + (Module.finrank k g_n.range)this✝:Module.Finite k (E (shiftFunctor C n).obj T.obj₁)this:Module.Finite k (E (shiftFunctor C n).obj T.obj₃)(Module.finrank k (ModuleCat.Hom.hom ((F.shift n).map T.mor₁)).ker) = r (n - 1) have hn : n = (n - 1) + 1 := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ All goals completed! 🐙 k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝³:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝²:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis✝¹:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)h_mid:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k f_n.range) + (Module.finrank k g_n.range)this✝:Module.Finite k (E (shiftFunctor C n).obj T.obj₁)this:Module.Finite k (E (shiftFunctor C n).obj T.obj₃)hn:n = n - 1 + 1(Module.finrank k (ModuleCat.Hom.hom ((F.shift (n - 1 + 1)).map T.mor₁)).ker) = r (n - 1 + 1 - 1) All goals completed! 🐙 have h_ker_δ : Module.finrank k (LinearMap.ker (δ_lin n)) = Module.finrank k (LinearMap.range g_n) := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ have h_exact₃ : LinearMap.range g_n = LinearMap.ker (δ_lin n) := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ All goals completed! 🐙 All goals completed! 🐙 have h_f : (Module.finrank k (LinearMap.range f_n) : ) = Module.finrank k (E T.obj₁n) - r (n - 1) := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝⁴:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝³:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis✝²:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)h_mid:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k f_n.range) + (Module.finrank k g_n.range)this✝¹:Module.Finite k (E (shiftFunctor C n).obj T.obj₁)this✝:Module.Finite k (E (shiftFunctor C n).obj T.obj₃)h_ker_f:(Module.finrank k f_n.ker) = r (n - 1)h_ker_δ:Module.finrank k (δ_lin n).ker = Module.finrank k g_n.rangethis:Module.finrank k f_n.range + Module.finrank k f_n.ker = Module.finrank k (E (shiftFunctor C n).obj T.obj₁)(Module.finrank k f_n.range) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) - r (n - 1) All goals completed! 🐙 have h_g : (Module.finrank k (LinearMap.range g_n) : ) = Module.finrank k (E T.obj₃n) - r n := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝³:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝²:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis✝¹:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)h_mid:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k f_n.range) + (Module.finrank k g_n.range)this✝:Module.Finite k (E (shiftFunctor C n).obj T.obj₁)this:Module.Finite k (E (shiftFunctor C n).obj T.obj₃)h_ker_f:(Module.finrank k f_n.ker) = r (n - 1)h_ker_δ:Module.finrank k (δ_lin n).ker = Module.finrank k g_n.rangeh_f:(Module.finrank k f_n.range) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) - r (n - 1)h1:Module.finrank k (δ_lin n).range + Module.finrank k (δ_lin n).ker = Module.finrank k (E (shiftFunctor C n).obj T.obj₃)(Module.finrank k g_n.range) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r n k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝³:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝²:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis✝¹:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)h_mid:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k f_n.range) + (Module.finrank k g_n.range)this✝:Module.Finite k (E (shiftFunctor C n).obj T.obj₁)this:Module.Finite k (E (shiftFunctor C n).obj T.obj₃)h_ker_f:(Module.finrank k f_n.ker) = r (n - 1)h_ker_δ:Module.finrank k (δ_lin n).ker = Module.finrank k g_n.rangeh_f:(Module.finrank k f_n.range) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) - r (n - 1)h1:Module.finrank k (δ_lin n).range + Module.finrank k (δ_lin n).ker = Module.finrank k (E (shiftFunctor C n).obj T.obj₃)h2:Module.finrank k (δ_lin n).ker = Module.finrank k g_n.range(Module.finrank k g_n.range) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r n k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝³:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝²:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mn:f_n:(E (shiftFunctor C n).obj T.obj₁) →ₗ[k] E (shiftFunctor C n).obj T.obj₂ := ModuleCat.Hom.hom ((F.shift n).map T.mor₁)g_n:(E (shiftFunctor C n).obj T.obj₂) →ₗ[k] E (shiftFunctor C n).obj T.obj₃ := ModuleCat.Hom.hom ((F.shift n).map T.mor₂)hexact_B:f_n.range = g_n.kerthis✝¹:Module.Finite k (E (shiftFunctor C n).obj T.obj₂)h_mid:(Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k f_n.range) + (Module.finrank k g_n.range)this✝:Module.Finite k (E (shiftFunctor C n).obj T.obj₁)this:Module.Finite k (E (shiftFunctor C n).obj T.obj₃)h_ker_f:(Module.finrank k f_n.ker) = r (n - 1)h_ker_δ:Module.finrank k (δ_lin n).ker = Module.finrank k g_n.rangeh_f:(Module.finrank k f_n.range) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) - r (n - 1)h1:Module.finrank k (δ_lin n).range + Module.finrank k (δ_lin n).ker = Module.finrank k (E (shiftFunctor C n).obj T.obj₃)h2:Module.finrank k (δ_lin n).ker = Module.finrank k g_n.range(Module.finrank k g_n.range) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - (Module.finrank k (δ_lin n).range) All goals completed! 🐙 All goals completed! 🐙 have hr : (Function.support r).Finite := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nFunction.support r (fun m => m - 1) '' {n | Nontrivial (E (shiftFunctor C n).obj T.obj₁)} intro n k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nn:hn:n Function.support rn (fun m => m - 1) '' {n | Nontrivial (E (shiftFunctor C n).obj T.obj₁)} k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nn:hn:n Function.support rhnonzero:r n 0n (fun m => m - 1) '' {n | Nontrivial (E (shiftFunctor C n).obj T.obj₁)} have hnontrivial : Nontrivial (E T.obj₁n + 1) := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nn:hn:n Function.support rhnonzero:r n 0htriv:¬Nontrivial (E (shiftFunctor C (n + 1)).obj T.obj₁)False k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝¹:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nn:hn:n Function.support rhnonzero:r n 0htriv:¬Nontrivial (E (shiftFunctor C (n + 1)).obj T.obj₁)this:Subsingleton (E (shiftFunctor C (n + 1)).obj T.obj₁)False have : δ_lin n = 0 := k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTriangleseulerFormObj k C E T.obj₂ = eulerFormObj k C E T.obj₁ + eulerFormObj k C E T.obj₃ k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝¹:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nn:hn:n Function.support rhnonzero:r n 0htriv:¬Nontrivial (E (shiftFunctor C (n + 1)).obj T.obj₁)this:Subsingleton (E (shiftFunctor C (n + 1)).obj T.obj₁)x:E (shiftFunctor C n).obj T.obj₃(δ_lin n) x = 0 x All goals completed! 🐙 k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝¹:F.ShiftSequence := Functor.ShiftSequence.tautological F this✝:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nn:hn:n Function.support rhnonzero:r n 0htriv:¬Nontrivial (E (shiftFunctor C (n + 1)).obj T.obj₁)this:Subsingleton (E (shiftFunctor C (n + 1)).obj T.obj₁):δ_lin n = 0r n = 0 All goals completed! 🐙 exact n + 1, hnontrivial, k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nn:hn:n Function.support rhnonzero:r n 0hnontrivial:Nontrivial (E (shiftFunctor C (n + 1)).obj T.obj₁)(fun m => m - 1) (n + 1) = n All goals completed! 🐙 exact eulerSum_of_rank_identity (k := k) (C := C) E (a := fun n T.obj₁n) (b := fun n T.obj₂n) (c := fun n T.obj₃n) (r := r) hrank (k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nhr:(Function.support r).Finite{n | Nontrivial (E (fun n => (shiftFunctor C n).obj T.obj₁) n)}.Finite All goals completed! 🐙) (k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nhr:(Function.support r).Finite{n | Nontrivial (E (fun n => (shiftFunctor C n).obj T.obj₂) n)}.Finite All goals completed! 🐙) (k:Type winst✝⁸:Field kC:Type uinst✝⁷:Category.{v, u} Cinst✝⁶:HasZeroObject Cinst✝⁵:HasShift C inst✝⁴:Preadditive Cinst✝³: (n : ), (shiftFunctor C n).Additiveinst✝²:Pretriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CT:Triangle ChT:T distinguishedTrianglesF:C ModuleCat k := (linearCoyoneda k C).obj (Opposite.op E)this✝:F.ShiftSequence := Functor.ShiftSequence.tautological F this:F.IsHomological := ···δ_lin:(n : ) (E (shiftFunctor C n).obj T.obj₃) →ₗ[k] E (shiftFunctor C (n + 1)).obj T.obj₁ := fun n => Linear.rightComp k E ((shiftFunctor C n).map T.mor₃ (shiftFunctorAdd' C 1 n (n + 1) ).inv.app T.obj₁)r: := fun n => (Module.finrank k (δ_lin n).range)hδ_eq: (n : ), ModuleCat.Hom.hom (F.homologySequenceδ T n (n + 1) ) = δ_lin nh_ker_f_aux: (m : ), (Module.finrank k (ModuleCat.Hom.hom ((F.shift (m + 1)).map T.mor₁)).ker) = r mhrank: (n : ), (Module.finrank k (E (shiftFunctor C n).obj T.obj₂)) = (Module.finrank k (E (shiftFunctor C n).obj T.obj₁)) + (Module.finrank k (E (shiftFunctor C n).obj T.obj₃)) - r (n - 1) - r nhr:(Function.support r).Finite{n | Nontrivial (E (fun n => (shiftFunctor C n).obj T.obj₃) n)}.Finite All goals completed! 🐙) hr

7.2. CategoryTheory.Triangulated.eulerFormInner🔗

Definition | BridgelandStability.EulerForm.Basic | Source | Open Issue

/-- For fixed `E`, lift `F ↦ χ(E, F)` to a group homomorphism `K₀ C →+ ℤ` using the universal property of `K₀`. -/ def eulerFormInner (E : C) : K₀ C →+ := k:Type winst✝⁹:Field kC:Type uinst✝⁸:Category.{v, u} Cinst✝⁷:HasZeroObject Cinst✝⁶:HasShift C inst✝⁵:Preadditive Cinst✝⁴: (n : ), (shiftFunctor C n).Additiveinst✝³:Pretriangulated Cinst✝²:IsTriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:CK₀ C →+ k:Type winst✝⁹:Field kC:Type uinst✝⁸:Category.{v, u} Cinst✝⁷:HasZeroObject Cinst✝⁶:HasShift C inst✝⁵:Preadditive Cinst✝⁴: (n : ), (shiftFunctor C n).Additiveinst✝³:Pretriangulated Cinst✝²:IsTriangulated Cinst✝¹:Linear k Cinst✝:IsFiniteType k CE:Cthis:IsTriangleAdditive fun F => eulerFormObj k C E F := ···K₀ C →+ All goals completed! 🐙

7.3. CategoryTheory.Triangulated.eulerFormInner_isTriangleAdditive🔗

Theorem | BridgelandStability.EulerForm.Basic | Source | Open Issue

/-- The outer function `E ↦ eulerFormInner E` is triangle-additive, so the Euler form descends to a bilinear form on `K₀`. -/ instance eulerFormInner_isTriangleAdditive [(shiftFunctor C (1 : )).Linear k] : IsTriangleAdditive (eulerFormInner k C)
Show proofwhere additive T hT := k:Type winst✝¹⁰:Field kC:Type uinst✝⁹:Category.{v, u} Cinst✝⁸:HasZeroObject Cinst✝⁷:HasShift C inst✝⁶:Preadditive Cinst✝⁵: (n : ), (shiftFunctor C n).Additiveinst✝⁴:Pretriangulated Cinst✝³:IsTriangulated Cinst✝²:Linear k Cinst✝¹:IsFiniteType k Cinst✝:Functor.Linear k (shiftFunctor C 1)T:Triangle ChT:T distinguishedTriangleseulerFormInner k C T.obj₂ = eulerFormInner k C T.obj₁ + eulerFormInner k C T.obj₃ k:Type winst✝¹⁰:Field kC:Type uinst✝⁹:Category.{v, u} Cinst✝⁸:HasZeroObject Cinst✝⁷:HasShift C inst✝⁶:Preadditive Cinst✝⁵: (n : ), (shiftFunctor C n).Additiveinst✝⁴:Pretriangulated Cinst✝³:IsTriangulated Cinst✝²:Linear k Cinst✝¹:IsFiniteType k Cinst✝:Functor.Linear k (shiftFunctor C 1)T:Triangle ChT:T distinguishedTriangles (X : C), (eulerFormInner k C T.obj₂) (K₀.of C X) = (eulerFormInner k C T.obj₁ + eulerFormInner k C T.obj₃) (K₀.of C X); k:Type winst✝¹⁰:Field kC:Type uinst✝⁹:Category.{v, u} Cinst✝⁸:HasZeroObject Cinst✝⁷:HasShift C inst✝⁶:Preadditive Cinst✝⁵: (n : ), (shiftFunctor C n).Additiveinst✝⁴:Pretriangulated Cinst✝³:IsTriangulated Cinst✝²:Linear k Cinst✝¹:IsFiniteType k Cinst✝:Functor.Linear k (shiftFunctor C 1)T:Triangle ChT:T distinguishedTrianglesF:C(eulerFormInner k C T.obj₂) (K₀.of C F) = (eulerFormInner k C T.obj₁ + eulerFormInner k C T.obj₃) (K₀.of C F) k:Type winst✝¹⁰:Field kC:Type uinst✝⁹:Category.{v, u} Cinst✝⁸:HasZeroObject Cinst✝⁷:HasShift C inst✝⁶:Preadditive Cinst✝⁵: (n : ), (shiftFunctor C n).Additiveinst✝⁴:Pretriangulated Cinst✝³:IsTriangulated Cinst✝²:Linear k Cinst✝¹:IsFiniteType k Cinst✝:Functor.Linear k (shiftFunctor C 1)T:Triangle ChT:T distinguishedTrianglesF:CeulerFormObj k C T.obj₂ F = eulerFormObj k C T.obj₁ F + eulerFormObj k C T.obj₃ F k:Type winst✝¹⁰:Field kC:Type uinst✝⁹:Category.{v, u} Cinst✝⁸:HasZeroObject Cinst✝⁷:HasShift C inst✝⁶:Preadditive Cinst✝⁵: (n : ), (shiftFunctor C n).Additiveinst✝⁴:Pretriangulated Cinst✝³:IsTriangulated Cinst✝²:Linear k Cinst✝¹:IsFiniteType k Cinst✝:Functor.Linear k (shiftFunctor C 1)T:Triangle ChT:T distinguishedTrianglesF:Cthis:IsTriangleAdditive fun E => eulerFormObj k C E F := ···eulerFormObj k C T.obj₂ F = eulerFormObj k C T.obj₁ F + eulerFormObj k C T.obj₃ F All goals completed! 🐙

7.4. CategoryTheory.Triangulated.eulerForm🔗

Definition | BridgelandStability.EulerForm.Basic | Source | Open Issue

/-- The Euler form on `K₀`, obtained by applying the universal property of `K₀` twice to `eulerFormObj`. -/ def eulerForm [(shiftFunctor C (1 : )).Linear k] : K₀ C →+ K₀ C →+ := K₀.lift C (eulerFormInner k C)

7.5. CategoryTheory.Triangulated.eulerFormRad🔗

Definition | BridgelandStability.EulerForm.Basic | Source | Open Issue

/-- The left radical of the Euler form on `K₀ C`. -/ def eulerFormRad [Linear k C] [IsFiniteType k C] [(shiftFunctor C (1 : )).Linear k] : AddSubgroup (K₀ C) := (eulerForm k C).ker

7.6. CategoryTheory.Triangulated.NumericalK₀🔗

Definition | BridgelandStability.EulerForm.Basic | Source | Open Issue

/-- The numerical Grothendieck group attached to the Euler form on `K₀`. -/ def NumericalK₀ [Linear k C] [IsFiniteType k C] [(shiftFunctor C (1 : )).Linear k] : Type _ := K₀ C eulerFormRad k C

7.7. CategoryTheory.Triangulated.NumericalK₀.instAddCommGroup🔗

Definition | BridgelandStability.EulerForm.Basic | Source | Open Issue

/-- The `AddCommGroup` instance on `NumericalK₀ k C`. -/ instance NumericalK₀.instAddCommGroup [Linear k C] [IsFiniteType k C] [(shiftFunctor C (1 : )).Linear k] : AddCommGroup (NumericalK₀ k C) := inferInstanceAs (AddCommGroup (K₀ C eulerFormRad k C))

7.8. CategoryTheory.Triangulated.numericalQuotientMap🔗

Definition | BridgelandStability.EulerForm.Basic | Source | Open Issue

/-- The quotient map `K₀(C) → N(C)`. -/ abbrev numericalQuotientMap [Linear k C] [IsFiniteType k C] [(shiftFunctor C (1 : )).Linear k] : K₀ C →+ NumericalK₀ k C := QuotientAddGroup.mk' (eulerFormRad k C)

7.9. CategoryTheory.Triangulated.NumericallyFinite🔗

Structure | BridgelandStability.EulerForm.Basic | Source | Open Issue

/-- The category `C` is numerically finite if the numerical Grothendieck group attached to the Euler form is finitely generated as an abelian group. -/ class NumericallyFinite [Linear k C] [IsFiniteType k C] [(shiftFunctor C (1 : )).Linear k] : Prop where /-- The Euler-form numerical Grothendieck group is finitely generated. -/ fg : AddGroup.FG (NumericalK₀ k C)

7.10. CategoryTheory.Triangulated.NumericalComponent🔗

Definition | BridgelandStability.EulerForm.Basic | Source | Open Issue

/-- A connected component of numerical stability conditions. -/ abbrev NumericalComponent [Linear k C] [IsFiniteType k C] [(shiftFunctor C (1 : )).Linear k] (cc : StabilityCondition.WithClassMap.ComponentIndex C (numericalQuotientMap k C)) := StabilityCondition.WithClassMap.Component C (numericalQuotientMap k C) cc