#@if ValueOption( "no_precompiled_code" ) <> true gap> LoadPackage( "FiniteCocompletions", false ); true gap> LoadPackage( "CompilerForCAP", ">= 2024.07-09", false ); true gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" ); true gap> ReadPackageOnce( "Algebroids", "gap/CompilerLogic.gi" ); true gap> ReadPackageOnce( "FunctorCategories", "gap/CompilerLogic.gi" ); true gap> free_category_of_quiver := { quiver, sFinSets } -> CategoryFromDataTables( FreeCategory( quiver : range_of_HomStructure := sFinSets, FinalizeCategory := true ) );; gap> category_constructor := > function( quiver ) > local sFinSets; sFinSets := SkeletalCategoryOfFiniteSets( : FinalizeCategory := true, overhead := true ); return FiniteStrictCoproductCompletion( CategoryFromDataTables( FreeCategory( quiver : range_of_HomStructure := sFinSets, FinalizeCategory := true ) : FinalizeCategory := true ) ); end;; gap> given_arguments := [ RightQuiver( "q(2)[m:1->2]" ) ];; gap> compiled_category_name := "FiniteStrictCoproductCompletionOfCategoryFromDataTablesPrecompiled";; gap> package_name := "FiniteCocompletions";; gap> CapJitPrecompileCategoryAndCompareResult( > category_constructor, > given_arguments, > package_name, > compiled_category_name > : operations := [ #"CoproductOnMorphismsWithGivenCoproducts", # <- derived and leads to an error > #"CoproductFunctorialWithGivenCoproducts", # <- derived > "HomomorphismStructureOnObjects", > "HomomorphismStructureOnMorphismsWithGivenObjects", > "InterpretMorphismFromDistinguishedObjectToHomomorphismStructureAsMorphism", > "MorphismsOfExternalHom", > #"ExponentialOnObjects", > ] > );; gap> FiniteStrictCoproductCompletionOfCategoryFromDataTablesPrecompiled( given_arguments[1] ); FiniteStrictCoproductCompletion( FreeCategory( RightQuiver( "q(2)[m:1->2]" ) ) ) gap> cat := FiniteStrictCoproductCompletion( free_category_of_quiver( given_arguments[1], SkeletalFinSets ) ); FiniteStrictCoproductCompletion( FreeCategory( RightQuiver( "q(2)[m:1->2]" ) ) ) gap> cat!.precompiled_functions_added; true #@fi
#@if ValueOption( "no_precompiled_code" ) <> true gap> LoadPackage( "FiniteCocompletions", false ); true gap> LoadPackage( "CompilerForCAP", ">= 2024.07-09", false ); true gap> ReadPackageOnce( "FiniteCocompletions", "gap/CompilerLogic.gi" ); true gap> category_constructor := > {} -> SkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory( );; gap> given_arguments := [ ];; gap> compiled_category_name := > "SkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategoryPrecompiled";; gap> package_name := "FiniteCocompletions";; gap> primitive_operations := > ListPrimitivelyInstalledOperationsOfCategory( category_constructor() );; gap> list_of_operations := > SortedList( Concatenation( primitive_operations, [ > #"CartesianLambdaIntroduction", > #"CartesianLambdaElimination", > ] ) );; gap> CapJitPrecompileCategoryAndCompareResult( > category_constructor, > given_arguments, > package_name, > compiled_category_name > : operations := list_of_operations, > number_of_objectified_objects_in_data_structure_of_object := 1, > number_of_objectified_morphisms_in_data_structure_of_object := 0, > number_of_objectified_objects_in_data_structure_of_morphism := 2, > number_of_objectified_morphisms_in_data_structure_of_morphism := 1 > );; gap> SkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategoryPrecompiled( ); SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory gap> cat := SkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory( ); SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory gap> cat!.precompiled_functions_added; true #@fi
#@if ValueOption( "no_precompiled_code" ) <> true gap> LoadPackage( "FiniteCocompletions", false ); true gap> LoadPackage( "CompilerForCAP", ">= 2023.12-09", false ); true gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" ); true gap> sFinSets := CategoryOfSkeletalFinSets( : no_precompiled_code := true ); SkeletalFinSets gap> q := RightQuiver( "Q(a,b,c)[]" ); Q(a,b,c)[] gap> C := FreeCategory( q : range_of_HomStructure := sFinSets ); FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) gap> C := CategoryFromDataTables( C : > set_category_attribute_resolving_functions := true, > no_precompiled_code := true ); FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) gap> DC := FreeDistributiveCategoryWithStrictProductAndCoproducts( C ); FreeDistributiveCategoryWithStrictProductAndCoproducts( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) ) gap> UPC := ModelingCategory( DC ); FiniteStrictCoproductCompletion( FiniteStrictProductCompletion( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) ) ) gap> PC := UnderlyingCategory( UPC ); FiniteStrictProductCompletion( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) ) gap> a := DC.a; <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) )> gap> b := DC.b; <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) )> gap> c := DC.c; <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) )> gap> axb_u_axc := Coproduct( DirectProduct( a, b ), DirectProduct( a, c ) ); <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) )> gap> a_x_buc := DirectProduct( a, Coproduct( b, c ) ); <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) )> gap> axb_u_axc = a_x_buc; true gap> implemented_func := > function( T, source, a, b, c, target ) > return LeftCartesianDistributivityFactoringWithGivenObjects( T, > source, > a, > [ b, c ], > target ); end; function( T, source, a, b, c, target ) ... end gap> lfactor_implemented := implemented_func( DC, axb_u_axc, a, b, c, a_x_buc ); <A morphism in FreeDistributiveCategoryWithStrictProductAndCoproducts( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) )> gap> StartTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> StopCompilationAtPrimitivelyInstalledOperationsOfCategory( DC ); gap> ReadPackageOnce( "FiniteCocompletions", > "examples/precompileLeftCartesianDistributivityFactoring_CompilerLogic.g" ); true gap> compiled_implemented_func := > CapJitCompiledFunction( implemented_func, > DC, > [ "category", "object", "object", "object", "object", "object" ], > "morphism" ); function( T_1, source_1, a_1, b_1, c_1, target_1 ) ... end gap> StopTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> #DisplayTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> compiled_implemented_func( DC, axb_u_axc, a, b, c, a_x_buc ) = > lfactor_implemented; true gap> Display( compiled_implemented_func ); function ( T_1, source_1, a_1, b_1, c_1, target_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_8_1 := [ b_1, c_1 ]; deduped_7_1 := [ a_1, c_1 ]; deduped_6_1 := [ a_1, b_1 ]; deduped_5_1 := Coproduct( T_1, deduped_8_1 ); deduped_4_1 := DirectProduct( T_1, deduped_7_1 ); deduped_3_1 := DirectProduct( T_1, deduped_6_1 ); deduped_2_1 := [ a_1, deduped_5_1 ]; deduped_1_1 := DirectProduct( T_1, deduped_2_1 ); return UniversalMorphismFromCoproductWithGivenCoproduct( T_1, [ deduped_3_1, deduped_4_1 ], target_1, [ UniversalMorphismIntoDirectProductWithGivenDirectProduct( T_1, deduped_2_1, deduped_3_1, [ ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_6_1, 1, deduped_3_1 ), PreCompose( T_1, ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_6_1, 2, deduped_3_1 ), InjectionOfCofactorOfCoproductWithGivenCoproduct( T_1, deduped_8_1, 1, deduped_5_1 ) ) ], deduped_1_1 ), UniversalMorphismIntoDirectProductWithGivenDirectProduct( T_1, deduped_2_1, deduped_4_1, [ ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_7_1, 1, deduped_4_1 ), PreCompose( T_1, ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_7_1, 2, deduped_4_1 ), InjectionOfCofactorOfCoproductWithGivenCoproduct( T_1, deduped_8_1, 2, deduped_5_1 ) ) ], deduped_1_1 ) ], source_1 ); end gap> ContinueCompilationAtPrimitivelyInstalledOperationsOfCategory( DC ); gap> ContinueCompilationAtPrimitivelyInstalledOperationsOfCategory( C ); gap> hom_axb_u_axc_a_x_buc := MorphismsOfExternalHom( axb_u_axc, a_x_buc );; gap> Length( hom_axb_u_axc_a_x_buc ) = 1; true gap> lfactor := hom_axb_u_axc_a_x_buc[1]; <A morphism in FreeDistributiveCategoryWithStrictProductAndCoproducts( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) )> gap> IsOne( lfactor ); true gap> lfactor_reconstructed := > CellAsEvaluatableString( lfactor, [ "DC", "UPC", "PC", "C" ] );; gap> lfactor = EvalString( lfactor_reconstructed ); true gap> hom_a_x_buc_axb_u_axc := MorphismsOfExternalHom( a_x_buc, axb_u_axc );; gap> Length( hom_a_x_buc_axb_u_axc ) = 1; true gap> lexpand := hom_a_x_buc_axb_u_axc[1]; <A morphism in FreeDistributiveCategoryWithStrictProductAndCoproducts( FreeCategory( RightQuiver( "Q(a,b,c)[]" ) ) )> gap> IsOne( lexpand ); true gap> Inverse( lfactor ) = lexpand; true gap> lexpand_reconstructed := > CellAsEvaluatableString( lexpand, [ "DC", "UPC", "PC", "C" ] );; gap> lexpand_reconstructed = lfactor_reconstructed; true gap> lexpand = EvalString( lexpand_reconstructed ); true gap> ReadPackage( "FiniteCocompletions", > "examples/precompileLeftCartesianDistributivityFactoring_func.g" ); true gap> func( DC, a_x_buc, a, b, c, axb_u_axc ) = lfactor; true gap> T := DummyCategory( rec( name := "A placeholder distributive category", > properties := [ "IsDistributiveCategory" ], > list_of_operations_to_install := > Concatenation( [ "ObjectConstructor", "MorphismConstructor" ], > CAP_INTERNAL_CONSTRUCTIVE_CATEGORIES_RECORD.IsDistributiveCategory ) ) ); A placeholder distributive category gap> StartTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> StopCompilationAtPrimitivelyInstalledOperationsOfCategory( T ); gap> compiled_func := > CapJitCompiledFunction( func, > T, > [ "category", "object", "object", "object", "object", "object" ], > "morphism" ); function( T_1, source_1, a_1, b_1, c_1, target_1 ) ... end gap> StopTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> #DisplayTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> compiled_func( DC, axb_u_axc, a, b, c, a_x_buc ) = lfactor; true gap> Display( compiled_func ); function ( T_1, source_1, a_1, b_1, c_1, target_1 ) local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; deduped_5_1 := [ a_1, c_1 ]; deduped_4_1 := [ a_1, b_1 ]; deduped_3_1 := DirectProduct( T_1, deduped_5_1 ); deduped_2_1 := DirectProduct( T_1, deduped_4_1 ); deduped_1_1 := [ deduped_2_1, deduped_3_1 ]; return UniversalMorphismFromCoproductWithGivenCoproduct( T_1, deduped_1_1, target_1, [ PreCompose( T_1, UniversalMorphismIntoDirectProductWithGivenDirectProduct( T_1, deduped_4_1, deduped_2_1, [ ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_4_1, 1, deduped_2_1 ), ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_4_1, 2, deduped_2_1 ) ], deduped_2_1 ), InjectionOfCofactorOfCoproductWithGivenCoproduct( T_1, deduped_1_1, 1, target_1 ) ), PreCompose( T_1, UniversalMorphismIntoDirectProductWithGivenDirectProduct( T_1, deduped_5_1, deduped_3_1, [ ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_5_1, 1, deduped_3_1 ), ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_5_1, 2, deduped_3_1 ) ], deduped_3_1 ), InjectionOfCofactorOfCoproductWithGivenCoproduct( T_1, deduped_1_1, 2, target_1 ) ) ], source_1 ); end #@fi
#@if ValueOption( "no_precompiled_code" ) <> true gap> LoadPackage( "FiniteCocompletions", false ); true gap> LoadPackage( "CompilerForCAP", ">= 2023.12-09", false ); true gap> ReadPackageOnce( "FinSetsForCAP", "gap/CompilerLogic.gi" ); true gap> sFinSets := CategoryOfSkeletalFinSets( : no_precompiled_code := true ); SkeletalFinSets gap> q := FinQuiver( "Q(a,b,c)[]" ); FinQuiver( "Q(a,b,c)[]" ) gap> C := PathCategory( q : range_of_HomStructure := sFinSets ); PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) gap> DC := FreeDistributiveCategoryWithStrictProductAndCoproducts( C ); FreeDistributiveCategoryWithStrictProductAndCoproducts( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) ) gap> UPC := ModelingCategory( DC ); FiniteStrictCoproductCompletion( FiniteStrictProductCompletion( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) ) ) gap> PC := UnderlyingCategory( UPC ); FiniteStrictProductCompletion( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) ) gap> a := DC.a; <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) )> gap> b := DC.b; <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) )> gap> c := DC.c; <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) )> gap> axb_u_axc := Coproduct( DirectProduct( a, b ), DirectProduct( a, c ) ); <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) )> gap> a_x_buc := DirectProduct( a, Coproduct( b, c ) ); <An object in FreeDistributiveCategoryWithStrictProductAndCoproducts( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) )> gap> axb_u_axc = a_x_buc; true gap> implemented_func := > function( T, source, a, b, c, target ) > return LeftCartesianDistributivityFactoringWithGivenObjects( T, > source, > a, > [ b, c ], > target ); end; function( T, source, a, b, c, target ) ... end gap> lfactor_implemented := implemented_func( DC, axb_u_axc, a, b, c, a_x_buc ); <A morphism in FreeDistributiveCategoryWithStrictProductAndCoproducts( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) )> gap> StartTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> StopCompilationAtPrimitivelyInstalledOperationsOfCategory( DC ); gap> ReadPackageOnce( "FiniteCocompletions", > "examples/precompileLeftCartesianDistributivityFactoring_CompilerLogic.g" ); true gap> compiled_implemented_func := > CapJitCompiledFunction( implemented_func, > DC, > [ "category", "object", "object", "object", "object", "object" ], > "morphism" ); function( T_1, source_1, a_1, b_1, c_1, target_1 ) ... end gap> StopTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> #DisplayTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> compiled_implemented_func( DC, axb_u_axc, a, b, c, a_x_buc ) = > lfactor_implemented; true gap> Display( compiled_implemented_func ); function ( T_1, source_1, a_1, b_1, c_1, target_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_8_1 := [ b_1, c_1 ]; deduped_7_1 := [ a_1, c_1 ]; deduped_6_1 := [ a_1, b_1 ]; deduped_5_1 := Coproduct( T_1, deduped_8_1 ); deduped_4_1 := DirectProduct( T_1, deduped_7_1 ); deduped_3_1 := DirectProduct( T_1, deduped_6_1 ); deduped_2_1 := [ a_1, deduped_5_1 ]; deduped_1_1 := DirectProduct( T_1, deduped_2_1 ); return UniversalMorphismFromCoproductWithGivenCoproduct( T_1, [ deduped_3_1, deduped_4_1 ], target_1, [ UniversalMorphismIntoDirectProductWithGivenDirectProduct( T_1, deduped_2_1, deduped_3_1, [ ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_6_1, 1, deduped_3_1 ), PreCompose( T_1, ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_6_1, 2, deduped_3_1 ), InjectionOfCofactorOfCoproductWithGivenCoproduct( T_1, deduped_8_1, 1, deduped_5_1 ) ) ], deduped_1_1 ), UniversalMorphismIntoDirectProductWithGivenDirectProduct( T_1, deduped_2_1, deduped_4_1, [ ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_7_1, 1, deduped_4_1 ), PreCompose( T_1, ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_7_1, 2, deduped_4_1 ), InjectionOfCofactorOfCoproductWithGivenCoproduct( T_1, deduped_8_1, 2, deduped_5_1 ) ) ], deduped_1_1 ) ], source_1 ); end gap> ContinueCompilationAtPrimitivelyInstalledOperationsOfCategory( DC ); gap> ContinueCompilationAtPrimitivelyInstalledOperationsOfCategory( C ); gap> hom_axb_u_axc_a_x_buc := MorphismsOfExternalHom( axb_u_axc, a_x_buc );; gap> Length( hom_axb_u_axc_a_x_buc ) = 1; true gap> lfactor := hom_axb_u_axc_a_x_buc[1]; <A morphism in FreeDistributiveCategoryWithStrictProductAndCoproducts( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) )> gap> IsOne( lfactor ); true gap> lfactor_reconstructed := > CellAsEvaluatableString( lfactor, [ "DC", "UPC", "PC", "C" ] );; gap> lfactor = EvalString( lfactor_reconstructed ); true gap> hom_a_x_buc_axb_u_axc := MorphismsOfExternalHom( a_x_buc, axb_u_axc );; gap> Length( hom_a_x_buc_axb_u_axc ) = 1; true gap> lexpand := hom_a_x_buc_axb_u_axc[1]; <A morphism in FreeDistributiveCategoryWithStrictProductAndCoproducts( PathCategory( FinQuiver( "Q(a,b,c)[]" ) ) )> gap> IsOne( lexpand ); true gap> Inverse( lfactor ) = lexpand; true gap> lexpand_reconstructed := > CellAsEvaluatableString( lexpand, [ "DC", "UPC", "PC", "C" ] );; gap> lexpand_reconstructed = lfactor_reconstructed; true gap> lexpand = EvalString( lexpand_reconstructed ); true gap> ReadPackage( "FiniteCocompletions", > "examples/precompileLeftCartesianDistributivityFactoring_func.g" ); true gap> func( DC, a_x_buc, a, b, c, axb_u_axc ) = lfactor; true gap> T := DummyCategory( rec( name := "A placeholder distributive category", > properties := [ "IsDistributiveCategory" ], > list_of_operations_to_install := > Concatenation( [ "ObjectConstructor", "MorphismConstructor" ], > CAP_INTERNAL_CONSTRUCTIVE_CATEGORIES_RECORD.IsDistributiveCategory ) ) ); A placeholder distributive category gap> StartTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> StopCompilationAtPrimitivelyInstalledOperationsOfCategory( T ); gap> compiled_func := > CapJitCompiledFunction( func, > T, > [ "category", "object", "object", "object", "object", "object" ], > "morphism" ); function( T_1, source_1, a_1, b_1, c_1, target_1 ) ... end gap> StopTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> #DisplayTimer( "LeftCartesianDistributivityFactoringWithGivenObjects" ); gap> compiled_func( DC, axb_u_axc, a, b, c, a_x_buc ) = lfactor; true gap> Display( compiled_func ); function ( T_1, source_1, a_1, b_1, c_1, target_1 ) local deduped_1_1, deduped_2_1, deduped_3_1, deduped_4_1, deduped_5_1; deduped_5_1 := [ a_1, c_1 ]; deduped_4_1 := [ a_1, b_1 ]; deduped_3_1 := DirectProduct( T_1, deduped_5_1 ); deduped_2_1 := DirectProduct( T_1, deduped_4_1 ); deduped_1_1 := [ deduped_2_1, deduped_3_1 ]; return UniversalMorphismFromCoproductWithGivenCoproduct( T_1, deduped_1_1, target_1, [ PreCompose( T_1, UniversalMorphismIntoDirectProductWithGivenDirectProduct( T_1, deduped_4_1, deduped_2_1, [ ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_4_1, 1, deduped_2_1 ), ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_4_1, 2, deduped_2_1 ) ], deduped_2_1 ), InjectionOfCofactorOfCoproductWithGivenCoproduct( T_1, deduped_1_1, 1, target_1 ) ), PreCompose( T_1, UniversalMorphismIntoDirectProductWithGivenDirectProduct( T_1, deduped_5_1, deduped_3_1, [ ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_5_1, 1, deduped_3_1 ), ProjectionInFactorOfDirectProductWithGivenDirectProduct( T_1, deduped_5_1, 2, deduped_3_1 ) ], deduped_3_1 ), InjectionOfCofactorOfCoproductWithGivenCoproduct( T_1, deduped_1_1, 2, target_1 ) ) ], source_1 ); end #@fi
generated by GAPDoc2HTML