Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add UniversalPropertyOf(Co)DualWithGiven(Co)DualObject #1488

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CartesianCategories/PackageInfo.g
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ SetPackageInfo( rec(

PackageName := "CartesianCategories",
Subtitle := "Cartesian and cocartesian categories and various subdoctrines",
Version := "2023.11-02",
Version := "2023.11-03",
Date := ~.Version{[ 1 .. 10 ]},
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",
Expand Down
2 changes: 1 addition & 1 deletion CartesianCategories/gap/AUTOGENERATED_FROM.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
The files of this package which include the line `THIS FILE WAS AUTOMATICALLY GENERATED` in their header have been autogenerated

* from MonoidalCategories v2023.11-02
* from MonoidalCategories v2023.11-03
19 changes: 19 additions & 0 deletions CartesianCategories/gap/CartesianClosedCategories.autogen.gd
Original file line number Diff line number Diff line change
Expand Up @@ -711,3 +711,22 @@ DeclareOperation( "AddUniversalPropertyOfCartesianDual",

DeclareOperation( "AddUniversalPropertyOfCartesianDual",
[ IsCapCategory, IsList ] );

#! @Description
#! The arguments are a category $C$ and a function $F$.
#! This operation adds the given function $F$
#! to the category for the basic operation `UniversalPropertyOfCartesianDualWithGivenCartesianDualObject`.
#! $F: ( t, a, alpha, d ) \mapsto \mathtt{UniversalPropertyOfCartesianDualWithGivenCartesianDualObject}(t, a, alpha, d)$.
#! @Returns nothing
#! @Arguments C, F
DeclareOperation( "AddUniversalPropertyOfCartesianDualWithGivenCartesianDualObject",
[ IsCapCategory, IsFunction ] );

DeclareOperation( "AddUniversalPropertyOfCartesianDualWithGivenCartesianDualObject",
[ IsCapCategory, IsFunction, IsInt ] );

DeclareOperation( "AddUniversalPropertyOfCartesianDualWithGivenCartesianDualObject",
[ IsCapCategory, IsList, IsInt ] );

DeclareOperation( "AddUniversalPropertyOfCartesianDualWithGivenCartesianDualObject",
[ IsCapCategory, IsList ] );
11 changes: 11 additions & 0 deletions CartesianCategories/gap/CartesianClosedCategories.gd
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,17 @@ DeclareAttribute( "IsomorphismFromExponentialIntoTerminalObjectToCartesianDualOb
DeclareOperation( "UniversalPropertyOfCartesianDual",
[ IsCapCategoryObject, IsCapCategoryObject, IsCapCategoryMorphism ] );

#! @Description
#! The arguments are two objects $t,a$,
#! a morphism $\alpha: t \times a \rightarrow 1$ and
#! the dual object $d = a^{\vee}$.
#! The output is the morphism $t \rightarrow a^{\vee}$
#! given by the universal property of $a^{\vee}$.
#! @Returns a morphism in $\mathrm{Hom}(t, a^{\vee})$.
#! @Arguments t, a, alpha, d
DeclareOperation( "UniversalPropertyOfCartesianDualWithGivenCartesianDualObject",
[ IsCapCategoryObject, IsCapCategoryObject, IsCapCategoryMorphism, IsCapCategoryObject ] );

#! @Description
#! The argument is a morphism $\alpha: a \rightarrow b$.
#! The output is the corresponding morphism $1 \rightarrow \mathrm{Exponential}(a,b)$
Expand Down
12 changes: 12 additions & 0 deletions CartesianCategories/gap/CartesianClosedCategoriesMethodRecord.gi
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,18 @@ UniversalPropertyOfCartesianDual := rec(
# Test in CartesianClosedCategoriesTest
),

UniversalPropertyOfCartesianDualWithGivenCartesianDualObject:= rec(
filter_list := [ "category", "object", "object", "morphism", "object" ],
input_arguments_names := [ "cat", "t", "a", "alpha", "d" ],
output_source_getter_string := "t",
output_source_getter_preconditions := [ ],
output_range_getter_string := "d",
output_range_getter_preconditions := [ ],
return_type := "morphism",
dual_operation := "UniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject",
dual_arguments_reversed := false,
),

CartesianLambdaIntroduction := rec(
filter_list := [ "category", "morphism" ],
return_type := "morphism",
Expand Down
19 changes: 19 additions & 0 deletions CartesianCategories/gap/CocartesianCoclosedCategories.autogen.gd
Original file line number Diff line number Diff line change
Expand Up @@ -711,3 +711,22 @@ DeclareOperation( "AddUniversalPropertyOfCocartesianDual",

DeclareOperation( "AddUniversalPropertyOfCocartesianDual",
[ IsCapCategory, IsList ] );

#! @Description
#! The arguments are a category $C$ and a function $F$.
#! This operation adds the given function $F$
#! to the category for the basic operation `UniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject`.
#! $F: ( t, a, alpha, c ) \mapsto \mathtt{UniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject}(t, a, alpha, c)$.
#! @Returns nothing
#! @Arguments C, F
DeclareOperation( "AddUniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject",
[ IsCapCategory, IsFunction ] );

DeclareOperation( "AddUniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject",
[ IsCapCategory, IsFunction, IsInt ] );

DeclareOperation( "AddUniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject",
[ IsCapCategory, IsList, IsInt ] );

DeclareOperation( "AddUniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject",
[ IsCapCategory, IsList ] );
11 changes: 11 additions & 0 deletions CartesianCategories/gap/CocartesianCoclosedCategories.gd
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,17 @@ DeclareAttribute( "IsomorphismFromCoexponentialFromInitialObjectToCocartesianDua
DeclareOperation( "UniversalPropertyOfCocartesianDual",
[ IsCapCategoryObject, IsCapCategoryObject, IsCapCategoryMorphism ] );

#! @Description
#! The arguments are two objects $t,a$,
#! a morphism $\alpha: 1 \rightarrow t \sqcup a$ and
#! the codual object $c = a_{\vee}$.
#! The output is the morphism $a_{\vee} \rightarrow t$
#! given by the universal property of $a_{\vee}$.
#! @Returns a morphism in $\mathrm{Hom}(a_{\vee}, t)$.
#! @Arguments t, a, alpha, c
DeclareOperation( "UniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject",
[ IsCapCategoryObject, IsCapCategoryObject, IsCapCategoryMorphism, IsCapCategoryObject] );

#! @Description
#! The argument is a morphism $\alpha: a \rightarrow b$.
#! The output is the corresponding morphism $ \mathrm{Coexponential}(a,b) \rightarrow 1$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,18 @@ UniversalPropertyOfCocartesianDual := rec(
# Test in CocartesianCoclosedCategoriesTest
),

UniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject := rec(
filter_list := [ "category", "object", "object", "morphism", "object" ],
input_arguments_names := [ "cat", "t", "a", "alpha", "c" ],
output_source_getter_string := "c",
output_source_getter_preconditions := [ ],
output_range_getter_string := "t",
output_range_getter_preconditions := [ ],
return_type := "morphism",
dual_operation := "UniversalPropertyOfCartesianDualWithGivenCartesianDualObject",
dual_arguments_reversed := false,
),

CocartesianLambdaIntroduction := rec(
filter_list := [ "category", "morphism" ],
return_type := "morphism",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@
[ CartesianBraiding, 1 ],
[ CartesianDualOnObjects, 2 ],
[ CartesianEvaluationForCartesianDual, 1 ],
[ UniversalPropertyOfCartesianDual, 1 ] ],
[ UniversalPropertyOfCartesianDualWithGivenCartesianDualObject, 1 ] ],

function( cat, a, avv )
local alpha;
Expand All @@ -171,7 +171,7 @@
alpha := PreCompose( cat, CartesianBraiding( cat, a, CartesianDualOnObjects( cat, a ) ),
CartesianEvaluationForCartesianDual( cat, a ) );

return UniversalPropertyOfCartesianDual( cat, a, CartesianDualOnObjects( cat, a ), alpha );
return UniversalPropertyOfCartesianDualWithGivenCartesianDualObject( cat, a, CartesianDualOnObjects( cat, a ), alpha, avv );

Check warning on line 174 in CartesianCategories/gap/SymmetricCartesianClosedCategoriesDerivedMethods.gi

View check run for this annotation

Codecov / codecov/patch

CartesianCategories/gap/SymmetricCartesianClosedCategoriesDerivedMethods.gi#L174

Added line #L174 was not covered by tests

end : CategoryFilter := IsCartesianClosedCategory );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@
[ CocartesianEvaluationForCocartesianDual, 1 ],
[ CocartesianBraiding, 1 ],
[ CocartesianDualOnObjects, 2 ],
[ UniversalPropertyOfCocartesianDual, 1 ] ],
[ UniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject, 1 ] ],

function( cat, a, avv )
local alpha;
Expand All @@ -173,7 +173,7 @@
CocartesianEvaluationForCocartesianDual( cat, a ),
CocartesianBraiding( cat, CocartesianDualOnObjects( cat, a ), a ) );

return UniversalPropertyOfCocartesianDual( cat, a, CocartesianDualOnObjects( cat, a ), alpha );
return UniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject( cat, a, CocartesianDualOnObjects( cat, a ), alpha, avv );

Check warning on line 176 in CartesianCategories/gap/SymmetricCocartesianCoclosedCategoriesDerivedMethods.gi

View check run for this annotation

Codecov / codecov/patch

CartesianCategories/gap/SymmetricCocartesianCoclosedCategoriesDerivedMethods.gi#L176

Added line #L176 was not covered by tests

end : CategoryFilter := IsCocartesianCoclosedCategory );

Expand Down
4 changes: 4 additions & 0 deletions CartesianCategories/gap/Tools.gi
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,8 @@ WriteFileForClosedMonoidalStructure(
## UniversalPropertyOfDual
[ "dual_operation := \"UniversalPropertyOfCoDual\"",
"dual_operation := \"UniversalPropertyOfCocartesianDual\"" ],
[ "dual_operation := \"UniversalPropertyOfCoDualWithGivenCoDualObject\"",
"dual_operation := \"UniversalPropertyOfCocartesianDualWithGivenCocartesianDualObject\"" ],
##############################
## Safe replacements for Tests
##############################
Expand Down Expand Up @@ -703,6 +705,8 @@ WriteFileForCoclosedMonoidalStructure(
## UniversalPropertyOfCoDual
[ "dual_operation := \"UniversalPropertyOfDual\"",
"dual_operation := \"UniversalPropertyOfCartesianDual\"" ],
[ "dual_operation := \"UniversalPropertyOfDualWithGivenDualObject\"",
"dual_operation := \"UniversalPropertyOfCartesianDualWithGivenCartesianDualObject\"" ],
[ "CLOSED_AND_COCLOSED_MONOIDAL_CATEGORIES",
"CARTESIAN_CLOSED_AND_COCARTESIAN_COCLOSED_CATEGORIES" ],
[ "COCLOSED_MONOIDAL_CATEGORIES_METHOD",
Expand Down
2 changes: 1 addition & 1 deletion MonoidalCategories/PackageInfo.g
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ SetPackageInfo( rec(

PackageName := "MonoidalCategories",
Subtitle := "Monoidal and monoidal (co)closed categories",
Version := "2023.11-02",
Version := "2023.11-03",
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",

Expand Down
19 changes: 19 additions & 0 deletions MonoidalCategories/gap/ClosedMonoidalCategories.autogen.gd
Original file line number Diff line number Diff line change
Expand Up @@ -711,3 +711,22 @@ DeclareOperation( "AddUniversalPropertyOfDual",

DeclareOperation( "AddUniversalPropertyOfDual",
[ IsCapCategory, IsList ] );

#! @Description
#! The arguments are a category $C$ and a function $F$.
#! This operation adds the given function $F$
#! to the category for the basic operation `UniversalPropertyOfDualWithGivenDualObject`.
#! $F: ( t, a, alpha, d ) \mapsto \mathtt{UniversalPropertyOfDualWithGivenDualObject}(t, a, alpha, d)$.
#! @Returns nothing
#! @Arguments C, F
DeclareOperation( "AddUniversalPropertyOfDualWithGivenDualObject",
[ IsCapCategory, IsFunction ] );

DeclareOperation( "AddUniversalPropertyOfDualWithGivenDualObject",
[ IsCapCategory, IsFunction, IsInt ] );

DeclareOperation( "AddUniversalPropertyOfDualWithGivenDualObject",
[ IsCapCategory, IsList, IsInt ] );

DeclareOperation( "AddUniversalPropertyOfDualWithGivenDualObject",
[ IsCapCategory, IsList ] );
11 changes: 11 additions & 0 deletions MonoidalCategories/gap/ClosedMonoidalCategories.gd
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,17 @@ DeclareAttribute( "IsomorphismFromInternalHomIntoTensorUnitToDualObject",
DeclareOperation( "UniversalPropertyOfDual",
[ IsCapCategoryObject, IsCapCategoryObject, IsCapCategoryMorphism ] );

#! @Description
#! The arguments are two objects $t,a$,
#! a morphism $\alpha: t \otimes a \rightarrow 1$ and
#! the dual object $d = a^{\vee}$.
#! The output is the morphism $t \rightarrow a^{\vee}$
#! given by the universal property of $a^{\vee}$.
#! @Returns a morphism in $\mathrm{Hom}(t, a^{\vee})$.
#! @Arguments t, a, alpha, d
DeclareOperation( "UniversalPropertyOfDualWithGivenDualObject",
[ IsCapCategoryObject, IsCapCategoryObject, IsCapCategoryMorphism, IsCapCategoryObject ] );

#! @Description
#! The argument is a morphism $\alpha: a \rightarrow b$.
#! The output is the corresponding morphism $1 \rightarrow \mathrm{\underline{Hom}}(a,b)$
Expand Down
12 changes: 12 additions & 0 deletions MonoidalCategories/gap/ClosedMonoidalCategoriesMethodRecord.gi
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,18 @@ UniversalPropertyOfDual := rec(
# Test in ClosedMonoidalCategoriesTest
),

UniversalPropertyOfDualWithGivenDualObject:= rec(
filter_list := [ "category", "object", "object", "morphism", "object" ],
input_arguments_names := [ "cat", "t", "a", "alpha", "d" ],
output_source_getter_string := "t",
output_source_getter_preconditions := [ ],
output_range_getter_string := "d",
output_range_getter_preconditions := [ ],
return_type := "morphism",
dual_operation := "UniversalPropertyOfCoDualWithGivenCoDualObject",
dual_arguments_reversed := false,
),

LambdaIntroduction := rec(
filter_list := [ "category", "morphism" ],
return_type := "morphism",
Expand Down
19 changes: 19 additions & 0 deletions MonoidalCategories/gap/CoclosedMonoidalCategories.autogen.gd
Original file line number Diff line number Diff line change
Expand Up @@ -711,3 +711,22 @@ DeclareOperation( "AddUniversalPropertyOfCoDual",

DeclareOperation( "AddUniversalPropertyOfCoDual",
[ IsCapCategory, IsList ] );

#! @Description
#! The arguments are a category $C$ and a function $F$.
#! This operation adds the given function $F$
#! to the category for the basic operation `UniversalPropertyOfCoDualWithGivenCoDualObject`.
#! $F: ( t, a, alpha, c ) \mapsto \mathtt{UniversalPropertyOfCoDualWithGivenCoDualObject}(t, a, alpha, c)$.
#! @Returns nothing
#! @Arguments C, F
DeclareOperation( "AddUniversalPropertyOfCoDualWithGivenCoDualObject",
[ IsCapCategory, IsFunction ] );

DeclareOperation( "AddUniversalPropertyOfCoDualWithGivenCoDualObject",
[ IsCapCategory, IsFunction, IsInt ] );

DeclareOperation( "AddUniversalPropertyOfCoDualWithGivenCoDualObject",
[ IsCapCategory, IsList, IsInt ] );

DeclareOperation( "AddUniversalPropertyOfCoDualWithGivenCoDualObject",
[ IsCapCategory, IsList ] );
11 changes: 11 additions & 0 deletions MonoidalCategories/gap/CoclosedMonoidalCategories.gd
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,17 @@ DeclareAttribute( "IsomorphismFromInternalCoHomFromTensorUnitToCoDualObject",
DeclareOperation( "UniversalPropertyOfCoDual",
[ IsCapCategoryObject, IsCapCategoryObject, IsCapCategoryMorphism ] );

#! @Description
#! The arguments are two objects $t,a$,
#! a morphism $\alpha: 1 \rightarrow t \otimes a$ and
#! the codual object $c = a_{\vee}$.
#! The output is the morphism $a_{\vee} \rightarrow t$
#! given by the universal property of $a_{\vee}$.
#! @Returns a morphism in $\mathrm{Hom}(a_{\vee}, t)$.
#! @Arguments t, a, alpha, c
DeclareOperation( "UniversalPropertyOfCoDualWithGivenCoDualObject",
[ IsCapCategoryObject, IsCapCategoryObject, IsCapCategoryMorphism, IsCapCategoryObject] );

#! @Description
#! The argument is a morphism $\alpha: a \rightarrow b$.
#! The output is the corresponding morphism $ \mathrm{\underline{coHom}}(a,b) \rightarrow 1$
Expand Down
12 changes: 12 additions & 0 deletions MonoidalCategories/gap/CoclosedMonoidalCategoriesMethodRecord.gi
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,18 @@ UniversalPropertyOfCoDual := rec(
# Test in CoclosedMonoidalCategoriesTest
),

UniversalPropertyOfCoDualWithGivenCoDualObject := rec(
filter_list := [ "category", "object", "object", "morphism", "object" ],
input_arguments_names := [ "cat", "t", "a", "alpha", "c" ],
output_source_getter_string := "c",
output_source_getter_preconditions := [ ],
output_range_getter_string := "t",
output_range_getter_preconditions := [ ],
return_type := "morphism",
dual_operation := "UniversalPropertyOfDualWithGivenDualObject",
dual_arguments_reversed := false,
),

CoLambdaIntroduction := rec(
filter_list := [ "category", "morphism" ],
return_type := "morphism",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
[ Braiding, 1 ],
[ DualOnObjects, 2 ],
[ EvaluationForDual, 1 ],
[ UniversalPropertyOfDual, 1 ] ],
[ UniversalPropertyOfDualWithGivenDualObject, 1 ] ],

function( cat, a, avv )
local alpha;
Expand All @@ -168,7 +168,7 @@
alpha := PreCompose( cat, Braiding( cat, a, DualOnObjects( cat, a ) ),
EvaluationForDual( cat, a ) );

return UniversalPropertyOfDual( cat, a, DualOnObjects( cat, a ), alpha );
return UniversalPropertyOfDualWithGivenDualObject( cat, a, DualOnObjects( cat, a ), alpha, avv );

Check warning on line 171 in MonoidalCategories/gap/SymmetricClosedMonoidalCategoriesDerivedMethods.gi

View check run for this annotation

Codecov / codecov/patch

MonoidalCategories/gap/SymmetricClosedMonoidalCategoriesDerivedMethods.gi#L171

Added line #L171 was not covered by tests

end : CategoryFilter := IsSymmetricClosedMonoidalCategory );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
[ CoclosedEvaluationForCoDual, 1 ],
[ Braiding, 1 ],
[ CoDualOnObjects, 2 ],
[ UniversalPropertyOfCoDual, 1 ] ],
[ UniversalPropertyOfCoDualWithGivenCoDualObject, 1 ] ],

function( cat, a, avv )
local alpha;
Expand All @@ -170,7 +170,7 @@
CoclosedEvaluationForCoDual( cat, a ),
Braiding( cat, CoDualOnObjects( cat, a ), a ) );

return UniversalPropertyOfCoDual( cat, a, CoDualOnObjects( cat, a ), alpha );
return UniversalPropertyOfCoDualWithGivenCoDualObject( cat, a, CoDualOnObjects( cat, a ), alpha, avv );

Check warning on line 173 in MonoidalCategories/gap/SymmetricCoclosedMonoidalCategoriesDerivedMethods.gi

View check run for this annotation

Codecov / codecov/patch

MonoidalCategories/gap/SymmetricCoclosedMonoidalCategoriesDerivedMethods.gi#L173

Added line #L173 was not covered by tests

end : CategoryFilter := IsSymmetricCoclosedMonoidalCategory );

Expand Down