diff --git a/HomotopyCategories/tst/TiltingEquivalence.tst b/HomotopyCategories/tst/TiltingEquivalence.tst new file mode 100644 index 00000000..27ef9da1 --- /dev/null +++ b/HomotopyCategories/tst/TiltingEquivalence.tst @@ -0,0 +1,91 @@ +gap> q_O := RightQuiver( "q_O(O0,O1,O2)[x0:O0->O1,x1:O0->O1,x2:O0->O1,y0:O1->O2,y1:O1->O2,y2:O1->O2]" );; +gap> SetLabelsAsLaTeXStrings( q_O, [ "\\mathcal{O}_{0}", "\\mathcal{O}_{1}", "\\mathcal{O}_{2}" ], [ "x_0", "x_1", "x_2", "y_0", "y_1", "y_2" ] );; +gap> F_O := FreeCategory( q_O );; +gap> QQ := HomalgFieldOfRationals( );; +gap> k := QQ;; +gap> kF_O := k[F_O];; +gap> rho_O := [ PreCompose( kF_O.x0, kF_O.y1 ) - PreCompose( kF_O.x1, kF_O.y0 ), PreCompose( kF_O.x0, kF_O.y2 ) - PreCompose( kF_O.x2, kF_O.y0 ), +> PreCompose( kF_O.x1, kF_O.y2 ) - PreCompose( kF_O.x2, kF_O.y1 ) ];; +gap> A_O := kF_O / rho_O;; +gap> phi := 2 * A_O.x0 + 3 * A_O.x1 - A_O.x2;; +gap> A_O_op := OppositeAlgebroid( A_O );; +gap> q_O_op := UnderlyingQuiver( A_O_op );; +gap> SetLabelsAsLaTeXStrings( q_O_op, [ "\\mathcal{O}(0)", "\\mathcal{O}(1)", "\\mathcal{O}(2)" ], [ "x_0", "x_1", "x_2", "y_0", "y_1", "y_2" ] );; +gap> A_Oadd := AdditiveClosure( A_O );; +gap> KA_Oadd := HomotopyCategoryByCochains( A_Oadd );; +gap> E10 := [ A_O.O0, A_O.O0, A_O.O0 ] / A_Oadd;; +gap> E11 := [ A_O.O1, A_O.O1, A_O.O1 ] / A_Oadd;; +gap> E12 := [ A_O.O2 ] / A_Oadd;; +gap> delta_0 := AdditiveClosureMorphism( +> E10, +> [ [ A_O.x1, -A_O.x0, ZeroMorphism(A_O.O0, A_O.O1) ], +> [ A_O.x2, ZeroMorphism(A_O.O0, A_O.O1), -A_O.x0 ], +> [ ZeroMorphism(A_O.O0, A_O.O1), A_O.x2, -A_O.x1 ] ], +> E11 );; +gap> delta_1 := AdditiveClosureMorphism( +> E11, +> [ [ A_O.y0 ], +> [ A_O.y1 ], +> [ A_O.y2 ] ], +> E12 );; +gap> E1 := CreateComplex( KA_Oadd, [ delta_0, delta_1 ], 0 );; +gap> E20 := [ A_O.O0, A_O.O0, A_O.O0 ] / A_Oadd;; +gap> E21 := [ A_O.O1] / A_Oadd;; +gap> delta_0 := AdditiveClosureMorphism( +> E20, +> [ [ A_O.x0 ], +> [ A_O.x1 ], +> [ A_O.x2 ] ], +> E21 );; +gap> E2 := CreateComplex( KA_Oadd, [ delta_0 ], 0 );; +gap> E3 := CreateComplex( KA_Oadd, A_O.O0 / A_Oadd, 0 );; +gap> seq := CreateStrongExceptionalSequence( [ E1, E2, E3 ] );; +gap> T := DirectSum( [ E1, E2, E3 ] );; +gap> RankOfObject( HomStructure( E1, E1 ) ) = 1 and +> RankOfObject( HomStructure( E2, E2 ) ) = 1 and +> RankOfObject( HomStructure( E3, E3 ) ) = 1; +true +gap> IsZero( HomStructure( E3, E2 ) ) and +> IsZero( HomStructure( E2, E1 ) ) and +> IsZero( HomStructure( E3, E1 ) ); +true +gap> IsZero( HomStructure( T, Shift( T, -2 ) ) ) and +> IsZero( HomStructure( T, Shift( T, -1 ) ) ) and +> IsZero( HomStructure( T, Shift( T, 1 ) ) ) and +> IsZero( HomStructure( T, Shift( T, 2 ) ) ); +true +gap> RankOfObject( HomStructure( T, T ) ); +12 +gap> A_E := AbstractionAlgebroid( seq );; +gap> q_E := UnderlyingQuiver( A_E );; +gap> B_E := UnderlyingQuiverAlgebra( A_E );; +gap> Dimension( B_E ); +12 +gap> rho_E := RelationsOfAlgebroid( A_E );; +gap> a := IsomorphismIntoAbstractionAlgebroid( seq );; +gap> r := IsomorphismFromAbstractionAlgebroid( seq );; +gap> m := A_E.("m1_2_1");; +gap> m = ApplyFunctor( a, ApplyFunctor( r, m ) ); +true +gap> T_E := TriangulatedSubcategory( seq );; +gap> O0 := CreateComplex( KA_Oadd, A_O.("O0") / A_Oadd, 0 );; +gap> O1 := CreateComplex( KA_Oadd, A_O.("O1") / A_Oadd, 0 );; +gap> O2 := CreateComplex( KA_Oadd, A_O.("O2") / A_Oadd, 0 );; +gap> IsWellDefined( AsSubcategoryCell( T_E, O0 ) ) and +> IsWellDefined( AsSubcategoryCell( T_E, O1 ) ) and +> IsWellDefined( AsSubcategoryCell( T_E, O2 ) ); +true +gap> G := ReplacementFunctorIntoHomotopyCategoryOfAdditiveClosureOfAbstractionAlgebroid( seq );; +gap> F := ConvolutionFunctorFromHomotopyCategoryOfAdditiveClosureOfAbstractionAlgebroid( seq );; +gap> G_O0 := ApplyFunctor( G, O0 );; +gap> G_O1 := ApplyFunctor( G, O1 );; +gap> G_O2 := ApplyFunctor( G, O2 );; +gap> epsilon := CounitOfConvolutionReplacementAdjunction( seq );; +gap> epsilon_O0 := ApplyNaturalTransformation( epsilon, O0 );; +gap> epsilon_O1 := ApplyNaturalTransformation( epsilon, O1 );; +gap> epsilon_O2 := ApplyNaturalTransformation( epsilon, O2 );; +gap> ForAll( [ epsilon_O0, epsilon_O1, epsilon_O2 ], IsIsomorphism ); +true +gap> i := InverseForMorphisms( DirectSumFunctorial( [ epsilon_O0, epsilon_O1, epsilon_O2 ] ) );; +gap> IsWellDefined( i ) and IsIsomorphism( i ); +true diff --git a/TriangulatedCategories/PackageInfo.g b/TriangulatedCategories/PackageInfo.g index 186cd230..6f55cc4a 100644 --- a/TriangulatedCategories/PackageInfo.g +++ b/TriangulatedCategories/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "TriangulatedCategories", Subtitle := "Framework for triangulated categories", -Version := "2023.01-01", +Version := "2023.02-01", Date := Concatenation( "01/", ~.Version{[ 6, 7 ]}, "/", ~.Version{[ 1 .. 4 ]} ), License := "GPL-2.0-or-later", diff --git a/TriangulatedCategories/gap/CategoryOfTriangles.gd b/TriangulatedCategories/gap/CategoryOfTriangles.gd index 7998717d..f01bcb00 100644 --- a/TriangulatedCategories/gap/CategoryOfTriangles.gd +++ b/TriangulatedCategories/gap/CategoryOfTriangles.gd @@ -11,19 +11,19 @@ #! The &GAP; category for the category of triangles over some triangulated category. #! @Arguments T #! @Returns true or false -DeclareCategory( "IsCapCategoryOfExactTriangles", IsCapCategory ); +DeclareCategory( "IsCategoryOfExactTriangles", IsCapCategory ); #! @Description #! The &GAP; category for exact triangles. #! @Arguments triangle #! @Returns true or false -DeclareCategory( "IsCapExactTriangle", IsCapCategoryObject ); +DeclareCategory( "IsCategoryOfExactTrianglesObject", IsCapCategoryObject ); #! @Description #! The &GAP; category for morphism of exact triangles #! @Arguments mu #! @Returns true or false -DeclareCategory( "IsCapExactTrianglesMorphism", IsCapCategoryMorphism ); +DeclareCategory( "IsCategoryOfExactTrianglesMorphism", IsCapCategoryMorphism ); ###### #! @Section Constructors @@ -40,7 +40,7 @@ DeclareAttribute( "CategoryOfExactTriangles", IsTriangulatedCategory ); #! The output is $\mathcal{T}$. #! @Arguments C #! @Returns a CAP category -DeclareAttribute( "UnderlyingCategory", IsCapCategoryOfExactTriangles ); +DeclareAttribute( "UnderlyingCategory", IsCategoryOfExactTriangles ); ###### @@ -58,7 +58,7 @@ DeclareOperation( "ExactTriangle", [ IsCapCategoryMorphism, IsCapCategoryMorphis #! The output is $\alpha:A\to B$. #! @Arguments t #! @Returns a morphism -DeclareAttribute( "DomainMorphism", IsCapExactTriangle ); +DeclareAttribute( "DomainMorphism", IsCategoryOfExactTrianglesObject ); #! @Description #! The arguments is an exact triangle defined by three morphisms @@ -66,7 +66,7 @@ DeclareAttribute( "DomainMorphism", IsCapExactTriangle ); #! The output is $\iota:B\to C$. #! @Arguments t #! @Returns a morphism -DeclareAttribute( "MorphismIntoConeObject", IsCapExactTriangle ); +DeclareAttribute( "MorphismIntoConeObject", IsCategoryOfExactTrianglesObject ); #! @Description #! The arguments is an exact triangle defined by three morphisms @@ -74,7 +74,7 @@ DeclareAttribute( "MorphismIntoConeObject", IsCapExactTriangle ); #! The output is $\pi:C\to\Sigma A$. #! @Arguments t #! @Returns a morphism -DeclareAttribute( "MorphismFromConeObject", IsCapExactTriangle ); +DeclareAttribute( "MorphismFromConeObject", IsCategoryOfExactTrianglesObject ); #! @Description #! The arguments is an exact triangle defined by three morphisms @@ -82,13 +82,13 @@ DeclareAttribute( "MorphismFromConeObject", IsCapExactTriangle ); #! The output is $A$ if $i=0$, $B$ if $i=1$, $C$ if $i=2$ and $\Sigma A$ if $i=3$. #! @Arguments t, i #! @Returns an object -KeyDependentOperation( "ObjectAt", IsCapExactTriangle, IsInt, ReturnTrue ); +KeyDependentOperation( "ObjectAt", IsCategoryOfExactTrianglesObject, IsInt, ReturnTrue ); #! @Description #! Delegates to the operation ObjectAt. #! @Arguments t, i #! @Returns an object -DeclareOperation( "\[\]", [ IsCapExactTriangle, IsInt ] ); +DeclareOperation( "\[\]", [ IsCategoryOfExactTrianglesObject, IsInt ] ); #! @Description #! The arguments is an exact triangle defined by three morphisms @@ -96,13 +96,13 @@ DeclareOperation( "\[\]", [ IsCapExactTriangle, IsInt ] ); #! The output is $\alpha$ if $i=0$, $\iota$ if $i=1$, $\pi$ if $i=2$. #! @Arguments t, i #! @Returns a morphism -KeyDependentOperation( "MorphismAt", IsCapExactTriangle, IsInt, ReturnTrue ); +KeyDependentOperation( "MorphismAt", IsCategoryOfExactTrianglesObject, IsInt, ReturnTrue ); #! @Description #! Delegates to the operation MorphismAt. #! @Arguments t, i #! @Returns a morphism -DeclareOperation( "\^", [ IsCapExactTriangle, IsInt ] ); +DeclareOperation( "\^", [ IsCategoryOfExactTrianglesObject, IsInt ] ); #! @Description #! The arguments is a morphism $\alpha:A\to B$ in some triangulated @@ -117,7 +117,7 @@ DeclareAttribute( "StandardExactTriangle", IsCapCategoryMorphism ); #! The output the standard exact triangle $(\alpha,\iota(\alpha),\pi(\alpha))$. #! @Arguments t #! @Returns an standard exact triangle -DeclareAttribute( "StandardExactTriangle", IsCapExactTriangle ); +DeclareAttribute( "StandardExactTriangle", IsCategoryOfExactTrianglesObject ); #! @Description #! The argument is an exact triangle $t=(\alpha,\iota,\pi)$. The operation checks whether $t$ is @@ -125,7 +125,7 @@ DeclareAttribute( "StandardExactTriangle", IsCapExactTriangle ); #! and $\pi=\pi(\alpha)$. #! @Arguments t #! @Returns true or false -DeclareProperty( "IsStandardExactTriangle", IsCapExactTriangle ); +DeclareProperty( "IsStandardExactTriangle", IsCategoryOfExactTrianglesObject ); #! @Description #! The argument is an exact triangle $t=(\alpha,\iota,\pi)$. @@ -133,7 +133,7 @@ DeclareProperty( "IsStandardExactTriangle", IsCapExactTriangle ); #! exact triangle $(\alpha,\iota(\alpha),\pi(\alpha))$. #! @Arguments t #! @Returns a morphism of triangles -DeclareAttribute( "WitnessIsomorphismIntoStandardExactTriangle", IsCapExactTriangle ); +DeclareAttribute( "WitnessIsomorphismIntoStandardExactTriangle", IsCategoryOfExactTrianglesObject ); #! @Description #! The argument is an exact triangle $t=(\alpha,\iota,\pi)$. @@ -143,7 +143,7 @@ DeclareAttribute( "WitnessIsomorphismIntoStandardExactTriangle", IsCapExactTrian #! the standard exact triangle. #! @Arguments t #! @Returns a morphism of triangles -DeclareAttribute( "WitnessIsomorphismFromStandardExactTriangle", IsCapExactTriangle ); +DeclareAttribute( "WitnessIsomorphismFromStandardExactTriangle", IsCategoryOfExactTrianglesObject ); #! @Description #! The arguments are an exact triangle $t_1$, three morphisms @@ -153,7 +153,7 @@ DeclareAttribute( "WitnessIsomorphismFromStandardExactTriangle", IsCapExactTrian #! @Arguments t_1, mu_0, mu_1, mu_2, t_2 #! @Returns a morphism $t_1\to t_2$ DeclareOperation( "MorphismOfExactTriangles", - [ IsCapExactTriangle, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapExactTriangle ] ); + [ IsCategoryOfExactTrianglesObject, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCategoryOfExactTrianglesObject ] ); #! @Description #! The arguments is a morphism $\mu:t_1\to t_2$ of exact triangles defined by three morphisms @@ -161,13 +161,13 @@ DeclareOperation( "MorphismOfExactTriangles", #! The output is $\mu_0$ if $i=0$, $\mu_1$ if $i=1$, $\mu_2$ if $i=2$. #! @Arguments phi, i #! @Returns a morphism -KeyDependentOperation( "MorphismAt", IsCapExactTrianglesMorphism, IsInt, ReturnTrue ); +KeyDependentOperation( "MorphismAt", IsCategoryOfExactTrianglesMorphism, IsInt, ReturnTrue ); #! @Description #! Delegates to the operation MorphismAt. #! @Arguments phi, i #! @Returns a morphism -DeclareOperation( "\[\]", [ IsCapExactTrianglesMorphism, IsInt ] ); +DeclareOperation( "\[\]", [ IsCategoryOfExactTrianglesMorphism, IsInt ] ); #! @Description #! The arguments are an exact triangle $t_1$, two morphisms $\mu_0:t_1[0]\to t_2[0]$, $\mu_1:t_1[1]\to t_2[1]$, @@ -176,7 +176,7 @@ DeclareOperation( "\[\]", [ IsCapExactTrianglesMorphism, IsInt ] ); #! @Arguments t_1, mu_0, mu_1, t_2 #! @Returns a morphism DeclareOperation( "MorphismBetweenConeObjects", - [ IsCapExactTriangle, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapExactTriangle ] ); + [ IsCategoryOfExactTrianglesObject, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCategoryOfExactTrianglesObject ] ); #! @Description #! The arguments are an exact triangle $t_1$, two morphisms $\mu_0:t_1[0]\to t_2[0]$, $\mu_1:t_1[1]\to t_2[1]$, @@ -185,7 +185,7 @@ DeclareOperation( "MorphismBetweenConeObjects", #! @Arguments t_1, mu_0, mu_1, t_2 #! @Returns a morphism DeclareOperation( "MorphismOfExactTriangles", - [ IsCapExactTriangle, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapExactTriangle ] ); + [ IsCategoryOfExactTrianglesObject, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCategoryOfExactTrianglesObject ] ); #! @Description #! The arguments are two morphisms $\alpha:A\to B$, $\beta:B\to C$. The output is the exact triangle @@ -208,7 +208,7 @@ DeclareOperation( "ExactTriangleByOctahedralAxiom", [ IsCapCategoryMorphism, IsC #! If $b$ = true then the operation will compute a witness isomorphism into the standard exact triangle. #! @Arguments t_1, t_2, b #! @Returns a triangle -DeclareOperation( "ExactTriangleByOctahedralAxiom", [ IsCapExactTriangle, IsCapExactTriangle, IsCapExactTriangle, IsBool ] ); +DeclareOperation( "ExactTriangleByOctahedralAxiom", [ IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject, IsBool ] ); #! @Description #! The arguments are three exact triangles $t_1,t_2,t_3$ such that $t_1[1]=t_2[0]$, @@ -216,14 +216,14 @@ DeclareOperation( "ExactTriangleByOctahedralAxiom", [ IsCapExactTriangle, IsCapE #! The output is the exact triangle defined by the Octahedral axiom. #! @Arguments t_1, t_2, t_3 #! @Returns a triangle -DeclareOperation( "ExactTriangleByOctahedralAxiom", [ IsCapExactTriangle, IsCapExactTriangle, IsCapExactTriangle ] ); +DeclareOperation( "ExactTriangleByOctahedralAxiom", [ IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject ] ); #! @Description #! The argument is an exact triangle $t=(\alpha,\iota,\pi)$. The output is the exact triangle #! defined by the rotation axiom, i.e., the exact triangle $(\iota,\pi,-\Sigma \alpha)$. #! @Arguments t #! @Returns a triangle -DeclareAttribute( "Rotation", IsCapExactTriangle ); +DeclareAttribute( "Rotation", IsCategoryOfExactTrianglesObject ); #! @Description #! The arguments are an exact triangle $t=(\alpha,\iota,\pi)$ and a boolian $b$. The output @@ -232,7 +232,7 @@ DeclareAttribute( "Rotation", IsCapExactTriangle ); #! the operation will compute a witness isomorphism into the standard exact triangle. #! @Arguments t, b #! @Returns a triangle -DeclareOperation( "Rotation", [ IsCapExactTriangle, IsBool ] ); +DeclareOperation( "Rotation", [ IsCategoryOfExactTrianglesObject, IsBool ] ); #! @Description #! The argument is an exact triangle $t=(\alpha,\iota,\pi)$. The output is the exact triangle @@ -243,7 +243,7 @@ DeclareOperation( "Rotation", [ IsCapExactTriangle, IsBool ] ); #! $C$ := Range$(\iota)$. #! @Arguments t #! @Returns a triangle -DeclareAttribute( "InverseRotation", IsCapExactTriangle ); +DeclareAttribute( "InverseRotation", IsCategoryOfExactTrianglesObject ); #! @Description #! The arguments are an exact triangle $t=(\alpha,\iota,\pi)$ and a boolian $b$. @@ -252,13 +252,13 @@ DeclareAttribute( "InverseRotation", IsCapExactTriangle ); #! the operation will compute a witness isomorphism into the standard exact triangle. #! @Arguments t, bool #! @Returns a triangle -DeclareOperation( "InverseRotation", [ IsCapExactTriangle, IsBool ] ); +DeclareOperation( "InverseRotation", [ IsCategoryOfExactTrianglesObject, IsBool ] ); if false then - KeyDependentOperation( "Shift", IsCapExactTriangle, IsInt, ReturnTrue ); - KeyDependentOperation( "Shift", IsCapExactTrianglesMorphism, IsInt, ReturnTrue ); + KeyDependentOperation( "Shift", IsCategoryOfExactTrianglesObject, IsInt, ReturnTrue ); + KeyDependentOperation( "Shift", IsCategoryOfExactTrianglesMorphism, IsInt, ReturnTrue ); fi; -DeclareOperation( "ViewExactTriangle", [ IsCapExactTriangle ] ); -DeclareOperation( "ViewMorphismOfExactTriangles", [ IsCapExactTrianglesMorphism ] ); +DeclareOperation( "ViewExactTriangle", [ IsCategoryOfExactTrianglesObject ] ); +DeclareOperation( "ViewMorphismOfExactTriangles", [ IsCategoryOfExactTrianglesMorphism ] ); diff --git a/TriangulatedCategories/gap/CategoryOfTriangles.gi b/TriangulatedCategories/gap/CategoryOfTriangles.gi index c1a83fb7..75883969 100644 --- a/TriangulatedCategories/gap/CategoryOfTriangles.gi +++ b/TriangulatedCategories/gap/CategoryOfTriangles.gi @@ -4,42 +4,7 @@ # Implementations # -############################### ## -## Representations -## -############################### - -DeclareRepresentation( "IsCapExactTriangleRep", - IsCapExactTriangle and IsAttributeStoringRep, - [ ] ); - -DeclareRepresentation( "IsCapExactTrianglesMorphismRep", - IsCapExactTrianglesMorphism and IsAttributeStoringRep, - [ ] ); - -############################## -## -## Family and type -## -############################## - -BindGlobal( "IsCapExactTrianglesMorphismsFamily", - NewFamily( "IsCapExactTrianglesMorphismsFamily", IsObject ) -); - -BindGlobal( "TheTypeCapExactTrianglesMorphism", - NewType( IsCapExactTrianglesMorphismsFamily, IsCapExactTrianglesMorphismRep ) -); - -BindGlobal( "IsCapExactTriangleFamily", - NewFamily( "IsCapExactTriangleFamily", IsObject ) -); - -BindGlobal( "TheTypeCapExactTriangle", - NewType( IsCapExactTriangleFamily, IsCapExactTriangleRep ) -); - InstallMethod( CategoryOfExactTriangles, [ IsTriangulatedCategory ], function( category ) @@ -57,22 +22,16 @@ InstallMethod( CategoryOfExactTriangles, fi; - triangles := CreateCapCategory( name ); + triangles := CreateCapCategory( name, IsCategoryOfExactTriangles, IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesMorphism, IsCapCategoryTwoCell ); triangles!.category_as_first_argument := false; - - SetUnderlyingCategory( triangles, category ); - SetFilterObj( triangles, IsCapCategoryOfExactTriangles ); - - AddObjectRepresentation( triangles, IsCapExactTriangleRep ); - - AddMorphismRepresentation( triangles, IsCapExactTrianglesMorphismRep ); + SetUnderlyingCategory( triangles, category ); AddIsEqualForCacheForObjects( triangles, IsIdenticalObj ); AddIsEqualForCacheForMorphisms( triangles, IsIdenticalObj ); - + AddIsEqualForObjects( triangles, function( triangle_1, triangle_2 ) return IsEqualForObjects( triangle_1[ 0 ], triangle_2[ 0 ] ) and @@ -409,7 +368,7 @@ end ); ## InstallMethod( MorphismOfExactTriangles, - [ IsCapExactTriangle, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCategoryOfExactTrianglesObject ], function( s, mu_0, mu_1, mu_2, r ) local triangles, mu; @@ -425,7 +384,7 @@ end ); ## InstallMethod( MorphismAtOp, - [ IsCapExactTriangle, IsInt ], + [ IsCategoryOfExactTrianglesObject, IsInt ], function( triangle, i ) if i = 0 then @@ -450,7 +409,7 @@ end ); ## InstallMethod( ObjectAtOp, - [ IsCapExactTriangle, IsInt ], + [ IsCategoryOfExactTrianglesObject, IsInt ], function( triangle, i ) if i < 0 or i > 3 then @@ -471,7 +430,7 @@ end ); ## InstallMethod( MorphismAtOp, - [ IsCapExactTrianglesMorphism, IsInt ], + [ IsCategoryOfExactTrianglesMorphism, IsInt ], function( mu, i ) if i < 0 or i > 3 then @@ -492,7 +451,7 @@ end ); ## InstallMethod( \^, - [ IsCapExactTriangle, IsInt ], + [ IsCategoryOfExactTrianglesObject, IsInt ], function( triangle, i ) return MorphismAt( triangle, i ); @@ -501,7 +460,7 @@ end ); ## InstallMethod( \[\], - [ IsCapExactTriangle, IsInt ], + [ IsCategoryOfExactTrianglesObject, IsInt ], function( triangle, i ) return ObjectAt( triangle, i ); @@ -510,7 +469,7 @@ end ); ## InstallMethod( \[\], - [ IsCapExactTrianglesMorphism, IsInt ], + [ IsCategoryOfExactTrianglesMorphism, IsInt ], function( mu, i ) return MorphismAt( mu, i ); @@ -519,26 +478,26 @@ end ); ## InstallMethod( IsStandardExactTriangle, - [ IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject ], triangle -> IsEqualForObjects( triangle, StandardExactTriangle( triangle ^ 0 ) ) ); ## InstallMethod( StandardExactTriangle, - [ IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject ], triangle -> StandardExactTriangle( triangle ^ 0 ) ); ## InstallMethod( Rotation, - [ IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject ], triangle -> Rotation( triangle, false ) ); ## InstallMethod( ShiftOp, - [ IsCapExactTriangle, IsInt ], + [ IsCategoryOfExactTrianglesObject, IsInt ], function( t, n ) local shift_t, st, shift_st, w; @@ -605,7 +564,7 @@ end ); ## InstallMethod( ShiftOp, - [ IsCapExactTrianglesMorphism, IsInt ], + [ IsCategoryOfExactTrianglesMorphism, IsInt ], function( mu, n ) return MorphismOfExactTriangles( Shift( Source( mu ), n ), @@ -621,7 +580,7 @@ end ); ## B ---> C ---> Σ A ---> Σ B ## InstallMethod( Rotation, - [ IsCapExactTriangle, IsBool ], + [ IsCategoryOfExactTrianglesObject, IsBool ], function( triangle, bool ) local rotation, st_rotation, i, st_triangle, w_1, v_1; @@ -677,13 +636,13 @@ end ); ## Σ^-1 C ---> A ---> B ---> Σ Σ^-1 C ## InstallMethod( InverseRotation, - [ IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject ], triangle -> InverseRotation( triangle, false ) ); ## InstallMethod( InverseRotation, - [ IsCapExactTriangle, IsBool ], + [ IsCategoryOfExactTrianglesObject, IsBool ], function( t, bool ) local rotation, st_rotation, i, st_t, w_1, v_1; @@ -753,7 +712,7 @@ end ); ## InstallMethod( WitnessIsomorphismIntoStandardExactTriangle, - [ IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject ], function( t ) local cat, st_t, i; @@ -810,7 +769,7 @@ end ); ## InstallMethod( WitnessIsomorphismFromStandardExactTriangle, - [ IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject ], function( t ) local cat, st_t, i; @@ -842,7 +801,7 @@ end ); ## InstallMethod( MorphismBetweenConeObjects, - [ IsCapExactTriangle, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCategoryOfExactTrianglesObject ], function( t_1, mu_0, mu_1, t_2 ) local st_t_1, st_t_2, i_1, j_1, i_2, j_2, u, v, w; @@ -875,7 +834,7 @@ end ); ## InstallMethod( MorphismOfExactTriangles, - [ IsCapExactTriangle, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject, IsCapCategoryMorphism, IsCapCategoryMorphism, IsCategoryOfExactTrianglesObject ], function( t_1, mu_0, mu_1, t_2 ) local mu_2; @@ -887,13 +846,13 @@ end ); ## InstallMethod( ExactTriangleByOctahedralAxiom, - [ IsCapExactTriangle, IsCapExactTriangle, IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject ], { t_1, t_2, t_3 } -> ExactTriangleByOctahedralAxiom( t_1, t_2, t_3, false ) ); ## InstallMethod( ExactTriangleByOctahedralAxiom, - [ IsCapExactTriangle, IsCapExactTriangle, IsCapExactTriangle, IsBool ], + [ IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject, IsBool ], function( t_1, t_2, t_3, bool ) local i_1, j_1, i_2, j_2, i_3, j_3, t, alpha, iota, pi, triangle, u, v, w, i; @@ -957,7 +916,7 @@ end ); ## InstallMethod( ExactTriangleByOctahedralAxiom, - [ IsCapExactTriangle, IsCapExactTriangle, IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject, IsCategoryOfExactTrianglesObject ], { t_1, t_2, t_3 } -> ExactTriangleByOctahedralAxiom( t_1, t_2, t_3, false ) ); @@ -969,7 +928,7 @@ InstallMethod( ExactTriangleByOctahedralAxiom, ## InstallMethod( ViewExactTriangle, - [ IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject ], function( T ) Print( " T ^ 0 T ^ 1 T ^ 2 \n" ); @@ -1001,7 +960,7 @@ end ); ## InstallMethod( ViewMorphismOfExactTriangles, - [ IsCapExactTrianglesMorphism ], + [ IsCategoryOfExactTrianglesMorphism ], function( mu ) Print( "A morphism of exact triangles\n\n" ); Print( "T[0] ------> T[1] ------> T[2] ------> Σ( T[0] ) \n" ); @@ -1026,7 +985,7 @@ end ); ## InstallMethod( Display, - [ IsCapExactTriangle ], + [ IsCategoryOfExactTrianglesObject ], function( T ) Print( " T ^ 0 T ^ 1 T ^ 2 \n" ); @@ -1057,7 +1016,7 @@ end ); ## InstallMethod( Display, - [ IsCapExactTrianglesMorphism ], + [ IsCategoryOfExactTrianglesMorphism ], function( mu ) Print( "A morphism of exact triangles\n\n" ); Print( "T[0] ------> T[1] ------> T[2] ------> Σ( T[0] ) \n" ); diff --git a/TriangulatedCategories/gap/Functors.gd b/TriangulatedCategories/gap/Functors.gd index b9fd4f9a..380a65bc 100644 --- a/TriangulatedCategories/gap/Functors.gd +++ b/TriangulatedCategories/gap/Functors.gd @@ -80,7 +80,7 @@ DeclareAttribute( "ExtendFunctorToCategoryOfTriangles", IsCapFunctor ); #! witnesses when applied on objects. #! @Arguments T, b #! @Returns an endofunctor $T\to T$ -KeyDependentOperation( "RotationFunctor", IsCapCategoryOfExactTriangles, IsBool, ReturnTrue ); +KeyDependentOperation( "RotationFunctor", IsCategoryOfExactTriangles, IsBool, ReturnTrue ); #! @Description #! The arguments are a category of exact triangles $T$ of some triangulated category and a boolian $b$. @@ -88,5 +88,5 @@ KeyDependentOperation( "RotationFunctor", IsCapCategoryOfExactTriangles, IsBool, #! witnesses when applied on objects. #! @Arguments T, b #! @Returns an endofunctor $T\to T$ -KeyDependentOperation( "InverseRotationFunctor", IsCapCategoryOfExactTriangles, IsBool, ReturnTrue ); +KeyDependentOperation( "InverseRotationFunctor", IsCategoryOfExactTriangles, IsBool, ReturnTrue ); diff --git a/TriangulatedCategories/gap/Functors.gi b/TriangulatedCategories/gap/Functors.gi index d374c712..dbb91cd5 100644 --- a/TriangulatedCategories/gap/Functors.gi +++ b/TriangulatedCategories/gap/Functors.gi @@ -200,7 +200,7 @@ end ); ## InstallMethod( RotationFunctorOp, - [ IsCapCategoryOfExactTriangles, IsBool ], + [ IsCategoryOfExactTriangles, IsBool ], function( triangles, bool ) local name, rot; @@ -222,7 +222,7 @@ end ); ## InstallMethod( InverseRotationFunctorOp, - [ IsCapCategoryOfExactTriangles, IsBool ], + [ IsCategoryOfExactTriangles, IsBool ], function( triangles, bool ) local name, rot;