From 1df67dcc594d9ed6969c0f91e6148a903567e5f7 Mon Sep 17 00:00:00 2001 From: Fabian Zickgraf Date: Thu, 17 Oct 2024 14:35:46 +0200 Subject: [PATCH 1/3] Avoid unnecessary replacements in CapJitReplacedSourceAndRangeAttributes --- CompilerForCAP/examples/LinearAlgebraForCAP.g | 8 +- CompilerForCAP/gap/CompilerHints.gi | 235 +++++++++--------- .../CAP_JIT_INTERNAL_TELESCOPED_ITERATION.tst | 11 +- ...CapJitReplacedSourceAndRangeAttributes.tst | 18 +- .../tst/StopCompilationAtCategory.tst | 20 +- ...ategoryOfRows_ArbitraryRing_precompiled.gi | 42 ++-- ...egoryOfRows_CommutativeRing_precompiled.gi | 42 ++-- ...posite_CategoryOfRows_Field_precompiled.gi | 54 ++-- ...HomalgExteriorRingOverField_precompiled.gi | 42 ++-- ...ingAsCategory_ArbitraryRing_precompiled.gi | 42 ++-- ...gAsCategory_CommutativeRing_precompiled.gi | 42 ++-- ...losure_RingAsCategory_Field_precompiled.gi | 42 ++-- ...HomalgExteriorRingOverField_precompiled.gi | 42 ++-- .../MatrixCategory_precompiled.gi | 199 +++++++-------- .../Opposite_MatrixCategory_precompiled.gi | 12 +- 15 files changed, 421 insertions(+), 430 deletions(-) diff --git a/CompilerForCAP/examples/LinearAlgebraForCAP.g b/CompilerForCAP/examples/LinearAlgebraForCAP.g index f2f1b9cc77..92ac6fd0a2 100644 --- a/CompilerForCAP/examples/LinearAlgebraForCAP.g +++ b/CompilerForCAP/examples/LinearAlgebraForCAP.g @@ -57,12 +57,12 @@ Display( ENHANCED_SYNTAX_TREE_CODE( CAP_JIT_INTERNAL_POST_PROCESSED_TREE( vec ) ) ); #! function ( cat_1, alpha_1 ) -#! local morphism_attr_1_1; -#! morphism_attr_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); +#! local deduped_1_1; +#! deduped_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); #! return #! AsCapCategoryMorphism( cat_1, -#! AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), -#! morphism_attr_1_1, Source( alpha_1 ) ); +#! AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ), deduped_1_1, +#! Source( alpha_1 ) ); #! end #! @EndExample diff --git a/CompilerForCAP/gap/CompilerHints.gi b/CompilerForCAP/gap/CompilerHints.gi index b85d6e7686..b0bfb612c8 100644 --- a/CompilerForCAP/gap/CompilerHints.gi +++ b/CompilerForCAP/gap/CompilerHints.gi @@ -22,7 +22,7 @@ InstallGlobalFunction( CapJitReplacedSourceAndRangeAttributes, function ( tree, tree := StructuralCopy( tree ); pre_func := function ( tree, func_stack ) - local func, args, category, object_attribute_name, morphism_attribute_name, source_attribute_getter_name, range_attribute_getter_name, source, range, morphism_attribute_position, morphism_attribute_value_position, id, new_variable_name, source_attribute_position, range_attribute_position; + local func, args, category, object_attribute_name, morphism_attribute_name, source_attribute_getter_name, range_attribute_getter_name, source, range, morphism_attribute_position, morphism_attribute_value_position, source_attribute_value_position, source_attribute_position, range_attribute_value_position, range_attribute_position, source_attribute_value, range_attribute_value, id, new_variable_name; func := Last( func_stack ); @@ -77,146 +77,151 @@ InstallGlobalFunction( CapJitReplacedSourceAndRangeAttributes, function ( tree, fi; - # check if either Source or Range are constructed inplace - if CapJitIsCallToGlobalFunction( source, gvar -> gvar in [ "CreateCapCategoryObjectWithAttributes", "AsCapCategoryObject" ] ) or CapJitIsCallToGlobalFunction( range, gvar -> gvar in [ "CreateCapCategoryObjectWithAttributes", "AsCapCategoryObject" ] ) then + # check if Source and/or Range are constructed inplace + + source_attribute_value_position := fail; + + if CapJitIsCallToGlobalFunction( source, "CreateCapCategoryObjectWithAttributes" ) then - id := CapJitGetNextUnusedVariableID( func ); + source_attribute_position := PositionProperty( source.args, x -> x.type = "EXPR_REF_GVAR" and x.gvar = object_attribute_name ); - new_variable_name := Concatenation( "morphism_attr_", String( id ) ); + if source_attribute_position = fail then + + # COVERAGE_IGNORE_NEXT_LINE + Error( "cannot find source attribute" ); + + fi; - func.nams := Concatenation( func.nams, [ new_variable_name ] ); + Assert( 0, IsEvenInt( source_attribute_position ) and source_attribute_position > 1 and source_attribute_position < source.args.length ); - Assert( 0, IsDuplicateFreeList( func.nams ) ); + source_attribute_value_position := source_attribute_position + 1; - CapJitAddBinding( func.bindings, new_variable_name, args.(morphism_attribute_value_position) ); + elif CapJitIsCallToGlobalFunction( source, "AsCapCategoryObject" ) then - args.(morphism_attribute_value_position) := rec( - type := "EXPR_REF_FVAR", - func_id := func.id, - name := new_variable_name, - ); + Assert( 0, object_attribute_name = category!.object_attribute_name ); + Assert( 0, source.args.length = 2 ); - if CapJitIsCallToGlobalFunction( source, "CreateCapCategoryObjectWithAttributes" ) then - - source_attribute_position := PositionProperty( source.args, x -> x.type = "EXPR_REF_GVAR" and x.gvar = object_attribute_name ); - - if source_attribute_position = fail then - - # COVERAGE_IGNORE_NEXT_LINE - Error( "cannot find source attribute" ); - - fi; - - Assert( 0, IsEvenInt( source_attribute_position ) and source_attribute_position > 1 and source_attribute_position < source.args.length ); + source_attribute_value_position := 2; + + fi; + + range_attribute_value_position := fail; + + if CapJitIsCallToGlobalFunction( range, "CreateCapCategoryObjectWithAttributes" ) then + + range_attribute_position := PositionProperty( range.args, x -> x.type = "EXPR_REF_GVAR" and x.gvar = object_attribute_name ); + + if range_attribute_position = fail then - # ignore simple expression, e.g. integers - if not source.args.(source_attribute_position + 1).type in [ "EXPR_INT", "EXPR_STRING", "EXPR_CHAR", "EXPR_TRUE", "EXPR_FALSE", "EXPR_REF_GVAR" ] then - - source.args.(source_attribute_position + 1) := rec( - type := "EXPR_FUNCCALL", - funcref := rec( - type := "EXPR_REF_GVAR", - gvar := source_attribute_getter_name, - ), - args := AsSyntaxTreeList( [ - rec( - type := "EXPR_REF_FVAR", - func_id := func.id, - name := new_variable_name, - ), - ] ), - ); - - fi; + # COVERAGE_IGNORE_NEXT_LINE + Error( "cannot find range attribute" ); fi; - if CapJitIsCallToGlobalFunction( source, "AsCapCategoryObject" ) then + Assert( 0, IsEvenInt( range_attribute_position ) and range_attribute_position > 1 and range_attribute_position < range.args.length ); + + range_attribute_value_position := range_attribute_position + 1; + + elif CapJitIsCallToGlobalFunction( range, "AsCapCategoryObject" ) then + + Assert( 0, object_attribute_name = category!.object_attribute_name ); + Assert( 0, range.args.length = 2 ); + + range_attribute_value_position := 2; + + fi; + + # exclude the cases that Source and/or Range are simple expressions (e.g. integers) or are already constructed from the morphism datum + + if source_attribute_value_position <> fail then + + source_attribute_value := source.args.(source_attribute_value_position); + + if source_attribute_value.type in [ "EXPR_INT", "EXPR_STRING", "EXPR_CHAR", "EXPR_TRUE", "EXPR_FALSE", "EXPR_REF_GVAR" ] then - Assert( 0, object_attribute_name = category!.object_attribute_name ); - Assert( 0, source.args.length = 2 ); + source_attribute_value_position := fail; - # ignore simple expression, e.g. integers - if not source.args.2.type in [ "EXPR_INT", "EXPR_STRING", "EXPR_CHAR", "EXPR_TRUE", "EXPR_FALSE", "EXPR_REF_GVAR" ] then - - source.args.2 := rec( - type := "EXPR_FUNCCALL", - funcref := rec( - type := "EXPR_REF_GVAR", - gvar := source_attribute_getter_name, - ), - args := AsSyntaxTreeList( [ - rec( - type := "EXPR_REF_FVAR", - func_id := func.id, - name := new_variable_name, - ), - ] ), - ); - - fi; + elif CapJitIsCallToGlobalFunction( source_attribute_value, source_attribute_getter_name ) and + source_attribute_value.args.length = 1 and + CapJitIsEqualForEnhancedSyntaxTrees( source_attribute_value.args.1, args.(morphism_attribute_value_position) ) then + + source_attribute_value_position := fail; fi; - if CapJitIsCallToGlobalFunction( range, "CreateCapCategoryObjectWithAttributes" ) then + fi; + + if range_attribute_value_position <> fail then + + range_attribute_value := range.args.(range_attribute_value_position); + + if range_attribute_value.type in [ "EXPR_INT", "EXPR_STRING", "EXPR_CHAR", "EXPR_TRUE", "EXPR_FALSE", "EXPR_REF_GVAR" ] then - range_attribute_position := PositionProperty( range.args, x -> x.type = "EXPR_REF_GVAR" and x.gvar = object_attribute_name ); + range_attribute_value_position := fail; - if range_attribute_position = fail then - - # COVERAGE_IGNORE_NEXT_LINE - Error( "cannot find range attribute" ); - - fi; + elif CapJitIsCallToGlobalFunction( range_attribute_value, range_attribute_getter_name ) and + range_attribute_value.args.length = 1 and + CapJitIsEqualForEnhancedSyntaxTrees( range_attribute_value.args.1, args.(morphism_attribute_value_position) ) then - Assert( 0, IsEvenInt( range_attribute_position ) and range_attribute_position > 1 and range_attribute_position < range.args.length ); + range_attribute_value_position := fail; - # ignore simple expression, e.g. integers - if not range.args.(range_attribute_position + 1).type in [ "EXPR_INT", "EXPR_STRING", "EXPR_CHAR", "EXPR_TRUE", "EXPR_FALSE", "EXPR_REF_GVAR" ] then - - range.args.(range_attribute_position + 1) := rec( - type := "EXPR_FUNCCALL", - funcref := rec( - type := "EXPR_REF_GVAR", - gvar := range_attribute_getter_name, + fi; + + fi; + + if source_attribute_value_position <> fail or range_attribute_value_position <> fail then + + id := CapJitGetNextUnusedVariableID( func ); + + new_variable_name := Concatenation( "morphism_attr_", String( id ) ); + + func.nams := Concatenation( func.nams, [ new_variable_name ] ); + + Assert( 0, IsDuplicateFreeList( func.nams ) ); + + CapJitAddBinding( func.bindings, new_variable_name, args.(morphism_attribute_value_position) ); + + args.(morphism_attribute_value_position) := rec( + type := "EXPR_REF_FVAR", + func_id := func.id, + name := new_variable_name, + ); + + if source_attribute_value_position <> fail then + + source.args.(source_attribute_value_position) := rec( + type := "EXPR_FUNCCALL", + funcref := rec( + type := "EXPR_REF_GVAR", + gvar := source_attribute_getter_name, + ), + args := AsSyntaxTreeList( [ + rec( + type := "EXPR_REF_FVAR", + func_id := func.id, + name := new_variable_name, ), - args := AsSyntaxTreeList( [ - rec( - type := "EXPR_REF_FVAR", - func_id := func.id, - name := new_variable_name, - ), - ] ), - ); - - fi; + ] ), + ); fi; - if CapJitIsCallToGlobalFunction( range, "AsCapCategoryObject" ) then - - Assert( 0, object_attribute_name = category!.object_attribute_name ); - Assert( 0, range.args.length = 2 ); + if range_attribute_value_position <> fail then - # ignore simple expression, e.g. integers - if not range.args.2.type in [ "EXPR_INT", "EXPR_STRING", "EXPR_CHAR", "EXPR_TRUE", "EXPR_FALSE", "EXPR_REF_GVAR" ] then - - range.args.2 := rec( - type := "EXPR_FUNCCALL", - funcref := rec( - type := "EXPR_REF_GVAR", - gvar := range_attribute_getter_name, + range.args.(range_attribute_value_position) := rec( + type := "EXPR_FUNCCALL", + funcref := rec( + type := "EXPR_REF_GVAR", + gvar := range_attribute_getter_name, + ), + args := AsSyntaxTreeList( [ + rec( + type := "EXPR_REF_FVAR", + func_id := func.id, + name := new_variable_name, ), - args := AsSyntaxTreeList( [ - rec( - type := "EXPR_REF_FVAR", - func_id := func.id, - name := new_variable_name, - ), - ] ), - ); - - fi; + ] ), + ); fi; diff --git a/CompilerForCAP/tst/CAP_JIT_INTERNAL_TELESCOPED_ITERATION.tst b/CompilerForCAP/tst/CAP_JIT_INTERNAL_TELESCOPED_ITERATION.tst index 27e5c5cee9..4b20170ab6 100644 --- a/CompilerForCAP/tst/CAP_JIT_INTERNAL_TELESCOPED_ITERATION.tst +++ b/CompilerForCAP/tst/CAP_JIT_INTERNAL_TELESCOPED_ITERATION.tst @@ -97,18 +97,17 @@ gap> func( cat ); # gap> Display( CapJitCompiledFunction( func, cat ) ); function ( cat_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CapFixpoint( function ( x_2, y_2 ) + local deduped_1_1; + deduped_1_1 := CapFixpoint( function ( x_2, y_2 ) return IsZero( y_2 ); end, function ( x_2 ) return x_2 - x_2; end, HomalgIdentityMatrix( 1, UnderlyingRing( cat_1 ) ) ); return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, - NumberRows( morphism_attr_1_1 ) ), - CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, - NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, - morphism_attr_1_1 ); + NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( + cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix + , deduped_1_1 ); end # Iterated with literal list diff --git a/CompilerForCAP/tst/CapJitReplacedSourceAndRangeAttributes.tst b/CompilerForCAP/tst/CapJitReplacedSourceAndRangeAttributes.tst index cc1781c38f..8aa854e37b 100644 --- a/CompilerForCAP/tst/CapJitReplacedSourceAndRangeAttributes.tst +++ b/CompilerForCAP/tst/CapJitReplacedSourceAndRangeAttributes.tst @@ -6,10 +6,16 @@ true # gap> func := { cat, matrix } -> [ -> VectorSpaceMorphism( cat, ObjectConstructor( cat, NumberRows( matrix ) ), -> matrix, ObjectConstructor( cat, NrCols( matrix ) ) ), -> VectorSpaceMorphism( cat, ObjectConstructor( cat, NumberRows( matrix ) ), -> matrix, ObjectConstructor( cat, NrCols( matrix ) ) ), +> VectorSpaceMorphism( cat, +> ObjectConstructor( cat, NumberRows( matrix ) - RowRankOfMatrix( matrix ) ), +> SyzygiesOfRows( matrix ), +> ObjectConstructor( cat, NumberColumns( matrix ) ) +> ), +> VectorSpaceMorphism( cat, +> ObjectConstructor( cat, NumberRows( matrix ) ), +> SyzygiesOfColumns( matrix ), +> ObjectConstructor( cat, NumberColumns( matrix ) - ColumnRankOfMatrix( matrix ) ) +> ), > ];; # @@ -22,8 +28,8 @@ gap> cat := MatrixCategory( QQ );; gap> Display( CapJitCompiledFunction( func, cat ) ); function ( cat_1, matrix_1 ) local morphism_attr_1_1, morphism_attr_2_1; - morphism_attr_2_1 := matrix_1; - morphism_attr_1_1 := matrix_1; + morphism_attr_2_1 := SyzygiesOfColumns( matrix_1 ); + morphism_attr_1_1 := SyzygiesOfRows( matrix_1 ); return [ AsCapCategoryMorphism( cat_1, diff --git a/CompilerForCAP/tst/StopCompilationAtCategory.tst b/CompilerForCAP/tst/StopCompilationAtCategory.tst index 3496ccb46f..4e6b502551 100644 --- a/CompilerForCAP/tst/StopCompilationAtCategory.tst +++ b/CompilerForCAP/tst/StopCompilationAtCategory.tst @@ -26,12 +26,12 @@ gap> ContinueCompilationAtCategory( vec ); # gap> Display( CapJitCompiledFunction( func, vec ) ); function ( cat_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := CreateCapCategoryObjectWithAttributes( cat_1, + local deduped_1_1; + deduped_1_1 := CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, 0 ); - morphism_attr_1_1 := HomalgZeroMatrix( 0, 0, UnderlyingRing( cat_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, deduped_2_1, - deduped_2_1, UnderlyingMatrix, morphism_attr_1_1 ); + return CreateCapCategoryMorphismWithAttributes( cat_1, deduped_1_1, + deduped_1_1, UnderlyingMatrix, + HomalgZeroMatrix( 0, 0, UnderlyingRing( cat_1 ) ) ); end # @@ -54,12 +54,12 @@ gap> ContinueCompilationAtPrimitivelyInstalledOperationsOfCategory( vec ); # gap> Display( CapJitCompiledFunction( func, vec ) ); function ( cat_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := CreateCapCategoryObjectWithAttributes( cat_1, + local deduped_1_1; + deduped_1_1 := CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, 0 ); - morphism_attr_1_1 := HomalgZeroMatrix( 0, 0, UnderlyingRing( cat_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, deduped_2_1, - deduped_2_1, UnderlyingMatrix, morphism_attr_1_1 ); + return CreateCapCategoryMorphismWithAttributes( cat_1, deduped_1_1, + deduped_1_1, UnderlyingMatrix, + HomalgZeroMatrix( 0, 0, UnderlyingRing( cat_1 ) ) ); end # diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_ArbitraryRing_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_ArbitraryRing_precompiled.gi index f6cf75dd5c..6956595cda 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_ArbitraryRing_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_ArbitraryRing_precompiled.gi @@ -126,9 +126,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -365,9 +365,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), Source( a_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), Source( a_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -515,9 +515,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -528,9 +528,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -541,9 +541,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -609,9 +609,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -622,9 +622,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_CommutativeRing_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_CommutativeRing_precompiled.gi index e21021e33b..8a44228820 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_CommutativeRing_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_CommutativeRing_precompiled.gi @@ -295,9 +295,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -589,9 +589,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), Source( a_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), Source( a_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -739,9 +739,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -752,9 +752,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -765,9 +765,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -866,9 +866,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -879,9 +879,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_Field_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_Field_precompiled.gi index 0a6ebc26bf..96aa0abb10 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_Field_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_Field_precompiled.gi @@ -179,9 +179,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -374,9 +374,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -565,9 +565,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -725,9 +725,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), Source( a_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), Source( a_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -897,9 +897,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -910,9 +910,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -923,9 +923,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -1024,9 +1024,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -1037,9 +1037,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_HomalgExteriorRingOverField_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_HomalgExteriorRingOverField_precompiled.gi index ca74172dd3..b0d18777e7 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_HomalgExteriorRingOverField_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_HomalgExteriorRingOverField_precompiled.gi @@ -166,9 +166,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -458,9 +458,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), Source( a_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), Source( a_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -608,9 +608,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -621,9 +621,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -634,9 +634,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_COLUMNS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -702,9 +702,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -715,9 +715,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_ArbitraryRing_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_ArbitraryRing_precompiled.gi index f314297551..6d712f3fd5 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_ArbitraryRing_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_ArbitraryRing_precompiled.gi @@ -126,9 +126,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_3_1; - morphism_attr_3_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_3_1 ) ), UnderlyingMatrix, morphism_attr_3_1 ); + local deduped_3_1; + deduped_3_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_3_1 ) ), UnderlyingMatrix, deduped_3_1 ); end ######## @@ -365,9 +365,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_3_1; - morphism_attr_3_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_3_1 ) ), Source( a_1 ), UnderlyingMatrix, morphism_attr_3_1 ); + local deduped_3_1; + deduped_3_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_3_1 ) ), Source( a_1 ), UnderlyingMatrix, deduped_3_1 ); end ######## @@ -515,9 +515,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -528,9 +528,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -541,9 +541,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -609,9 +609,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -622,9 +622,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_CommutativeRing_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_CommutativeRing_precompiled.gi index 4973bc7dca..951f0a4bfd 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_CommutativeRing_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_CommutativeRing_precompiled.gi @@ -295,9 +295,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_3_1; - morphism_attr_3_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_3_1 ) ), UnderlyingMatrix, morphism_attr_3_1 ); + local deduped_3_1; + deduped_3_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_3_1 ) ), UnderlyingMatrix, deduped_3_1 ); end ######## @@ -589,9 +589,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_3_1; - morphism_attr_3_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_3_1 ) ), Source( a_1 ), UnderlyingMatrix, morphism_attr_3_1 ); + local deduped_3_1; + deduped_3_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_3_1 ) ), Source( a_1 ), UnderlyingMatrix, deduped_3_1 ); end ######## @@ -739,9 +739,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -752,9 +752,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -765,9 +765,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -866,9 +866,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -879,9 +879,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_Field_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_Field_precompiled.gi index ae548c82c0..47706a9cf4 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_Field_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_Field_precompiled.gi @@ -179,9 +179,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -374,9 +374,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_3_1; - morphism_attr_3_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_3_1 ) ), UnderlyingMatrix, morphism_attr_3_1 ); + local deduped_3_1; + deduped_3_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_3_1 ) ), UnderlyingMatrix, deduped_3_1 ); end ######## @@ -565,9 +565,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -725,9 +725,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_3_1; - morphism_attr_3_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_3_1 ) ), Source( a_1 ), UnderlyingMatrix, morphism_attr_3_1 ); + local deduped_3_1; + deduped_3_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_3_1 ) ), Source( a_1 ), UnderlyingMatrix, deduped_3_1 ); end ######## @@ -910,9 +910,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -1025,9 +1025,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -1038,9 +1038,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_HomalgExteriorRingOverField_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_HomalgExteriorRingOverField_precompiled.gi index 400b4e0f62..825eabe5cd 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_HomalgExteriorRingOverField_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_HomalgExteriorRingOverField_precompiled.gi @@ -166,9 +166,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_3_1; - morphism_attr_3_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_3_1 ) ), UnderlyingMatrix, morphism_attr_3_1 ); + local deduped_3_1; + deduped_3_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( a_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_3_1 ) ), UnderlyingMatrix, deduped_3_1 ); end ######## @@ -458,9 +458,9 @@ end ######## function ( cat_1, a_1, b_1 ) - local morphism_attr_3_1; - morphism_attr_3_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_3_1 ) ), Source( a_1 ), UnderlyingMatrix, morphism_attr_3_1 ); + local deduped_3_1; + deduped_3_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( a_1 ), UnderlyingMatrix( b_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_3_1 ) ), Source( a_1 ), UnderlyingMatrix, deduped_3_1 ); end ######## @@ -608,9 +608,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[1]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -621,9 +621,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[2]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -634,9 +634,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := CATEGORY_OF_ROWS_ReductionBySplitEpiSummandTuple( alpha_1 )[3]; + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -702,9 +702,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( morphism_attr_1_1 ) ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberColumns( deduped_1_1 ) ), UnderlyingMatrix, deduped_1_1 ); end ######## @@ -715,9 +715,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( morphism_attr_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, morphism_attr_1_1 ); + local deduped_1_1; + deduped_1_1 := ReducedSyzygiesOfRows( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, NumberRows( deduped_1_1 ) ), Source( alpha_1 ), UnderlyingMatrix, deduped_1_1 ); end ######## diff --git a/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategory_precompiled.gi b/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategory_precompiled.gi index f1f1b5e4e2..f8550368fc 100644 --- a/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategory_precompiled.gi +++ b/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategory_precompiled.gi @@ -564,18 +564,17 @@ end ######## function ( cat_1, a_1 ) - local morphism_attr_1_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1; - deduped_7_1 := UnderlyingRing( cat_1 ); - deduped_6_1 := AsInteger( a_1 ); - deduped_5_1 := AsCapCategoryObject( cat_1, 1 ); - deduped_4_1 := deduped_6_1 * deduped_6_1; - deduped_3_1 := HomalgIdentityMatrix( deduped_6_1, deduped_7_1 ); - morphism_attr_1_1 := ConvertMatrixToRow( deduped_3_1 ) * (CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_7_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) - local deduped_1_2; - deduped_1_2 := (i_2 - 1); - return (REM_INT( deduped_1_2, deduped_6_1 ) * deduped_6_1 + QUO_INT( deduped_1_2, deduped_6_1 ) + 1); - end ) ) * ConvertMatrixToColumn( deduped_3_1 )); - return AsCapCategoryMorphism( cat_1, deduped_5_1, morphism_attr_1_1, deduped_5_1 ); + local deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1; + deduped_6_1 := UnderlyingRing( cat_1 ); + deduped_5_1 := AsInteger( a_1 ); + deduped_4_1 := AsCapCategoryObject( cat_1, 1 ); + deduped_3_1 := deduped_5_1 * deduped_5_1; + deduped_2_1 := HomalgIdentityMatrix( deduped_5_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_4_1, ConvertMatrixToRow( deduped_2_1 ) * (CertainRows( HomalgIdentityMatrix( deduped_3_1, deduped_6_1 ), List( [ 1 .. deduped_3_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_5_1 ) * deduped_5_1 + QUO_INT( deduped_1_2, deduped_5_1 ) + 1); + end ) ) * ConvertMatrixToColumn( deduped_2_1 )), deduped_4_1 ); end ######## @@ -586,18 +585,17 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1; - deduped_7_1 := UnderlyingRing( cat_1 ); - deduped_6_1 := AsCapCategoryObject( cat_1, 1 ); - deduped_5_1 := AsInteger( Range( alpha_1 ) ); - deduped_4_1 := deduped_5_1 * deduped_5_1; - deduped_3_1 := HomalgIdentityMatrix( deduped_5_1, deduped_7_1 ); - morphism_attr_1_1 := ConvertMatrixToRow( HomalgIdentityMatrix( AsInteger( Source( alpha_1 ) ), deduped_7_1 ) ) * (KroneckerMat( deduped_3_1, AsHomalgMatrix( alpha_1 ) ) * (CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_7_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) - local deduped_1_2; - deduped_1_2 := (i_2 - 1); - return (REM_INT( deduped_1_2, deduped_5_1 ) * deduped_5_1 + QUO_INT( deduped_1_2, deduped_5_1 ) + 1); - end ) ) * ConvertMatrixToColumn( deduped_3_1 ))); - return AsCapCategoryMorphism( cat_1, deduped_6_1, morphism_attr_1_1, deduped_6_1 ); + local deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1; + deduped_6_1 := UnderlyingRing( cat_1 ); + deduped_5_1 := AsCapCategoryObject( cat_1, 1 ); + deduped_4_1 := AsInteger( Range( alpha_1 ) ); + deduped_3_1 := deduped_4_1 * deduped_4_1; + deduped_2_1 := HomalgIdentityMatrix( deduped_4_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, ConvertMatrixToRow( HomalgIdentityMatrix( AsInteger( Source( alpha_1 ) ), deduped_6_1 ) ) * (KroneckerMat( deduped_2_1, AsHomalgMatrix( alpha_1 ) ) * (CertainRows( HomalgIdentityMatrix( deduped_3_1, deduped_6_1 ), List( [ 1 .. deduped_3_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_4_1 ) * deduped_4_1 + QUO_INT( deduped_1_2, deduped_4_1 ) + 1); + end ) ) * ConvertMatrixToColumn( deduped_2_1 ))), deduped_5_1 ); end ######## @@ -1112,9 +1110,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); - return AsCapCategoryMorphism( cat_1, Range( alpha_1 ), morphism_attr_1_1, AsCapCategoryObject( cat_1, NumberColumns( morphism_attr_1_1 ) ) ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, Range( alpha_1 ), deduped_1_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ) ); end ######## @@ -1125,9 +1123,9 @@ end ######## function ( cat_1, alpha_1, P_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); - return AsCapCategoryMorphism( cat_1, Range( alpha_1 ), morphism_attr_1_1, AsCapCategoryObject( cat_1, NumberColumns( morphism_attr_1_1 ) ) ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, Range( alpha_1 ), deduped_1_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ) ); end ######## @@ -1776,10 +1774,9 @@ end ######## function ( cat_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := AsCapCategoryObject( cat_1, 0 ); - morphism_attr_1_1 := HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, deduped_2_1, morphism_attr_1_1, deduped_2_1 ); + local deduped_1_1; + deduped_1_1 := AsCapCategoryObject( cat_1, 0 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ), deduped_1_1 ); end ######## @@ -3292,10 +3289,9 @@ end ######## function ( cat_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := AsCapCategoryObject( cat_1, 0 ); - morphism_attr_1_1 := HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, deduped_2_1, morphism_attr_1_1, deduped_2_1 ); + local deduped_1_1; + deduped_1_1 := AsCapCategoryObject( cat_1, 0 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ), deduped_1_1 ); end ######## @@ -3537,10 +3533,9 @@ end ######## function ( cat_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := AsCapCategoryObject( cat_1, 0 ); - morphism_attr_1_1 := HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, deduped_2_1, morphism_attr_1_1, deduped_2_1 ); + local deduped_1_1; + deduped_1_1 := AsCapCategoryObject( cat_1, 0 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ), deduped_1_1 ); end ######## @@ -3551,10 +3546,9 @@ end ######## function ( cat_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := AsCapCategoryObject( cat_1, 0 ); - morphism_attr_1_1 := HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, deduped_2_1, morphism_attr_1_1, deduped_2_1 ); + local deduped_1_1; + deduped_1_1 := AsCapCategoryObject( cat_1, 0 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ), deduped_1_1 ); end ######## @@ -3565,10 +3559,9 @@ end ######## function ( cat_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := AsCapCategoryObject( cat_1, 0 ); - morphism_attr_1_1 := HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, deduped_2_1, morphism_attr_1_1, deduped_2_1 ); + local deduped_1_1; + deduped_1_1 := AsCapCategoryObject( cat_1, 0 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ), deduped_1_1 ); end ######## @@ -3613,9 +3606,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); - return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, Source( alpha_1 ) ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ), deduped_1_1, Source( alpha_1 ) ); end ######## @@ -3626,9 +3619,9 @@ end ######## function ( cat_1, alpha_1, P_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); - return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, Source( alpha_1 ) ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ), deduped_1_1, Source( alpha_1 ) ); end ######## @@ -5231,18 +5224,17 @@ end ######## function ( cat_1, a_1 ) - local morphism_attr_1_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1; - deduped_7_1 := UnderlyingRing( cat_1 ); - deduped_6_1 := AsInteger( a_1 ); - deduped_5_1 := AsCapCategoryObject( cat_1, 1 ); - deduped_4_1 := deduped_6_1 * deduped_6_1; - deduped_3_1 := HomalgIdentityMatrix( deduped_6_1, deduped_7_1 ); - morphism_attr_1_1 := ConvertMatrixToRow( deduped_3_1 ) * CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_7_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) - local deduped_1_2; - deduped_1_2 := (i_2 - 1); - return (REM_INT( deduped_1_2, deduped_6_1 ) * deduped_6_1 + QUO_INT( deduped_1_2, deduped_6_1 ) + 1); - end ) ) * ConvertMatrixToColumn( deduped_3_1 ); - return AsCapCategoryMorphism( cat_1, deduped_5_1, morphism_attr_1_1, deduped_5_1 ); + local deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1; + deduped_6_1 := UnderlyingRing( cat_1 ); + deduped_5_1 := AsInteger( a_1 ); + deduped_4_1 := AsCapCategoryObject( cat_1, 1 ); + deduped_3_1 := deduped_5_1 * deduped_5_1; + deduped_2_1 := HomalgIdentityMatrix( deduped_5_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_4_1, ConvertMatrixToRow( deduped_2_1 ) * CertainRows( HomalgIdentityMatrix( deduped_3_1, deduped_6_1 ), List( [ 1 .. deduped_3_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_5_1 ) * deduped_5_1 + QUO_INT( deduped_1_2, deduped_5_1 ) + 1); + end ) ) * ConvertMatrixToColumn( deduped_2_1 ), deduped_4_1 ); end ######## @@ -5609,9 +5601,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := HomalgZeroMatrix( 0, AsInteger( Range( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ), UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 0 ), morphism_attr_1_1, AsCapCategoryObject( cat_1, NumberColumns( morphism_attr_1_1 ) ) ); + local deduped_1_1; + deduped_1_1 := HomalgZeroMatrix( 0, AsInteger( Range( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ), UnderlyingRing( cat_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 0 ), deduped_1_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ) ); end ######## @@ -5622,9 +5614,9 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); - return AsCapCategoryMorphism( cat_1, Range( alpha_1 ), morphism_attr_1_1, AsCapCategoryObject( cat_1, NumberColumns( morphism_attr_1_1 ) ) ); + local deduped_1_1; + deduped_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, Range( alpha_1 ), deduped_1_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ) ); end ######## @@ -5635,10 +5627,10 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1, deduped_2_1; + local deduped_1_1, deduped_2_1; deduped_2_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); - morphism_attr_1_1 := SafeRightDivide( HomalgIdentityMatrix( NumberColumns( deduped_2_1 ), UnderlyingRing( cat_1 ) ), deduped_2_1 ); - return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, Range( alpha_1 ) ); + deduped_1_1 := SafeRightDivide( HomalgIdentityMatrix( NumberColumns( deduped_2_1 ), UnderlyingRing( cat_1 ) ), deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ), deduped_1_1, Range( alpha_1 ) ); end ######## @@ -6367,10 +6359,9 @@ end ######## function ( cat_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := AsCapCategoryObject( cat_1, 0 ); - morphism_attr_1_1 := HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, deduped_2_1, morphism_attr_1_1, deduped_2_1 ); + local deduped_1_1; + deduped_1_1 := AsCapCategoryObject( cat_1, 0 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( 0, UnderlyingRing( cat_1 ) ), deduped_1_1 ); end ######## @@ -6392,18 +6383,17 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1; - deduped_7_1 := UnderlyingRing( cat_1 ); - deduped_6_1 := AsCapCategoryObject( cat_1, 1 ); - deduped_5_1 := AsInteger( Source( alpha_1 ) ); - deduped_4_1 := deduped_5_1 * deduped_5_1; - deduped_3_1 := HomalgIdentityMatrix( deduped_5_1, deduped_7_1 ); - morphism_attr_1_1 := ConvertMatrixToRow( deduped_3_1 ) * CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_7_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) - local deduped_1_2; - deduped_1_2 := (i_2 - 1); - return (REM_INT( deduped_1_2, deduped_5_1 ) * deduped_5_1 + QUO_INT( deduped_1_2, deduped_5_1 ) + 1); - end ) ) * KroneckerMat( deduped_3_1, AsHomalgMatrix( alpha_1 ) ) * ConvertMatrixToColumn( deduped_3_1 ); - return AsCapCategoryMorphism( cat_1, deduped_6_1, morphism_attr_1_1, deduped_6_1 ); + local deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1; + deduped_6_1 := UnderlyingRing( cat_1 ); + deduped_5_1 := AsCapCategoryObject( cat_1, 1 ); + deduped_4_1 := AsInteger( Source( alpha_1 ) ); + deduped_3_1 := deduped_4_1 * deduped_4_1; + deduped_2_1 := HomalgIdentityMatrix( deduped_4_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, ConvertMatrixToRow( deduped_2_1 ) * CertainRows( HomalgIdentityMatrix( deduped_3_1, deduped_6_1 ), List( [ 1 .. deduped_3_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_4_1 ) * deduped_4_1 + QUO_INT( deduped_1_2, deduped_4_1 ) + 1); + end ) ) * KroneckerMat( deduped_2_1, AsHomalgMatrix( alpha_1 ) ) * ConvertMatrixToColumn( deduped_2_1 ), deduped_5_1 ); end ######## @@ -6525,9 +6515,7 @@ end ######## function ( cat_1, T_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := HomalgZeroMatrix( 0, AsInteger( T_1 ), UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 0 ), morphism_attr_1_1, T_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 0 ), HomalgZeroMatrix( 0, AsInteger( T_1 ), UnderlyingRing( cat_1 ) ), T_1 ); end ######## @@ -6597,9 +6585,7 @@ end ######## function ( cat_1, T_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := HomalgZeroMatrix( 0, AsInteger( T_1 ), UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 0 ), morphism_attr_1_1, T_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 0 ), HomalgZeroMatrix( 0, AsInteger( T_1 ), UnderlyingRing( cat_1 ) ), T_1 ); end ######## @@ -6780,9 +6766,7 @@ end ######## function ( cat_1, T_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := HomalgZeroMatrix( AsInteger( T_1 ), 0, UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, T_1, morphism_attr_1_1, AsCapCategoryObject( cat_1, 0 ) ); + return AsCapCategoryMorphism( cat_1, T_1, HomalgZeroMatrix( AsInteger( T_1 ), 0, UnderlyingRing( cat_1 ) ), AsCapCategoryObject( cat_1, 0 ) ); end ######## @@ -6804,9 +6788,7 @@ end ######## function ( cat_1, T_1 ) - local morphism_attr_1_1; - morphism_attr_1_1 := HomalgZeroMatrix( AsInteger( T_1 ), 0, UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, T_1, morphism_attr_1_1, AsCapCategoryObject( cat_1, 0 ) ); + return AsCapCategoryMorphism( cat_1, T_1, HomalgZeroMatrix( AsInteger( T_1 ), 0, UnderlyingRing( cat_1 ) ), AsCapCategoryObject( cat_1, 0 ) ); end ######## @@ -6904,10 +6886,9 @@ end ######## function ( cat_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := AsCapCategoryObject( cat_1, 0 ); - morphism_attr_1_1 := HomalgZeroMatrix( 0, 0, UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, deduped_2_1, morphism_attr_1_1, deduped_2_1 ); + local deduped_1_1; + deduped_1_1 := AsCapCategoryObject( cat_1, 0 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgZeroMatrix( 0, 0, UnderlyingRing( cat_1 ) ), deduped_1_1 ); end ######## diff --git a/LinearAlgebraForCAP/gap/precompiled_categories/Opposite_MatrixCategory_precompiled.gi b/LinearAlgebraForCAP/gap/precompiled_categories/Opposite_MatrixCategory_precompiled.gi index 12be35aa7b..9d06e7ebae 100644 --- a/LinearAlgebraForCAP/gap/precompiled_categories/Opposite_MatrixCategory_precompiled.gi +++ b/LinearAlgebraForCAP/gap/precompiled_categories/Opposite_MatrixCategory_precompiled.gi @@ -191,12 +191,12 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1, deduped_2_1, deduped_3_1, deduped_4_1; + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1; deduped_4_1 := Opposite( alpha_1 ); deduped_3_1 := OppositeCategory( cat_1 ); deduped_2_1 := SyzygiesOfRows( AsHomalgMatrix( deduped_4_1 ) ); - morphism_attr_1_1 := deduped_2_1; - return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, Opposite, AsCapCategoryObject( deduped_3_1, NumberRows( deduped_2_1 ) ) ), Opposite, AsCapCategoryMorphism( deduped_3_1, AsCapCategoryObject( deduped_3_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, Source( deduped_4_1 ) ) ); + deduped_1_1 := AsCapCategoryObject( deduped_3_1, NumberRows( deduped_2_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Range( alpha_1 ), CreateCapCategoryObjectWithAttributes( cat_1, Opposite, deduped_1_1 ), Opposite, AsCapCategoryMorphism( deduped_3_1, deduped_1_1, deduped_2_1, Source( deduped_4_1 ) ) ); end ######## @@ -598,12 +598,12 @@ end ######## function ( cat_1, alpha_1 ) - local morphism_attr_1_1, deduped_2_1, deduped_3_1, deduped_4_1; + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1; deduped_4_1 := Opposite( alpha_1 ); deduped_3_1 := OppositeCategory( cat_1 ); deduped_2_1 := SyzygiesOfColumns( AsHomalgMatrix( deduped_4_1 ) ); - morphism_attr_1_1 := deduped_2_1; - return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, Opposite, AsCapCategoryObject( deduped_3_1, NumberColumns( deduped_2_1 ) ) ), Source( alpha_1 ), Opposite, AsCapCategoryMorphism( deduped_3_1, Range( deduped_4_1 ), morphism_attr_1_1, AsCapCategoryObject( deduped_3_1, NumberColumns( morphism_attr_1_1 ) ) ) ); + deduped_1_1 := AsCapCategoryObject( deduped_3_1, NumberColumns( deduped_2_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, Opposite, deduped_1_1 ), Source( alpha_1 ), Opposite, AsCapCategoryMorphism( deduped_3_1, Range( deduped_4_1 ), deduped_2_1, deduped_1_1 ) ); end ######## From 4aa6d76f781cb9ea7611ff2f2c3451a8e8d132c2 Mon Sep 17 00:00:00 2001 From: Fabian Zickgraf Date: Thu, 17 Oct 2024 14:36:50 +0200 Subject: [PATCH 2/3] Cache precompiled functions without irreversible optimizations for future use --- CAP/gap/CAP.gi | 2 + CAP/gap/InstallAdds.gi | 7 + CompilerForCAP/gap/CompileCAPOperation.gi | 10 +- CompilerForCAP/gap/CompilerForCAP.gi | 60 +- CompilerForCAP/gap/CompilerHints.gd | 5 +- CompilerForCAP/gap/CompilerHints.gi | 8 +- CompilerForCAP/gap/PrecompileCategory.gi | 68 +- ...HomalgExteriorRingOverField_precompiled.gi | 40 + ...losure_RingAsCategory_Field_precompiled.gi | 27 + ...HomalgExteriorRingOverField_precompiled.gi | 40 + .../MatrixCategory_precompiled.gi | 3698 ++++++++++++++++- .../Opposite_MatrixCategory_precompiled.gi | 68 + 12 files changed, 3947 insertions(+), 86 deletions(-) diff --git a/CAP/gap/CAP.gi b/CAP/gap/CAP.gi index 18f4ea27ca..7c0b5c141a 100644 --- a/CAP/gap/CAP.gi +++ b/CAP/gap/CAP.gi @@ -329,6 +329,8 @@ InstallGlobalFunction( "CreateCapCategoryWithDataTypes", FunctionWithNamedArgume obj!.input_sanity_check_functions := rec( ); + obj!.cached_precompiled_functions := rec( ); + # convenience for Julia lists if IsPackageMarkedForLoading( "JuliaInterface", ">= 0.2" ) then diff --git a/CAP/gap/InstallAdds.gi b/CAP/gap/InstallAdds.gi index a5344fb044..263512cebb 100644 --- a/CAP/gap/InstallAdds.gi +++ b/CAP/gap/InstallAdds.gi @@ -137,6 +137,13 @@ InstallMethod( AddCapOperation, Add( category!.added_functions.( function_name ), func_to_install ); + # if a function for which a cached precompiled function exists is overwritten, drop the cached precompiled function + if IsBound( category!.cached_precompiled_functions.( function_name ) ) then + + Unbind( category!.cached_precompiled_functions.( function_name ) ); + + fi; + replaced_filter_list := CAP_INTERNAL_REPLACED_STRINGS_WITH_FILTERS( record.filter_list, category ); ## Nr arguments sanity check diff --git a/CompilerForCAP/gap/CompileCAPOperation.gi b/CompilerForCAP/gap/CompileCAPOperation.gi index 5a10c7ae57..49cb419a8a 100644 --- a/CompilerForCAP/gap/CompileCAPOperation.gi +++ b/CompilerForCAP/gap/CompileCAPOperation.gi @@ -16,7 +16,15 @@ InstallGlobalFunction( "CapJitCompiledCAPOperationAsEnhancedSyntaxTree", functio if not IsBound( cat!.compiled_functions_trees.(operation_name) ) then - function_to_compile := cat!.operations.(operation_name).func; + if IsBound( cat!.cached_precompiled_functions.(operation_name) ) then + + function_to_compile := cat!.cached_precompiled_functions.(operation_name); + + else + + function_to_compile := cat!.operations.(operation_name).func; + + fi; if IsOperation( function_to_compile ) or IsKernelFunction( function_to_compile ) then diff --git a/CompilerForCAP/gap/CompilerForCAP.gi b/CompilerForCAP/gap/CompilerForCAP.gi index 3c42008e40..2c6203b011 100644 --- a/CompilerForCAP/gap/CompilerForCAP.gi +++ b/CompilerForCAP/gap/CompilerForCAP.gi @@ -462,8 +462,20 @@ InstallGlobalFunction( CAP_JIT_INTERNAL_COMPILED_ENHANCED_SYNTAX_TREE, function end ); -InstallGlobalFunction( CAP_JIT_INTERNAL_POST_PROCESSED_TREE, function ( tree, category ) - local changed, pre_func, domains, additional_arguments_func; +InstallGlobalFunction( CAP_JIT_INTERNAL_POST_PROCESSED_TREE, function ( tree, category, args... ) + local apply_irreversible_optimizations, changed, pre_func, domains, additional_arguments_func; + + Assert( 0, Length( args ) in [ 0, 1 ] ); + + if Length( args ) = 0 then + + apply_irreversible_optimizations := true; + + else + + apply_irreversible_optimizations := args[1]; + + fi; if CAP_JIT_INTERNAL_DEBUG_LEVEL >= 1 then @@ -509,7 +521,7 @@ InstallGlobalFunction( CAP_JIT_INTERNAL_POST_PROCESSED_TREE, function ( tree, ca fi; - tree := CapJitAppliedCompilerHints( tree, category ); + tree := CapJitAppliedCompilerHints( tree, category, apply_irreversible_optimizations ); if CAP_JIT_INTERNAL_DEBUG_LEVEL >= 2 then @@ -526,27 +538,31 @@ InstallGlobalFunction( CAP_JIT_INTERNAL_POST_PROCESSED_TREE, function ( tree, ca # do not hoist/deduplicate expressions in proof assistant mode if not CAP_JIT_PROOF_ASSISTANT_MODE_ENABLED then - # CapJitExtractedExpensiveOperationsFromLoops - - if CAP_JIT_INTERNAL_DEBUG_LEVEL >= 2 then + if apply_irreversible_optimizations then - # COVERAGE_IGNORE_BLOCK_START - Print( "#### Continue post-processing of\n" ); - Print( "# ", tree.name, "\n" ); - Print( "# apply CapJitExtractedExpensiveOperationsFromLoops\n" ); - # COVERAGE_IGNORE_BLOCK_END + # CapJitExtractedExpensiveOperationsFromLoops - fi; - - tree := CapJitExtractedExpensiveOperationsFromLoops( tree ); - - if CAP_JIT_INTERNAL_DEBUG_LEVEL >= 2 then + if CAP_JIT_INTERNAL_DEBUG_LEVEL >= 2 then + + # COVERAGE_IGNORE_BLOCK_START + Print( "#### Continue post-processing of\n" ); + Print( "# ", tree.name, "\n" ); + Print( "# apply CapJitExtractedExpensiveOperationsFromLoops\n" ); + # COVERAGE_IGNORE_BLOCK_END + + fi; - # COVERAGE_IGNORE_BLOCK_START - Print( "# result:\n" ); - Display( CapJitPrettyPrintFunction( ENHANCED_SYNTAX_TREE_CODE( tree ) ) ); - Print( "\n" ); - # COVERAGE_IGNORE_BLOCK_END + tree := CapJitExtractedExpensiveOperationsFromLoops( tree ); + + if CAP_JIT_INTERNAL_DEBUG_LEVEL >= 2 then + + # COVERAGE_IGNORE_BLOCK_START + Print( "# result:\n" ); + Display( CapJitPrettyPrintFunction( ENHANCED_SYNTAX_TREE_CODE( tree ) ) ); + Print( "\n" ); + # COVERAGE_IGNORE_BLOCK_END + + fi; fi; @@ -651,7 +667,7 @@ InstallGlobalFunction( CAP_JIT_INTERNAL_POST_PROCESSED_TREE, function ( tree, ca # However, in this case we might not want to apply the simplification. # Note: In the case of a single enclosing domain which is equal to the domain, this would more or less correspond to the traditional concept of loop fusion. # That is why we call it "generalized loop fusion". - while true do + while true and apply_irreversible_optimizations do changed := false; diff --git a/CompilerForCAP/gap/CompilerHints.gd b/CompilerForCAP/gap/CompilerHints.gd index 43cc4683db..5dcbfda9bd 100644 --- a/CompilerForCAP/gap/CompilerHints.gd +++ b/CompilerForCAP/gap/CompilerHints.gd @@ -8,9 +8,10 @@ #! @Section Compilation steps #! @Description -#! Applies all compiler hints (see ) to tree. +#! Applies compiler hints (see ) to tree. +#! Depending on apply_irreversible_optimizations, only reversible optimizations or all optimizations are applied. #! @Returns a record -#! @Arguments tree, category +#! @Arguments tree, category, apply_irreversible_optimizations DeclareGlobalFunction( "CapJitAppliedCompilerHints" ); #! @Description diff --git a/CompilerForCAP/gap/CompilerHints.gi b/CompilerForCAP/gap/CompilerHints.gi index b0bfb612c8..cac331a189 100644 --- a/CompilerForCAP/gap/CompilerHints.gi +++ b/CompilerForCAP/gap/CompilerHints.gi @@ -4,9 +4,13 @@ # Implementations # -InstallGlobalFunction( CapJitAppliedCompilerHints, function ( tree, category ) +InstallGlobalFunction( CapJitAppliedCompilerHints, function ( tree, category, apply_irreversible_optimizations ) - tree := CapJitReplacedSourceAndRangeAttributes( tree, category ); + if apply_irreversible_optimizations then + + tree := CapJitReplacedSourceAndRangeAttributes( tree, category ); + + fi; # call this at the end because previous functions might want to access the global variables tree := CapJitReplacedGlobalVariablesByCategoryAttributes( tree, category ); diff --git a/CompilerForCAP/gap/PrecompileCategory.gi b/CompilerForCAP/gap/PrecompileCategory.gi index 98e9069543..1c8cf53111 100644 --- a/CompilerForCAP/gap/PrecompileCategory.gi +++ b/CompilerForCAP/gap/PrecompileCategory.gi @@ -4,7 +4,7 @@ # Implementations # InstallGlobalFunction( "CapJitPrecompileCategory", function ( category_constructor, given_arguments, package_name, compiled_category_name ) - local cat1, cat2, cat, transitively_needed_other_packages, operations, diff, source_attribute_getter_name, range_attribute_getter_name, output_string, package_info, parameters, current_string, compiled_tree, compiled_func, function_string, number_of_occurrences_in_string, weight, IsPrecompiledDerivation_string, function_name, current_rec; + local cat1, cat2, cat, transitively_needed_other_packages, operations, diff, source_attribute_getter_name, range_attribute_getter_name, output_string, package_info, parameters, current_string, compiled_tree, reversibly_compiled_tree, reversibly_compiled_func, reversibly_compiled_func_string, fully_compiled_tree, fully_compiled_func, fully_compiled_func_string, number_of_occurrences_in_string, weight, IsPrecompiledDerivation_string, function_name, current_rec; if IsOperation( category_constructor ) or IsKernelFunction( category_constructor ) then @@ -143,23 +143,38 @@ InstallGlobalFunction( "CapJitPrecompileCategory", function ( category_construct compiled_tree := CapJitCompiledCAPOperationAsEnhancedSyntaxTree( cat, function_name ); - compiled_tree := CAP_JIT_INTERNAL_POST_PROCESSED_TREE( compiled_tree, cat ); + # post-processing only reversible optimizations + reversibly_compiled_tree := CAP_JIT_INTERNAL_POST_PROCESSED_TREE( compiled_tree, cat, false ); # change names of arguments - compiled_tree := CAP_JIT_INTERNAL_REPLACED_FVARS_FUNC_ID( - compiled_tree, - compiled_tree.id, - Concatenation( current_rec.input_arguments_names, compiled_tree.nams{[ compiled_tree.narg + 1 .. Length( compiled_tree.nams ) ]} ) + reversibly_compiled_tree := CAP_JIT_INTERNAL_REPLACED_FVARS_FUNC_ID( + reversibly_compiled_tree, + reversibly_compiled_tree.id, + Concatenation( current_rec.input_arguments_names, reversibly_compiled_tree.nams{[ reversibly_compiled_tree.narg + 1 .. Length( reversibly_compiled_tree.nams ) ]} ) ); - compiled_func := ENHANCED_SYNTAX_TREE_CODE( compiled_tree ); + reversibly_compiled_func := ENHANCED_SYNTAX_TREE_CODE( reversibly_compiled_tree ); - function_string := CapJitPrettyPrintFunction( compiled_func ); + reversibly_compiled_func_string := CapJitPrettyPrintFunction( reversibly_compiled_func ); - if PositionSublist( function_string, "CAP_JIT_INTERNAL_GLOBAL_VARIABLE_" ) <> fail then + # post-processing with irreversible optimizations + fully_compiled_tree := CAP_JIT_INTERNAL_POST_PROCESSED_TREE( compiled_tree, cat, true ); + + # change names of arguments + fully_compiled_tree := CAP_JIT_INTERNAL_REPLACED_FVARS_FUNC_ID( + fully_compiled_tree, + fully_compiled_tree.id, + Concatenation( current_rec.input_arguments_names, fully_compiled_tree.nams{[ fully_compiled_tree.narg + 1 .. Length( fully_compiled_tree.nams ) ]} ) + ); + + fully_compiled_func := ENHANCED_SYNTAX_TREE_CODE( fully_compiled_tree ); + + fully_compiled_func_string := CapJitPrettyPrintFunction( fully_compiled_func ); + + if PositionSublist( fully_compiled_func_string, "CAP_JIT_INTERNAL_GLOBAL_VARIABLE_" ) <> fail then # COVERAGE_IGNORE_NEXT_LINE - Error( "Could not get rid of all global variables, see . You should use compiler_hints.category_attribute_names." ); + Error( "Could not get rid of all global variables, see . You should use compiler_hints.category_attribute_names." ); fi; @@ -168,7 +183,7 @@ InstallGlobalFunction( "CapJitPrecompileCategory", function ( category_construct if not IsEmpty( CAP_INTERNAL_FIND_APPEARANCE_OF_SYMBOL_IN_FUNCTION( - compiled_func, + fully_compiled_func, RecNames( CAP_INTERNAL_METHOD_NAME_RECORD ), 2, CAP_INTERNAL_METHOD_RECORD_REPLACEMENTS, @@ -194,14 +209,14 @@ InstallGlobalFunction( "CapJitPrecompileCategory", function ( category_construct if current_rec.return_type = "bool" then - if number_of_occurrences_in_string( function_string, "CreateCapCategoryObjectWithAttributes" ) + number_of_occurrences_in_string( function_string, "AsCapCategoryObject" ) > 0 then + if number_of_occurrences_in_string( fully_compiled_func_string, "CreateCapCategoryObjectWithAttributes" ) + number_of_occurrences_in_string( fully_compiled_func_string, "AsCapCategoryObject" ) > 0 then # COVERAGE_IGNORE_NEXT_LINE Display( Concatenation( "WARNING: Could not eliminate `CreateCapCategoryObjectWithAttributes` or `AsCapCategoryObject` while precompiling ", function_name, "." ) ); fi; - if number_of_occurrences_in_string( function_string, "CreateCapCategoryMorphismWithAttributes" ) + number_of_occurrences_in_string( function_string, "AsCapCategoryMorphism" ) > 0 then + if number_of_occurrences_in_string( fully_compiled_func_string, "CreateCapCategoryMorphismWithAttributes" ) + number_of_occurrences_in_string( fully_compiled_func_string, "AsCapCategoryMorphism" ) > 0 then # COVERAGE_IGNORE_NEXT_LINE Display( Concatenation( "WARNING: Could not eliminate `CreateCapCategoryMorphismWithAttributes` or `AsCapCategoryMorphism` while precompiling ", function_name, "." ) ); @@ -212,7 +227,7 @@ InstallGlobalFunction( "CapJitPrecompileCategory", function ( category_construct if current_rec.return_type = "object" and ValueOption( "number_of_objectified_objects_in_data_structure_of_object" ) <> fail then - if number_of_occurrences_in_string( function_string, "CreateCapCategoryObjectWithAttributes" ) + number_of_occurrences_in_string( function_string, "AsCapCategoryObject" ) > ValueOption( "number_of_objectified_objects_in_data_structure_of_object" ) then + if number_of_occurrences_in_string( fully_compiled_func_string, "CreateCapCategoryObjectWithAttributes" ) + number_of_occurrences_in_string( fully_compiled_func_string, "AsCapCategoryObject" ) > ValueOption( "number_of_objectified_objects_in_data_structure_of_object" ) then # COVERAGE_IGNORE_NEXT_LINE Display( Concatenation( "WARNING: Found more than the expected number of occurrences of `CreateCapCategoryObjectWithAttributes` or `AsCapCategoryObject` while precompiling ", function_name, "." ) ); @@ -223,7 +238,7 @@ InstallGlobalFunction( "CapJitPrecompileCategory", function ( category_construct if current_rec.return_type = "object" and ValueOption( "number_of_objectified_morphisms_in_data_structure_of_object" ) <> fail then - if number_of_occurrences_in_string( function_string, "CreateCapCategoryMorphismWithAttributes" ) + number_of_occurrences_in_string( function_string, "AsCapCategoryMorphism" ) > ValueOption( "number_of_objectified_morphisms_in_data_structure_of_object" ) then + if number_of_occurrences_in_string( fully_compiled_func_string, "CreateCapCategoryMorphismWithAttributes" ) + number_of_occurrences_in_string( fully_compiled_func_string, "AsCapCategoryMorphism" ) > ValueOption( "number_of_objectified_morphisms_in_data_structure_of_object" ) then # COVERAGE_IGNORE_NEXT_LINE Display( Concatenation( "WARNING: Found more than the expected number of occurrences of `CreateCapCategoryMorphismWithAttributes` or `AsCapCategoryMorphism` while precompiling ", function_name, "." ) ); @@ -234,7 +249,7 @@ InstallGlobalFunction( "CapJitPrecompileCategory", function ( category_construct if current_rec.return_type = "morphism" and ValueOption( "number_of_objectified_objects_in_data_structure_of_morphism" ) <> fail then - if number_of_occurrences_in_string( function_string, "CreateCapCategoryObjectWithAttributes" ) + number_of_occurrences_in_string( function_string, "AsCapCategoryObject" ) > ValueOption( "number_of_objectified_objects_in_data_structure_of_morphism" ) then + if number_of_occurrences_in_string( fully_compiled_func_string, "CreateCapCategoryObjectWithAttributes" ) + number_of_occurrences_in_string( fully_compiled_func_string, "AsCapCategoryObject" ) > ValueOption( "number_of_objectified_objects_in_data_structure_of_morphism" ) then # COVERAGE_IGNORE_NEXT_LINE Display( Concatenation( "WARNING: Found more than the expected number of occurrences of `CreateCapCategoryObjectWithAttributes` or `AsCapCategoryObject` while precompiling ", function_name, "." ) ); @@ -245,7 +260,7 @@ InstallGlobalFunction( "CapJitPrecompileCategory", function ( category_construct if current_rec.return_type = "morphism" and ValueOption( "number_of_objectified_morphisms_in_data_structure_of_morphism" ) <> fail then - if number_of_occurrences_in_string( function_string, "CreateCapCategoryMorphismWithAttributes" ) + number_of_occurrences_in_string( function_string, "AsCapCategoryMorphism" ) > ValueOption( "number_of_objectified_morphisms_in_data_structure_of_morphism" ) then + if number_of_occurrences_in_string( fully_compiled_func_string, "CreateCapCategoryMorphismWithAttributes" ) + number_of_occurrences_in_string( fully_compiled_func_string, "AsCapCategoryMorphism" ) > ValueOption( "number_of_objectified_morphisms_in_data_structure_of_morphism" ) then # COVERAGE_IGNORE_NEXT_LINE Display( Concatenation( "WARNING: Found more than the expected number of occurrences of `CreateCapCategoryMorphismWithAttributes` or `AsCapCategoryMorphism` while precompiling ", function_name, "." ) ); @@ -281,13 +296,30 @@ InstallGlobalFunction( "CapJitPrecompileCategory", function ( category_construct " Add", function_name, "( cat,\n", " \n", "########\n", - function_string, "\n", + fully_compiled_func_string, "\n", "########\n", " \n", " , ", String( weight ), IsPrecompiledDerivation_string, " );\n" ); output_string := Concatenation( output_string, current_string ); + if fully_compiled_func_string <> reversibly_compiled_func_string then + + current_string := Concatenation( + " \n", + " ##\n", + " cat!.cached_precompiled_functions.", function_name, " :=\n", + " \n", + "########\n", + reversibly_compiled_func_string, "\n", + "########\n", + " \n", + " ;\n" + ); + output_string := Concatenation( output_string, current_string ); + + fi; + od; parameters := NamesLocalVariablesFunction( category_constructor ){[ 1 .. NumberArgumentsFunction( category_constructor ) ]}; diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_HomalgExteriorRingOverField_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_HomalgExteriorRingOverField_precompiled.gi index b0d18777e7..58b683fa9a 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_HomalgExteriorRingOverField_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfColumns_as_Opposite_CategoryOfRows_HomalgExteriorRingOverField_precompiled.gi @@ -231,6 +231,46 @@ end , 100 ); + ## + cat!.cached_precompiled_functions.InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism := + +######## +function ( cat_1, source_1, range_1, alpha_1 ) + local hoisted_1_1, hoisted_3_1, deduped_5_1, hoisted_6_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1; + deduped_14_1 := BasisOfRingOverBaseFieldAsColumnVector( cat_1 ); + deduped_13_1 := UnderlyingRing( cat_1 ); + deduped_12_1 := RankOfObject( source_1 ); + deduped_11_1 := RankOfObject( range_1 ); + deduped_10_1 := [ 1 .. deduped_11_1 ]; + deduped_9_1 := Length( EntriesOfHomalgColumnVector( deduped_14_1 ) ); + deduped_5_1 := [ 1 .. deduped_12_1 ]; + hoisted_3_1 := UnderlyingMatrix( alpha_1 ); + hoisted_1_1 := deduped_12_1 * deduped_9_1; + hoisted_6_1 := List( deduped_10_1, function ( j_2 ) + return List( deduped_5_1, function ( s_3 ) + local hoisted_1_3, hoisted_2_3, deduped_3_3; + deduped_3_3 := (s_3 - 1) * deduped_9_1; + hoisted_2_3 := deduped_3_3 + deduped_9_1; + hoisted_1_3 := deduped_3_3 + 1; + return List( deduped_10_1, function ( j_4 ) + local deduped_1_4; + deduped_1_4 := (j_4 - 1) * hoisted_1_1; + return CertainColumns( hoisted_3_1, [ deduped_1_4 + hoisted_1_3 .. deduped_1_4 + hoisted_2_3 ] ); + end )[j_2]; + end ); + end ); + return CreateCapCategoryMorphismWithAttributes( cat_1, source_1, range_1, UnderlyingMatrix, HomalgMatrixListList( List( deduped_10_1, function ( j_2 ) + local hoisted_1_2; + hoisted_1_2 := hoisted_6_1[j_2]; + return List( deduped_5_1, function ( s_3 ) + return EntriesOfHomalgMatrix( CoercedMatrix( deduped_13_1, hoisted_1_2[s_3] ) * deduped_14_1 )[1]; + end ); + end ), deduped_11_1, deduped_12_1, deduped_13_1 ) ); +end +######## + + ; + ## AddIsColiftable( cat, diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_Field_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_Field_precompiled.gi index 47706a9cf4..43ce4481af 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_Field_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_Field_precompiled.gi @@ -905,6 +905,19 @@ end , 100 ); + ## + cat!.cached_precompiled_functions.SomeReductionBySplitEpiSummand := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1; + deduped_1_1 := RankOfObject( Range( alpha_1 ) ) - RowRankOfMatrix( UnderlyingMatrix( alpha_1 ) ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, 0 ), CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, deduped_1_1 ), UnderlyingMatrix, HomalgZeroMatrix( 0, deduped_1_1, UnderlyingRing( cat_1 ) ) ); +end +######## + + ; + ## AddSomeReductionBySplitEpiSummand_MorphismFromInputRange( cat, @@ -932,6 +945,20 @@ end , 100 ); + ## + cat!.cached_precompiled_functions.SomeReductionBySplitEpiSummand_MorphismToInputRange := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := SyzygiesOfColumns( UnderlyingMatrix( alpha_1 ) ); + deduped_1_1 := NumberColumns( deduped_2_1 ); + return CreateCapCategoryMorphismWithAttributes( cat_1, CreateCapCategoryObjectWithAttributes( cat_1, RankOfObject, deduped_1_1 ), Range( alpha_1 ), UnderlyingMatrix, SafeRightDivide( HomalgIdentityMatrix( deduped_1_1, UnderlyingRing( cat_1 ) ), deduped_2_1 ) ); +end +######## + + ; + ## AddSumOfMorphisms( cat, diff --git a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_HomalgExteriorRingOverField_precompiled.gi b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_HomalgExteriorRingOverField_precompiled.gi index 825eabe5cd..2810dc4254 100644 --- a/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_HomalgExteriorRingOverField_precompiled.gi +++ b/FreydCategoriesForCAP/gap/precompiled_categories/CategoryOfRows_as_AdditiveClosure_RingAsCategory_HomalgExteriorRingOverField_precompiled.gi @@ -231,6 +231,46 @@ end , 100 ); + ## + cat!.cached_precompiled_functions.InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism := + +######## +function ( cat_1, source_1, range_1, alpha_1 ) + local hoisted_1_1, hoisted_3_1, deduped_5_1, hoisted_6_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1; + deduped_14_1 := BasisOfRingOverBaseFieldAsColumnVector( cat_1 ); + deduped_13_1 := UnderlyingRing( cat_1 ); + deduped_12_1 := RankOfObject( range_1 ); + deduped_11_1 := RankOfObject( source_1 ); + deduped_10_1 := [ 1 .. deduped_11_1 ]; + deduped_9_1 := Length( EntriesOfHomalgColumnVector( deduped_14_1 ) ); + deduped_5_1 := [ 1 .. deduped_12_1 ]; + hoisted_3_1 := UnderlyingMatrix( alpha_1 ); + hoisted_1_1 := deduped_12_1 * deduped_9_1; + hoisted_6_1 := List( deduped_10_1, function ( j_2 ) + return List( deduped_5_1, function ( s_3 ) + local hoisted_1_3, hoisted_2_3, deduped_3_3; + deduped_3_3 := (s_3 - 1) * deduped_9_1; + hoisted_2_3 := deduped_3_3 + deduped_9_1; + hoisted_1_3 := deduped_3_3 + 1; + return List( deduped_10_1, function ( j_4 ) + local deduped_1_4; + deduped_1_4 := (j_4 - 1) * hoisted_1_1; + return CertainColumns( hoisted_3_1, [ deduped_1_4 + hoisted_1_3 .. deduped_1_4 + hoisted_2_3 ] ); + end )[j_2]; + end ); + end ); + return CreateCapCategoryMorphismWithAttributes( cat_1, source_1, range_1, UnderlyingMatrix, HomalgMatrixListList( List( deduped_10_1, function ( j_2 ) + local hoisted_1_2; + hoisted_1_2 := hoisted_6_1[j_2]; + return List( deduped_5_1, function ( s_3 ) + return EntriesOfHomalgMatrix( CoercedMatrix( deduped_13_1, hoisted_1_2[s_3] ) * deduped_14_1 )[1]; + end ); + end ), deduped_11_1, deduped_12_1, deduped_13_1 ) ); +end +######## + + ; + ## AddIsColiftable( cat, diff --git a/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategory_precompiled.gi b/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategory_precompiled.gi index f8550368fc..cfaeb201a1 100644 --- a/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategory_precompiled.gi +++ b/LinearAlgebraForCAP/gap/precompiled_categories/MatrixCategory_precompiled.gi @@ -51,6 +51,20 @@ end , 302 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.AssociatorLeftToRight := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local deduped_4_1, deduped_5_1; + deduped_5_1 := AsInteger( a_1 ) * (AsInteger( b_1 ) * AsInteger( c_1 )); + deduped_4_1 := AsCapCategoryObject( cat_1, deduped_5_1 ); + return AsCapCategoryMorphism( cat_1, deduped_4_1, HomalgIdentityMatrix( deduped_5_1, UnderlyingRing( cat_1 ) ), deduped_4_1 ); +end +######## + + ; + ## AddAssociatorLeftToRightWithGivenTensorProducts( cat, @@ -75,6 +89,20 @@ end , 302 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.AssociatorRightToLeft := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local deduped_4_1, deduped_5_1; + deduped_5_1 := AsInteger( a_1 ) * (AsInteger( b_1 ) * AsInteger( c_1 )); + deduped_4_1 := AsCapCategoryObject( cat_1, deduped_5_1 ); + return AsCapCategoryMorphism( cat_1, deduped_4_1, HomalgIdentityMatrix( deduped_5_1, UnderlyingRing( cat_1 ) ), deduped_4_1 ); +end +######## + + ; + ## AddAssociatorRightToLeftWithGivenTensorProducts( cat, @@ -100,6 +128,19 @@ end , 302 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.AstrictionToCoimage := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1; + deduped_1_1 := AsHomalgMatrix( alpha_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_1_1 ) ), UniqueLeftDivide( BasisOfColumns( deduped_1_1 ), deduped_1_1 ), Range( alpha_1 ) ); +end +######## + + ; + ## AddAstrictionToCoimageWithGivenCoimageObject( cat, @@ -151,6 +192,26 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.Braiding := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1; + deduped_8_1 := AsInteger( b_1 ); + deduped_7_1 := AsInteger( a_1 ); + deduped_6_1 := deduped_7_1 * deduped_8_1; + deduped_5_1 := AsCapCategoryObject( cat_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, CertainRows( HomalgIdentityMatrix( deduped_6_1, UnderlyingRing( cat_1 ) ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := i_2 - 1; + return REM_INT( deduped_1_2, deduped_8_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1; + end ) ), deduped_5_1 ); +end +######## + + ; + ## AddBraidingInverse( cat, @@ -171,6 +232,26 @@ end , 202 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.BraidingInverse := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1; + deduped_8_1 := AsInteger( b_1 ); + deduped_7_1 := AsInteger( a_1 ); + deduped_6_1 := deduped_7_1 * deduped_8_1; + deduped_5_1 := AsCapCategoryObject( cat_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, CertainRows( HomalgIdentityMatrix( deduped_6_1, UnderlyingRing( cat_1 ) ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := i_2 - 1; + return REM_INT( deduped_1_2, deduped_7_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_7_1 ) + 1; + end ) ), deduped_5_1 ); +end +######## + + ; + ## AddBraidingInverseWithGivenTensorProducts( cat, @@ -237,6 +318,33 @@ end , 3212 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ClosedMonoidalLeftCoevaluationMorphism := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := AsInteger( b_1 ); + deduped_8_1 := UnderlyingRing( cat_1 ); + deduped_7_1 := AsInteger( a_1 ); + deduped_6_1 := deduped_7_1 * deduped_9_1; + deduped_5_1 := deduped_7_1 * deduped_7_1; + deduped_4_1 := HomalgIdentityMatrix( deduped_9_1, deduped_8_1 ); + deduped_3_1 := HomalgIdentityMatrix( deduped_7_1, deduped_8_1 ); + return AsCapCategoryMorphism( cat_1, b_1, KroneckerMat( ConvertMatrixToRow( deduped_3_1 ), deduped_4_1 ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_8_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_7_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_7_1 ) + 1); + end ) ), deduped_4_1 ) * KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_8_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_9_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_9_1 ) + 1); + end ) ) ), AsCapCategoryObject( cat_1, deduped_7_1 * (deduped_9_1 * deduped_7_1) ) ); +end +######## + + ; + ## AddClosedMonoidalLeftCoevaluationMorphismWithGivenRange( cat, @@ -286,6 +394,27 @@ end , 3011 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ClosedMonoidalLeftEvaluationMorphism := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1; + deduped_7_1 := UnderlyingRing( cat_1 ); + deduped_6_1 := AsInteger( b_1 ); + deduped_5_1 := AsInteger( a_1 ); + deduped_4_1 := HomalgIdentityMatrix( deduped_5_1, deduped_7_1 ); + deduped_3_1 := deduped_5_1 * deduped_6_1; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_3_1 * deduped_5_1 ), KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_3_1, deduped_7_1 ), List( [ 1 .. deduped_3_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_6_1 ) * deduped_5_1 + QUO_INT( deduped_1_2, deduped_6_1 ) + 1); + end ) ), deduped_4_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_6_1, deduped_7_1 ), ConvertMatrixToColumn( deduped_4_1 ) ), b_1 ); +end +######## + + ; + ## AddClosedMonoidalLeftEvaluationMorphismWithGivenSource( cat, @@ -340,6 +469,38 @@ end , 5925 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ClosedMonoidalRightCoevaluationMorphism := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := AsInteger( b_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := deduped_10_1 * deduped_8_1; + deduped_6_1 := deduped_8_1 * deduped_10_1; + deduped_5_1 := deduped_8_1 * deduped_8_1; + deduped_4_1 := HomalgIdentityMatrix( deduped_10_1, deduped_9_1 ); + deduped_3_1 := HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ); + return AsCapCategoryMorphism( cat_1, b_1, KroneckerMat( ConvertMatrixToRow( deduped_3_1 ), deduped_4_1 ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_9_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ), deduped_4_1 ) * KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_9_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_10_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_10_1 ) + 1); + end ) ) ) * KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_7_1, deduped_9_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_10_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ) ), AsCapCategoryObject( cat_1, deduped_8_1 * deduped_6_1 ) ); +end +######## + + ; + ## AddClosedMonoidalRightCoevaluationMorphismWithGivenRange( cat, @@ -399,6 +560,32 @@ end , 4419 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ClosedMonoidalRightEvaluationMorphism := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := AsInteger( b_1 ); + deduped_7_1 := AsInteger( a_1 ); + deduped_6_1 := HomalgIdentityMatrix( deduped_7_1, deduped_9_1 ); + deduped_5_1 := deduped_7_1 * deduped_8_1; + deduped_4_1 := deduped_7_1 * deduped_5_1; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_4_1 ), CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_9_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_5_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_5_1 ) + 1); + end ) ) * (KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_9_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ), deduped_6_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ), ConvertMatrixToColumn( deduped_6_1 ) )), b_1 ); +end +######## + + ; + ## AddClosedMonoidalRightEvaluationMorphismWithGivenSource( cat, @@ -488,6 +675,36 @@ end , 17673 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoDualityTensorProductCompatibilityMorphism := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1; + deduped_13_1 := UnderlyingRing( cat_1 ); + deduped_12_1 := AsInteger( b_1 ); + deduped_11_1 := AsInteger( a_1 ); + deduped_10_1 := HomalgIdentityMatrix( deduped_11_1, deduped_13_1 ); + deduped_9_1 := HomalgIdentityMatrix( deduped_12_1, deduped_13_1 ); + deduped_8_1 := deduped_11_1 * deduped_12_1; + deduped_7_1 := deduped_8_1 * deduped_8_1; + deduped_6_1 := HomalgIdentityMatrix( deduped_8_1, deduped_13_1 ); + deduped_5_1 := AsCapCategoryObject( cat_1, deduped_8_1 ); + deduped_4_1 := CertainRows( HomalgIdentityMatrix( deduped_7_1, deduped_13_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := i_2 - 1; + return REM_INT( deduped_1_2, deduped_8_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1; + end ) ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, KroneckerMat( deduped_6_1, ConvertMatrixToRow( deduped_9_1 ) * KroneckerMat( KroneckerMat( ConvertMatrixToRow( deduped_10_1 ), deduped_9_1 ), deduped_9_1 ) * KroneckerMat( KroneckerMat( deduped_10_1, CertainRows( deduped_6_1, List( [ 1 .. deduped_8_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_12_1 ) * deduped_11_1 + QUO_INT( deduped_1_2, deduped_12_1 ) + 1); + end ) ) ), deduped_9_1 ) ) * (KroneckerMat( deduped_6_1, deduped_4_1 ) * KroneckerMat( deduped_4_1, deduped_6_1 ) * KroneckerMat( ConvertMatrixToColumn( deduped_6_1 ), deduped_6_1 )), deduped_5_1 ); +end +######## + + ; + ## AddCoDualityTensorProductCompatibilityMorphismWithGivenObjects( cat, @@ -559,6 +776,26 @@ end , 5625 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoLambdaIntroduction := + +######## +function ( cat_1, alpha_1 ) + local deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := UnderlyingRing( cat_1 ); + deduped_4_1 := AsInteger( Range( alpha_1 ) ); + deduped_3_1 := deduped_4_1 * deduped_4_1; + deduped_2_1 := HomalgIdentityMatrix( deduped_4_1, deduped_5_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, AsInteger( Source( alpha_1 ) ) * deduped_4_1 ), KroneckerMat( deduped_2_1, AsHomalgMatrix( alpha_1 ) ) * (CertainRows( HomalgIdentityMatrix( deduped_3_1, deduped_5_1 ), List( [ 1 .. deduped_3_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_4_1 ) * deduped_4_1 + QUO_INT( deduped_1_2, deduped_4_1 ) + 1); + end ) ) * ConvertMatrixToColumn( deduped_2_1 )), AsCapCategoryObject( cat_1, 1 ) ); +end +######## + + ; + ## AddCoRankMorphism( cat, @@ -615,6 +852,19 @@ end , 302 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoastrictionToImage := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1; + deduped_1_1 := AsHomalgMatrix( alpha_1 ); + return AsCapCategoryMorphism( cat_1, Source( alpha_1 ), UniqueRightDivide( deduped_1_1, BasisOfRows( deduped_1_1 ) ), AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_1_1 ) ) ); +end +######## + + ; + ## AddCoastrictionToImageWithGivenImageObject( cat, @@ -641,6 +891,19 @@ end , 401 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoclosedCoevaluationForCoDual := + +######## +function ( cat_1, a_1 ) + local deduped_1_1; + deduped_1_1 := AsInteger( a_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_1_1 * deduped_1_1 ), ConvertMatrixToColumn( HomalgIdentityMatrix( deduped_1_1, UnderlyingRing( cat_1 ) ) ), AsCapCategoryObject( cat_1, 1 ) ); +end +######## + + ; + ## AddCoclosedCoevaluationForCoDualWithGivenTensorProduct( cat, @@ -665,6 +928,19 @@ end , 401 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoclosedEvaluationForCoDual := + +######## +function ( cat_1, a_1 ) + local deduped_1_1; + deduped_1_1 := AsInteger( a_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 1 ), ConvertMatrixToRow( HomalgIdentityMatrix( deduped_1_1, UnderlyingRing( cat_1 ) ) ), AsCapCategoryObject( cat_1, deduped_1_1 * deduped_1_1 ) ); +end +######## + + ; + ## AddCoclosedEvaluationForCoDualWithGivenTensorProduct( cat, @@ -704,6 +980,33 @@ end , 3212 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoclosedMonoidalLeftCoevaluationMorphism := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := AsInteger( b_1 ); + deduped_6_1 := HomalgIdentityMatrix( deduped_7_1, deduped_9_1 ); + deduped_5_1 := deduped_8_1 * deduped_8_1; + deduped_4_1 := HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ); + deduped_3_1 := deduped_7_1 * deduped_8_1; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_3_1 * deduped_8_1 ), KroneckerMat( deduped_4_1, CertainRows( HomalgIdentityMatrix( deduped_3_1, deduped_9_1 ), List( [ 1 .. deduped_3_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_9_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ), deduped_6_1 ) * KroneckerMat( ConvertMatrixToColumn( deduped_4_1 ), deduped_6_1 ), b_1 ); +end +######## + + ; + ## AddCoclosedMonoidalLeftCoevaluationMorphismWithGivenSource( cat, @@ -753,6 +1056,27 @@ end , 3011 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoclosedMonoidalLeftEvaluationMorphism := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1; + deduped_7_1 := AsInteger( a_1 ); + deduped_6_1 := UnderlyingRing( cat_1 ); + deduped_5_1 := AsInteger( b_1 ); + deduped_4_1 := deduped_5_1 * deduped_7_1; + deduped_3_1 := HomalgIdentityMatrix( deduped_7_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, b_1, KroneckerMat( HomalgIdentityMatrix( deduped_5_1, deduped_6_1 ), ConvertMatrixToRow( deduped_3_1 ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_6_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_7_1 ) * deduped_5_1 + QUO_INT( deduped_1_2, deduped_7_1 ) + 1); + end ) ), deduped_3_1 ), AsCapCategoryObject( cat_1, deduped_4_1 * deduped_7_1 ) ); +end +######## + + ; + ## AddCoclosedMonoidalLeftEvaluationMorphismWithGivenRange( cat, @@ -808,24 +1132,56 @@ end , 5924 : IsPrecompiledDerivation := true ); ## - AddCoclosedMonoidalRightCoevaluationMorphismWithGivenSource( cat, + cat!.cached_precompiled_functions.CoclosedMonoidalRightCoevaluationMorphism := ######## -function ( cat_1, a_1, b_1, s_1 ) +function ( cat_1, a_1, b_1 ) local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; - deduped_10_1 := AsInteger( b_1 ); - deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := AsInteger( b_1 ); deduped_8_1 := AsInteger( a_1 ); - deduped_7_1 := HomalgIdentityMatrix( deduped_10_1, deduped_9_1 ); + deduped_7_1 := HomalgIdentityMatrix( deduped_9_1, deduped_10_1 ); deduped_6_1 := deduped_8_1 * deduped_8_1; - deduped_5_1 := deduped_10_1 * deduped_8_1; - deduped_4_1 := deduped_8_1 * deduped_10_1; - deduped_3_1 := HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ); - return AsCapCategoryMorphism( cat_1, s_1, KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_9_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + deduped_5_1 := deduped_9_1 * deduped_8_1; + deduped_4_1 := HomalgIdentityMatrix( deduped_8_1, deduped_10_1 ); + deduped_3_1 := deduped_8_1 * deduped_9_1; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_3_1 * deduped_8_1 ), KroneckerMat( deduped_4_1, CertainRows( HomalgIdentityMatrix( deduped_3_1, deduped_10_1 ), List( [ 1 .. deduped_3_1 ], function ( i_2 ) local deduped_1_2; deduped_1_2 := (i_2 - 1); - return (REM_INT( deduped_1_2, deduped_10_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_10_1 ) + 1); - end ) ) ) * (KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_9_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + return (REM_INT( deduped_1_2, deduped_9_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_9_1 ) + 1); + end ) ) ) * (KroneckerMat( deduped_4_1, CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_10_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_9_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_10_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ), deduped_7_1 ) * KroneckerMat( ConvertMatrixToColumn( deduped_4_1 ), deduped_7_1 )), b_1 ); +end +######## + + ; + + ## + AddCoclosedMonoidalRightCoevaluationMorphismWithGivenSource( cat, + +######## +function ( cat_1, a_1, b_1, s_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := AsInteger( b_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := HomalgIdentityMatrix( deduped_10_1, deduped_9_1 ); + deduped_6_1 := deduped_8_1 * deduped_8_1; + deduped_5_1 := deduped_10_1 * deduped_8_1; + deduped_4_1 := deduped_8_1 * deduped_10_1; + deduped_3_1 := HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ); + return AsCapCategoryMorphism( cat_1, s_1, KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_9_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_10_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_10_1 ) + 1); + end ) ) ) * (KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_9_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) local deduped_1_2; deduped_1_2 := (i_2 - 1); return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_10_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); @@ -866,6 +1222,32 @@ end , 4420 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoclosedMonoidalRightEvaluationMorphism := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := AsInteger( a_1 ); + deduped_8_1 := UnderlyingRing( cat_1 ); + deduped_7_1 := AsInteger( b_1 ); + deduped_6_1 := deduped_7_1 * deduped_9_1; + deduped_5_1 := HomalgIdentityMatrix( deduped_9_1, deduped_8_1 ); + deduped_4_1 := deduped_6_1 * deduped_9_1; + return AsCapCategoryMorphism( cat_1, b_1, KroneckerMat( HomalgIdentityMatrix( deduped_7_1, deduped_8_1 ), ConvertMatrixToRow( deduped_5_1 ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_8_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_9_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_9_1 ) + 1); + end ) ), deduped_5_1 ) * CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_8_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_9_1 ) * deduped_6_1 + QUO_INT( deduped_1_2, deduped_9_1 ) + 1); + end ) ), AsCapCategoryObject( cat_1, deduped_9_1 * deduped_6_1 ) ); +end +######## + + ; + ## AddCoclosedMonoidalRightEvaluationMorphismWithGivenRange( cat, @@ -939,6 +1321,27 @@ end , 11500 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoequalizerFunctorial := + +######## +function ( cat_1, morphisms_1, mu_1, morphismsp_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := Length( morphismsp_1 ); + deduped_8_1 := List( morphismsp_1, AsHomalgMatrix ); + deduped_7_1 := Length( morphisms_1 ); + deduped_6_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_5_1 := UnderlyingRing( cat_1 ); + deduped_4_1 := AsInteger( Range( mu_1 ) ); + deduped_3_1 := AsInteger( Source( mu_1 ) ); + deduped_2_1 := UnionOfRows( deduped_5_1, deduped_4_1, deduped_8_1{[ 1 .. deduped_9_1 - 1 ]} ) - UnionOfRows( deduped_5_1, deduped_4_1, deduped_8_1{[ 2 .. deduped_9_1 ]} ); + deduped_1_1 := UnionOfRows( deduped_5_1, deduped_3_1, deduped_6_1{[ 1 .. deduped_7_1 - 1 ]} ) - UnionOfRows( deduped_5_1, deduped_3_1, deduped_6_1{[ 2 .. deduped_7_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_3_1 - RowRankOfMatrix( deduped_1_1 ) ), UniqueLeftDivide( SyzygiesOfColumns( deduped_1_1 ), AsHomalgMatrix( mu_1 ) * SyzygiesOfColumns( deduped_2_1 ) ), AsCapCategoryObject( cat_1, deduped_4_1 - RowRankOfMatrix( deduped_2_1 ) ) ); +end +######## + + ; + ## AddCoequalizerFunctorialWithGivenCoequalizers( cat, @@ -959,6 +1362,27 @@ end , 5851 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoequalizerFunctorialWithGivenCoequalizers := + +######## +function ( cat_1, P_1, morphisms_1, mu_1, morphismsp_1, Pp_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := Length( morphismsp_1 ); + deduped_8_1 := List( morphismsp_1, AsHomalgMatrix ); + deduped_7_1 := Length( morphisms_1 ); + deduped_6_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_5_1 := UnderlyingRing( cat_1 ); + deduped_4_1 := AsInteger( Range( mu_1 ) ); + deduped_3_1 := AsInteger( Source( mu_1 ) ); + deduped_2_1 := UnionOfRows( deduped_5_1, deduped_4_1, deduped_8_1{[ 1 .. deduped_9_1 - 1 ]} ) - UnionOfRows( deduped_5_1, deduped_4_1, deduped_8_1{[ 2 .. deduped_9_1 ]} ); + deduped_1_1 := UnionOfRows( deduped_5_1, deduped_3_1, deduped_6_1{[ 1 .. deduped_7_1 - 1 ]} ) - UnionOfRows( deduped_5_1, deduped_3_1, deduped_6_1{[ 2 .. deduped_7_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_3_1 - RowRankOfMatrix( deduped_1_1 ) ), UniqueLeftDivide( SyzygiesOfColumns( deduped_1_1 ), AsHomalgMatrix( mu_1 ) * SyzygiesOfColumns( deduped_2_1 ) ), AsCapCategoryObject( cat_1, deduped_4_1 - RowRankOfMatrix( deduped_2_1 ) ) ); +end +######## + + ; + ## AddCoevaluationForDual( cat, @@ -972,6 +1396,19 @@ end , 401 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoevaluationForDual := + +######## +function ( cat_1, a_1 ) + local deduped_1_1; + deduped_1_1 := AsInteger( a_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 1 ), ConvertMatrixToRow( HomalgIdentityMatrix( deduped_1_1, UnderlyingRing( cat_1 ) ) ), AsCapCategoryObject( cat_1, deduped_1_1 * deduped_1_1 ) ); +end +######## + + ; + ## AddCoevaluationForDualWithGivenTensorProduct( cat, @@ -1007,6 +1444,20 @@ end , 603 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoimageObjectFunctorial := + +######## +function ( cat_1, alpha_1, mu_1, alphap_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsHomalgMatrix( alphap_1 ); + deduped_1_1 := AsHomalgMatrix( alpha_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_1_1 ) ), UniqueLeftDivide( BasisOfColumns( deduped_1_1 ), AsHomalgMatrix( mu_1 ) * BasisOfColumns( deduped_2_1 ) ), AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_2_1 ) ) ); +end +######## + + ; + ## AddCoimageObjectFunctorialWithGivenCoimageObjects( cat, @@ -1031,6 +1482,19 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoimageProjection := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1; + deduped_1_1 := AsHomalgMatrix( alpha_1 ); + return AsCapCategoryMorphism( cat_1, Source( alpha_1 ), BasisOfColumns( deduped_1_1 ), AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_1_1 ) ) ); +end +######## + + ; + ## AddCoimageProjectionWithGivenCoimageObject( cat, @@ -1055,6 +1519,19 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CokernelColift := + +######## +function ( cat_1, alpha_1, T_1, tau_1 ) + local deduped_1_1; + deduped_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ), UniqueLeftDivide( deduped_1_1, AsHomalgMatrix( tau_1 ) ), Range( tau_1 ) ); +end +######## + + ; + ## AddCokernelColiftWithGivenCokernelObject( cat, @@ -1068,6 +1545,19 @@ end , 202 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CokernelColiftWithGivenCokernelObject := + +######## +function ( cat_1, alpha_1, T_1, tau_1, P_1 ) + local deduped_1_1; + deduped_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ), UniqueLeftDivide( deduped_1_1, AsHomalgMatrix( tau_1 ) ), Range( tau_1 ) ); +end +######## + + ; + ## AddCokernelObject( cat, @@ -1092,6 +1582,20 @@ end , 606 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CokernelObjectFunctorial := + +######## +function ( cat_1, alpha_1, mu_1, alphap_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := SyzygiesOfColumns( AsHomalgMatrix( alphap_1 ) ); + deduped_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ), UniqueLeftDivide( deduped_1_1, AsHomalgMatrix( mu_1 ) * deduped_2_1 ), AsCapCategoryObject( cat_1, NumberColumns( deduped_2_1 ) ) ); +end +######## + + ; + ## AddCokernelObjectFunctorialWithGivenCokernelObjects( cat, @@ -1105,6 +1609,20 @@ end , 405 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CokernelObjectFunctorialWithGivenCokernelObjects := + +######## +function ( cat_1, P_1, alpha_1, mu_1, alphap_1, Pp_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := SyzygiesOfColumns( AsHomalgMatrix( alphap_1 ) ); + deduped_1_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ), UniqueLeftDivide( deduped_1_1, AsHomalgMatrix( mu_1 ) * deduped_2_1 ), AsCapCategoryObject( cat_1, NumberColumns( deduped_2_1 ) ) ); +end +######## + + ; + ## AddCokernelProjection( cat, @@ -1240,6 +1758,27 @@ end , 2123 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoproductFunctorial := + +######## +function ( cat_1, objects_1, L_1, objectsp_1 ) + local hoisted_1_1, hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1; + deduped_7_1 := List( objectsp_1, AsInteger ); + deduped_6_1 := UnderlyingRing( cat_1 ); + deduped_5_1 := Sum( deduped_7_1 ); + hoisted_4_1 := Length( objectsp_1 ); + hoisted_1_1 := List( L_1, AsHomalgMatrix ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( objects_1, AsInteger ) ) ), UnionOfRows( deduped_6_1, deduped_5_1, List( [ 1 .. Length( L_1 ) ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_7_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_6_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_7_1{[ 1 .. (i_2 - 1) ]} ), deduped_6_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_6_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_7_1{[ (i_2 + 1) .. hoisted_4_1 ]} ), deduped_6_1 ) ] ); + end ) ), AsCapCategoryObject( cat_1, deduped_5_1 ) ); +end +######## + + ; + ## AddCoproductFunctorialWithGivenCoproducts( cat, @@ -1260,6 +1799,26 @@ end , 1718 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.CoproductFunctorialWithGivenCoproducts := + +######## +function ( cat_1, P_1, objects_1, L_1, objectsp_1, Pp_1 ) + local hoisted_1_1, deduped_2_1, hoisted_4_1, deduped_5_1; + deduped_5_1 := UnderlyingRing( cat_1 ); + hoisted_4_1 := Length( objectsp_1 ); + deduped_2_1 := List( objectsp_1, AsInteger ); + hoisted_1_1 := List( L_1, AsHomalgMatrix ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( objects_1, AsInteger ) ) ), UnionOfRows( deduped_5_1, AsInteger( Pp_1 ), List( [ 1 .. Length( L_1 ) ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_2_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_5_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_2_1{[ 1 .. (i_2 - 1) ]} ), deduped_5_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_5_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_2_1{[ (i_2 + 1) .. hoisted_4_1 ]} ), deduped_5_1 ) ] ); + end ) ), Pp_1 ); +end +######## + + ; + ## AddDirectProduct( cat, @@ -1291,6 +1850,27 @@ end , 2118 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.DirectProductFunctorial := + +######## +function ( cat_1, objects_1, L_1, objectsp_1 ) + local hoisted_3_1, hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1; + deduped_7_1 := UnderlyingRing( cat_1 ); + deduped_6_1 := List( objects_1, AsInteger ); + deduped_5_1 := Sum( deduped_6_1 ); + hoisted_4_1 := List( L_1, AsHomalgMatrix ); + hoisted_3_1 := Length( objects_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_5_1 ), UnionOfColumns( deduped_7_1, deduped_5_1, List( [ 1 .. Length( L_1 ) ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_6_1[i_2]; + return UnionOfRows( deduped_7_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_6_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_7_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_7_1 ), HomalgZeroMatrix( Sum( deduped_6_1{[ (i_2 + 1) .. hoisted_3_1 ]} ), deduped_1_2, deduped_7_1 ) ] ) * hoisted_4_1[i_2]; + end ) ), AsCapCategoryObject( cat_1, Sum( List( objectsp_1, AsInteger ) ) ) ); +end +######## + + ; + ## AddDirectProductFunctorialWithGivenDirectProducts( cat, @@ -1311,6 +1891,26 @@ end , 1713 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.DirectProductFunctorialWithGivenDirectProducts := + +######## +function ( cat_1, P_1, objects_1, L_1, objectsp_1, Pp_1 ) + local deduped_1_1, hoisted_3_1, hoisted_4_1, deduped_5_1; + deduped_5_1 := UnderlyingRing( cat_1 ); + hoisted_4_1 := List( L_1, AsHomalgMatrix ); + hoisted_3_1 := Length( objects_1 ); + deduped_1_1 := List( objects_1, AsInteger ); + return AsCapCategoryMorphism( cat_1, P_1, UnionOfColumns( deduped_5_1, AsInteger( P_1 ), List( [ 1 .. Length( L_1 ) ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_1_1[i_2]; + return UnionOfRows( deduped_5_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_1_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_5_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_5_1 ), HomalgZeroMatrix( Sum( deduped_1_1{[ (i_2 + 1) .. hoisted_3_1 ]} ), deduped_1_2, deduped_5_1 ) ] ) * hoisted_4_1[i_2]; + end ) ), AsCapCategoryObject( cat_1, Sum( List( objectsp_1, AsInteger ) ) ) ); +end +######## + + ; + ## AddDirectSum( cat, @@ -1335,6 +1935,17 @@ end , 301 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.DirectSumFunctorial := + +######## +function ( cat_1, objects_1, L_1, objectsp_1 ) + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( objects_1, AsInteger ) ) ), DiagMat( UnderlyingRing( cat_1 ), List( L_1, AsHomalgMatrix ) ), AsCapCategoryObject( cat_1, Sum( List( objectsp_1, AsInteger ) ) ) ); +end +######## + + ; + ## AddDirectSumFunctorialWithGivenDirectSums( cat, @@ -1407,6 +2018,23 @@ end , 2818 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.EmbeddingOfEqualizer := + +######## +function ( cat_1, Y_1, morphisms_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := AsInteger( Y_1 ); + deduped_1_1 := UnionOfColumns( deduped_3_1, deduped_2_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfColumns( deduped_3_1, deduped_2_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_2_1 - RowRankOfMatrix( deduped_1_1 ) ), SyzygiesOfRows( deduped_1_1 ), Y_1 ); +end +######## + + ; + ## AddEmbeddingOfEqualizerWithGivenEqualizer( cat, @@ -1424,6 +2052,23 @@ end , 2819 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.EmbeddingOfEqualizerWithGivenEqualizer := + +######## +function ( cat_1, Y_1, morphisms_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := AsInteger( Y_1 ); + deduped_1_1 := UnionOfColumns( deduped_3_1, deduped_2_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfColumns( deduped_3_1, deduped_2_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_2_1 - RowRankOfMatrix( deduped_1_1 ) ), SyzygiesOfRows( deduped_1_1 ), Y_1 ); +end +######## + + ; + ## AddEpimorphismFromSomeProjectiveObject( cat, @@ -1482,6 +2127,27 @@ end , 11479 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.EqualizerFunctorial := + +######## +function ( cat_1, morphisms_1, mu_1, morphismsp_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := Length( morphismsp_1 ); + deduped_8_1 := List( morphismsp_1, AsHomalgMatrix ); + deduped_7_1 := Length( morphisms_1 ); + deduped_6_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_5_1 := UnderlyingRing( cat_1 ); + deduped_4_1 := AsInteger( Range( mu_1 ) ); + deduped_3_1 := AsInteger( Source( mu_1 ) ); + deduped_2_1 := UnionOfColumns( deduped_5_1, deduped_4_1, deduped_8_1{[ 1 .. deduped_9_1 - 1 ]} ) - UnionOfColumns( deduped_5_1, deduped_4_1, deduped_8_1{[ 2 .. deduped_9_1 ]} ); + deduped_1_1 := UnionOfColumns( deduped_5_1, deduped_3_1, deduped_6_1{[ 1 .. deduped_7_1 - 1 ]} ) - UnionOfColumns( deduped_5_1, deduped_3_1, deduped_6_1{[ 2 .. deduped_7_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_3_1 - RowRankOfMatrix( deduped_1_1 ) ), UniqueRightDivide( SyzygiesOfRows( deduped_1_1 ) * AsHomalgMatrix( mu_1 ), SyzygiesOfRows( deduped_2_1 ) ), AsCapCategoryObject( cat_1, deduped_4_1 - RowRankOfMatrix( deduped_2_1 ) ) ); +end +######## + + ; + ## AddEqualizerFunctorialWithGivenEqualizers( cat, @@ -1502,6 +2168,27 @@ end , 5840 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.EqualizerFunctorialWithGivenEqualizers := + +######## +function ( cat_1, P_1, morphisms_1, mu_1, morphismsp_1, Pp_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := Length( morphismsp_1 ); + deduped_8_1 := List( morphismsp_1, AsHomalgMatrix ); + deduped_7_1 := Length( morphisms_1 ); + deduped_6_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_5_1 := UnderlyingRing( cat_1 ); + deduped_4_1 := AsInteger( Range( mu_1 ) ); + deduped_3_1 := AsInteger( Source( mu_1 ) ); + deduped_2_1 := UnionOfColumns( deduped_5_1, deduped_4_1, deduped_8_1{[ 1 .. deduped_9_1 - 1 ]} ) - UnionOfColumns( deduped_5_1, deduped_4_1, deduped_8_1{[ 2 .. deduped_9_1 ]} ); + deduped_1_1 := UnionOfColumns( deduped_5_1, deduped_3_1, deduped_6_1{[ 1 .. deduped_7_1 - 1 ]} ) - UnionOfColumns( deduped_5_1, deduped_3_1, deduped_6_1{[ 2 .. deduped_7_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_3_1 - RowRankOfMatrix( deduped_1_1 ) ), UniqueRightDivide( SyzygiesOfRows( deduped_1_1 ) * AsHomalgMatrix( mu_1 ), SyzygiesOfRows( deduped_2_1 ) ), AsCapCategoryObject( cat_1, deduped_4_1 - RowRankOfMatrix( deduped_2_1 ) ) ); +end +######## + + ; + ## AddEvaluationForDual( cat, @@ -1515,6 +2202,19 @@ end , 401 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.EvaluationForDual := + +######## +function ( cat_1, a_1 ) + local deduped_1_1; + deduped_1_1 := AsInteger( a_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_1_1 * deduped_1_1 ), ConvertMatrixToColumn( HomalgIdentityMatrix( deduped_1_1, UnderlyingRing( cat_1 ) ) ), AsCapCategoryObject( cat_1, 1 ) ); +end +######## + + ; + ## AddEvaluationForDualWithGivenTensorProduct( cat, @@ -1550,18 +2250,42 @@ end , 4331 : IsPrecompiledDerivation := true ); ## - AddFiberProductFunctorial( cat, + cat!.cached_precompiled_functions.FiberProduct := ######## -function ( cat_1, morphisms_1, L_1, morphismsp_1 ) - local hoisted_4_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1; - deduped_17_1 := Length( morphismsp_1 ); - deduped_16_1 := Length( morphisms_1 ); - deduped_15_1 := UnderlyingRing( cat_1 ); - deduped_14_1 := List( morphismsp_1, function ( logic_new_func_x_2 ) - return AsInteger( Source( logic_new_func_x_2 ) ); - end ); - deduped_13_1 := List( morphisms_1, function ( logic_new_func_x_2 ) +function ( cat_1, morphisms_1 ) + local hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := Length( morphisms_1 ); + deduped_8_1 := UnderlyingRing( cat_1 ); + deduped_7_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_6_1 := Sum( deduped_7_1 ); + hoisted_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_5_1 := List( [ 1 .. deduped_9_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_7_1[i_2]; + return UnionOfRows( deduped_8_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_7_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_8_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_8_1 ), HomalgZeroMatrix( Sum( deduped_7_1{[ (i_2 + 1) .. deduped_9_1 ]} ), deduped_1_2, deduped_8_1 ) ] ) * hoisted_4_1[i_2]; + end ); + return AsCapCategoryObject( cat_1, deduped_6_1 - RowRankOfMatrix( (UnionOfColumns( deduped_8_1, deduped_6_1, deduped_5_1{[ 1 .. deduped_9_1 - 1 ]} ) - UnionOfColumns( deduped_8_1, deduped_6_1, deduped_5_1{[ 2 .. deduped_9_1 ]} )) ) ); +end +######## + + ; + + ## + AddFiberProductFunctorial( cat, + +######## +function ( cat_1, morphisms_1, L_1, morphismsp_1 ) + local hoisted_4_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1; + deduped_17_1 := Length( morphismsp_1 ); + deduped_16_1 := Length( morphisms_1 ); + deduped_15_1 := UnderlyingRing( cat_1 ); + deduped_14_1 := List( morphismsp_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_13_1 := List( morphisms_1, function ( logic_new_func_x_2 ) return AsInteger( Source( logic_new_func_x_2 ) ); end ); deduped_12_1 := Sum( deduped_14_1 ); @@ -1589,6 +2313,50 @@ end , 36252 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.FiberProductFunctorial := + +######## +function ( cat_1, morphisms_1, L_1, morphismsp_1 ) + local hoisted_4_1, hoisted_5_1, hoisted_6_1, hoisted_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1, deduped_20_1, deduped_21_1; + deduped_21_1 := Length( morphismsp_1 ); + deduped_20_1 := Length( morphisms_1 ); + deduped_19_1 := UnderlyingRing( cat_1 ); + deduped_18_1 := List( morphismsp_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_17_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_16_1 := Sum( deduped_18_1 ); + deduped_15_1 := Sum( deduped_17_1 ); + hoisted_9_1 := List( morphismsp_1, AsHomalgMatrix ); + deduped_14_1 := List( [ 1 .. deduped_21_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_18_1[i_2]; + return UnionOfRows( deduped_19_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_18_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_19_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_19_1 ), HomalgZeroMatrix( Sum( deduped_18_1{[ (i_2 + 1) .. deduped_21_1 ]} ), deduped_1_2, deduped_19_1 ) ] ) * hoisted_9_1[i_2]; + end ); + hoisted_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_13_1 := List( [ 1 .. deduped_20_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_17_1[i_2]; + return UnionOfRows( deduped_19_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_17_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_19_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_19_1 ), HomalgZeroMatrix( Sum( deduped_17_1{[ (i_2 + 1) .. deduped_20_1 ]} ), deduped_1_2, deduped_19_1 ) ] ) * hoisted_4_1[i_2]; + end ); + deduped_12_1 := UnionOfColumns( deduped_19_1, deduped_16_1, deduped_14_1{[ 1 .. deduped_21_1 - 1 ]} ) - UnionOfColumns( deduped_19_1, deduped_16_1, deduped_14_1{[ 2 .. deduped_21_1 ]} ); + deduped_11_1 := UnionOfColumns( deduped_19_1, deduped_15_1, deduped_13_1{[ 1 .. deduped_20_1 - 1 ]} ) - UnionOfColumns( deduped_19_1, deduped_15_1, deduped_13_1{[ 2 .. deduped_20_1 ]} ); + deduped_10_1 := deduped_15_1 - RowRankOfMatrix( deduped_11_1 ); + hoisted_6_1 := List( L_1, AsHomalgMatrix ); + hoisted_5_1 := SyzygiesOfRows( deduped_11_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_10_1 ), UniqueRightDivide( UnionOfColumns( deduped_19_1, deduped_10_1, List( [ 1 .. Length( L_1 ) ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := Sum( deduped_17_1{[ 1 .. i_2 - 1 ]} ); + return CertainColumns( hoisted_5_1, [ (deduped_1_2 + 1) .. (deduped_1_2 + deduped_17_1[i_2]) ] ) * hoisted_6_1[i_2]; + end ) ), SyzygiesOfRows( deduped_12_1 ) ), AsCapCategoryObject( cat_1, deduped_16_1 - RowRankOfMatrix( deduped_12_1 ) ) ); +end +######## + + ; + ## AddFiberProductFunctorialWithGivenFiberProducts( cat, @@ -1628,6 +2396,48 @@ end , 27589 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.FiberProductFunctorialWithGivenFiberProducts := + +######## +function ( cat_1, P_1, morphisms_1, L_1, morphismsp_1, Pp_1 ) + local hoisted_4_1, hoisted_5_1, hoisted_6_1, hoisted_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1; + deduped_19_1 := Length( morphisms_1 ); + deduped_18_1 := Length( morphismsp_1 ); + deduped_17_1 := UnderlyingRing( cat_1 ); + deduped_16_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_15_1 := List( morphismsp_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_14_1 := Sum( deduped_16_1 ); + deduped_13_1 := Sum( deduped_15_1 ); + hoisted_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_12_1 := List( [ 1 .. deduped_19_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_16_1[i_2]; + return UnionOfRows( deduped_17_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_16_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_17_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_17_1 ), HomalgZeroMatrix( Sum( deduped_16_1{[ (i_2 + 1) .. deduped_19_1 ]} ), deduped_1_2, deduped_17_1 ) ] ) * hoisted_4_1[i_2]; + end ); + hoisted_9_1 := List( morphismsp_1, AsHomalgMatrix ); + deduped_11_1 := List( [ 1 .. deduped_18_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_15_1[i_2]; + return UnionOfRows( deduped_17_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_15_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_17_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_17_1 ), HomalgZeroMatrix( Sum( deduped_15_1{[ (i_2 + 1) .. deduped_18_1 ]} ), deduped_1_2, deduped_17_1 ) ] ) * hoisted_9_1[i_2]; + end ); + deduped_10_1 := UnionOfColumns( deduped_17_1, deduped_13_1, deduped_11_1{[ 1 .. deduped_18_1 - 1 ]} ) - UnionOfColumns( deduped_17_1, deduped_13_1, deduped_11_1{[ 2 .. deduped_18_1 ]} ); + hoisted_6_1 := List( L_1, AsHomalgMatrix ); + hoisted_5_1 := SyzygiesOfRows( UnionOfColumns( deduped_17_1, deduped_14_1, deduped_12_1{[ 1 .. deduped_19_1 - 1 ]} ) - UnionOfColumns( deduped_17_1, deduped_14_1, deduped_12_1{[ 2 .. deduped_19_1 ]} ) ); + return AsCapCategoryMorphism( cat_1, P_1, UniqueRightDivide( UnionOfColumns( deduped_17_1, AsInteger( P_1 ), List( [ 1 .. Length( L_1 ) ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := Sum( deduped_16_1{[ 1 .. i_2 - 1 ]} ); + return CertainColumns( hoisted_5_1, [ (deduped_1_2 + 1) .. (deduped_1_2 + deduped_16_1[i_2]) ] ) * hoisted_6_1[i_2]; + end ) ), SyzygiesOfRows( deduped_10_1 ) ), AsCapCategoryObject( cat_1, deduped_13_1 - RowRankOfMatrix( deduped_10_1 ) ) ); +end +######## + + ; + ## AddHomologyObject( cat, @@ -1666,6 +2476,17 @@ end , 301 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.HomomorphismStructureOnMorphisms := + +######## +function ( cat_1, alpha_1, beta_1 ) + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, AsInteger( Range( alpha_1 ) ) * AsInteger( Source( beta_1 ) ) ), KroneckerMat( TransposedMatrix( AsHomalgMatrix( alpha_1 ) ), AsHomalgMatrix( beta_1 ) ), AsCapCategoryObject( cat_1, AsInteger( Source( alpha_1 ) ) * AsInteger( Range( beta_1 ) ) ) ); +end +######## + + ; + ## AddHomomorphismStructureOnMorphismsWithGivenObjects( cat, @@ -1712,6 +2533,19 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ImageEmbedding := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1; + deduped_1_1 := AsHomalgMatrix( alpha_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_1_1 ) ), BasisOfRows( deduped_1_1 ), Range( alpha_1 ) ); +end +######## + + ; + ## AddImageEmbeddingWithGivenImageObject( cat, @@ -1747,6 +2581,20 @@ end , 602 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ImageObjectFunctorial := + +######## +function ( cat_1, alpha_1, nu_1, alphap_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsHomalgMatrix( alphap_1 ); + deduped_1_1 := AsHomalgMatrix( alpha_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_1_1 ) ), UniqueRightDivide( BasisOfRows( deduped_1_1 ) * AsHomalgMatrix( nu_1 ), BasisOfRows( deduped_2_1 ) ), AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_2_1 ) ) ); +end +######## + + ; + ## AddImageObjectFunctorialWithGivenImageObjects( cat, @@ -1809,6 +2657,21 @@ end , 504 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InjectionOfCofactorOfCoproduct := + +######## +function ( cat_1, objects_1, k_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := List( objects_1, AsInteger ); + deduped_2_1 := UnderlyingRing( cat_1 ); + deduped_1_1 := deduped_3_1[k_1]; + return AsCapCategoryMorphism( cat_1, objects_1[k_1], UnionOfColumns( deduped_2_1, deduped_1_1, [ HomalgZeroMatrix( deduped_1_1, Sum( deduped_3_1{[ 1 .. k_1 - 1 ]} ), deduped_2_1 ), HomalgIdentityMatrix( deduped_1_1, deduped_2_1 ), HomalgZeroMatrix( deduped_1_1, Sum( deduped_3_1{[ k_1 + 1 .. Length( objects_1 ) ]} ), deduped_2_1 ) ] ), AsCapCategoryObject( cat_1, Sum( deduped_3_1 ) ) ); +end +######## + + ; + ## AddInjectionOfCofactorOfCoproductWithGivenCoproduct( cat, @@ -1825,6 +2688,21 @@ end , 505 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InjectionOfCofactorOfCoproductWithGivenCoproduct := + +######## +function ( cat_1, objects_1, k_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := List( objects_1, AsInteger ); + deduped_2_1 := UnderlyingRing( cat_1 ); + deduped_1_1 := deduped_3_1[k_1]; + return AsCapCategoryMorphism( cat_1, objects_1[k_1], UnionOfColumns( deduped_2_1, deduped_1_1, [ HomalgZeroMatrix( deduped_1_1, Sum( deduped_3_1{[ 1 .. k_1 - 1 ]} ), deduped_2_1 ), HomalgIdentityMatrix( deduped_1_1, deduped_2_1 ), HomalgZeroMatrix( deduped_1_1, Sum( deduped_3_1{[ k_1 + 1 .. Length( objects_1 ) ]} ), deduped_2_1 ) ] ), AsCapCategoryObject( cat_1, Sum( deduped_3_1 ) ) ); +end +######## + + ; + ## AddInjectionOfCofactorOfDirectSum( cat, @@ -1841,6 +2719,21 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InjectionOfCofactorOfDirectSum := + +######## +function ( cat_1, objects_1, k_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := List( objects_1, AsInteger ); + deduped_2_1 := UnderlyingRing( cat_1 ); + deduped_1_1 := deduped_3_1[k_1]; + return AsCapCategoryMorphism( cat_1, objects_1[k_1], UnionOfColumns( deduped_2_1, deduped_1_1, [ HomalgZeroMatrix( deduped_1_1, Sum( deduped_3_1{[ 1 .. k_1 - 1 ]} ), deduped_2_1 ), HomalgIdentityMatrix( deduped_1_1, deduped_2_1 ), HomalgZeroMatrix( deduped_1_1, Sum( deduped_3_1{[ k_1 + 1 .. Length( objects_1 ) ]} ), deduped_2_1 ) ] ), AsCapCategoryObject( cat_1, Sum( deduped_3_1 ) ) ); +end +######## + + ; + ## AddInjectionOfCofactorOfDirectSumWithGivenDirectSum( cat, @@ -1881,6 +2774,32 @@ end , 9079 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InjectionOfCofactorOfPushout := + +######## +function ( cat_1, morphisms_1, k_1 ) + local hoisted_1_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1; + deduped_11_1 := Length( morphisms_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + deduped_7_1 := Sum( deduped_9_1{[ 1 .. k_1 - 1 ]} ); + hoisted_1_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_6_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_10_1 ) ] ); + end ); + deduped_5_1 := UnionOfRows( deduped_10_1, deduped_8_1, deduped_6_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfRows( deduped_10_1, deduped_8_1, deduped_6_1{[ 2 .. deduped_11_1 ]} ); + return AsCapCategoryMorphism( cat_1, List( morphisms_1, Range )[k_1], CertainRows( SyzygiesOfColumns( deduped_5_1 ), [ deduped_7_1 + 1 .. deduped_7_1 + deduped_9_1[k_1] ] ), AsCapCategoryObject( cat_1, deduped_8_1 - RowRankOfMatrix( deduped_5_1 ) ) ); +end +######## + + ; + ## AddInjectionOfCofactorOfPushoutWithGivenPushout( cat, @@ -1906,6 +2825,32 @@ end , 9080 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InjectionOfCofactorOfPushoutWithGivenPushout := + +######## +function ( cat_1, morphisms_1, k_1, P_1 ) + local hoisted_1_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1; + deduped_11_1 := Length( morphisms_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + deduped_7_1 := Sum( deduped_9_1{[ 1 .. k_1 - 1 ]} ); + hoisted_1_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_6_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_10_1 ) ] ); + end ); + deduped_5_1 := UnionOfRows( deduped_10_1, deduped_8_1, deduped_6_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfRows( deduped_10_1, deduped_8_1, deduped_6_1{[ 2 .. deduped_11_1 ]} ); + return AsCapCategoryMorphism( cat_1, List( morphisms_1, Range )[k_1], CertainRows( SyzygiesOfColumns( deduped_5_1 ), [ deduped_7_1 + 1 .. deduped_7_1 + deduped_9_1[k_1] ] ), AsCapCategoryObject( cat_1, deduped_8_1 - RowRankOfMatrix( deduped_5_1 ) ) ); +end +######## + + ; + ## AddInjectiveColift( cat, @@ -1930,6 +2875,17 @@ end , 2211 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalCoHomOnMorphisms := + +######## +function ( cat_1, alpha_1, beta_1 ) + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, AsInteger( Source( alpha_1 ) ) * AsInteger( Range( beta_1 ) ) ), KroneckerMat( TransposedMatrix( AsHomalgMatrix( beta_1 ) ), AsHomalgMatrix( alpha_1 ) ), AsCapCategoryObject( cat_1, AsInteger( Range( alpha_1 ) ) * AsInteger( Source( beta_1 ) ) ) ); +end +######## + + ; + ## AddInternalCoHomOnMorphismsWithGivenInternalCoHoms( cat, @@ -2005,6 +2961,58 @@ end , 15660 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalCoHomTensorProductCompatibilityMorphism := + +######## +function ( cat_1, list_1 ) + local deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1, deduped_20_1, deduped_21_1, deduped_22_1, deduped_23_1, deduped_24_1, deduped_25_1, deduped_26_1, deduped_27_1; + deduped_27_1 := UnderlyingRing( cat_1 ); + deduped_26_1 := List( list_1, AsInteger ); + deduped_25_1 := deduped_26_1[4]; + deduped_24_1 := deduped_26_1[3]; + deduped_23_1 := deduped_26_1[2]; + deduped_22_1 := deduped_26_1[1]; + deduped_21_1 := deduped_22_1 * deduped_24_1; + deduped_20_1 := HomalgIdentityMatrix( deduped_24_1, deduped_27_1 ); + deduped_19_1 := deduped_23_1 * deduped_25_1; + deduped_18_1 := HomalgIdentityMatrix( deduped_25_1, deduped_27_1 ); + deduped_17_1 := HomalgIdentityMatrix( deduped_22_1, deduped_27_1 ); + deduped_16_1 := deduped_24_1 * deduped_25_1; + deduped_15_1 := deduped_16_1 * deduped_16_1; + deduped_14_1 := deduped_21_1 * deduped_19_1; + deduped_13_1 := deduped_24_1 * deduped_19_1; + deduped_12_1 := HomalgIdentityMatrix( deduped_21_1, deduped_27_1 ); + deduped_11_1 := HomalgIdentityMatrix( deduped_19_1, deduped_27_1 ); + deduped_10_1 := HomalgIdentityMatrix( deduped_16_1, deduped_27_1 ); + deduped_9_1 := HomalgIdentityMatrix( deduped_14_1, deduped_27_1 ); + deduped_8_1 := deduped_14_1 * deduped_16_1; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_22_1 * deduped_23_1 * deduped_16_1 ), KroneckerMat( deduped_10_1, KroneckerMat( deduped_17_1, KroneckerMat( HomalgIdentityMatrix( deduped_23_1, deduped_27_1 ), ConvertMatrixToRow( deduped_18_1 ) ) * KroneckerMat( CertainRows( deduped_11_1, List( [ 1 .. deduped_19_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_25_1 ) * deduped_23_1 + QUO_INT( deduped_1_2, deduped_25_1 ) + 1); + end ) ), deduped_18_1 ) ) * KroneckerMat( KroneckerMat( (KroneckerMat( deduped_17_1, ConvertMatrixToRow( deduped_20_1 ) ) * KroneckerMat( CertainRows( deduped_12_1, List( [ 1 .. deduped_21_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_24_1 ) * deduped_22_1 + QUO_INT( deduped_1_2, deduped_24_1 ) + 1); + end ) ), deduped_20_1 )), deduped_11_1 ), deduped_18_1 ) * KroneckerMat( KroneckerMat( deduped_12_1, CertainRows( HomalgIdentityMatrix( deduped_13_1, deduped_27_1 ), List( [ 1 .. deduped_13_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_19_1 ) * deduped_24_1 + QUO_INT( deduped_1_2, deduped_19_1 ) + 1); + end ) ) ), deduped_18_1 ) ) * (KroneckerMat( deduped_10_1, CertainRows( HomalgIdentityMatrix( deduped_8_1, deduped_27_1 ), List( [ 1 .. deduped_8_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_16_1 ) * deduped_14_1 + QUO_INT( deduped_1_2, deduped_16_1 ) + 1); + end ) ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_15_1, deduped_27_1 ), List( [ 1 .. deduped_15_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_16_1 ) * deduped_16_1 + QUO_INT( deduped_1_2, deduped_16_1 ) + 1); + end ) ), deduped_9_1 ) * KroneckerMat( ConvertMatrixToColumn( deduped_10_1 ), deduped_9_1 )), AsCapCategoryObject( cat_1, deduped_14_1 ) ); +end +######## + + ; + ## AddInternalCoHomTensorProductCompatibilityMorphismInverse( cat, @@ -2058,6 +3066,58 @@ end , 15862 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalCoHomTensorProductCompatibilityMorphismInverse := + +######## +function ( cat_1, list_1 ) + local deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1, deduped_20_1, deduped_21_1, deduped_22_1, deduped_23_1, deduped_24_1, deduped_25_1, deduped_26_1, deduped_27_1; + deduped_27_1 := UnderlyingRing( cat_1 ); + deduped_26_1 := List( list_1, AsInteger ); + deduped_25_1 := deduped_26_1[4]; + deduped_24_1 := deduped_26_1[2]; + deduped_23_1 := deduped_26_1[3]; + deduped_22_1 := deduped_26_1[1]; + deduped_21_1 := HomalgIdentityMatrix( deduped_23_1, deduped_27_1 ); + deduped_20_1 := HomalgIdentityMatrix( deduped_25_1, deduped_27_1 ); + deduped_19_1 := HomalgIdentityMatrix( deduped_22_1, deduped_27_1 ); + deduped_18_1 := deduped_23_1 * deduped_25_1; + deduped_17_1 := deduped_24_1 * deduped_25_1; + deduped_16_1 := deduped_22_1 * deduped_23_1; + deduped_15_1 := deduped_18_1 * deduped_18_1; + deduped_14_1 := deduped_23_1 * deduped_17_1; + deduped_13_1 := HomalgIdentityMatrix( deduped_16_1, deduped_27_1 ); + deduped_12_1 := HomalgIdentityMatrix( deduped_17_1, deduped_27_1 ); + deduped_11_1 := HomalgIdentityMatrix( deduped_18_1, deduped_27_1 ); + deduped_10_1 := deduped_16_1 * deduped_17_1; + deduped_9_1 := deduped_10_1 * deduped_18_1; + deduped_8_1 := HomalgIdentityMatrix( deduped_10_1, deduped_27_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_10_1 ), UniqueRightDivide( deduped_8_1, KroneckerMat( deduped_11_1, KroneckerMat( deduped_19_1, KroneckerMat( HomalgIdentityMatrix( deduped_24_1, deduped_27_1 ), ConvertMatrixToRow( deduped_20_1 ) ) * KroneckerMat( CertainRows( deduped_12_1, List( [ 1 .. deduped_17_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_25_1 ) * deduped_24_1 + QUO_INT( deduped_1_2, deduped_25_1 ) + 1); + end ) ), deduped_20_1 ) ) * KroneckerMat( KroneckerMat( (KroneckerMat( deduped_19_1, ConvertMatrixToRow( deduped_21_1 ) ) * KroneckerMat( CertainRows( deduped_13_1, List( [ 1 .. deduped_16_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_23_1 ) * deduped_22_1 + QUO_INT( deduped_1_2, deduped_23_1 ) + 1); + end ) ), deduped_21_1 )), deduped_12_1 ), deduped_20_1 ) * KroneckerMat( KroneckerMat( deduped_13_1, CertainRows( HomalgIdentityMatrix( deduped_14_1, deduped_27_1 ), List( [ 1 .. deduped_14_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_17_1 ) * deduped_23_1 + QUO_INT( deduped_1_2, deduped_17_1 ) + 1); + end ) ) ), deduped_20_1 ) ) * (KroneckerMat( deduped_11_1, CertainRows( HomalgIdentityMatrix( deduped_9_1, deduped_27_1 ), List( [ 1 .. deduped_9_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_18_1 ) * deduped_10_1 + QUO_INT( deduped_1_2, deduped_18_1 ) + 1); + end ) ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_15_1, deduped_27_1 ), List( [ 1 .. deduped_15_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_18_1 ) * deduped_18_1 + QUO_INT( deduped_1_2, deduped_18_1 ) + 1); + end ) ), deduped_8_1 ) * KroneckerMat( ConvertMatrixToColumn( deduped_11_1 ), deduped_8_1 )) ), AsCapCategoryObject( cat_1, deduped_22_1 * deduped_24_1 * deduped_18_1 ) ); +end +######## + + ; + ## AddInternalCoHomTensorProductCompatibilityMorphismInverseWithGivenObjects( cat, @@ -2184,6 +3244,27 @@ end , 3413 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalCoHomToTensorProductLeftAdjunctMorphism := + +######## +function ( cat_1, a_1, c_1, f_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1; + deduped_7_1 := AsInteger( c_1 ); + deduped_6_1 := UnderlyingRing( cat_1 ); + deduped_5_1 := AsInteger( a_1 ); + deduped_4_1 := deduped_5_1 * deduped_7_1; + deduped_3_1 := HomalgIdentityMatrix( deduped_7_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, a_1, KroneckerMat( HomalgIdentityMatrix( deduped_5_1, deduped_6_1 ), ConvertMatrixToRow( deduped_3_1 ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_6_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_7_1 ) * deduped_5_1 + QUO_INT( deduped_1_2, deduped_7_1 ) + 1); + end ) ), deduped_3_1 ) * KroneckerMat( AsHomalgMatrix( f_1 ), deduped_3_1 ), AsCapCategoryObject( cat_1, AsInteger( Range( f_1 ) ) * deduped_7_1 ) ); +end +######## + + ; + ## AddInternalCoHomToTensorProductLeftAdjunctMorphismWithGivenTensorProduct( cat, @@ -2233,6 +3314,33 @@ end , 3715 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalCoHomToTensorProductRightAdjunctMorphism := + +######## +function ( cat_1, a_1, b_1, f_1 ) + local deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := AsInteger( b_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := AsInteger( Range( f_1 ) ); + deduped_6_1 := deduped_8_1 * deduped_10_1; + deduped_5_1 := HomalgIdentityMatrix( deduped_10_1, deduped_9_1 ); + deduped_4_1 := deduped_7_1 * deduped_10_1; + return AsCapCategoryMorphism( cat_1, a_1, KroneckerMat( HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ), ConvertMatrixToRow( deduped_5_1 ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_9_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_10_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_10_1 ) + 1); + end ) ), deduped_5_1 ) * KroneckerMat( AsHomalgMatrix( f_1 ), deduped_5_1 ) * CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_9_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_10_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_10_1 ) + 1); + end ) ), AsCapCategoryObject( cat_1, deduped_10_1 * deduped_7_1 ) ); +end +######## + + ; + ## AddInternalCoHomToTensorProductRightAdjunctMorphismWithGivenTensorProduct( cat, @@ -2274,11 +3382,22 @@ end , 2211 : IsPrecompiledDerivation := true ); ## - AddInternalHomOnMorphismsWithGivenInternalHoms( cat, + cat!.cached_precompiled_functions.InternalHomOnMorphisms := ######## -function ( cat_1, s_1, alpha_1, beta_1, r_1 ) - return AsCapCategoryMorphism( cat_1, s_1, KroneckerMat( TransposedMatrix( AsHomalgMatrix( alpha_1 ) ), AsHomalgMatrix( beta_1 ) ), r_1 ); +function ( cat_1, alpha_1, beta_1 ) + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, AsInteger( Range( alpha_1 ) ) * AsInteger( Source( beta_1 ) ) ), KroneckerMat( TransposedMatrix( AsHomalgMatrix( alpha_1 ) ), AsHomalgMatrix( beta_1 ) ), AsCapCategoryObject( cat_1, AsInteger( Source( alpha_1 ) ) * AsInteger( Range( beta_1 ) ) ) ); +end +######## + + ; + + ## + AddInternalHomOnMorphismsWithGivenInternalHoms( cat, + +######## +function ( cat_1, s_1, alpha_1, beta_1, r_1 ) + return AsCapCategoryMorphism( cat_1, s_1, KroneckerMat( TransposedMatrix( AsHomalgMatrix( alpha_1 ) ), AsHomalgMatrix( beta_1 ) ), r_1 ); end ######## @@ -2317,6 +3436,27 @@ end , 3413 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalHomToTensorProductLeftAdjunctMorphism := + +######## +function ( cat_1, b_1, c_1, g_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1; + deduped_7_1 := AsInteger( c_1 ); + deduped_6_1 := UnderlyingRing( cat_1 ); + deduped_5_1 := AsInteger( b_1 ); + deduped_4_1 := deduped_5_1 * deduped_7_1; + deduped_3_1 := HomalgIdentityMatrix( deduped_5_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, AsInteger( Source( g_1 ) ) * deduped_5_1 ), KroneckerMat( AsHomalgMatrix( g_1 ), deduped_3_1 ) * (KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_6_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_7_1 ) * deduped_5_1 + QUO_INT( deduped_1_2, deduped_7_1 ) + 1); + end ) ), deduped_3_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_7_1, deduped_6_1 ), ConvertMatrixToColumn( deduped_3_1 ) )), c_1 ); +end +######## + + ; + ## AddInternalHomToTensorProductLeftAdjunctMorphismWithGivenTensorProduct( cat, @@ -2366,6 +3506,34 @@ end , 8535 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalHomToTensorProductLeftAdjunctionIsomorphism := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local hoisted_1_1, hoisted_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1; + deduped_15_1 := UnderlyingRing( cat_1 ); + deduped_14_1 := AsInteger( c_1 ); + deduped_13_1 := AsInteger( b_1 ); + deduped_12_1 := AsInteger( a_1 ); + deduped_11_1 := HomalgIdentityMatrix( deduped_13_1, deduped_15_1 ); + deduped_10_1 := deduped_13_1 * deduped_14_1; + deduped_9_1 := deduped_12_1 * deduped_13_1 * deduped_14_1; + deduped_8_1 := deduped_12_1 * deduped_10_1; + hoisted_7_1 := KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_10_1, deduped_15_1 ), List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_14_1 ) * deduped_13_1 + QUO_INT( deduped_1_2, deduped_14_1 ) + 1); + end ) ), deduped_11_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_14_1, deduped_15_1 ), ConvertMatrixToColumn( deduped_11_1 ) ); + hoisted_1_1 := HomalgIdentityMatrix( deduped_8_1, deduped_15_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( ListWithIdenticalEntries( deduped_8_1, AsCapCategoryObject( cat_1, 1 ) ), AsInteger ) ) ), UnionOfRows( deduped_15_1, deduped_9_1, List( [ 1 .. deduped_8_1 ], function ( i_2 ) + return ConvertMatrixToRow( KroneckerMat( ConvertRowToMatrix( CertainRows( hoisted_1_1, [ i_2 ] ), deduped_12_1, deduped_10_1 ), deduped_11_1 ) * hoisted_7_1 ); + end ) ), AsCapCategoryObject( cat_1, deduped_9_1 ) ); +end +######## + + ; + ## AddInternalHomToTensorProductLeftAdjunctionIsomorphismWithGivenObjects( cat, @@ -2394,6 +3562,33 @@ end , 7932 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalHomToTensorProductLeftAdjunctionIsomorphismWithGivenObjects := + +######## +function ( cat_1, s_1, a_1, b_1, c_1, r_1 ) + local hoisted_1_1, hoisted_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1; + deduped_14_1 := UnderlyingRing( cat_1 ); + deduped_13_1 := AsInteger( c_1 ); + deduped_12_1 := AsInteger( b_1 ); + deduped_11_1 := AsInteger( a_1 ); + deduped_10_1 := HomalgIdentityMatrix( deduped_12_1, deduped_14_1 ); + deduped_9_1 := deduped_12_1 * deduped_13_1; + deduped_8_1 := deduped_11_1 * deduped_9_1; + hoisted_7_1 := KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_9_1, deduped_14_1 ), List( [ 1 .. deduped_9_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_13_1 ) * deduped_12_1 + QUO_INT( deduped_1_2, deduped_13_1 ) + 1); + end ) ), deduped_10_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_13_1, deduped_14_1 ), ConvertMatrixToColumn( deduped_10_1 ) ); + hoisted_1_1 := HomalgIdentityMatrix( deduped_8_1, deduped_14_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( ListWithIdenticalEntries( deduped_8_1, AsCapCategoryObject( cat_1, 1 ) ), AsInteger ) ) ), UnionOfRows( deduped_14_1, AsInteger( r_1 ), List( [ 1 .. deduped_8_1 ], function ( i_2 ) + return ConvertMatrixToRow( KroneckerMat( ConvertRowToMatrix( CertainRows( hoisted_1_1, [ i_2 ] ), deduped_11_1, deduped_9_1 ), deduped_10_1 ) * hoisted_7_1 ); + end ) ), r_1 ); +end +######## + + ; + ## AddInternalHomToTensorProductRightAdjunctMorphism( cat, @@ -2422,6 +3617,33 @@ end , 3714 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalHomToTensorProductRightAdjunctMorphism := + +######## +function ( cat_1, a_1, c_1, g_1 ) + local deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := AsInteger( c_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := deduped_8_1 * deduped_10_1; + deduped_6_1 := HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ); + deduped_5_1 := AsInteger( Source( g_1 ) ); + deduped_4_1 := deduped_8_1 * deduped_5_1; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_4_1 ), CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_9_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_5_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_5_1 ) + 1); + end ) ) * (KroneckerMat( AsHomalgMatrix( g_1 ), deduped_6_1 ) * (KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_7_1, deduped_9_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_10_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_10_1 ) + 1); + end ) ), deduped_6_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_10_1, deduped_9_1 ), ConvertMatrixToColumn( deduped_6_1 ) ))), c_1 ); +end +######## + + ; + ## AddInternalHomToTensorProductRightAdjunctMorphismWithGivenTensorProduct( cat, @@ -2483,6 +3705,40 @@ end , 9137 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalHomToTensorProductRightAdjunctionIsomorphism := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local hoisted_3_1, hoisted_7_1, hoisted_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1; + deduped_17_1 := UnderlyingRing( cat_1 ); + deduped_16_1 := AsInteger( c_1 ); + deduped_15_1 := AsInteger( a_1 ); + deduped_14_1 := AsInteger( b_1 ); + deduped_13_1 := HomalgIdentityMatrix( deduped_15_1, deduped_17_1 ); + deduped_12_1 := deduped_15_1 * deduped_14_1; + deduped_11_1 := deduped_15_1 * deduped_16_1; + deduped_10_1 := deduped_12_1 * deduped_16_1; + deduped_9_1 := deduped_14_1 * deduped_11_1; + hoisted_8_1 := CertainRows( HomalgIdentityMatrix( deduped_12_1, deduped_17_1 ), List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := i_2 - 1; + return REM_INT( deduped_1_2, deduped_14_1 ) * deduped_15_1 + QUO_INT( deduped_1_2, deduped_14_1 ) + 1; + end ) ); + hoisted_7_1 := KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_11_1, deduped_17_1 ), List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_16_1 ) * deduped_15_1 + QUO_INT( deduped_1_2, deduped_16_1 ) + 1); + end ) ), deduped_13_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_16_1, deduped_17_1 ), ConvertMatrixToColumn( deduped_13_1 ) ); + hoisted_3_1 := HomalgIdentityMatrix( deduped_9_1, deduped_17_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( ListWithIdenticalEntries( deduped_9_1, AsCapCategoryObject( cat_1, 1 ) ), AsInteger ) ) ), UnionOfRows( deduped_17_1, deduped_10_1, List( [ 1 .. deduped_9_1 ], function ( i_2 ) + return ConvertMatrixToRow( hoisted_8_1 * (KroneckerMat( ConvertRowToMatrix( CertainRows( hoisted_3_1, [ i_2 ] ), deduped_14_1, deduped_11_1 ), deduped_13_1 ) * hoisted_7_1) ); + end ) ), AsCapCategoryObject( cat_1, deduped_10_1 ) ); +end +######## + + ; + ## AddInternalHomToTensorProductRightAdjunctionIsomorphismWithGivenObjects( cat, @@ -2517,6 +3773,39 @@ end , 8534 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InternalHomToTensorProductRightAdjunctionIsomorphismWithGivenObjects := + +######## +function ( cat_1, s_1, a_1, b_1, c_1, r_1 ) + local hoisted_3_1, hoisted_7_1, hoisted_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1; + deduped_16_1 := UnderlyingRing( cat_1 ); + deduped_15_1 := AsInteger( c_1 ); + deduped_14_1 := AsInteger( a_1 ); + deduped_13_1 := AsInteger( b_1 ); + deduped_12_1 := deduped_14_1 * deduped_13_1; + deduped_11_1 := HomalgIdentityMatrix( deduped_14_1, deduped_16_1 ); + deduped_10_1 := deduped_14_1 * deduped_15_1; + deduped_9_1 := deduped_13_1 * deduped_10_1; + hoisted_8_1 := CertainRows( HomalgIdentityMatrix( deduped_12_1, deduped_16_1 ), List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := i_2 - 1; + return REM_INT( deduped_1_2, deduped_13_1 ) * deduped_14_1 + QUO_INT( deduped_1_2, deduped_13_1 ) + 1; + end ) ); + hoisted_7_1 := KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_10_1, deduped_16_1 ), List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_15_1 ) * deduped_14_1 + QUO_INT( deduped_1_2, deduped_15_1 ) + 1); + end ) ), deduped_11_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_15_1, deduped_16_1 ), ConvertMatrixToColumn( deduped_11_1 ) ); + hoisted_3_1 := HomalgIdentityMatrix( deduped_9_1, deduped_16_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( ListWithIdenticalEntries( deduped_9_1, AsCapCategoryObject( cat_1, 1 ) ), AsInteger ) ) ), UnionOfRows( deduped_16_1, AsInteger( r_1 ), List( [ 1 .. deduped_9_1 ], function ( i_2 ) + return ConvertMatrixToRow( hoisted_8_1 * (KroneckerMat( ConvertRowToMatrix( CertainRows( hoisted_3_1, [ i_2 ] ), deduped_13_1, deduped_10_1 ), deduped_11_1 ) * hoisted_7_1) ); + end ) ), r_1 ); +end +######## + + ; + ## AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure( cat, @@ -2530,6 +3819,17 @@ end , 301 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructure := + +######## +function ( cat_1, alpha_1 ) + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 1 ), ConvertMatrixToRow( AsHomalgMatrix( alpha_1 ) ), AsCapCategoryObject( cat_1, AsInteger( Source( alpha_1 ) ) * AsInteger( Range( alpha_1 ) ) ) ); +end +######## + + ; + ## AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects( cat, @@ -2581,6 +3881,22 @@ end , 1811 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InverseOfMorphismFromCoimageToImage := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1; + deduped_4_1 := UnderlyingRing( cat_1 ); + deduped_3_1 := AsHomalgMatrix( alpha_1 ); + deduped_2_1 := RowRankOfMatrix( deduped_3_1 ); + deduped_1_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) ); + 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 ) ) ); +end +######## + + ; + ## AddInverseOfMorphismFromCoimageToImageWithGivenObjects( cat, @@ -2597,6 +3913,22 @@ end , 1610 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.InverseOfMorphismFromCoimageToImageWithGivenObjects := + +######## +function ( cat_1, I_1, alpha_1, C_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1; + deduped_4_1 := UnderlyingRing( cat_1 ); + deduped_3_1 := AsHomalgMatrix( alpha_1 ); + deduped_2_1 := RowRankOfMatrix( deduped_3_1 ); + deduped_1_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) ); + 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 ); +end +######## + + ; + ## AddIsAutomorphism( cat, @@ -3067,6 +4399,32 @@ end , 4337 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromCoequalizerOfCoproductDiagramToPushout := + +######## +function ( cat_1, D_1 ) + local hoisted_1_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1; + deduped_11_1 := Length( D_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( D_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + hoisted_1_1 := List( D_1, AsHomalgMatrix ); + deduped_7_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_10_1 ) ] ); + end ); + deduped_6_1 := deduped_8_1 - RowRankOfMatrix( (UnionOfRows( deduped_10_1, deduped_8_1, deduped_7_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfRows( deduped_10_1, deduped_8_1, deduped_7_1{[ 2 .. deduped_11_1 ]} )) ); + deduped_5_1 := AsCapCategoryObject( cat_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, HomalgIdentityMatrix( deduped_6_1, deduped_10_1 ), deduped_5_1 ); +end +######## + + ; + ## AddIsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct( cat, @@ -3084,6 +4442,24 @@ end , 1411 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromCoequalizerToCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproduct := + +######## +function ( cat_1, A_1, D_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1; + deduped_6_1 := Length( D_1 ); + deduped_5_1 := List( D_1, AsHomalgMatrix ); + deduped_4_1 := UnderlyingRing( cat_1 ); + deduped_3_1 := AsInteger( A_1 ); + deduped_2_1 := deduped_3_1 - RowRankOfMatrix( (UnionOfRows( deduped_4_1, deduped_3_1, deduped_5_1{[ 1 .. deduped_6_1 - 1 ]} ) - UnionOfRows( deduped_4_1, deduped_3_1, deduped_5_1{[ 2 .. deduped_6_1 ]} )) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, deduped_4_1 ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromCoimageToCokernelOfKernel( cat, @@ -3098,6 +4474,21 @@ end , 805 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromCoimageToCokernelOfKernel := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := AsHomalgMatrix( alpha_1 ); + deduped_2_1 := ColumnRankOfMatrix( deduped_3_1 ); + deduped_1_1 := SyzygiesOfColumns( SyzygiesOfRows( deduped_3_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_2_1 ), UniqueRightDivide( HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), UniqueLeftDivide( deduped_1_1, BasisOfColumns( deduped_3_1 ) ) ), AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ) ); +end +######## + + ; + ## AddIsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer( cat, @@ -3115,6 +4506,24 @@ end , 1411 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromCokernelOfJointPairwiseDifferencesOfMorphismsFromCoproductToCoequalizer := + +######## +function ( cat_1, A_1, D_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1; + deduped_6_1 := Length( D_1 ); + deduped_5_1 := List( D_1, AsHomalgMatrix ); + deduped_4_1 := UnderlyingRing( cat_1 ); + deduped_3_1 := AsInteger( A_1 ); + deduped_2_1 := deduped_3_1 - RowRankOfMatrix( (UnionOfRows( deduped_4_1, deduped_3_1, deduped_5_1{[ 1 .. deduped_6_1 - 1 ]} ) - UnionOfRows( deduped_4_1, deduped_3_1, deduped_5_1{[ 2 .. deduped_6_1 ]} )) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, deduped_4_1 ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromCokernelOfKernelToCoimage( cat, @@ -3129,6 +4538,20 @@ end , 603 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromCokernelOfKernelToCoimage := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsHomalgMatrix( alpha_1 ); + deduped_1_1 := SyzygiesOfColumns( SyzygiesOfRows( deduped_2_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ), UniqueLeftDivide( deduped_1_1, BasisOfColumns( deduped_2_1 ) ), AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_2_1 ) ) ); +end +######## + + ; + ## AddIsomorphismFromCoproductToDirectSum( cat, @@ -3142,6 +4565,20 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromCoproductToDirectSum := + +######## +function ( cat_1, D_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := Sum( List( D_1, AsInteger ) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromDirectProductToDirectSum( cat, @@ -3155,6 +4592,20 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromDirectProductToDirectSum := + +######## +function ( cat_1, D_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := Sum( List( D_1, AsInteger ) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromDirectSumToCoproduct( cat, @@ -3168,6 +4619,20 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromDirectSumToCoproduct := + +######## +function ( cat_1, D_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := Sum( List( D_1, AsInteger ) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromDirectSumToDirectProduct( cat, @@ -3181,6 +4646,20 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromDirectSumToDirectProduct := + +######## +function ( cat_1, D_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := Sum( List( D_1, AsInteger ) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromDualObjectToInternalHomIntoTensorUnit( cat, @@ -3216,6 +4695,32 @@ end , 4330 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromEqualizerOfDirectProductDiagramToFiberProduct := + +######## +function ( cat_1, D_1 ) + local hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1; + deduped_11_1 := Length( D_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( D_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + hoisted_4_1 := List( D_1, AsHomalgMatrix ); + deduped_7_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return UnionOfRows( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_1_2, deduped_10_1 ) ] ) * hoisted_4_1[i_2]; + end ); + deduped_6_1 := deduped_8_1 - RowRankOfMatrix( (UnionOfColumns( deduped_10_1, deduped_8_1, deduped_7_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfColumns( deduped_10_1, deduped_8_1, deduped_7_1{[ 2 .. deduped_11_1 ]} )) ); + deduped_5_1 := AsCapCategoryObject( cat_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, HomalgIdentityMatrix( deduped_6_1, deduped_10_1 ), deduped_5_1 ); +end +######## + + ; + ## AddIsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct( cat, @@ -3234,11 +4739,29 @@ end , 1409 : IsPrecompiledDerivation := true ); ## - AddIsomorphismFromFiberProductToEqualizerOfDirectProductDiagram( cat, + cat!.cached_precompiled_functions.IsomorphismFromEqualizerToKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProduct := ######## -function ( cat_1, D_1 ) - local deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; +function ( cat_1, A_1, D_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1; + deduped_6_1 := Length( D_1 ); + deduped_5_1 := List( D_1, AsHomalgMatrix ); + deduped_4_1 := UnderlyingRing( cat_1 ); + deduped_3_1 := AsInteger( A_1 ); + deduped_2_1 := deduped_3_1 - RowRankOfMatrix( (UnionOfColumns( deduped_4_1, deduped_3_1, deduped_5_1{[ 1 .. deduped_6_1 - 1 ]} ) - UnionOfColumns( deduped_4_1, deduped_3_1, deduped_5_1{[ 2 .. deduped_6_1 ]} )) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, deduped_4_1 ), deduped_1_1 ); +end +######## + + ; + + ## + AddIsomorphismFromFiberProductToEqualizerOfDirectProductDiagram( cat, + +######## +function ( cat_1, D_1 ) + local deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; deduped_9_1 := Length( D_1 ); deduped_8_1 := UnderlyingRing( cat_1 ); deduped_7_1 := List( D_1, function ( logic_new_func_x_2 ) @@ -3257,6 +4780,32 @@ end , 4330 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromFiberProductToEqualizerOfDirectProductDiagram := + +######## +function ( cat_1, D_1 ) + local hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1; + deduped_11_1 := Length( D_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( D_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + hoisted_4_1 := List( D_1, AsHomalgMatrix ); + deduped_7_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return UnionOfRows( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_1_2, deduped_10_1 ) ] ) * hoisted_4_1[i_2]; + end ); + deduped_6_1 := deduped_8_1 - RowRankOfMatrix( (UnionOfColumns( deduped_10_1, deduped_8_1, deduped_7_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfColumns( deduped_10_1, deduped_8_1, deduped_7_1{[ 2 .. deduped_11_1 ]} )) ); + deduped_5_1 := AsCapCategoryObject( cat_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, HomalgIdentityMatrix( deduped_6_1, deduped_10_1 ), deduped_5_1 ); +end +######## + + ; + ## AddIsomorphismFromHomologyObjectToItsConstructionAsAnImageObject( cat, @@ -3270,6 +4819,20 @@ end , 501 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromHomologyObjectToItsConstructionAsAnImageObject := + +######## +function ( cat_1, alpha_1, beta_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := RowRankOfMatrix( SyzygiesOfRows( AsHomalgMatrix( beta_1 ) ) * SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromImageObjectToKernelOfCokernel( cat, @@ -3284,6 +4847,20 @@ end , 603 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromImageObjectToKernelOfCokernel := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsHomalgMatrix( alpha_1 ); + deduped_1_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_2_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_2_1 ) ), UniqueRightDivide( BasisOfRows( deduped_2_1 ), deduped_1_1 ), AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ) ); +end +######## + + ; + ## AddIsomorphismFromInitialObjectToZeroObject( cat, @@ -3343,6 +4920,20 @@ end , 301 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromInternalCoHomToTensorProductWithCoDualObject := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromInternalHomIntoTensorUnitToDualObject( cat, @@ -3389,6 +4980,20 @@ end , 301 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromInternalHomToTensorProductWithDualObject := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromItsConstructionAsAnImageObjectToHomologyObject( cat, @@ -3402,6 +5007,20 @@ end , 501 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromItsConstructionAsAnImageObjectToHomologyObject := + +######## +function ( cat_1, alpha_1, beta_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := RowRankOfMatrix( SyzygiesOfRows( AsHomalgMatrix( beta_1 ) ) * SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromKernelOfCokernelToImageObject( cat, @@ -3417,6 +5036,21 @@ end , 805 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromKernelOfCokernelToImageObject := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := AsHomalgMatrix( alpha_1 ); + deduped_2_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_3_1 ) ); + deduped_1_1 := NumberRows( deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_1_1 ), UniqueRightDivide( HomalgIdentityMatrix( deduped_1_1, UnderlyingRing( cat_1 ) ), UniqueRightDivide( BasisOfRows( deduped_3_1 ), deduped_2_1 ) ), AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_3_1 ) ) ); +end +######## + + ; + ## AddIsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer( cat, @@ -3434,6 +5068,24 @@ end , 1409 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromKernelOfJointPairwiseDifferencesOfMorphismsIntoDirectProductToEqualizer := + +######## +function ( cat_1, A_1, D_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1; + deduped_6_1 := Length( D_1 ); + deduped_5_1 := List( D_1, AsHomalgMatrix ); + deduped_4_1 := UnderlyingRing( cat_1 ); + deduped_3_1 := AsInteger( A_1 ); + deduped_2_1 := deduped_3_1 - RowRankOfMatrix( (UnionOfColumns( deduped_4_1, deduped_3_1, deduped_5_1{[ 1 .. deduped_6_1 - 1 ]} ) - UnionOfColumns( deduped_4_1, deduped_3_1, deduped_5_1{[ 2 .. deduped_6_1 ]} )) ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, deduped_4_1 ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromObjectToInternalCoHom( cat, @@ -3502,6 +5154,32 @@ end , 4337 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromPushoutToCoequalizerOfCoproductDiagram := + +######## +function ( cat_1, D_1 ) + local hoisted_1_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1; + deduped_11_1 := Length( D_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( D_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + hoisted_1_1 := List( D_1, AsHomalgMatrix ); + deduped_7_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_10_1 ) ] ); + end ); + deduped_6_1 := deduped_8_1 - RowRankOfMatrix( (UnionOfRows( deduped_10_1, deduped_8_1, deduped_7_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfRows( deduped_10_1, deduped_8_1, deduped_7_1{[ 2 .. deduped_11_1 ]} )) ); + deduped_5_1 := AsCapCategoryObject( cat_1, deduped_6_1 ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, HomalgIdentityMatrix( deduped_6_1, deduped_10_1 ), deduped_5_1 ); +end +######## + + ; + ## AddIsomorphismFromTensorProductWithCoDualObjectToInternalCoHom( cat, @@ -3515,6 +5193,20 @@ end , 301 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromTensorProductWithCoDualObjectToInternalCoHom := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromTensorProductWithDualObjectToInternalHom( cat, @@ -3528,6 +5220,20 @@ end , 301 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.IsomorphismFromTensorProductWithDualObjectToInternalHom := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddIsomorphismFromTerminalObjectToZeroObject( cat, @@ -3584,6 +5290,25 @@ end , 1210 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.JointPairwiseDifferencesOfMorphismsFromCoproduct := + +######## +function ( cat_1, A_1, D_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := List( D_1, AsHomalgMatrix ); + deduped_4_1 := AsInteger( A_1 ); + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := Length( D_1 ); + deduped_1_1 := [ 1 .. deduped_2_1 - 1 ]; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( D_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ){deduped_1_1} ) ), UnionOfRows( deduped_3_1, deduped_4_1, deduped_5_1{deduped_1_1} ) - UnionOfRows( deduped_3_1, deduped_4_1, deduped_5_1{[ 2 .. deduped_2_1 ]} ), A_1 ); +end +######## + + ; + ## AddJointPairwiseDifferencesOfMorphismsIntoDirectProduct( cat, @@ -3601,6 +5326,25 @@ end , 1208 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.JointPairwiseDifferencesOfMorphismsIntoDirectProduct := + +######## +function ( cat_1, A_1, D_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( D_1 ); + deduped_4_1 := List( D_1, AsHomalgMatrix ); + deduped_3_1 := AsInteger( A_1 ); + deduped_2_1 := UnderlyingRing( cat_1 ); + deduped_1_1 := [ 1 .. deduped_5_1 - 1 ]; + return AsCapCategoryMorphism( cat_1, A_1, UnionOfColumns( deduped_2_1, deduped_3_1, deduped_4_1{deduped_1_1} ) - UnionOfColumns( deduped_2_1, deduped_3_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ), AsCapCategoryObject( cat_1, Sum( List( D_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ){deduped_1_1} ) ) ); +end +######## + + ; + ## AddKernelEmbedding( cat, @@ -3640,6 +5384,19 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.KernelLift := + +######## +function ( cat_1, alpha_1, T_1, tau_1 ) + local deduped_1_1; + deduped_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, Source( tau_1 ), UniqueRightDivide( AsHomalgMatrix( tau_1 ), deduped_1_1 ), AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ) ); +end +######## + + ; + ## AddKernelLiftWithGivenKernelObject( cat, @@ -3653,6 +5410,19 @@ end , 202 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.KernelLiftWithGivenKernelObject := + +######## +function ( cat_1, alpha_1, T_1, tau_1, P_1 ) + local deduped_1_1; + deduped_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, Source( tau_1 ), UniqueRightDivide( AsHomalgMatrix( tau_1 ), deduped_1_1 ), AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ) ); +end +######## + + ; + ## AddKernelObject( cat, @@ -3677,6 +5447,20 @@ end , 605 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.KernelObjectFunctorial := + +######## +function ( cat_1, alpha_1, mu_1, alphap_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := SyzygiesOfRows( AsHomalgMatrix( alphap_1 ) ); + deduped_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ), UniqueRightDivide( deduped_1_1 * AsHomalgMatrix( mu_1 ), deduped_2_1 ), AsCapCategoryObject( cat_1, NumberRows( deduped_2_1 ) ) ); +end +######## + + ; + ## AddKernelObjectFunctorialWithGivenKernelObjects( cat, @@ -3690,6 +5474,20 @@ end , 404 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.KernelObjectFunctorialWithGivenKernelObjects := + +######## +function ( cat_1, P_1, alpha_1, mu_1, alphap_1, Pp_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := SyzygiesOfRows( AsHomalgMatrix( alphap_1 ) ); + deduped_1_1 := SyzygiesOfRows( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ), UniqueRightDivide( deduped_1_1 * AsHomalgMatrix( mu_1 ), deduped_2_1 ), AsCapCategoryObject( cat_1, NumberRows( deduped_2_1 ) ) ); +end +######## + + ; + ## AddLambdaElimination( cat, @@ -3732,6 +5530,26 @@ end , 5625 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.LambdaIntroduction := + +######## +function ( cat_1, alpha_1 ) + local deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := UnderlyingRing( cat_1 ); + deduped_4_1 := AsInteger( Source( alpha_1 ) ); + deduped_3_1 := deduped_4_1 * deduped_4_1; + deduped_2_1 := HomalgIdentityMatrix( deduped_4_1, deduped_5_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 1 ), ConvertMatrixToRow( deduped_2_1 ) * CertainRows( HomalgIdentityMatrix( deduped_3_1, deduped_5_1 ), List( [ 1 .. deduped_3_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_4_1 ) * deduped_4_1 + QUO_INT( deduped_1_2, deduped_4_1 ) + 1); + end ) ) * KroneckerMat( deduped_2_1, AsHomalgMatrix( alpha_1 ) ), AsCapCategoryObject( cat_1, deduped_4_1 * AsInteger( Range( alpha_1 ) ) ) ); +end +######## + + ; + ## AddLeftDistributivityExpanding( cat, @@ -3754,6 +5572,30 @@ end , 1707 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.LeftDistributivityExpanding := + +######## +function ( cat_1, a_1, L_1 ) + local hoisted_4_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := Length( L_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := List( L_1, AsInteger ); + deduped_7_1 := AsInteger( a_1 ); + deduped_6_1 := deduped_7_1 * Sum( deduped_8_1 ); + hoisted_4_1 := HomalgIdentityMatrix( deduped_7_1, deduped_9_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_6_1 ), UnionOfColumns( deduped_9_1, deduped_6_1, List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_8_1[i_2]; + return KroneckerMat( hoisted_4_1, UnionOfRows( deduped_9_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_8_1{[ 1 .. i_2 - 1 ]} ), deduped_1_2, deduped_9_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_9_1 ), HomalgZeroMatrix( Sum( deduped_8_1{[ i_2 + 1 .. deduped_10_1 ]} ), deduped_1_2, deduped_9_1 ) ] ) ); + end ) ), AsCapCategoryObject( cat_1, Sum( List( L_1, function ( summand_2 ) + return deduped_7_1 * AsInteger( summand_2 ); + end ) ) ) ); +end +######## + + ; + ## AddLeftDistributivityExpandingWithGivenObjects( cat, @@ -3775,6 +5617,29 @@ end , 1506 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.LeftDistributivityExpandingWithGivenObjects := + +######## +function ( cat_1, s_1, a_1, L_1, r_1 ) + local deduped_1_1, hoisted_4_1, deduped_6_1, deduped_7_1, deduped_8_1; + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := Length( L_1 ); + deduped_6_1 := UnderlyingRing( cat_1 ); + hoisted_4_1 := HomalgIdentityMatrix( deduped_8_1, deduped_6_1 ); + deduped_1_1 := List( L_1, AsInteger ); + return AsCapCategoryMorphism( cat_1, s_1, UnionOfColumns( deduped_6_1, AsInteger( s_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_1_1[i_2]; + return KroneckerMat( hoisted_4_1, UnionOfRows( deduped_6_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_1_1{[ 1 .. i_2 - 1 ]} ), deduped_1_2, deduped_6_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_6_1 ), HomalgZeroMatrix( Sum( deduped_1_1{[ i_2 + 1 .. deduped_7_1 ]} ), deduped_1_2, deduped_6_1 ) ] ) ); + end ) ), AsCapCategoryObject( cat_1, Sum( List( L_1, function ( summand_2 ) + return deduped_8_1 * AsInteger( summand_2 ); + end ) ) ) ); +end +######## + + ; + ## AddLeftDistributivityFactoring( cat, @@ -3797,6 +5662,30 @@ end , 1707 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.LeftDistributivityFactoring := + +######## +function ( cat_1, a_1, L_1 ) + local hoisted_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := Length( L_1 ); + deduped_9_1 := List( L_1, AsInteger ); + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := UnderlyingRing( cat_1 ); + deduped_6_1 := deduped_8_1 * Sum( deduped_9_1 ); + hoisted_5_1 := HomalgIdentityMatrix( deduped_8_1, deduped_7_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( L_1, function ( summand_2 ) + return deduped_8_1 * AsInteger( summand_2 ); + end ) ) ), UnionOfRows( deduped_7_1, deduped_6_1, List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return KroneckerMat( hoisted_5_1, UnionOfColumns( deduped_7_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ 1 .. i_2 - 1 ]} ), deduped_7_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_7_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ i_2 + 1 .. deduped_10_1 ]} ), deduped_7_1 ) ] ) ); + end ) ), AsCapCategoryObject( cat_1, deduped_6_1 ) ); +end +######## + + ; + ## AddLeftDistributivityFactoringWithGivenObjects( cat, @@ -3818,6 +5707,29 @@ end , 1506 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.LeftDistributivityFactoringWithGivenObjects := + +######## +function ( cat_1, s_1, a_1, L_1, r_1 ) + local deduped_2_1, hoisted_5_1, deduped_6_1, deduped_7_1, deduped_8_1; + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := Length( L_1 ); + deduped_6_1 := UnderlyingRing( cat_1 ); + hoisted_5_1 := HomalgIdentityMatrix( deduped_8_1, deduped_6_1 ); + deduped_2_1 := List( L_1, AsInteger ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( L_1, function ( summand_2 ) + return deduped_8_1 * AsInteger( summand_2 ); + end ) ) ), UnionOfRows( deduped_6_1, AsInteger( r_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_2_1[i_2]; + return KroneckerMat( hoisted_5_1, UnionOfColumns( deduped_6_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_2_1{[ 1 .. i_2 - 1 ]} ), deduped_6_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_6_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_2_1{[ i_2 + 1 .. deduped_7_1 ]} ), deduped_6_1 ) ] ) ); + end ) ), r_1 ); +end +######## + + ; + ## AddLeftUnitor( cat, @@ -3939,6 +5851,59 @@ end , 2306 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MereExistenceOfSolutionOfLinearSystemInAbCategory := + +######## +function ( cat_1, arg2_1, arg3_1, arg4_1 ) + local hoisted_1_1, hoisted_2_1, hoisted_3_1, hoisted_4_1, hoisted_5_1, hoisted_6_1, hoisted_7_1, deduped_10_1, deduped_11_1; + deduped_11_1 := UnderlyingRing( cat_1 ); + deduped_10_1 := [ 1 .. Length( arg2_1 ) ]; + hoisted_7_1 := List( arg3_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, AsHomalgMatrix ); + end ); + hoisted_6_1 := List( arg2_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return TransposedMatrix( AsHomalgMatrix( logic_new_func_x_3 ) ); + end ); + end ); + hoisted_5_1 := List( arg3_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return AsInteger( Source( logic_new_func_x_3 ) ); + end ); + end )[1]; + hoisted_4_1 := List( arg2_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return AsInteger( Range( logic_new_func_x_3 ) ); + end ); + end )[1]; + hoisted_3_1 := List( arg3_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return AsInteger( Range( logic_new_func_x_3 ) ); + end ); + end ); + hoisted_2_1 := List( arg2_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return AsInteger( Source( logic_new_func_x_3 ) ); + end ); + end ); + hoisted_1_1 := List( arg4_1, function ( logic_new_func_x_2 ) + return ConvertMatrixToRow( AsHomalgMatrix( logic_new_func_x_2 ) ); + end ); + return IsZero( DecideZeroRows( UnionOfColumns( deduped_11_1, 1, List( deduped_10_1, function ( i_2 ) + return hoisted_1_1[i_2]; + end ) ), UnionOfRows( deduped_11_1, Sum( List( deduped_10_1, function ( i_2 ) + return hoisted_2_1[i_2][1] * hoisted_3_1[i_2][1]; + end ) ), List( [ 1 .. List( arg2_1, Length )[1] ], function ( j_2 ) + return UnionOfColumns( deduped_11_1, hoisted_4_1[j_2] * hoisted_5_1[j_2], List( deduped_10_1, function ( i_3 ) + return KroneckerMat( hoisted_6_1[i_3][j_2], hoisted_7_1[i_3][j_2] ); + end ) ); + end ) ) ) ); +end +######## + + ; + ## AddMonoidalPostCoComposeMorphism( cat, @@ -3981,6 +5946,47 @@ end , 13253 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MonoidalPostCoComposeMorphism := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1; + deduped_17_1 := AsInteger( b_1 ); + deduped_16_1 := UnderlyingRing( cat_1 ); + deduped_15_1 := AsInteger( c_1 ); + deduped_14_1 := AsInteger( a_1 ); + deduped_13_1 := deduped_15_1 * deduped_15_1; + deduped_12_1 := deduped_17_1 * deduped_15_1; + deduped_11_1 := deduped_14_1 * deduped_17_1; + deduped_10_1 := HomalgIdentityMatrix( deduped_17_1, deduped_16_1 ); + deduped_9_1 := HomalgIdentityMatrix( deduped_15_1, deduped_16_1 ); + deduped_8_1 := deduped_11_1 * deduped_12_1; + deduped_7_1 := HomalgIdentityMatrix( deduped_11_1, deduped_16_1 ); + deduped_6_1 := HomalgIdentityMatrix( deduped_8_1, deduped_16_1 ); + deduped_5_1 := deduped_8_1 * deduped_15_1; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_14_1 * deduped_15_1 ), KroneckerMat( deduped_9_1, KroneckerMat( HomalgIdentityMatrix( deduped_14_1, deduped_16_1 ), ConvertMatrixToRow( deduped_10_1 ) ) * KroneckerMat( CertainRows( deduped_7_1, List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_17_1 ) * deduped_14_1 + QUO_INT( deduped_1_2, deduped_17_1 ) + 1); + end ) ), deduped_10_1 ) * KroneckerMat( deduped_7_1, (KroneckerMat( deduped_10_1, ConvertMatrixToRow( deduped_9_1 ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_12_1, deduped_16_1 ), List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_15_1 ) * deduped_17_1 + QUO_INT( deduped_1_2, deduped_15_1 ) + 1); + end ) ), deduped_9_1 )) ) ) * (KroneckerMat( deduped_9_1, CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_16_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_15_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_15_1 ) + 1); + end ) ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_13_1, deduped_16_1 ), List( [ 1 .. deduped_13_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_15_1 ) * deduped_15_1 + QUO_INT( deduped_1_2, deduped_15_1 ) + 1); + end ) ), deduped_6_1 ) * KroneckerMat( ConvertMatrixToColumn( deduped_9_1 ), deduped_6_1 )), AsCapCategoryObject( cat_1, deduped_8_1 ) ); +end +######## + + ; + ## AddMonoidalPostCoComposeMorphismWithGivenObjects( cat, @@ -4064,6 +6070,47 @@ end , 13253 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MonoidalPostComposeMorphism := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1; + deduped_17_1 := UnderlyingRing( cat_1 ); + deduped_16_1 := AsInteger( a_1 ); + deduped_15_1 := AsInteger( c_1 ); + deduped_14_1 := AsInteger( b_1 ); + deduped_13_1 := HomalgIdentityMatrix( deduped_14_1, deduped_17_1 ); + deduped_12_1 := deduped_16_1 * deduped_16_1; + deduped_11_1 := HomalgIdentityMatrix( deduped_16_1, deduped_17_1 ); + deduped_10_1 := deduped_16_1 * deduped_14_1; + deduped_9_1 := deduped_14_1 * deduped_15_1; + deduped_8_1 := HomalgIdentityMatrix( deduped_9_1, deduped_17_1 ); + deduped_7_1 := deduped_9_1 * deduped_10_1; + deduped_6_1 := deduped_16_1 * deduped_7_1; + deduped_5_1 := HomalgIdentityMatrix( deduped_7_1, deduped_17_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_7_1 ), KroneckerMat( ConvertMatrixToRow( deduped_11_1 ), deduped_5_1 ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_12_1, deduped_17_1 ), List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_16_1 ) * deduped_16_1 + QUO_INT( deduped_1_2, deduped_16_1 ) + 1); + end ) ), deduped_5_1 ) * KroneckerMat( deduped_11_1, CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_17_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_7_1 ) * deduped_16_1 + QUO_INT( deduped_1_2, deduped_7_1 ) + 1); + end ) ) ) * KroneckerMat( deduped_11_1, (KroneckerMat( deduped_8_1, KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_10_1, deduped_17_1 ), List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_14_1 ) * deduped_16_1 + QUO_INT( deduped_1_2, deduped_14_1 ) + 1); + end ) ), deduped_11_1 ) * KroneckerMat( deduped_13_1, ConvertMatrixToColumn( deduped_11_1 ) ) ) * (KroneckerMat( CertainRows( deduped_8_1, List( [ 1 .. deduped_9_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_15_1 ) * deduped_14_1 + QUO_INT( deduped_1_2, deduped_15_1 ) + 1); + end ) ), deduped_13_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_15_1, deduped_17_1 ), ConvertMatrixToColumn( deduped_13_1 ) ))) ), AsCapCategoryObject( cat_1, deduped_16_1 * deduped_15_1 ) ); +end +######## + + ; + ## AddMonoidalPostComposeMorphismWithGivenObjects( cat, @@ -4158,6 +6205,58 @@ end , 14358 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MonoidalPreCoComposeMorphism := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1, deduped_20_1, deduped_21_1; + deduped_21_1 := AsInteger( b_1 ); + deduped_20_1 := UnderlyingRing( cat_1 ); + deduped_19_1 := AsInteger( c_1 ); + deduped_18_1 := AsInteger( a_1 ); + deduped_17_1 := deduped_19_1 * deduped_19_1; + deduped_16_1 := deduped_21_1 * deduped_19_1; + deduped_15_1 := deduped_18_1 * deduped_21_1; + deduped_14_1 := HomalgIdentityMatrix( deduped_21_1, deduped_20_1 ); + deduped_13_1 := HomalgIdentityMatrix( deduped_19_1, deduped_20_1 ); + deduped_12_1 := deduped_16_1 * deduped_15_1; + deduped_11_1 := deduped_19_1 * deduped_15_1; + deduped_10_1 := HomalgIdentityMatrix( deduped_16_1, deduped_20_1 ); + deduped_9_1 := deduped_15_1 * deduped_21_1; + deduped_8_1 := HomalgIdentityMatrix( deduped_15_1, deduped_20_1 ); + deduped_7_1 := HomalgIdentityMatrix( deduped_12_1, deduped_20_1 ); + deduped_6_1 := deduped_12_1 * deduped_19_1; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_18_1 * deduped_19_1 ), KroneckerMat( deduped_13_1, KroneckerMat( HomalgIdentityMatrix( deduped_18_1, deduped_20_1 ), ConvertMatrixToRow( deduped_14_1 ) ) * KroneckerMat( CertainRows( deduped_8_1, List( [ 1 .. deduped_15_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_21_1 ) * deduped_18_1 + QUO_INT( deduped_1_2, deduped_21_1 ) + 1); + end ) ), deduped_14_1 ) * CertainRows( HomalgIdentityMatrix( deduped_9_1, deduped_20_1 ), List( [ 1 .. deduped_9_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_21_1 ) * deduped_15_1 + QUO_INT( deduped_1_2, deduped_21_1 ) + 1); + end ) ) * KroneckerMat( (KroneckerMat( deduped_14_1, ConvertMatrixToRow( deduped_13_1 ) ) * KroneckerMat( CertainRows( deduped_10_1, List( [ 1 .. deduped_16_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_19_1 ) * deduped_21_1 + QUO_INT( deduped_1_2, deduped_19_1 ) + 1); + end ) ), deduped_13_1 )), deduped_8_1 ) * KroneckerMat( deduped_10_1, CertainRows( HomalgIdentityMatrix( deduped_11_1, deduped_20_1 ), List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_15_1 ) * deduped_19_1 + QUO_INT( deduped_1_2, deduped_15_1 ) + 1); + end ) ) ) ) * (KroneckerMat( deduped_13_1, CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_20_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_19_1 ) * deduped_12_1 + QUO_INT( deduped_1_2, deduped_19_1 ) + 1); + end ) ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_17_1, deduped_20_1 ), List( [ 1 .. deduped_17_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_19_1 ) * deduped_19_1 + QUO_INT( deduped_1_2, deduped_19_1 ) + 1); + end ) ), deduped_7_1 ) * KroneckerMat( ConvertMatrixToColumn( deduped_13_1 ), deduped_7_1 )), AsCapCategoryObject( cat_1, deduped_12_1 ) ); +end +######## + + ; + ## AddMonoidalPreCoComposeMorphismWithGivenObjects( cat, @@ -4263,6 +6362,58 @@ end , 14358 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MonoidalPreComposeMorphism := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1, deduped_20_1, deduped_21_1; + deduped_21_1 := UnderlyingRing( cat_1 ); + deduped_20_1 := AsInteger( c_1 ); + deduped_19_1 := AsInteger( b_1 ); + deduped_18_1 := AsInteger( a_1 ); + deduped_17_1 := HomalgIdentityMatrix( deduped_19_1, deduped_21_1 ); + deduped_16_1 := deduped_18_1 * deduped_18_1; + deduped_15_1 := HomalgIdentityMatrix( deduped_18_1, deduped_21_1 ); + deduped_14_1 := deduped_19_1 * deduped_20_1; + deduped_13_1 := deduped_18_1 * deduped_19_1; + deduped_12_1 := deduped_19_1 * deduped_14_1; + deduped_11_1 := HomalgIdentityMatrix( deduped_14_1, deduped_21_1 ); + deduped_10_1 := deduped_14_1 * deduped_18_1; + deduped_9_1 := HomalgIdentityMatrix( deduped_13_1, deduped_21_1 ); + deduped_8_1 := deduped_13_1 * deduped_14_1; + deduped_7_1 := deduped_18_1 * deduped_8_1; + deduped_6_1 := HomalgIdentityMatrix( deduped_8_1, deduped_21_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_8_1 ), KroneckerMat( ConvertMatrixToRow( deduped_15_1 ), deduped_6_1 ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_16_1, deduped_21_1 ), List( [ 1 .. deduped_16_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_18_1 ) * deduped_18_1 + QUO_INT( deduped_1_2, deduped_18_1 ) + 1); + end ) ), deduped_6_1 ) * KroneckerMat( deduped_15_1, CertainRows( HomalgIdentityMatrix( deduped_7_1, deduped_21_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_18_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ) ) * KroneckerMat( deduped_15_1, (KroneckerMat( deduped_9_1, CertainRows( HomalgIdentityMatrix( deduped_10_1, deduped_21_1 ), List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_18_1 ) * deduped_14_1 + QUO_INT( deduped_1_2, deduped_18_1 ) + 1); + end ) ) ) * KroneckerMat( (KroneckerMat( CertainRows( deduped_9_1, List( [ 1 .. deduped_13_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_19_1 ) * deduped_18_1 + QUO_INT( deduped_1_2, deduped_19_1 ) + 1); + end ) ), deduped_15_1 ) * KroneckerMat( deduped_17_1, ConvertMatrixToColumn( deduped_15_1 ) )), deduped_11_1 ) * CertainRows( HomalgIdentityMatrix( deduped_12_1, deduped_21_1 ), List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_14_1 ) * deduped_19_1 + QUO_INT( deduped_1_2, deduped_14_1 ) + 1); + end ) ) * (KroneckerMat( CertainRows( deduped_11_1, List( [ 1 .. deduped_14_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_20_1 ) * deduped_19_1 + QUO_INT( deduped_1_2, deduped_20_1 ) + 1); + end ) ), deduped_17_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_20_1, deduped_21_1 ), ConvertMatrixToColumn( deduped_17_1 ) ))) ), AsCapCategoryObject( cat_1, deduped_18_1 * deduped_20_1 ) ); +end +######## + + ; + ## AddMonoidalPreComposeMorphismWithGivenObjects( cat, @@ -4353,6 +6504,22 @@ end , 502 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismBetweenDirectSums := + +######## +function ( cat_1, source_diagram_1, mat_1, range_diagram_1 ) + local deduped_2_1, deduped_3_1; + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := Sum( List( range_diagram_1, AsInteger ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( source_diagram_1, AsInteger ) ) ), UnionOfRows( deduped_3_1, deduped_2_1, ListN( source_diagram_1, mat_1, function ( source_2, row_2 ) + return UnionOfColumns( deduped_3_1, AsInteger( source_2 ), List( row_2, AsHomalgMatrix ) ); + end ) ), AsCapCategoryObject( cat_1, deduped_2_1 ) ); +end +######## + + ; + ## AddMorphismBetweenDirectSumsWithGivenDirectSums( cat, @@ -4453,6 +6620,20 @@ end , 1609 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromCoimageToImage := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsHomalgMatrix( alpha_1 ); + deduped_1_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_2_1 ) ); + 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 ) ) ); +end +######## + + ; + ## AddMorphismFromCoimageToImageWithGivenObjects( cat, @@ -4468,6 +6649,20 @@ end , 1408 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromCoimageToImageWithGivenObjects := + +######## +function ( cat_1, C_1, alpha_1, I_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsHomalgMatrix( alpha_1 ); + deduped_1_1 := SyzygiesOfRows( SyzygiesOfColumns( deduped_2_1 ) ); + 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 ) ) ); +end +######## + + ; + ## AddMorphismFromEqualizerToSink( cat, @@ -4485,6 +6680,23 @@ end , 2919 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromEqualizerToSink := + +######## +function ( cat_1, Y_1, morphisms_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := AsInteger( Y_1 ); + deduped_1_1 := UnionOfColumns( deduped_3_1, deduped_2_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfColumns( deduped_3_1, deduped_2_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_2_1 - RowRankOfMatrix( deduped_1_1 ) ), SyzygiesOfRows( deduped_1_1 ) * deduped_4_1[1], List( morphisms_1, Range )[1] ); +end +######## + + ; + ## AddMorphismFromEqualizerToSinkWithGivenEqualizer( cat, @@ -4502,6 +6714,23 @@ end , 2920 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromEqualizerToSinkWithGivenEqualizer := + +######## +function ( cat_1, Y_1, morphisms_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := AsInteger( Y_1 ); + deduped_1_1 := UnionOfColumns( deduped_3_1, deduped_2_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfColumns( deduped_3_1, deduped_2_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_2_1 - RowRankOfMatrix( deduped_1_1 ) ), SyzygiesOfRows( deduped_1_1 ) * deduped_4_1[1], List( morphisms_1, Range )[1] ); +end +######## + + ; + ## AddMorphismFromFiberProductToSink( cat, @@ -4528,6 +6757,32 @@ end , 9162 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromFiberProductToSink := + +######## +function ( cat_1, morphisms_1 ) + local deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1; + deduped_12_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_11_1 := Length( morphisms_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + deduped_7_1 := Sum( deduped_9_1{[ 1 .. 1 - 1 ]} ); + deduped_6_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return UnionOfRows( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_1_2, deduped_10_1 ) ] ) * deduped_12_1[i_2]; + end ); + deduped_5_1 := UnionOfColumns( deduped_10_1, deduped_8_1, deduped_6_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfColumns( deduped_10_1, deduped_8_1, deduped_6_1{[ 2 .. deduped_11_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_8_1 - RowRankOfMatrix( deduped_5_1 ) ), CertainColumns( SyzygiesOfRows( deduped_5_1 ), [ (deduped_7_1 + 1) .. (deduped_7_1 + deduped_9_1[1]) ] ) * deduped_12_1[1], List( morphisms_1, Range )[1] ); +end +######## + + ; + ## AddMorphismFromFiberProductToSinkWithGivenFiberProduct( cat, @@ -4554,6 +6809,32 @@ end , 9163 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromFiberProductToSinkWithGivenFiberProduct := + +######## +function ( cat_1, morphisms_1, P_1 ) + local deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1; + deduped_12_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_11_1 := Length( morphisms_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + deduped_7_1 := Sum( deduped_9_1{[ 1 .. 1 - 1 ]} ); + deduped_6_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return UnionOfRows( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_1_2, deduped_10_1 ) ] ) * deduped_12_1[i_2]; + end ); + deduped_5_1 := UnionOfColumns( deduped_10_1, deduped_8_1, deduped_6_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfColumns( deduped_10_1, deduped_8_1, deduped_6_1{[ 2 .. deduped_11_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_8_1 - RowRankOfMatrix( deduped_5_1 ) ), CertainColumns( SyzygiesOfRows( deduped_5_1 ), [ (deduped_7_1 + 1) .. (deduped_7_1 + deduped_9_1[1]) ] ) * deduped_12_1[1], List( morphisms_1, Range )[1] ); +end +######## + + ; + ## AddMorphismFromInternalCoHomToTensorProduct( cat, @@ -4567,6 +6848,20 @@ end , 805 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromInternalCoHomToTensorProduct := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddMorphismFromInternalCoHomToTensorProductWithGivenObjects( cat, @@ -4580,6 +6875,20 @@ end , 302 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromInternalCoHomToTensorProductWithGivenObjects := + +######## +function ( cat_1, s_1, a_1, b_1, r_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddMorphismFromInternalHomToTensorProduct( cat, @@ -4593,6 +6902,20 @@ end , 805 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromInternalHomToTensorProduct := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddMorphismFromInternalHomToTensorProductWithGivenObjects( cat, @@ -4607,19 +6930,47 @@ end , 302 : IsPrecompiledDerivation := true ); ## - AddMorphismFromKernelObjectToSink( cat, + cat!.cached_precompiled_functions.MorphismFromInternalHomToTensorProductWithGivenObjects := ######## -function ( cat_1, alpha_1 ) - local morphism_attr_1_1, deduped_2_1; - deduped_2_1 := Range( alpha_1 ); - morphism_attr_1_1 := HomalgZeroMatrix( AsInteger( Source( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ), AsInteger( deduped_2_1 ), UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, deduped_2_1 ); +function ( cat_1, s_1, a_1, b_1, r_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + + ## + AddMorphismFromKernelObjectToSink( cat, + +######## +function ( cat_1, alpha_1 ) + local morphism_attr_1_1, deduped_2_1; + deduped_2_1 := Range( alpha_1 ); + morphism_attr_1_1 := HomalgZeroMatrix( AsInteger( Source( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ), AsInteger( deduped_2_1 ), UnderlyingRing( cat_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, deduped_2_1 ); end ######## , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromKernelObjectToSink := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := Range( alpha_1 ); + deduped_1_1 := AsInteger( Source( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_1_1 ), HomalgZeroMatrix( deduped_1_1, AsInteger( deduped_2_1 ), UnderlyingRing( cat_1 ) ), deduped_2_1 ); +end +######## + + ; + ## AddMorphismFromKernelObjectToSinkWithGivenKernelObject( cat, @@ -4634,6 +6985,20 @@ end , 202 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromKernelObjectToSinkWithGivenKernelObject := + +######## +function ( cat_1, alpha_1, P_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := Range( alpha_1 ); + deduped_1_1 := AsInteger( Source( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_1_1 ), HomalgZeroMatrix( deduped_1_1, AsInteger( deduped_2_1 ), UnderlyingRing( cat_1 ) ), deduped_2_1 ); +end +######## + + ; + ## AddMorphismFromSourceToCoequalizer( cat, @@ -4651,6 +7016,23 @@ end , 2925 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromSourceToCoequalizer := + +######## +function ( cat_1, Y_1, morphisms_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := AsInteger( Y_1 ); + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_1_1 := UnionOfRows( deduped_3_1, deduped_4_1, deduped_2_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfRows( deduped_3_1, deduped_4_1, deduped_2_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, List( morphisms_1, Source )[1], deduped_2_1[1] * SyzygiesOfColumns( deduped_1_1 ), AsCapCategoryObject( cat_1, deduped_4_1 - RowRankOfMatrix( deduped_1_1 ) ) ); +end +######## + + ; + ## AddMorphismFromSourceToCoequalizerWithGivenCoequalizer( cat, @@ -4668,6 +7050,23 @@ end , 2926 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromSourceToCoequalizerWithGivenCoequalizer := + +######## +function ( cat_1, Y_1, morphisms_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := AsInteger( Y_1 ); + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_1_1 := UnionOfRows( deduped_3_1, deduped_4_1, deduped_2_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfRows( deduped_3_1, deduped_4_1, deduped_2_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, List( morphisms_1, Source )[1], deduped_2_1[1] * SyzygiesOfColumns( deduped_1_1 ), AsCapCategoryObject( cat_1, deduped_4_1 - RowRankOfMatrix( deduped_1_1 ) ) ); +end +######## + + ; + ## AddMorphismFromSourceToCokernelObject( cat, @@ -4682,6 +7081,20 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromSourceToCokernelObject := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := Source( alpha_1 ); + deduped_1_1 := AsInteger( Range( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, deduped_2_1, HomalgZeroMatrix( AsInteger( deduped_2_1 ), deduped_1_1, UnderlyingRing( cat_1 ) ), AsCapCategoryObject( cat_1, deduped_1_1 ) ); +end +######## + + ; + ## AddMorphismFromSourceToCokernelObjectWithGivenCokernelObject( cat, @@ -4696,6 +7109,20 @@ end , 202 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromSourceToCokernelObjectWithGivenCokernelObject := + +######## +function ( cat_1, alpha_1, P_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := Source( alpha_1 ); + deduped_1_1 := AsInteger( Range( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, deduped_2_1, HomalgZeroMatrix( AsInteger( deduped_2_1 ), deduped_1_1, UnderlyingRing( cat_1 ) ), AsCapCategoryObject( cat_1, deduped_1_1 ) ); +end +######## + + ; + ## AddMorphismFromSourceToPushout( cat, @@ -4722,6 +7149,32 @@ end , 9181 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromSourceToPushout := + +######## +function ( cat_1, morphisms_1 ) + local deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1; + deduped_12_1 := Length( morphisms_1 ); + deduped_11_1 := UnderlyingRing( cat_1 ); + deduped_10_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_9_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + deduped_7_1 := Sum( deduped_9_1{[ 1 .. 1 - 1 ]} ); + deduped_6_1 := List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return deduped_10_1[i_2] * UnionOfColumns( deduped_11_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_11_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_11_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ (i_2 + 1) .. deduped_12_1 ]} ), deduped_11_1 ) ] ); + end ); + deduped_5_1 := UnionOfRows( deduped_11_1, deduped_8_1, deduped_6_1{[ 1 .. deduped_12_1 - 1 ]} ) - UnionOfRows( deduped_11_1, deduped_8_1, deduped_6_1{[ 2 .. deduped_12_1 ]} ); + return AsCapCategoryMorphism( cat_1, List( morphisms_1, Source )[1], deduped_10_1[1] * CertainRows( SyzygiesOfColumns( deduped_5_1 ), [ (deduped_7_1 + 1) .. (deduped_7_1 + deduped_9_1[1]) ] ), AsCapCategoryObject( cat_1, deduped_8_1 - RowRankOfMatrix( deduped_5_1 ) ) ); +end +######## + + ; + ## AddMorphismFromSourceToPushoutWithGivenPushout( cat, @@ -4748,6 +7201,32 @@ end , 9182 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromSourceToPushoutWithGivenPushout := + +######## +function ( cat_1, morphisms_1, P_1 ) + local deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1; + deduped_12_1 := Length( morphisms_1 ); + deduped_11_1 := UnderlyingRing( cat_1 ); + deduped_10_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_9_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + deduped_7_1 := Sum( deduped_9_1{[ 1 .. 1 - 1 ]} ); + deduped_6_1 := List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return deduped_10_1[i_2] * UnionOfColumns( deduped_11_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_11_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_11_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_9_1{[ (i_2 + 1) .. deduped_12_1 ]} ), deduped_11_1 ) ] ); + end ); + deduped_5_1 := UnionOfRows( deduped_11_1, deduped_8_1, deduped_6_1{[ 1 .. deduped_12_1 - 1 ]} ) - UnionOfRows( deduped_11_1, deduped_8_1, deduped_6_1{[ 2 .. deduped_12_1 ]} ); + return AsCapCategoryMorphism( cat_1, List( morphisms_1, Source )[1], deduped_10_1[1] * CertainRows( SyzygiesOfColumns( deduped_5_1 ), [ (deduped_7_1 + 1) .. (deduped_7_1 + deduped_9_1[1]) ] ), AsCapCategoryObject( cat_1, deduped_8_1 - RowRankOfMatrix( deduped_5_1 ) ) ); +end +######## + + ; + ## AddMorphismFromTensorProductToInternalCoHom( cat, @@ -4761,6 +7240,20 @@ end , 805 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromTensorProductToInternalCoHom := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddMorphismFromTensorProductToInternalCoHomWithGivenObjects( cat, @@ -4774,6 +7267,20 @@ end , 302 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromTensorProductToInternalCoHomWithGivenObjects := + +######## +function ( cat_1, s_1, a_1, b_1, r_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddMorphismFromTensorProductToInternalHom( cat, @@ -4787,6 +7294,20 @@ end , 805 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromTensorProductToInternalHom := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddMorphismFromTensorProductToInternalHomWithGivenObjects( cat, @@ -4800,6 +7321,20 @@ end , 302 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.MorphismFromTensorProductToInternalHomWithGivenObjects := + +######## +function ( cat_1, s_1, a_1, b_1, r_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsInteger( a_1 ) * AsInteger( b_1 ); + deduped_1_1 := AsCapCategoryObject( cat_1, deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, deduped_1_1, HomalgIdentityMatrix( deduped_2_1, UnderlyingRing( cat_1 ) ), deduped_1_1 ); +end +######## + + ; + ## AddMorphismToBidual( cat, @@ -4975,6 +7510,21 @@ end , 503 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ProjectionInFactorOfDirectProduct := + +######## +function ( cat_1, objects_1, k_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := List( objects_1, AsInteger ); + deduped_1_1 := deduped_2_1[k_1]; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( deduped_2_1 ) ), UnionOfRows( deduped_3_1, deduped_1_1, [ HomalgZeroMatrix( Sum( deduped_2_1{[ 1 .. k_1 - 1 ]} ), deduped_1_1, deduped_3_1 ), HomalgIdentityMatrix( deduped_1_1, deduped_3_1 ), HomalgZeroMatrix( Sum( deduped_2_1{[ k_1 + 1 .. Length( objects_1 ) ]} ), deduped_1_1, deduped_3_1 ) ] ), objects_1[k_1] ); +end +######## + + ; + ## AddProjectionInFactorOfDirectProductWithGivenDirectProduct( cat, @@ -4991,6 +7541,21 @@ end , 504 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ProjectionInFactorOfDirectProductWithGivenDirectProduct := + +######## +function ( cat_1, objects_1, k_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := List( objects_1, AsInteger ); + deduped_1_1 := deduped_2_1[k_1]; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( deduped_2_1 ) ), UnionOfRows( deduped_3_1, deduped_1_1, [ HomalgZeroMatrix( Sum( deduped_2_1{[ 1 .. k_1 - 1 ]} ), deduped_1_1, deduped_3_1 ), HomalgIdentityMatrix( deduped_1_1, deduped_3_1 ), HomalgZeroMatrix( Sum( deduped_2_1{[ k_1 + 1 .. Length( objects_1 ) ]} ), deduped_1_1, deduped_3_1 ) ] ), objects_1[k_1] ); +end +######## + + ; + ## AddProjectionInFactorOfDirectSum( cat, @@ -5007,6 +7572,21 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ProjectionInFactorOfDirectSum := + +######## +function ( cat_1, objects_1, k_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := List( objects_1, AsInteger ); + deduped_1_1 := deduped_2_1[k_1]; + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( deduped_2_1 ) ), UnionOfRows( deduped_3_1, deduped_1_1, [ HomalgZeroMatrix( Sum( deduped_2_1{[ 1 .. k_1 - 1 ]} ), deduped_1_1, deduped_3_1 ), HomalgIdentityMatrix( deduped_1_1, deduped_3_1 ), HomalgZeroMatrix( Sum( deduped_2_1{[ k_1 + 1 .. Length( objects_1 ) ]} ), deduped_1_1, deduped_3_1 ) ] ), objects_1[k_1] ); +end +######## + + ; + ## AddProjectionInFactorOfDirectSumWithGivenDirectSum( cat, @@ -5047,6 +7627,32 @@ end , 9061 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ProjectionInFactorOfFiberProduct := + +######## +function ( cat_1, morphisms_1, k_1 ) + local hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1; + deduped_11_1 := Length( morphisms_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + deduped_7_1 := Sum( deduped_9_1{[ 1 .. k_1 - 1 ]} ); + hoisted_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_6_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return UnionOfRows( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_1_2, deduped_10_1 ) ] ) * hoisted_4_1[i_2]; + end ); + deduped_5_1 := UnionOfColumns( deduped_10_1, deduped_8_1, deduped_6_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfColumns( deduped_10_1, deduped_8_1, deduped_6_1{[ 2 .. deduped_11_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_8_1 - RowRankOfMatrix( deduped_5_1 ) ), CertainColumns( SyzygiesOfRows( deduped_5_1 ), [ deduped_7_1 + 1 .. deduped_7_1 + deduped_9_1[k_1] ] ), List( morphisms_1, Source )[k_1] ); +end +######## + + ; + ## AddProjectionInFactorOfFiberProductWithGivenFiberProduct( cat, @@ -5072,6 +7678,32 @@ end , 9062 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ProjectionInFactorOfFiberProductWithGivenFiberProduct := + +######## +function ( cat_1, morphisms_1, k_1, P_1 ) + local hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1; + deduped_11_1 := Length( morphisms_1 ); + deduped_10_1 := UnderlyingRing( cat_1 ); + deduped_9_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_8_1 := Sum( deduped_9_1 ); + deduped_7_1 := Sum( deduped_9_1{[ 1 .. k_1 - 1 ]} ); + hoisted_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_6_1 := List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_9_1[i_2]; + return UnionOfRows( deduped_10_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_9_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_10_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_10_1 ), HomalgZeroMatrix( Sum( deduped_9_1{[ (i_2 + 1) .. deduped_11_1 ]} ), deduped_1_2, deduped_10_1 ) ] ) * hoisted_4_1[i_2]; + end ); + deduped_5_1 := UnionOfColumns( deduped_10_1, deduped_8_1, deduped_6_1{[ 1 .. deduped_11_1 - 1 ]} ) - UnionOfColumns( deduped_10_1, deduped_8_1, deduped_6_1{[ 2 .. deduped_11_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_8_1 - RowRankOfMatrix( deduped_5_1 ) ), CertainColumns( SyzygiesOfRows( deduped_5_1 ), [ deduped_7_1 + 1 .. deduped_7_1 + deduped_9_1[k_1] ] ), List( morphisms_1, Source )[k_1] ); +end +######## + + ; + ## AddProjectionOntoCoequalizer( cat, @@ -5089,6 +7721,23 @@ end , 2823 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ProjectionOntoCoequalizer := + +######## +function ( cat_1, Y_1, morphisms_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := AsInteger( Y_1 ); + deduped_2_1 := UnderlyingRing( cat_1 ); + deduped_1_1 := UnionOfRows( deduped_2_1, deduped_3_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfRows( deduped_2_1, deduped_3_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, Y_1, SyzygiesOfColumns( deduped_1_1 ), AsCapCategoryObject( cat_1, deduped_3_1 - RowRankOfMatrix( deduped_1_1 ) ) ); +end +######## + + ; + ## AddProjectionOntoCoequalizerWithGivenCoequalizer( cat, @@ -5106,6 +7755,23 @@ end , 2824 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.ProjectionOntoCoequalizerWithGivenCoequalizer := + +######## +function ( cat_1, Y_1, morphisms_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := AsInteger( Y_1 ); + deduped_2_1 := UnderlyingRing( cat_1 ); + deduped_1_1 := UnionOfRows( deduped_2_1, deduped_3_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfRows( deduped_2_1, deduped_3_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, Y_1, SyzygiesOfColumns( deduped_1_1 ), AsCapCategoryObject( cat_1, deduped_3_1 - RowRankOfMatrix( deduped_1_1 ) ) ); +end +######## + + ; + ## AddProjectiveLift( cat, @@ -5140,6 +7806,30 @@ end , 4338 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.Pushout := + +######## +function ( cat_1, morphisms_1 ) + local hoisted_1_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := Length( morphisms_1 ); + deduped_8_1 := UnderlyingRing( cat_1 ); + deduped_7_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_6_1 := Sum( deduped_7_1 ); + hoisted_1_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_5_1 := List( [ 1 .. deduped_9_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_7_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_8_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_7_1{[ 1 .. (i_2 - 1) ]} ), deduped_8_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_8_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_7_1{[ (i_2 + 1) .. deduped_9_1 ]} ), deduped_8_1 ) ] ); + end ); + return AsCapCategoryObject( cat_1, deduped_6_1 - RowRankOfMatrix( (UnionOfRows( deduped_8_1, deduped_6_1, deduped_5_1{[ 1 .. deduped_9_1 - 1 ]} ) - UnionOfRows( deduped_8_1, deduped_6_1, deduped_5_1{[ 2 .. deduped_9_1 ]} )) ) ); +end +######## + + ; + ## AddPushoutFunctorial( cat, @@ -5180,6 +7870,50 @@ end , 36322 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.PushoutFunctorial := + +######## +function ( cat_1, morphisms_1, L_1, morphismsp_1 ) + local hoisted_1_1, hoisted_5_1, hoisted_8_1, hoisted_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1, deduped_20_1, deduped_21_1; + deduped_21_1 := Length( morphismsp_1 ); + deduped_20_1 := Length( morphisms_1 ); + deduped_19_1 := UnderlyingRing( cat_1 ); + deduped_18_1 := List( morphismsp_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_17_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_16_1 := Sum( deduped_18_1 ); + deduped_15_1 := Sum( deduped_17_1 ); + hoisted_5_1 := List( morphismsp_1, AsHomalgMatrix ); + deduped_14_1 := List( [ 1 .. deduped_21_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_18_1[i_2]; + return hoisted_5_1[i_2] * UnionOfColumns( deduped_19_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_18_1{[ 1 .. (i_2 - 1) ]} ), deduped_19_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_19_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_18_1{[ (i_2 + 1) .. deduped_21_1 ]} ), deduped_19_1 ) ] ); + end ); + hoisted_1_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_13_1 := List( [ 1 .. deduped_20_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_17_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_19_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_17_1{[ 1 .. (i_2 - 1) ]} ), deduped_19_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_19_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_17_1{[ (i_2 + 1) .. deduped_20_1 ]} ), deduped_19_1 ) ] ); + end ); + deduped_12_1 := UnionOfRows( deduped_19_1, deduped_16_1, deduped_14_1{[ 1 .. deduped_21_1 - 1 ]} ) - UnionOfRows( deduped_19_1, deduped_16_1, deduped_14_1{[ 2 .. deduped_21_1 ]} ); + deduped_11_1 := UnionOfRows( deduped_19_1, deduped_15_1, deduped_13_1{[ 1 .. deduped_20_1 - 1 ]} ) - UnionOfRows( deduped_19_1, deduped_15_1, deduped_13_1{[ 2 .. deduped_20_1 ]} ); + deduped_10_1 := deduped_16_1 - RowRankOfMatrix( deduped_12_1 ); + hoisted_9_1 := SyzygiesOfColumns( deduped_12_1 ); + hoisted_8_1 := List( L_1, AsHomalgMatrix ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_15_1 - RowRankOfMatrix( deduped_11_1 ) ), UniqueLeftDivide( SyzygiesOfColumns( deduped_11_1 ), UnionOfRows( deduped_19_1, deduped_10_1, List( [ 1 .. Length( L_1 ) ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := Sum( deduped_18_1{[ 1 .. i_2 - 1 ]} ); + return hoisted_8_1[i_2] * CertainRows( hoisted_9_1, [ (deduped_1_2 + 1) .. (deduped_1_2 + deduped_18_1[i_2]) ] ); + end ) ) ), AsCapCategoryObject( cat_1, deduped_10_1 ) ); +end +######## + + ; + ## AddPushoutFunctorialWithGivenPushouts( cat, @@ -5219,6 +7953,48 @@ end , 27645 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.PushoutFunctorialWithGivenPushouts := + +######## +function ( cat_1, P_1, morphisms_1, L_1, morphismsp_1, Pp_1 ) + local hoisted_1_1, hoisted_5_1, hoisted_6_1, hoisted_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1; + deduped_19_1 := Length( morphismsp_1 ); + deduped_18_1 := Length( morphisms_1 ); + deduped_17_1 := UnderlyingRing( cat_1 ); + deduped_16_1 := List( morphismsp_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_15_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_14_1 := Sum( deduped_16_1 ); + deduped_13_1 := Sum( deduped_15_1 ); + hoisted_6_1 := List( morphismsp_1, AsHomalgMatrix ); + deduped_12_1 := List( [ 1 .. deduped_19_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_16_1[i_2]; + return hoisted_6_1[i_2] * UnionOfColumns( deduped_17_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_16_1{[ 1 .. (i_2 - 1) ]} ), deduped_17_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_17_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_16_1{[ (i_2 + 1) .. deduped_19_1 ]} ), deduped_17_1 ) ] ); + end ); + hoisted_1_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_11_1 := List( [ 1 .. deduped_18_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_15_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_17_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_15_1{[ 1 .. (i_2 - 1) ]} ), deduped_17_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_17_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_15_1{[ (i_2 + 1) .. deduped_18_1 ]} ), deduped_17_1 ) ] ); + end ); + deduped_10_1 := UnionOfRows( deduped_17_1, deduped_13_1, deduped_11_1{[ 1 .. deduped_18_1 - 1 ]} ) - UnionOfRows( deduped_17_1, deduped_13_1, deduped_11_1{[ 2 .. deduped_18_1 ]} ); + hoisted_9_1 := SyzygiesOfColumns( UnionOfRows( deduped_17_1, deduped_14_1, deduped_12_1{[ 1 .. deduped_19_1 - 1 ]} ) - UnionOfRows( deduped_17_1, deduped_14_1, deduped_12_1{[ 2 .. deduped_19_1 ]} ) ); + hoisted_5_1 := List( L_1, AsHomalgMatrix ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_13_1 - RowRankOfMatrix( deduped_10_1 ) ), UniqueLeftDivide( SyzygiesOfColumns( deduped_10_1 ), UnionOfRows( deduped_17_1, AsInteger( Pp_1 ), List( [ 1 .. Length( L_1 ) ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := Sum( deduped_16_1{[ 1 .. i_2 - 1 ]} ); + return hoisted_5_1[i_2] * CertainRows( hoisted_9_1, [ (deduped_1_2 + 1) .. (deduped_1_2 + deduped_16_1[i_2]) ] ); + end ) ) ), Pp_1 ); +end +######## + + ; + ## AddRankMorphism( cat, @@ -5262,6 +8038,30 @@ end , 1707 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.RightDistributivityExpanding := + +######## +function ( cat_1, L_1, a_1 ) + local hoisted_4_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := Length( L_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := List( L_1, AsInteger ); + deduped_6_1 := Sum( deduped_7_1 ) * deduped_8_1; + hoisted_4_1 := HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_6_1 ), UnionOfColumns( deduped_9_1, deduped_6_1, List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_7_1[i_2]; + return KroneckerMat( UnionOfRows( deduped_9_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_7_1{[ 1 .. i_2 - 1 ]} ), deduped_1_2, deduped_9_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_9_1 ), HomalgZeroMatrix( Sum( deduped_7_1{[ i_2 + 1 .. deduped_10_1 ]} ), deduped_1_2, deduped_9_1 ) ] ), hoisted_4_1 ); + end ) ), AsCapCategoryObject( cat_1, Sum( List( L_1, function ( summand_2 ) + return AsInteger( summand_2 ) * deduped_8_1; + end ) ) ) ); +end +######## + + ; + ## AddRightDistributivityExpandingWithGivenObjects( cat, @@ -5283,6 +8083,29 @@ end , 1506 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.RightDistributivityExpandingWithGivenObjects := + +######## +function ( cat_1, s_1, L_1, a_1, r_1 ) + local deduped_1_1, hoisted_4_1, deduped_6_1, deduped_7_1, deduped_8_1; + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := Length( L_1 ); + deduped_6_1 := UnderlyingRing( cat_1 ); + hoisted_4_1 := HomalgIdentityMatrix( deduped_8_1, deduped_6_1 ); + deduped_1_1 := List( L_1, AsInteger ); + return AsCapCategoryMorphism( cat_1, s_1, UnionOfColumns( deduped_6_1, AsInteger( s_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_1_1[i_2]; + return KroneckerMat( UnionOfRows( deduped_6_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_1_1{[ 1 .. i_2 - 1 ]} ), deduped_1_2, deduped_6_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_6_1 ), HomalgZeroMatrix( Sum( deduped_1_1{[ i_2 + 1 .. deduped_7_1 ]} ), deduped_1_2, deduped_6_1 ) ] ), hoisted_4_1 ); + end ) ), AsCapCategoryObject( cat_1, Sum( List( L_1, function ( summand_2 ) + return AsInteger( summand_2 ) * deduped_8_1; + end ) ) ) ); +end +######## + + ; + ## AddRightDistributivityFactoring( cat, @@ -5305,6 +8128,30 @@ end , 1707 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.RightDistributivityFactoring := + +######## +function ( cat_1, L_1, a_1 ) + local hoisted_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := Length( L_1 ); + deduped_9_1 := AsInteger( a_1 ); + deduped_8_1 := List( L_1, AsInteger ); + deduped_7_1 := UnderlyingRing( cat_1 ); + deduped_6_1 := Sum( deduped_8_1 ) * deduped_9_1; + hoisted_5_1 := HomalgIdentityMatrix( deduped_9_1, deduped_7_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( L_1, function ( summand_2 ) + return AsInteger( summand_2 ) * deduped_9_1; + end ) ) ), UnionOfRows( deduped_7_1, deduped_6_1, List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_8_1[i_2]; + return KroneckerMat( UnionOfColumns( deduped_7_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_8_1{[ 1 .. i_2 - 1 ]} ), deduped_7_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_7_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_8_1{[ i_2 + 1 .. deduped_10_1 ]} ), deduped_7_1 ) ] ), hoisted_5_1 ); + end ) ), AsCapCategoryObject( cat_1, deduped_6_1 ) ); +end +######## + + ; + ## AddRightDistributivityFactoringWithGivenObjects( cat, @@ -5324,7 +8171,30 @@ function ( cat_1, s_1, L_1, a_1, r_1 ) end ######## - , 1506 : IsPrecompiledDerivation := true ); + , 1506 : IsPrecompiledDerivation := true ); + + ## + cat!.cached_precompiled_functions.RightDistributivityFactoringWithGivenObjects := + +######## +function ( cat_1, s_1, L_1, a_1, r_1 ) + local deduped_2_1, hoisted_5_1, deduped_6_1, deduped_7_1, deduped_8_1; + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := Length( L_1 ); + deduped_6_1 := UnderlyingRing( cat_1 ); + hoisted_5_1 := HomalgIdentityMatrix( deduped_8_1, deduped_6_1 ); + deduped_2_1 := List( L_1, AsInteger ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( L_1, function ( summand_2 ) + return AsInteger( summand_2 ) * deduped_8_1; + end ) ) ), UnionOfRows( deduped_6_1, AsInteger( r_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_2_1[i_2]; + return KroneckerMat( UnionOfColumns( deduped_6_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_2_1{[ 1 .. i_2 - 1 ]} ), deduped_6_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_6_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_2_1{[ i_2 + 1 .. deduped_7_1 ]} ), deduped_6_1 ) ] ), hoisted_5_1 ); + end ) ), r_1 ); +end +######## + + ; ## AddRightUnitor( cat, @@ -5563,6 +8433,74 @@ end , 2906 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.SolveLinearSystemInAbCategory := + +######## +function ( cat_1, arg2_1, arg3_1, arg4_1 ) + local hoisted_1_1, hoisted_2_1, hoisted_3_1, hoisted_4_1, deduped_5_1, deduped_6_1, hoisted_7_1, hoisted_8_1, deduped_11_1, hoisted_12_1, hoisted_13_1, deduped_14_1, deduped_15_1, deduped_16_1; + deduped_16_1 := UnderlyingRing( cat_1 ); + deduped_15_1 := [ 1 .. Length( arg2_1 ) ]; + deduped_14_1 := [ 1 .. List( arg2_1, Length )[1] ]; + hoisted_13_1 := List( arg3_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, Source ); + end )[1]; + hoisted_8_1 := List( arg3_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, AsHomalgMatrix ); + end ); + hoisted_7_1 := List( arg2_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return TransposedMatrix( AsHomalgMatrix( logic_new_func_x_3 ) ); + end ); + end ); + deduped_6_1 := List( arg3_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return AsInteger( Source( logic_new_func_x_3 ) ); + end ); + end )[1]; + deduped_5_1 := List( arg2_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return AsInteger( Range( logic_new_func_x_3 ) ); + end ); + end )[1]; + hoisted_4_1 := List( arg3_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return AsInteger( Range( logic_new_func_x_3 ) ); + end ); + end ); + hoisted_3_1 := List( arg2_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, function ( logic_new_func_x_3 ) + return AsInteger( Source( logic_new_func_x_3 ) ); + end ); + end ); + hoisted_2_1 := List( arg4_1, function ( logic_new_func_x_2 ) + return ConvertMatrixToRow( AsHomalgMatrix( logic_new_func_x_2 ) ); + end ); + hoisted_12_1 := SafeRightDivide( UnionOfColumns( deduped_16_1, 1, List( deduped_15_1, function ( i_2 ) + return hoisted_2_1[i_2]; + end ) ), UnionOfRows( deduped_16_1, Sum( List( deduped_15_1, function ( i_2 ) + return hoisted_3_1[i_2][1] * hoisted_4_1[i_2][1]; + end ) ), List( deduped_14_1, function ( j_2 ) + return UnionOfColumns( deduped_16_1, deduped_5_1[j_2] * deduped_6_1[j_2], List( deduped_15_1, function ( i_3 ) + return KroneckerMat( hoisted_7_1[i_3][j_2], hoisted_8_1[i_3][j_2] ); + end ) ); + end ) ) ); + deduped_11_1 := List( deduped_14_1, function ( j_2 ) + return deduped_5_1[j_2] * deduped_6_1[j_2]; + end ); + hoisted_1_1 := List( arg2_1, function ( logic_new_func_list_2 ) + return List( logic_new_func_list_2, Range ); + end )[1]; + return List( deduped_14_1, function ( j_2 ) + local deduped_1_2; + deduped_1_2 := Sum( deduped_11_1{[ 1 .. j_2 - 1 ]} ); + return AsCapCategoryMorphism( cat_1, hoisted_1_1[j_2], ConvertRowToMatrix( CertainColumns( hoisted_12_1, [ deduped_1_2 + 1 .. deduped_1_2 + deduped_11_1[j_2] ] ), deduped_5_1[j_2], deduped_6_1[j_2] ), hoisted_13_1[j_2] ); + end ); +end +######## + + ; + ## AddSomeInjectiveObject( cat, @@ -5601,14 +8539,27 @@ end ######## function ( cat_1, alpha_1 ) - local deduped_1_1; - deduped_1_1 := HomalgZeroMatrix( 0, AsInteger( Range( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ), UnderlyingRing( cat_1 ) ); - return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 0 ), deduped_1_1, AsCapCategoryObject( cat_1, NumberColumns( deduped_1_1 ) ) ); + local morphism_attr_1_1; + morphism_attr_1_1 := HomalgZeroMatrix( 0, AsInteger( Range( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ), UnderlyingRing( cat_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 0 ), morphism_attr_1_1, AsCapCategoryObject( cat_1, NumberColumns( morphism_attr_1_1 ) ) ); end ######## , 100 ); + ## + cat!.cached_precompiled_functions.SomeReductionBySplitEpiSummand := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1; + deduped_1_1 := AsInteger( Range( alpha_1 ) ) - RowRankOfMatrix( AsHomalgMatrix( alpha_1 ) ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, 0 ), HomalgZeroMatrix( 0, deduped_1_1, UnderlyingRing( cat_1 ) ), AsCapCategoryObject( cat_1, deduped_1_1 ) ); +end +######## + + ; + ## AddSomeReductionBySplitEpiSummand_MorphismFromInputRange( cat, @@ -5627,15 +8578,29 @@ end ######## function ( cat_1, alpha_1 ) - local deduped_1_1, deduped_2_1; + local morphism_attr_1_1, deduped_2_1; deduped_2_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); - deduped_1_1 := SafeRightDivide( HomalgIdentityMatrix( NumberColumns( deduped_2_1 ), UnderlyingRing( cat_1 ) ), deduped_2_1 ); - return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( deduped_1_1 ) ), deduped_1_1, Range( alpha_1 ) ); + morphism_attr_1_1 := SafeRightDivide( HomalgIdentityMatrix( NumberColumns( deduped_2_1 ), UnderlyingRing( cat_1 ) ), deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, NumberRows( morphism_attr_1_1 ) ), morphism_attr_1_1, Range( alpha_1 ) ); end ######## , 100 ); + ## + cat!.cached_precompiled_functions.SomeReductionBySplitEpiSummand_MorphismToInputRange := + +######## +function ( cat_1, alpha_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := SyzygiesOfColumns( AsHomalgMatrix( alpha_1 ) ); + deduped_1_1 := NumberColumns( deduped_2_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_1_1 ), SafeRightDivide( HomalgIdentityMatrix( deduped_1_1, UnderlyingRing( cat_1 ) ), deduped_2_1 ), Range( alpha_1 ) ); +end +######## + + ; + ## AddSubtractionForMorphisms( cat, @@ -5689,6 +8654,37 @@ end , 17673 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductDualityCompatibilityMorphism := + +######## +function ( cat_1, a_1, b_1 ) + local deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1; + deduped_14_1 := UnderlyingRing( cat_1 ); + deduped_13_1 := AsInteger( b_1 ); + deduped_12_1 := AsInteger( a_1 ); + deduped_11_1 := HomalgIdentityMatrix( deduped_13_1, deduped_14_1 ); + deduped_10_1 := deduped_13_1 * deduped_12_1; + deduped_9_1 := HomalgIdentityMatrix( deduped_12_1, deduped_14_1 ); + deduped_8_1 := deduped_12_1 * deduped_13_1; + deduped_7_1 := deduped_8_1 * deduped_8_1; + deduped_6_1 := HomalgIdentityMatrix( deduped_8_1, deduped_14_1 ); + deduped_5_1 := AsCapCategoryObject( cat_1, deduped_8_1 ); + deduped_4_1 := CertainRows( HomalgIdentityMatrix( deduped_7_1, deduped_14_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := i_2 - 1; + return REM_INT( deduped_1_2, deduped_8_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1; + end ) ); + return AsCapCategoryMorphism( cat_1, deduped_5_1, KroneckerMat( ConvertMatrixToRow( deduped_6_1 ), deduped_6_1 ) * KroneckerMat( deduped_4_1, deduped_6_1 ) * KroneckerMat( deduped_6_1, deduped_4_1 ) * KroneckerMat( deduped_6_1, (KroneckerMat( KroneckerMat( deduped_9_1, CertainRows( HomalgIdentityMatrix( deduped_10_1, deduped_14_1 ), List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_12_1 ) * deduped_13_1 + QUO_INT( deduped_1_2, deduped_12_1 ) + 1); + end ) ) ), deduped_11_1 ) * KroneckerMat( KroneckerMat( ConvertMatrixToColumn( deduped_9_1 ), deduped_11_1 ), deduped_11_1 ) * ConvertMatrixToColumn( deduped_11_1 )) ), deduped_5_1 ); +end +######## + + ; + ## AddTensorProductDualityCompatibilityMorphismWithGivenObjects( cat, @@ -5772,6 +8768,58 @@ end , 15660 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductInternalHomCompatibilityMorphism := + +######## +function ( cat_1, list_1 ) + local deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1, deduped_20_1, deduped_21_1, deduped_22_1, deduped_23_1, deduped_24_1, deduped_25_1, deduped_26_1, deduped_27_1; + deduped_27_1 := UnderlyingRing( cat_1 ); + deduped_26_1 := List( list_1, AsInteger ); + deduped_25_1 := deduped_26_1[4]; + deduped_24_1 := deduped_26_1[3]; + deduped_23_1 := deduped_26_1[2]; + deduped_22_1 := deduped_26_1[1]; + deduped_21_1 := HomalgIdentityMatrix( deduped_23_1, deduped_27_1 ); + deduped_20_1 := HomalgIdentityMatrix( deduped_22_1, deduped_27_1 ); + deduped_19_1 := HomalgIdentityMatrix( deduped_24_1, deduped_27_1 ); + deduped_18_1 := deduped_22_1 * deduped_24_1; + deduped_17_1 := deduped_24_1 * deduped_25_1; + deduped_16_1 := deduped_22_1 * deduped_23_1; + deduped_15_1 := HomalgIdentityMatrix( deduped_17_1, deduped_27_1 ); + deduped_14_1 := deduped_17_1 * deduped_22_1; + deduped_13_1 := HomalgIdentityMatrix( deduped_16_1, deduped_27_1 ); + deduped_12_1 := deduped_18_1 * deduped_18_1; + deduped_11_1 := HomalgIdentityMatrix( deduped_18_1, deduped_27_1 ); + deduped_10_1 := deduped_16_1 * deduped_17_1; + deduped_9_1 := deduped_18_1 * deduped_10_1; + deduped_8_1 := HomalgIdentityMatrix( deduped_10_1, deduped_27_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_10_1 ), KroneckerMat( ConvertMatrixToRow( deduped_11_1 ), deduped_8_1 ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_12_1, deduped_27_1 ), List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_18_1 ) * deduped_18_1 + QUO_INT( deduped_1_2, deduped_18_1 ) + 1); + end ) ), deduped_8_1 ) * KroneckerMat( deduped_11_1, CertainRows( HomalgIdentityMatrix( deduped_9_1, deduped_27_1 ), List( [ 1 .. deduped_9_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_10_1 ) * deduped_18_1 + QUO_INT( deduped_1_2, deduped_10_1 ) + 1); + end ) ) ) * KroneckerMat( deduped_11_1, (KroneckerMat( KroneckerMat( deduped_13_1, CertainRows( HomalgIdentityMatrix( deduped_14_1, deduped_27_1 ), List( [ 1 .. deduped_14_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_22_1 ) * deduped_17_1 + QUO_INT( deduped_1_2, deduped_22_1 ) + 1); + end ) ) ), deduped_19_1 ) * KroneckerMat( KroneckerMat( (KroneckerMat( CertainRows( deduped_13_1, List( [ 1 .. deduped_16_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_23_1 ) * deduped_22_1 + QUO_INT( deduped_1_2, deduped_23_1 ) + 1); + end ) ), deduped_20_1 ) * KroneckerMat( deduped_21_1, ConvertMatrixToColumn( deduped_20_1 ) )), deduped_15_1 ), deduped_19_1 ) * KroneckerMat( deduped_21_1, (KroneckerMat( CertainRows( deduped_15_1, List( [ 1 .. deduped_17_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_25_1 ) * deduped_24_1 + QUO_INT( deduped_1_2, deduped_25_1 ) + 1); + end ) ), deduped_19_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_25_1, deduped_27_1 ), ConvertMatrixToColumn( deduped_19_1 ) )) )) ), AsCapCategoryObject( cat_1, deduped_18_1 * (deduped_23_1 * deduped_25_1) ) ); +end +######## + + ; + ## AddTensorProductInternalHomCompatibilityMorphismInverse( cat, @@ -5825,6 +8873,59 @@ end , 15862 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductInternalHomCompatibilityMorphismInverse := + +######## +function ( cat_1, list_1 ) + local deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1, deduped_18_1, deduped_19_1, deduped_20_1, deduped_21_1, deduped_22_1, deduped_23_1, deduped_24_1, deduped_25_1, deduped_26_1, deduped_27_1, deduped_28_1; + deduped_28_1 := UnderlyingRing( cat_1 ); + deduped_27_1 := List( list_1, AsInteger ); + deduped_26_1 := deduped_27_1[4]; + deduped_25_1 := deduped_27_1[2]; + deduped_24_1 := deduped_27_1[3]; + deduped_23_1 := deduped_27_1[1]; + deduped_22_1 := HomalgIdentityMatrix( deduped_25_1, deduped_28_1 ); + deduped_21_1 := HomalgIdentityMatrix( deduped_23_1, deduped_28_1 ); + deduped_20_1 := HomalgIdentityMatrix( deduped_24_1, deduped_28_1 ); + deduped_19_1 := deduped_24_1 * deduped_26_1; + deduped_18_1 := deduped_23_1 * deduped_25_1; + deduped_17_1 := deduped_23_1 * deduped_24_1; + deduped_16_1 := HomalgIdentityMatrix( deduped_19_1, deduped_28_1 ); + deduped_15_1 := deduped_19_1 * deduped_23_1; + deduped_14_1 := HomalgIdentityMatrix( deduped_18_1, deduped_28_1 ); + deduped_13_1 := deduped_17_1 * deduped_17_1; + deduped_12_1 := deduped_18_1 * deduped_19_1; + deduped_11_1 := HomalgIdentityMatrix( deduped_17_1, deduped_28_1 ); + deduped_10_1 := deduped_17_1 * (deduped_25_1 * deduped_26_1); + deduped_9_1 := deduped_17_1 * deduped_12_1; + deduped_8_1 := HomalgIdentityMatrix( deduped_12_1, deduped_28_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_10_1 ), UniqueRightDivide( HomalgIdentityMatrix( deduped_10_1, deduped_28_1 ), KroneckerMat( ConvertMatrixToRow( deduped_11_1 ), deduped_8_1 ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_13_1, deduped_28_1 ), List( [ 1 .. deduped_13_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_17_1 ) * deduped_17_1 + QUO_INT( deduped_1_2, deduped_17_1 ) + 1); + end ) ), deduped_8_1 ) * KroneckerMat( deduped_11_1, CertainRows( HomalgIdentityMatrix( deduped_9_1, deduped_28_1 ), List( [ 1 .. deduped_9_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_12_1 ) * deduped_17_1 + QUO_INT( deduped_1_2, deduped_12_1 ) + 1); + end ) ) ) * KroneckerMat( deduped_11_1, (KroneckerMat( KroneckerMat( deduped_14_1, CertainRows( HomalgIdentityMatrix( deduped_15_1, deduped_28_1 ), List( [ 1 .. deduped_15_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_23_1 ) * deduped_19_1 + QUO_INT( deduped_1_2, deduped_23_1 ) + 1); + end ) ) ), deduped_20_1 ) * KroneckerMat( KroneckerMat( (KroneckerMat( CertainRows( deduped_14_1, List( [ 1 .. deduped_18_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_25_1 ) * deduped_23_1 + QUO_INT( deduped_1_2, deduped_25_1 ) + 1); + end ) ), deduped_21_1 ) * KroneckerMat( deduped_22_1, ConvertMatrixToColumn( deduped_21_1 ) )), deduped_16_1 ), deduped_20_1 ) * KroneckerMat( deduped_22_1, (KroneckerMat( CertainRows( deduped_16_1, List( [ 1 .. deduped_19_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_26_1 ) * deduped_24_1 + QUO_INT( deduped_1_2, deduped_26_1 ) + 1); + end ) ), deduped_20_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_26_1, deduped_28_1 ), ConvertMatrixToColumn( deduped_20_1 ) )) )) ) ), AsCapCategoryObject( cat_1, deduped_12_1 ) ); +end +######## + + ; + ## AddTensorProductInternalHomCompatibilityMorphismInverseWithGivenObjects( cat, @@ -5942,6 +9043,17 @@ end , 301 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductOnMorphisms := + +######## +function ( cat_1, alpha_1, beta_1 ) + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, AsInteger( Source( alpha_1 ) ) * AsInteger( Source( beta_1 ) ) ), KroneckerMat( AsHomalgMatrix( alpha_1 ), AsHomalgMatrix( beta_1 ) ), AsCapCategoryObject( cat_1, AsInteger( Range( alpha_1 ) ) * AsInteger( Range( beta_1 ) ) ) ); +end +######## + + ; + ## AddTensorProductOnMorphismsWithGivenTensorProducts( cat, @@ -5992,6 +9104,33 @@ end , 5322 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductToInternalCoHomLeftAdjunctMorphism := + +######## +function ( cat_1, b_1, c_1, g_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := AsInteger( b_1 ); + deduped_8_1 := UnderlyingRing( cat_1 ); + deduped_7_1 := AsInteger( c_1 ); + deduped_6_1 := HomalgIdentityMatrix( deduped_9_1, deduped_8_1 ); + deduped_5_1 := deduped_7_1 * deduped_7_1; + deduped_4_1 := deduped_9_1 * deduped_7_1; + deduped_3_1 := HomalgIdentityMatrix( deduped_7_1, deduped_8_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, AsInteger( Source( g_1 ) ) * deduped_7_1 ), KroneckerMat( deduped_3_1, AsHomalgMatrix( g_1 ) ) * (KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_8_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_7_1 ) * deduped_9_1 + QUO_INT( deduped_1_2, deduped_7_1 ) + 1); + end ) ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_8_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_7_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_7_1 ) + 1); + end ) ), deduped_6_1 ) * KroneckerMat( ConvertMatrixToColumn( deduped_3_1 ), deduped_6_1 )), b_1 ); +end +######## + + ; + ## AddTensorProductToInternalCoHomLeftAdjunctMorphismWithGivenInternalCoHom( cat, @@ -6052,6 +9191,38 @@ end , 5623 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductToInternalCoHomRightAdjunctMorphism := + +######## +function ( cat_1, b_1, c_1, g_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := AsInteger( c_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := AsInteger( b_1 ); + deduped_7_1 := HomalgIdentityMatrix( deduped_10_1, deduped_9_1 ); + deduped_6_1 := deduped_8_1 * deduped_8_1; + deduped_5_1 := deduped_10_1 * deduped_8_1; + deduped_4_1 := AsInteger( Range( g_1 ) ); + deduped_3_1 := HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, AsInteger( Source( g_1 ) ) * deduped_8_1 ), KroneckerMat( deduped_3_1, AsHomalgMatrix( g_1 ) * CertainRows( HomalgIdentityMatrix( deduped_4_1, deduped_9_1 ), List( [ 1 .. deduped_4_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_10_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_10_1 ) + 1); + end ) ) ) * (KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_9_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_10_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ) ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_9_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ), deduped_7_1 ) * KroneckerMat( ConvertMatrixToColumn( deduped_3_1 ), deduped_7_1 )), c_1 ); +end +######## + + ; + ## AddTensorProductToInternalCoHomRightAdjunctMorphismWithGivenInternalCoHom( cat, @@ -6112,6 +9283,33 @@ end , 5322 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductToInternalHomLeftAdjunctMorphism := + +######## +function ( cat_1, a_1, b_1, f_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1; + deduped_9_1 := AsInteger( a_1 ); + deduped_8_1 := UnderlyingRing( cat_1 ); + deduped_7_1 := AsInteger( b_1 ); + deduped_6_1 := deduped_7_1 * deduped_9_1; + deduped_5_1 := deduped_7_1 * deduped_7_1; + deduped_4_1 := HomalgIdentityMatrix( deduped_9_1, deduped_8_1 ); + deduped_3_1 := HomalgIdentityMatrix( deduped_7_1, deduped_8_1 ); + return AsCapCategoryMorphism( cat_1, a_1, KroneckerMat( ConvertMatrixToRow( deduped_3_1 ), deduped_4_1 ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_8_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_7_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_7_1 ) + 1); + end ) ), deduped_4_1 ) * KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_8_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_9_1 ) * deduped_7_1 + QUO_INT( deduped_1_2, deduped_9_1 ) + 1); + end ) ) ) * KroneckerMat( deduped_3_1, AsHomalgMatrix( f_1 ) ), AsCapCategoryObject( cat_1, deduped_7_1 * AsInteger( Range( f_1 ) ) ) ); +end +######## + + ; + ## AddTensorProductToInternalHomLeftAdjunctMorphismWithGivenInternalHom( cat, @@ -6168,6 +9366,34 @@ end , 8737 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductToInternalHomLeftAdjunctionIsomorphism := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local hoisted_1_1, hoisted_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1; + deduped_15_1 := UnderlyingRing( cat_1 ); + deduped_14_1 := AsInteger( c_1 ); + deduped_13_1 := AsInteger( b_1 ); + deduped_12_1 := AsInteger( a_1 ); + deduped_11_1 := HomalgIdentityMatrix( deduped_13_1, deduped_15_1 ); + deduped_10_1 := deduped_13_1 * deduped_14_1; + deduped_9_1 := deduped_12_1 * deduped_10_1; + deduped_8_1 := deduped_12_1 * deduped_13_1 * deduped_14_1; + hoisted_7_1 := KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_10_1, deduped_15_1 ), List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_14_1 ) * deduped_13_1 + QUO_INT( deduped_1_2, deduped_14_1 ) + 1); + end ) ), deduped_11_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_14_1, deduped_15_1 ), ConvertMatrixToColumn( deduped_11_1 ) ); + hoisted_1_1 := HomalgIdentityMatrix( deduped_9_1, deduped_15_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_8_1 ), UniqueRightDivide( HomalgIdentityMatrix( deduped_8_1, deduped_15_1 ), UnionOfRows( deduped_15_1, deduped_8_1, List( [ 1 .. deduped_9_1 ], function ( i_2 ) + return ConvertMatrixToRow( KroneckerMat( ConvertRowToMatrix( CertainRows( hoisted_1_1, [ i_2 ] ), deduped_12_1, deduped_10_1 ), deduped_11_1 ) * hoisted_7_1 ); + end ) ) ), AsCapCategoryObject( cat_1, Sum( List( ListWithIdenticalEntries( deduped_9_1, AsCapCategoryObject( cat_1, 1 ) ), AsInteger ) ) ) ); +end +######## + + ; + ## AddTensorProductToInternalHomLeftAdjunctionIsomorphismWithGivenObjects( cat, @@ -6195,7 +9421,35 @@ function ( cat_1, s_1, a_1, b_1, c_1, r_1 ) end ######## - , 8134 : IsPrecompiledDerivation := true ); + , 8134 : IsPrecompiledDerivation := true ); + + ## + cat!.cached_precompiled_functions.TensorProductToInternalHomLeftAdjunctionIsomorphismWithGivenObjects := + +######## +function ( cat_1, s_1, a_1, b_1, c_1, r_1 ) + local hoisted_1_1, hoisted_7_1, deduped_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1; + deduped_15_1 := AsInteger( c_1 ); + deduped_14_1 := AsInteger( b_1 ); + deduped_13_1 := AsInteger( a_1 ); + deduped_12_1 := UnderlyingRing( cat_1 ); + deduped_11_1 := AsInteger( s_1 ); + deduped_10_1 := HomalgIdentityMatrix( deduped_14_1, deduped_12_1 ); + deduped_9_1 := deduped_14_1 * deduped_15_1; + deduped_8_1 := deduped_13_1 * deduped_9_1; + hoisted_7_1 := KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_9_1, deduped_12_1 ), List( [ 1 .. deduped_9_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_15_1 ) * deduped_14_1 + QUO_INT( deduped_1_2, deduped_15_1 ) + 1); + end ) ), deduped_10_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_15_1, deduped_12_1 ), ConvertMatrixToColumn( deduped_10_1 ) ); + hoisted_1_1 := HomalgIdentityMatrix( deduped_8_1, deduped_12_1 ); + return AsCapCategoryMorphism( cat_1, s_1, UniqueRightDivide( HomalgIdentityMatrix( deduped_11_1, deduped_12_1 ), UnionOfRows( deduped_12_1, deduped_11_1, List( [ 1 .. deduped_8_1 ], function ( i_2 ) + return ConvertMatrixToRow( KroneckerMat( ConvertRowToMatrix( CertainRows( hoisted_1_1, [ i_2 ] ), deduped_13_1, deduped_9_1 ), deduped_10_1 ) * hoisted_7_1 ); + end ) ) ), AsCapCategoryObject( cat_1, Sum( List( ListWithIdenticalEntries( deduped_8_1, AsCapCategoryObject( cat_1, 1 ) ), AsInteger ) ) ) ); +end +######## + + ; ## AddTensorProductToInternalHomRightAdjunctMorphism( cat, @@ -6230,6 +9484,38 @@ end , 5624 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductToInternalHomRightAdjunctMorphism := + +######## +function ( cat_1, a_1, b_1, f_1 ) + local deduped_3_1, deduped_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := AsInteger( b_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := AsInteger( a_1 ); + deduped_7_1 := deduped_10_1 * deduped_8_1; + deduped_6_1 := deduped_8_1 * deduped_10_1; + deduped_5_1 := deduped_8_1 * deduped_8_1; + deduped_4_1 := HomalgIdentityMatrix( deduped_10_1, deduped_9_1 ); + deduped_3_1 := HomalgIdentityMatrix( deduped_8_1, deduped_9_1 ); + return AsCapCategoryMorphism( cat_1, b_1, KroneckerMat( ConvertMatrixToRow( deduped_3_1 ), deduped_4_1 ) * KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_5_1, deduped_9_1 ), List( [ 1 .. deduped_5_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ), deduped_4_1 ) * KroneckerMat( deduped_3_1, CertainRows( HomalgIdentityMatrix( deduped_6_1, deduped_9_1 ), List( [ 1 .. deduped_6_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_10_1 ) * deduped_8_1 + QUO_INT( deduped_1_2, deduped_10_1 ) + 1); + end ) ) ) * KroneckerMat( deduped_3_1, (CertainRows( HomalgIdentityMatrix( deduped_7_1, deduped_9_1 ), List( [ 1 .. deduped_7_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_8_1 ) * deduped_10_1 + QUO_INT( deduped_1_2, deduped_8_1 ) + 1); + end ) ) * AsHomalgMatrix( f_1 )) ), AsCapCategoryObject( cat_1, deduped_8_1 * AsInteger( Range( f_1 ) ) ) ); +end +######## + + ; + ## AddTensorProductToInternalHomRightAdjunctMorphismWithGivenInternalHom( cat, @@ -6297,6 +9583,40 @@ end , 9339 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductToInternalHomRightAdjunctionIsomorphism := + +######## +function ( cat_1, a_1, b_1, c_1 ) + local hoisted_3_1, hoisted_7_1, hoisted_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1; + deduped_17_1 := UnderlyingRing( cat_1 ); + deduped_16_1 := AsInteger( c_1 ); + deduped_15_1 := AsInteger( b_1 ); + deduped_14_1 := AsInteger( a_1 ); + deduped_13_1 := HomalgIdentityMatrix( deduped_14_1, deduped_17_1 ); + deduped_12_1 := deduped_14_1 * deduped_16_1; + deduped_11_1 := deduped_14_1 * deduped_15_1; + deduped_10_1 := deduped_15_1 * deduped_12_1; + deduped_9_1 := deduped_11_1 * deduped_16_1; + hoisted_8_1 := CertainRows( HomalgIdentityMatrix( deduped_11_1, deduped_17_1 ), List( [ 1 .. deduped_11_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := i_2 - 1; + return REM_INT( deduped_1_2, deduped_15_1 ) * deduped_14_1 + QUO_INT( deduped_1_2, deduped_15_1 ) + 1; + end ) ); + hoisted_7_1 := KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_12_1, deduped_17_1 ), List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_16_1 ) * deduped_14_1 + QUO_INT( deduped_1_2, deduped_16_1 ) + 1); + end ) ), deduped_13_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_16_1, deduped_17_1 ), ConvertMatrixToColumn( deduped_13_1 ) ); + hoisted_3_1 := HomalgIdentityMatrix( deduped_10_1, deduped_17_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_9_1 ), UniqueRightDivide( HomalgIdentityMatrix( deduped_9_1, deduped_17_1 ), UnionOfRows( deduped_17_1, deduped_9_1, List( [ 1 .. deduped_10_1 ], function ( i_2 ) + return ConvertMatrixToRow( hoisted_8_1 * (KroneckerMat( ConvertRowToMatrix( CertainRows( hoisted_3_1, [ i_2 ] ), deduped_15_1, deduped_12_1 ), deduped_13_1 ) * hoisted_7_1) ); + end ) ) ), AsCapCategoryObject( cat_1, Sum( List( ListWithIdenticalEntries( deduped_10_1, AsCapCategoryObject( cat_1, 1 ) ), AsInteger ) ) ) ); +end +######## + + ; + ## AddTensorProductToInternalHomRightAdjunctionIsomorphismWithGivenObjects( cat, @@ -6332,6 +9652,40 @@ end , 8736 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.TensorProductToInternalHomRightAdjunctionIsomorphismWithGivenObjects := + +######## +function ( cat_1, s_1, a_1, b_1, c_1, r_1 ) + local hoisted_3_1, hoisted_7_1, hoisted_8_1, deduped_9_1, deduped_10_1, deduped_11_1, deduped_12_1, deduped_13_1, deduped_14_1, deduped_15_1, deduped_16_1, deduped_17_1; + deduped_17_1 := AsInteger( c_1 ); + deduped_16_1 := AsInteger( a_1 ); + deduped_15_1 := AsInteger( b_1 ); + deduped_14_1 := UnderlyingRing( cat_1 ); + deduped_13_1 := AsInteger( s_1 ); + deduped_12_1 := deduped_16_1 * deduped_15_1; + deduped_11_1 := HomalgIdentityMatrix( deduped_16_1, deduped_14_1 ); + deduped_10_1 := deduped_16_1 * deduped_17_1; + deduped_9_1 := deduped_15_1 * deduped_10_1; + hoisted_8_1 := CertainRows( HomalgIdentityMatrix( deduped_12_1, deduped_14_1 ), List( [ 1 .. deduped_12_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := i_2 - 1; + return REM_INT( deduped_1_2, deduped_15_1 ) * deduped_16_1 + QUO_INT( deduped_1_2, deduped_15_1 ) + 1; + end ) ); + hoisted_7_1 := KroneckerMat( CertainRows( HomalgIdentityMatrix( deduped_10_1, deduped_14_1 ), List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := (i_2 - 1); + return (REM_INT( deduped_1_2, deduped_17_1 ) * deduped_16_1 + QUO_INT( deduped_1_2, deduped_17_1 ) + 1); + end ) ), deduped_11_1 ) * KroneckerMat( HomalgIdentityMatrix( deduped_17_1, deduped_14_1 ), ConvertMatrixToColumn( deduped_11_1 ) ); + hoisted_3_1 := HomalgIdentityMatrix( deduped_9_1, deduped_14_1 ); + return AsCapCategoryMorphism( cat_1, s_1, UniqueRightDivide( HomalgIdentityMatrix( deduped_13_1, deduped_14_1 ), UnionOfRows( deduped_14_1, deduped_13_1, List( [ 1 .. deduped_9_1 ], function ( i_2 ) + return ConvertMatrixToRow( hoisted_8_1 * (KroneckerMat( ConvertRowToMatrix( CertainRows( hoisted_3_1, [ i_2 ] ), deduped_15_1, deduped_10_1 ), deduped_11_1 ) * hoisted_7_1) ); + end ) ) ), AsCapCategoryObject( cat_1, Sum( List( ListWithIdenticalEntries( deduped_9_1, AsCapCategoryObject( cat_1, 1 ) ), AsInteger ) ) ) ); +end +######## + + ; + ## AddTensorUnit( cat, @@ -6416,6 +9770,23 @@ end , 2924 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismFromCoequalizer := + +######## +function ( cat_1, Y_1, morphisms_1, T_1, tau_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := AsInteger( Y_1 ); + deduped_1_1 := UnionOfRows( deduped_3_1, deduped_2_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfRows( deduped_3_1, deduped_2_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_2_1 - RowRankOfMatrix( deduped_1_1 ) ), UniqueLeftDivide( SyzygiesOfColumns( deduped_1_1 ), AsHomalgMatrix( tau_1 ) ), Range( tau_1 ) ); +end +######## + + ; + ## AddUniversalMorphismFromCoequalizerWithGivenCoequalizer( cat, @@ -6433,6 +9804,23 @@ end , 2925 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismFromCoequalizerWithGivenCoequalizer := + +######## +function ( cat_1, Y_1, morphisms_1, T_1, tau_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := UnderlyingRing( cat_1 ); + deduped_2_1 := AsInteger( Y_1 ); + deduped_1_1 := UnionOfRows( deduped_3_1, deduped_2_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfRows( deduped_3_1, deduped_2_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_2_1 - RowRankOfMatrix( deduped_1_1 ) ), UniqueLeftDivide( SyzygiesOfColumns( deduped_1_1 ), AsHomalgMatrix( tau_1 ) ), Range( tau_1 ) ); +end +######## + + ; + ## AddUniversalMorphismFromCoproduct( cat, @@ -6446,6 +9834,17 @@ end , 504 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismFromCoproduct := + +######## +function ( cat_1, objects_1, T_1, tau_1 ) + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( objects_1, AsInteger ) ) ), UnionOfRows( UnderlyingRing( cat_1 ), AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ), T_1 ); +end +######## + + ; + ## AddUniversalMorphismFromCoproductWithGivenCoproduct( cat, @@ -6459,6 +9858,17 @@ end , 505 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismFromCoproductWithGivenCoproduct := + +######## +function ( cat_1, objects_1, T_1, tau_1, P_1 ) + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( objects_1, AsInteger ) ) ), UnionOfRows( UnderlyingRing( cat_1 ), AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ), T_1 ); +end +######## + + ; + ## AddUniversalMorphismFromDirectSum( cat, @@ -6472,6 +9882,17 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismFromDirectSum := + +######## +function ( cat_1, objects_1, T_1, tau_1 ) + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, Sum( List( objects_1, AsInteger ) ) ), UnionOfRows( UnderlyingRing( cat_1 ), AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ), T_1 ); +end +######## + + ; + ## AddUniversalMorphismFromDirectSumWithGivenDirectSum( cat, @@ -6497,6 +9918,20 @@ end , 302 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismFromImage := + +######## +function ( cat_1, alpha_1, tau_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := tau_1[2]; + deduped_1_1 := AsHomalgMatrix( alpha_1 ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, RowRankOfMatrix( deduped_1_1 ) ), UniqueRightDivide( BasisOfRows( deduped_1_1 ), AsHomalgMatrix( deduped_2_1 ) ), Source( deduped_2_1 ) ); +end +######## + + ; + ## AddUniversalMorphismFromImageWithGivenImageObject( cat, @@ -6556,6 +9991,31 @@ end , 9281 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismFromPushout := + +######## +function ( cat_1, morphisms_1, T_1, tau_1 ) + local hoisted_1_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := Length( morphisms_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_7_1 := Sum( deduped_8_1 ); + hoisted_1_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_6_1 := List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_8_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_9_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_8_1{[ 1 .. (i_2 - 1) ]} ), deduped_9_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_9_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_8_1{[ (i_2 + 1) .. deduped_10_1 ]} ), deduped_9_1 ) ] ); + end ); + deduped_5_1 := UnionOfRows( deduped_9_1, deduped_7_1, deduped_6_1{[ 1 .. deduped_10_1 - 1 ]} ) - UnionOfRows( deduped_9_1, deduped_7_1, deduped_6_1{[ 2 .. deduped_10_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_7_1 - RowRankOfMatrix( deduped_5_1 ) ), UniqueLeftDivide( SyzygiesOfColumns( deduped_5_1 ), UnionOfRows( deduped_9_1, AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ) ), T_1 ); +end +######## + + ; + ## AddUniversalMorphismFromPushoutWithGivenPushout( cat, @@ -6580,6 +10040,31 @@ end , 9282 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismFromPushoutWithGivenPushout := + +######## +function ( cat_1, morphisms_1, T_1, tau_1, P_1 ) + local hoisted_1_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := Length( morphisms_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Range( logic_new_func_x_2 ) ); + end ); + deduped_7_1 := Sum( deduped_8_1 ); + hoisted_1_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_6_1 := List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_8_1[i_2]; + return hoisted_1_1[i_2] * UnionOfColumns( deduped_9_1, deduped_1_2, [ HomalgZeroMatrix( deduped_1_2, Sum( deduped_8_1{[ 1 .. (i_2 - 1) ]} ), deduped_9_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_9_1 ), HomalgZeroMatrix( deduped_1_2, Sum( deduped_8_1{[ (i_2 + 1) .. deduped_10_1 ]} ), deduped_9_1 ) ] ); + end ); + deduped_5_1 := UnionOfRows( deduped_9_1, deduped_7_1, deduped_6_1{[ 1 .. deduped_10_1 - 1 ]} ) - UnionOfRows( deduped_9_1, deduped_7_1, deduped_6_1{[ 2 .. deduped_10_1 ]} ); + return AsCapCategoryMorphism( cat_1, AsCapCategoryObject( cat_1, deduped_7_1 - RowRankOfMatrix( deduped_5_1 ) ), UniqueLeftDivide( SyzygiesOfColumns( deduped_5_1 ), UnionOfRows( deduped_9_1, AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ) ), T_1 ); +end +######## + + ; + ## AddUniversalMorphismFromZeroObject( cat, @@ -6616,6 +10101,20 @@ end , 302 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismIntoCoimage := + +######## +function ( cat_1, alpha_1, tau_1 ) + local deduped_1_1, deduped_2_1; + deduped_2_1 := AsHomalgMatrix( alpha_1 ); + deduped_1_1 := tau_1[1]; + return AsCapCategoryMorphism( cat_1, Range( deduped_1_1 ), UniqueLeftDivide( AsHomalgMatrix( deduped_1_1 ), BasisOfColumns( deduped_2_1 ) ), AsCapCategoryObject( cat_1, ColumnRankOfMatrix( deduped_2_1 ) ) ); +end +######## + + ; + ## AddUniversalMorphismIntoCoimageWithGivenCoimageObject( cat, @@ -6642,6 +10141,17 @@ end , 503 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismIntoDirectProduct := + +######## +function ( cat_1, objects_1, T_1, tau_1 ) + return AsCapCategoryMorphism( cat_1, T_1, UnionOfColumns( UnderlyingRing( cat_1 ), AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ), AsCapCategoryObject( cat_1, Sum( List( objects_1, AsInteger ) ) ) ); +end +######## + + ; + ## AddUniversalMorphismIntoDirectProductWithGivenDirectProduct( cat, @@ -6655,6 +10165,17 @@ end , 504 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismIntoDirectProductWithGivenDirectProduct := + +######## +function ( cat_1, objects_1, T_1, tau_1, P_1 ) + return AsCapCategoryMorphism( cat_1, T_1, UnionOfColumns( UnderlyingRing( cat_1 ), AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ), AsCapCategoryObject( cat_1, Sum( List( objects_1, AsInteger ) ) ) ); +end +######## + + ; + ## AddUniversalMorphismIntoDirectSum( cat, @@ -6668,6 +10189,17 @@ end , 201 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismIntoDirectSum := + +######## +function ( cat_1, objects_1, T_1, tau_1 ) + return AsCapCategoryMorphism( cat_1, T_1, UnionOfColumns( UnderlyingRing( cat_1 ), AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ), AsCapCategoryObject( cat_1, Sum( List( objects_1, AsInteger ) ) ) ); +end +######## + + ; + ## AddUniversalMorphismIntoDirectSumWithGivenDirectSum( cat, @@ -6696,6 +10228,23 @@ end , 2919 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismIntoEqualizer := + +######## +function ( cat_1, Y_1, morphisms_1, T_1, tau_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := AsInteger( Y_1 ); + deduped_2_1 := UnderlyingRing( cat_1 ); + deduped_1_1 := UnionOfColumns( deduped_2_1, deduped_3_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfColumns( deduped_2_1, deduped_3_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, Source( tau_1 ), UniqueRightDivide( AsHomalgMatrix( tau_1 ), SyzygiesOfRows( deduped_1_1 ) ), AsCapCategoryObject( cat_1, deduped_3_1 - RowRankOfMatrix( deduped_1_1 ) ) ); +end +######## + + ; + ## AddUniversalMorphismIntoEqualizerWithGivenEqualizer( cat, @@ -6713,6 +10262,23 @@ end , 2920 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismIntoEqualizerWithGivenEqualizer := + +######## +function ( cat_1, Y_1, morphisms_1, T_1, tau_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; + deduped_5_1 := Length( morphisms_1 ); + deduped_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_3_1 := AsInteger( Y_1 ); + deduped_2_1 := UnderlyingRing( cat_1 ); + deduped_1_1 := UnionOfColumns( deduped_2_1, deduped_3_1, deduped_4_1{[ 1 .. deduped_5_1 - 1 ]} ) - UnionOfColumns( deduped_2_1, deduped_3_1, deduped_4_1{[ 2 .. deduped_5_1 ]} ); + return AsCapCategoryMorphism( cat_1, Source( tau_1 ), UniqueRightDivide( AsHomalgMatrix( tau_1 ), SyzygiesOfRows( deduped_1_1 ) ), AsCapCategoryObject( cat_1, deduped_3_1 - RowRankOfMatrix( deduped_1_1 ) ) ); +end +######## + + ; + ## AddUniversalMorphismIntoFiberProduct( cat, @@ -6737,6 +10303,31 @@ end , 9263 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismIntoFiberProduct := + +######## +function ( cat_1, morphisms_1, T_1, tau_1 ) + local hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := Length( morphisms_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_7_1 := Sum( deduped_8_1 ); + hoisted_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_6_1 := List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_8_1[i_2]; + return UnionOfRows( deduped_9_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_8_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_9_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_9_1 ), HomalgZeroMatrix( Sum( deduped_8_1{[ (i_2 + 1) .. deduped_10_1 ]} ), deduped_1_2, deduped_9_1 ) ] ) * hoisted_4_1[i_2]; + end ); + deduped_5_1 := UnionOfColumns( deduped_9_1, deduped_7_1, deduped_6_1{[ 1 .. deduped_10_1 - 1 ]} ) - UnionOfColumns( deduped_9_1, deduped_7_1, deduped_6_1{[ 2 .. deduped_10_1 ]} ); + return AsCapCategoryMorphism( cat_1, T_1, UniqueRightDivide( UnionOfColumns( deduped_9_1, AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ), SyzygiesOfRows( deduped_5_1 ) ), AsCapCategoryObject( cat_1, deduped_7_1 - RowRankOfMatrix( deduped_5_1 ) ) ); +end +######## + + ; + ## AddUniversalMorphismIntoFiberProductWithGivenFiberProduct( cat, @@ -6761,6 +10352,31 @@ end , 9264 : IsPrecompiledDerivation := true ); + ## + cat!.cached_precompiled_functions.UniversalMorphismIntoFiberProductWithGivenFiberProduct := + +######## +function ( cat_1, morphisms_1, T_1, tau_1, P_1 ) + local hoisted_4_1, deduped_5_1, deduped_6_1, deduped_7_1, deduped_8_1, deduped_9_1, deduped_10_1; + deduped_10_1 := Length( morphisms_1 ); + deduped_9_1 := UnderlyingRing( cat_1 ); + deduped_8_1 := List( morphisms_1, function ( logic_new_func_x_2 ) + return AsInteger( Source( logic_new_func_x_2 ) ); + end ); + deduped_7_1 := Sum( deduped_8_1 ); + hoisted_4_1 := List( morphisms_1, AsHomalgMatrix ); + deduped_6_1 := List( [ 1 .. deduped_10_1 ], function ( i_2 ) + local deduped_1_2; + deduped_1_2 := deduped_8_1[i_2]; + return UnionOfRows( deduped_9_1, deduped_1_2, [ HomalgZeroMatrix( Sum( deduped_8_1{[ 1 .. (i_2 - 1) ]} ), deduped_1_2, deduped_9_1 ), HomalgIdentityMatrix( deduped_1_2, deduped_9_1 ), HomalgZeroMatrix( Sum( deduped_8_1{[ (i_2 + 1) .. deduped_10_1 ]} ), deduped_1_2, deduped_9_1 ) ] ) * hoisted_4_1[i_2]; + end ); + deduped_5_1 := UnionOfColumns( deduped_9_1, deduped_7_1, deduped_6_1{[ 1 .. deduped_10_1 - 1 ]} ) - UnionOfColumns( deduped_9_1, deduped_7_1, deduped_6_1{[ 2 .. deduped_10_1 ]} ); + return AsCapCategoryMorphism( cat_1, T_1, UniqueRightDivide( UnionOfColumns( deduped_9_1, AsInteger( T_1 ), List( tau_1, AsHomalgMatrix ) ), SyzygiesOfRows( deduped_5_1 ) ), AsCapCategoryObject( cat_1, deduped_7_1 - RowRankOfMatrix( deduped_5_1 ) ) ); +end +######## + + ; + ## AddUniversalMorphismIntoTerminalObject( cat, diff --git a/LinearAlgebraForCAP/gap/precompiled_categories/Opposite_MatrixCategory_precompiled.gi b/LinearAlgebraForCAP/gap/precompiled_categories/Opposite_MatrixCategory_precompiled.gi index 9d06e7ebae..346643a5df 100644 --- a/LinearAlgebraForCAP/gap/precompiled_categories/Opposite_MatrixCategory_precompiled.gi +++ b/LinearAlgebraForCAP/gap/precompiled_categories/Opposite_MatrixCategory_precompiled.gi @@ -248,6 +248,23 @@ end , 100 ); + ## + cat!.cached_precompiled_functions.ComponentOfMorphismFromDirectSum := + +######## +function ( cat_1, alpha_1, S_1, i_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := Opposite( alpha_1 ); + deduped_2_1 := List( S_1, function ( x_2 ) + return AsInteger( Opposite( x_2 ) ); + end ); + deduped_1_1 := Sum( deduped_2_1{[ 1 .. i_1 - 1 ]} ); + return CreateCapCategoryMorphismWithAttributes( cat_1, S_1[i_1], Range( alpha_1 ), Opposite, AsCapCategoryMorphism( OppositeCategory( cat_1 ), Source( deduped_3_1 ), CertainColumns( AsHomalgMatrix( deduped_3_1 ), [ deduped_1_1 + 1 .. deduped_1_1 + deduped_2_1[i_1] ] ), List( S_1, Opposite )[i_1] ) ); +end +######## + + ; + ## AddComponentOfMorphismIntoDirectSum( cat, @@ -266,6 +283,23 @@ end , 100 ); + ## + cat!.cached_precompiled_functions.ComponentOfMorphismIntoDirectSum := + +######## +function ( cat_1, alpha_1, S_1, i_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := Opposite( alpha_1 ); + deduped_2_1 := List( S_1, function ( x_2 ) + return AsInteger( Opposite( x_2 ) ); + end ); + deduped_1_1 := Sum( deduped_2_1{[ 1 .. i_1 - 1 ]} ); + return CreateCapCategoryMorphismWithAttributes( cat_1, Source( alpha_1 ), S_1[i_1], Opposite, AsCapCategoryMorphism( OppositeCategory( cat_1 ), List( S_1, Opposite )[i_1], CertainRows( AsHomalgMatrix( deduped_3_1 ), [ deduped_1_1 + 1 .. deduped_1_1 + deduped_2_1[i_1] ] ), Range( deduped_3_1 ) ) ); +end +######## + + ; + ## AddDirectSum( cat, @@ -426,6 +460,23 @@ end , 100 ); + ## + cat!.cached_precompiled_functions.InjectionOfCofactorOfDirectSumWithGivenDirectSum := + +######## +function ( cat_1, objects_1, k_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := CommutativeRingOfLinearCategory( cat_1 ); + deduped_2_1 := List( objects_1, function ( x_2 ) + return AsInteger( Opposite( x_2 ) ); + end ); + deduped_1_1 := deduped_2_1[k_1]; + return CreateCapCategoryMorphismWithAttributes( cat_1, objects_1[k_1], P_1, Opposite, AsCapCategoryMorphism( OppositeCategory( cat_1 ), Opposite( P_1 ), UnionOfRows( deduped_3_1, deduped_1_1, [ HomalgZeroMatrix( Sum( deduped_2_1{[ 1 .. k_1 - 1 ]} ), deduped_1_1, deduped_3_1 ), HomalgIdentityMatrix( deduped_1_1, deduped_3_1 ), HomalgZeroMatrix( Sum( deduped_2_1{[ k_1 + 1 .. Length( objects_1 ) ]} ), deduped_1_1, deduped_3_1 ) ] ), List( objects_1, Opposite )[k_1] ) ); +end +######## + + ; + ## AddInterpretMorphismAsMorphismFromDistinguishedObjectToHomomorphismStructureWithGivenObjects( cat, @@ -778,6 +829,23 @@ end , 100 ); + ## + cat!.cached_precompiled_functions.ProjectionInFactorOfDirectSumWithGivenDirectSum := + +######## +function ( cat_1, objects_1, k_1, P_1 ) + local deduped_1_1, deduped_2_1, deduped_3_1; + deduped_3_1 := CommutativeRingOfLinearCategory( cat_1 ); + deduped_2_1 := List( objects_1, function ( x_2 ) + return AsInteger( Opposite( x_2 ) ); + end ); + deduped_1_1 := deduped_2_1[k_1]; + return CreateCapCategoryMorphismWithAttributes( cat_1, P_1, objects_1[k_1], Opposite, AsCapCategoryMorphism( OppositeCategory( cat_1 ), List( objects_1, Opposite )[k_1], UnionOfColumns( deduped_3_1, deduped_1_1, [ HomalgZeroMatrix( deduped_1_1, Sum( deduped_2_1{[ 1 .. k_1 - 1 ]} ), deduped_3_1 ), HomalgIdentityMatrix( deduped_1_1, deduped_3_1 ), HomalgZeroMatrix( deduped_1_1, Sum( deduped_2_1{[ k_1 + 1 .. Length( objects_1 ) ]} ), deduped_3_1 ) ] ), Opposite( P_1 ) ) ); +end +######## + + ; + ## AddSimplifyRange( cat, From 5dd0e7ad22ba04c58dbd654ce613b8d454a8b9c8 Mon Sep 17 00:00:00 2001 From: Fabian Zickgraf Date: Thu, 17 Oct 2024 15:22:05 +0200 Subject: [PATCH 3/3] Bump versions --- CAP/PackageInfo.g | 2 +- CompilerForCAP/PackageInfo.g | 2 +- FreydCategoriesForCAP/PackageInfo.g | 2 +- LinearAlgebraForCAP/PackageInfo.g | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CAP/PackageInfo.g b/CAP/PackageInfo.g index e34f30a9a3..170f9289f5 100644 --- a/CAP/PackageInfo.g +++ b/CAP/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "CAP", Subtitle := "Categories, Algorithms, Programming", -Version := "2024.10-06", +Version := "2024.10-07", Date := (function ( ) if IsBound( GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE ) then return GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE; else return Concatenation( ~.Version{[ 1 .. 4 ]}, "-", ~.Version{[ 6, 7 ]}, "-01" ); fi; end)( ), License := "GPL-2.0-or-later", diff --git a/CompilerForCAP/PackageInfo.g b/CompilerForCAP/PackageInfo.g index 22da531a28..41e33a11f9 100644 --- a/CompilerForCAP/PackageInfo.g +++ b/CompilerForCAP/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "CompilerForCAP", Subtitle := "Speed up and verify categorical algorithms", -Version := "2024.10-05", +Version := "2024.10-06", Date := (function ( ) if IsBound( GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE ) then return GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE; else return Concatenation( ~.Version{[ 1 .. 4 ]}, "-", ~.Version{[ 6, 7 ]}, "-01" ); fi; end)( ), License := "GPL-2.0-or-later", diff --git a/FreydCategoriesForCAP/PackageInfo.g b/FreydCategoriesForCAP/PackageInfo.g index 6726bc4e12..b8eb401ca2 100644 --- a/FreydCategoriesForCAP/PackageInfo.g +++ b/FreydCategoriesForCAP/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "FreydCategoriesForCAP", Subtitle := "Freyd categories - Formal (co)kernels for additive categories", -Version := "2024.10-01", +Version := "2024.10-02", Date := (function ( ) if IsBound( GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE ) then return GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE; else return Concatenation( ~.Version{[ 1 .. 4 ]}, "-", ~.Version{[ 6, 7 ]}, "-01" ); fi; end)( ), License := "GPL-2.0-or-later", diff --git a/LinearAlgebraForCAP/PackageInfo.g b/LinearAlgebraForCAP/PackageInfo.g index 73e1484a74..aa34d208bd 100644 --- a/LinearAlgebraForCAP/PackageInfo.g +++ b/LinearAlgebraForCAP/PackageInfo.g @@ -10,7 +10,7 @@ SetPackageInfo( rec( PackageName := "LinearAlgebraForCAP", Subtitle := "Category of Matrices over a Field for CAP", -Version := "2024.09-04", +Version := "2024.10-01", Date := (function ( ) if IsBound( GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE ) then return GAPInfo.SystemEnvironment.GAP_PKG_RELEASE_DATE; else return Concatenation( ~.Version{[ 1 .. 4 ]}, "-", ~.Version{[ 6, 7 ]}, "-01" ); fi; end)( ), License := "GPL-2.0-or-later",