#@if ValueOption( "no_precompiled_code" ) <> true and String({}->1-[1-1]) = "function ( ) return 1 - [ (1 - 1) ]; end"
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 and String({}->1-[1-1]) = "function ( ) return 1 - [ (1 - 1) ]; end"
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 and String({}->1-[1-1]) = "function ( ) return 1 - [ (1 - 1) ]; end"
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" ],
> ListOfDefiningWithGivenOperations( "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 and String({}->1-[1-1]) = "function ( ) return 1 - [ (1 - 1) ]; end"
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" ],
> ListOfDefiningWithGivenOperations( "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