Skip to content

Commit ff052e7

Browse files
AddDerivationToCAP( MorphismFromCoimageToImageWithGivenObjects, ... )
1 parent 765d5d3 commit ff052e7

File tree

3 files changed

+35
-83
lines changed

3 files changed

+35
-83
lines changed

CAP/gap/DerivedMethods.autogen.gi

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,18 +1050,16 @@ end : CategoryFilter := IsCapCategory,
10501050

10511051
##
10521052
AddDerivationToCAP( MorphismFromCoimageToImageWithGivenObjects,
1053-
"dualizing the derivation of MorphismFromCoimageToImageWithGivenObjects by MorphismFromCoimageToImageWithGivenObjects using that images are given by kernels of cokernels",
1053+
"dualizing the derivation of MorphismFromCoimageToImageWithGivenObjects by MorphismFromCoimageToImageWithGivenObjects using that the image embedding lifts the coimage astriction",
10541054
[
1055-
[ KernelEmbedding, 1 ],
1056-
[ CokernelColift, 1 ],
1055+
[ CoimageProjectionWithGivenCoimageObject, 1 ],
10571056
[ CoastrictionToImageWithGivenImageObject, 1 ],
1058-
[ PostCompose, 1 ],
1059-
[ IsomorphismFromCoimageToCokernelOfKernel, 1 ],
1057+
[ ColiftAlongEpimorphism, 1 ],
10601058
],
10611059

10621060
function ( cat_1, C_1, alpha_1, I_1 )
1063-
return PostCompose( cat_1, CokernelColift( cat_1, KernelEmbedding( cat_1, alpha_1 ), I_1, CoastrictionToImageWithGivenImageObject( cat_1, alpha_1, I_1 ) ), IsomorphismFromCoimageToCokernelOfKernel( cat_1, alpha_1 ) );
1064-
end : CategoryFilter := IsPreAbelianCategory,
1061+
return ColiftAlongEpimorphism( cat_1, CoimageProjectionWithGivenCoimageObject( cat_1, alpha_1, C_1 ), CoastrictionToImageWithGivenImageObject( cat_1, alpha_1, I_1 ) );
1062+
end : CategoryFilter := IsCapCategory,
10651063
Weight := 1,
10661064
is_autogenerated_by_CompilerForCAP := true );
10671065

CAP/gap/DerivedMethods.gi

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2939,23 +2939,18 @@ AddFinalDerivationBundle( "IsomorphismFromImageObjectToKernelOfCokernel as the i
29392939

29402940
##
29412941
AddDerivationToCAP( MorphismFromCoimageToImageWithGivenObjects,
2942-
"MorphismFromCoimageToImageWithGivenObjects using that images are given by kernels of cokernels",
2943-
[ [ CokernelProjection, 1 ],
2944-
[ KernelLift, 1 ],
2942+
"MorphismFromCoimageToImageWithGivenObjects using that the image embedding lifts the coimage astriction",
2943+
[ [ ImageEmbeddingWithGivenImageObject, 1 ],
29452944
[ AstrictionToCoimageWithGivenCoimageObject, 1 ],
2946-
[ PreCompose, 1 ],
2947-
[ IsomorphismFromKernelOfCokernelToImageObject, 1 ] ],
2945+
[ LiftAlongMonomorphism, 1 ] ],
29482946

29492947
function( cat, coimage, morphism, image )
2950-
local cokernel_projection, kernel_lift;
2951-
2952-
cokernel_projection := CokernelProjection( cat, morphism );
2953-
2954-
kernel_lift := KernelLift( cat, cokernel_projection, coimage, AstrictionToCoimageWithGivenCoimageObject( cat, morphism, coimage ) );
29552948

2956-
return PreCompose( cat, kernel_lift, IsomorphismFromKernelOfCokernelToImageObject( cat, morphism ) );
2949+
return LiftAlongMonomorphism( cat,
2950+
ImageEmbeddingWithGivenImageObject( cat, morphism, image ),
2951+
AstrictionToCoimageWithGivenCoimageObject( cat, morphism, coimage ) );
29572952

2958-
end : CategoryFilter := IsPreAbelianCategory );
2953+
end );
29592954

29602955
##
29612956
AddDerivationToCAP( InverseOfMorphismFromCoimageToImageWithGivenObjects,

LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategory_precompiled.gi

Lines changed: 23 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -4154,28 +4154,24 @@ end
41544154

41554155
########
41564156
function ( cat_1, alpha_1 )
4157-
local morphism_attr_1_1, deduped_2_1, deduped_3_1, deduped_4_1;
4158-
deduped_4_1 := UnderlyingRing( cat_1 );
4159-
deduped_3_1 := AsHomalgMatrix( alpha_1 );
4160-
deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) );
4161-
morphism_attr_1_1 := UniqueRightDivide( HomalgIdentityMatrix( RowRankOfMatrix( deduped_3_1 ), deduped_4_1 ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_2_1 ), deduped_4_1 ), UniqueRightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) ) );
4157+
local morphism_attr_1_1, deduped_2_1;
4158+
deduped_2_1 := AsHomalgMatrix( alpha_1 );
4159+
morphism_attr_1_1 := UniqueRightDivide( HomalgIdentityMatrix( RowRankOfMatrix( deduped_2_1 ), UnderlyingRing( cat_1 ) ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_2_1 ), deduped_2_1 ), BasisOfRows( deduped_2_1 ) ) );
41624160
return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, AsCapCategoryObject( cat_1, NumberColumns( morphism_attr_1_1 ) ) );
41634161
end
41644162
########
41654163

4166-
, 1811 : IsPrecompiledDerivation := true );
4164+
, 805 : IsPrecompiledDerivation := true );
41674165

41684166
##
41694167
cat!.cached_precompiled_functions.InverseOfMorphismFromCoimageToImage :=
41704168

41714169
########
41724170
function ( cat_1, alpha_1 )
4173-
local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1;
4174-
deduped_4_1 := UnderlyingRing( cat_1 );
4175-
deduped_3_1 := AsHomalgMatrix( alpha_1 );
4176-
deduped_2_1 := RowRankOfMatrix( deduped_3_1 );
4177-
deduped_1_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) );
4178-
return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_2_1 ), UniqueRightDivide( HomalgIdentityMatrix( deduped_2_1, deduped_4_1 ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_1_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_1_1 ), deduped_4_1 ), UniqueRightDivide( BasisOfRows( deduped_3_1 ), deduped_1_1 ) ) ), AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_3_1 ) ) );
4171+
local deduped_1_1, deduped_2_1;
4172+
deduped_2_1 := AsHomalgMatrix( alpha_1 );
4173+
deduped_1_1 := RowRankOfMatrix( deduped_2_1 );
4174+
return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_1_1 ), UniqueRightDivide( HomalgIdentityMatrix( deduped_1_1, UnderlyingRing( cat_1 ) ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_2_1 ), deduped_2_1 ), BasisOfRows( deduped_2_1 ) ) ), AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_2_1 ) ) );
41794175
end
41804176
########
41814177

@@ -4186,32 +4182,13 @@ end
41864182

41874183
########
41884184
function ( cat_1, I_1, alpha_1, C_1 )
4189-
local morphism_attr_1_1, deduped_2_1, deduped_3_1, deduped_4_1;
4190-
deduped_4_1 := UnderlyingRing( cat_1 );
4191-
deduped_3_1 := AsHomalgMatrix( alpha_1 );
4192-
deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) );
4193-
morphism_attr_1_1 := UniqueRightDivide( HomalgIdentityMatrix( RowRankOfMatrix( deduped_3_1 ), deduped_4_1 ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_2_1 ), deduped_4_1 ), UniqueRightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) ) );
4194-
return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, C_1 );
4195-
end
4196-
########
4197-
4198-
, 1610 : IsPrecompiledDerivation := true );
4199-
4200-
##
4201-
cat!.cached_precompiled_functions.InverseOfMorphismFromCoimageToImageWithGivenObjects :=
4202-
4203-
########
4204-
function ( cat_1, I_1, alpha_1, C_1 )
4205-
local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1;
4206-
deduped_4_1 := UnderlyingRing( cat_1 );
4207-
deduped_3_1 := AsHomalgMatrix( alpha_1 );
4208-
deduped_2_1 := RowRankOfMatrix( deduped_3_1 );
4209-
deduped_1_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) );
4210-
return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_2_1 ), UniqueRightDivide( HomalgIdentityMatrix( deduped_2_1, deduped_4_1 ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_1_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_1_1 ), deduped_4_1 ), UniqueRightDivide( BasisOfRows( deduped_3_1 ), deduped_1_1 ) ) ), C_1 );
4185+
local deduped_1_1;
4186+
deduped_1_1 := AsHomalgMatrix( alpha_1 );
4187+
return AsCapCategoryMorphism( cat_1, I_1, UniqueRightDivide( HomalgIdentityMatrix( AsInteger( I_1 ), UnderlyingRing( cat_1 ) ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_1_1 ), deduped_1_1 ), BasisOfRows( deduped_1_1 ) ) ), C_1 );
42114188
end
42124189
########
42134190

4214-
;
4191+
, 604 : IsPrecompiledDerivation := true );
42154192

42164193
##
42174194
AddIsAutomorphism( cat,
@@ -7094,25 +7071,23 @@ end
70947071

70957072
########
70967073
function ( cat_1, alpha_1 )
7097-
local morphism_attr_1_1, deduped_2_1, deduped_3_1;
7098-
deduped_3_1 := AsHomalgMatrix( alpha_1 );
7099-
deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) );
7100-
morphism_attr_1_1 := UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_2_1 ), UnderlyingRing( cat_1 ) ), UniqueRightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) );
7074+
local morphism_attr_1_1, deduped_2_1;
7075+
deduped_2_1 := AsHomalgMatrix( alpha_1 );
7076+
morphism_attr_1_1 := UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_2_1 ), deduped_2_1 ), BasisOfRows( deduped_2_1 ) );
71017077
return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, AsCapCategoryObject( cat_1, NumberColumns( morphism_attr_1_1 ) ) );
71027078
end
71037079
########
71047080

7105-
, 1609 : IsPrecompiledDerivation := true );
7081+
, 603 : IsPrecompiledDerivation := true );
71067082

71077083
##
71087084
cat!.cached_precompiled_functions.MorphismFromCoimageToImage :=
71097085

71107086
########
71117087
function ( cat_1, alpha_1 )
7112-
local deduped_1_1, deduped_2_1;
7113-
deduped_2_1 := AsHomalgMatrix( alpha_1 );
7114-
deduped_1_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_2_1 ) );
7115-
return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_2_1 ) ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_2_1 ), deduped_2_1 ), deduped_1_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_1_1 ), UnderlyingRing( cat_1 ) ), UniqueRightDivide( BasisOfRows( deduped_2_1 ), deduped_1_1 ) ), AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_2_1 ) ) );
7088+
local deduped_1_1;
7089+
deduped_1_1 := AsHomalgMatrix( alpha_1 );
7090+
return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_1_1 ) ), UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_1_1 ), deduped_1_1 ), BasisOfRows( deduped_1_1 ) ), AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_1_1 ) ) );
71167091
end
71177092
########
71187093

@@ -7123,29 +7098,13 @@ end
71237098

71247099
########
71257100
function ( cat_1, C_1, alpha_1, I_1 )
7126-
local morphism_attr_1_1, deduped_2_1, deduped_3_1;
7127-
deduped_3_1 := AsHomalgMatrix( alpha_1 );
7128-
deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) );
7129-
morphism_attr_1_1 := UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_3_1 ), deduped_3_1 ), deduped_2_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_2_1 ), UnderlyingRing( cat_1 ) ), UniqueRightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) );
7130-
return AsCapCategoryMorphism( cat_1, C_1, morphism_attr_1_1, AsCapCategoryObject( cat_1, NumberColumns( morphism_attr_1_1 ) ) );
7131-
end
7132-
########
7133-
7134-
, 1408 : IsPrecompiledDerivation := true );
7135-
7136-
##
7137-
cat!.cached_precompiled_functions.MorphismFromCoimageToImageWithGivenObjects :=
7138-
7139-
########
7140-
function ( cat_1, C_1, alpha_1, I_1 )
7141-
local deduped_1_1, deduped_2_1;
7142-
deduped_2_1 := AsHomalgMatrix( alpha_1 );
7143-
deduped_1_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_2_1 ) );
7144-
return AsCapCategoryMorphism( cat_1, C_1, UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_2_1 ), deduped_2_1 ), deduped_1_1 ) * UniqueRightDivide( HomalgIdentityMatrix( NumberRows( deduped_1_1 ), UnderlyingRing( cat_1 ) ), UniqueRightDivide( BasisOfRows( deduped_2_1 ), deduped_1_1 ) ), AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_2_1 ) ) );
7101+
local deduped_1_1;
7102+
deduped_1_1 := AsHomalgMatrix( alpha_1 );
7103+
return AsCapCategoryMorphism( cat_1, C_1, UniqueRightDivide( UniqueLeftDivide( BasisOfColumns( deduped_1_1 ), deduped_1_1 ), BasisOfRows( deduped_1_1 ) ), I_1 );
71457104
end
71467105
########
71477106

7148-
;
7107+
, 402 : IsPrecompiledDerivation := true );
71497108

71507109
##
71517110
AddMorphismFromEqualizerToSink( cat,

0 commit comments

Comments
 (0)