  
  [1X2 [33X[0;0YExamples and Tests[133X[101X
  
  
  [1X2.1 [33X[0;0YTest functions[133X[101X
  
  [1X2.1-1 AdditiveMonoidalCategoriesTest[101X
  
  [33X[1;0Y[29X[2XAdditiveMonoidalCategoriesTest[102X( [3Xcat[103X, [3Xa[103X, [3XL[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yan object [23Xa[123X[133X
  
  [30X    [33X[0;6Ya list [23XL[123X of objects[133X
  
  [33X[0;0YThis     function     checks     for    every    operation    declared    in
  AdditiveMonoidalCategories.gd  if  it is computable in the CAP category [23Xcat[123X.
  If  yes,  then the operation is executed with the parameters given above and
  compared to the equivalent computation in the opposite category of [23Xcat[123X. Pass
  the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-2 TestBraidingForInvertibility[101X
  
  [33X[1;0Y[29X[2XTestBraidingForInvertibility[102X( [3Xcat[103X, [3Xobj_1[103X, [3Xobj_2[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis is a debug operation. The arguments are three objects [23Xobj_1, obj_2[123X in a
  braided  monoidal  category  [23Xcat[123X.  The  output  is  true  if the braiding is
  invertible, false otherwise.[133X
  
  [1X2.1-3 TestBraidingCompatibility[101X
  
  [33X[1;0Y[29X[2XTestBraidingCompatibility[102X( [3Xcat[103X, [3Xobj_1[103X, [3Xobj_2[103X, [3Xobj_3[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis  is  a  debug  operation. The arguments are three objects [23Xobj_1, obj_2,
  obj_3[123X in a braided monoidal category [23Xcat[123X. The output is true if the braiding
  compatabilities with the associator hold, false otherwise.[133X
  
  [1X2.1-4 TestBraidingCompatibilityForAllTriplesInList[101X
  
  [33X[1;0Y[29X[2XTestBraidingCompatibilityForAllTriplesInList[102X( [3Xcat[103X, [3XL[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis  is a debug operation. The argument is a list [23XL[123X of objects in a braided
  monoidal  category  [23Xcat[123X.  The output is true if the braiding compatabilities
  with the associator hold for all triples of objects in [23XL[123X, otherwise false.[133X
  
  [1X2.1-5 BraidedMonoidalCategoriesTest[101X
  
  [33X[1;0Y[29X[2XBraidedMonoidalCategoriesTest[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b[123X[133X
  
  [33X[0;0YThis     function     checks     for    every    operation    declared    in
  BraidedMonoidalCategories.gd if it is computable in the CAP category [23Xcat[123X. If
  yes,  then  the  operation  is  executed with the parameters given above and
  compared to the equivalent computation in the opposite category of [23Xcat[123X. Pass
  the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-6 ClosedMonoidalCategoriesTest[101X
  
  [33X[1;0Y[29X[2XClosedMonoidalCategoriesTest[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X, [3Xbeta[103X, [3Xgamma[103X, [3Xdelta[103X, [3Xepsilon[103X, [3Xzeta[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\alpha: a \rightarrow b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\beta: c \rightarrow d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\gamma: a \otimes b \rightarrow 1[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\delta: c \otimes d \rightarrow 1[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\epsilon: 1 \rightarrow \mathrm{Hom}(a,b)[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\zeta: 1 \rightarrow \mathrm{Hom}(c,d)[123X[133X
  
  [33X[0;0YThis     function     checks     for    every    operation    declared    in
  ClosedMonoidalCategories.gd  if it is computable in the CAP category [23Xcat[123X. If
  yes,  then  the  operation  is  executed with the parameters given above and
  compared to the equivalent computation in the opposite category of [23Xcat[123X. Pass
  the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-7 ClosedMonoidalCategoriesTestWithGiven[101X
  
  [33X[1;0Y[29X[2XClosedMonoidalCategoriesTestWithGiven[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X, [3Xbeta[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\alpha: a \rightarrow b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\beta: c \rightarrow d[123X[133X
  
  [33X[0;0YThis   function   checks   for   some   *WithGiven  operations  declared  in
  ClosedMonoidalCategories.gd  if they are computable in the CAP category [23Xcat[123X.
  If  yes,  then the operation is executed with the parameters given above and
  compared to the equivalent computation in the opposite category of [23Xcat[123X. Pass
  the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-8 CoclosedMonoidalCategoriesTest[101X
  
  [33X[1;0Y[29X[2XCoclosedMonoidalCategoriesTest[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X, [3Xbeta[103X, [3Xgamma[103X, [3Xdelta[103X, [3Xepsilon[103X, [3Xzeta[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\alpha: a \rightarrow b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\beta: c \rightarrow d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\gamma: 1 \rightarrow a \otimes b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\delta: 1 \rightarrow c \otimes d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\epsilon: \mathrm{coHom}(a,b) \rightarrow 1[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\zeta: \mathrm{coHom}(c,d) \rightarrow 1[123X[133X
  
  [33X[0;0YThis     function     checks     for    every    operation    declared    in
  CoclosedMonoidalCategories.gd  if  it is computable in the CAP category [23Xcat[123X.
  If  yes,  then the operation is executed with the parameters given above and
  compared to the equivalent computation in the opposite category of [23Xcat[123X. Pass
  the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-9 CoclosedMonoidalCategoriesTestWithGiven[101X
  
  [33X[1;0Y[29X[2XCoclosedMonoidalCategoriesTestWithGiven[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X, [3Xbeta[103X, [3Xgamma[103X, [3Xdelta[103X, [3Xepsilon[103X, [3Xzeta[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\alpha: a \rightarrow b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\beta: c \rightarrow d[123X[133X
  
  [33X[0;0YThis   function   checks   for   some   *WithGiven  operations  declared  in
  CoclosedMonoidalCategories.gd  if  they  are  computable in the CAP category
  [23Xcat[123X.  If yes, then the operation is executed with the parameters given above
  and  compared to the equivalent computation in the opposite category of [23Xcat[123X.
  Pass the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-10 LeftClosedMonoidalCategoriesTest[101X
  
  [33X[1;0Y[29X[2XLeftClosedMonoidalCategoriesTest[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X, [3Xbeta[103X, [3Xgamma[103X, [3Xdelta[103X, [3Xepsilon[103X, [3Xzeta[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\alpha: a \rightarrow b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\beta: c \rightarrow d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\gamma: a \otimes b \rightarrow 1[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\delta: c \otimes d \rightarrow 1[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\epsilon: 1 \rightarrow \mathrm{Hom}(a,b)[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\zeta: 1 \rightarrow \mathrm{Hom}(c,d)[123X[133X
  
  [33X[0;0YThis     function     checks     for    every    operation    declared    in
  LeftClosedMonoidalCategories.gd if it is computable in the CAP category [23Xcat[123X.
  If  yes,  then the operation is executed with the parameters given above and
  compared to the equivalent computation in the opposite category of [23Xcat[123X. Pass
  the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-11 LeftClosedMonoidalCategoriesTestWithGiven[101X
  
  [33X[1;0Y[29X[2XLeftClosedMonoidalCategoriesTestWithGiven[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X, [3Xbeta[103X, [3Xgamma[103X, [3Xdelta[103X, [3Xepsilon[103X, [3Xzeta[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\alpha: a \rightarrow b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\beta: c \rightarrow d[123X[133X
  
  [33X[0;0YThis   function   checks   for   some   *WithGiven  operationS  declared  in
  LeftClosedMonoidalCategories.gd  if  they are computable in the CAP category
  [23Xcat[123X.  If yes, then the operation is executed with the parameters given above
  and  compared to the equivalent computation in the opposite category of [23Xcat[123X.
  Pass the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-12 LeftCoclosedMonoidalCategoriesTest[101X
  
  [33X[1;0Y[29X[2XLeftCoclosedMonoidalCategoriesTest[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X, [3Xbeta[103X, [3Xgamma[103X, [3Xdelta[103X, [3Xepsilon[103X, [3Xzeta[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\alpha: a \rightarrow b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\beta: c \rightarrow d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\gamma: 1 \rightarrow a \otimes b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\delta: 1 \rightarrow c \otimes d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\epsilon: \mathrm{coHom}(a,b) \rightarrow 1[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\zeta: \mathrm{coHom}(c,d) \rightarrow 1[123X[133X
  
  [33X[0;0YThis     function     checks     for    every    operation    declared    in
  LeftCoclosedMonoidalCategories.gd  if  it  is computable in the CAP category
  [23Xcat[123X.  If yes, then the operation is executed with the parameters given above
  and  compared to the equivalent computation in the opposite category of [23Xcat[123X.
  Pass the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-13 LeftCoclosedMonoidalCategoriesTestWithGiven[101X
  
  [33X[1;0Y[29X[2XLeftCoclosedMonoidalCategoriesTestWithGiven[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X, [3Xbeta[103X, [3Xgamma[103X, [3Xdelta[103X, [3Xepsilon[103X, [3Xzeta[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\alpha: a \rightarrow b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\beta: c \rightarrow d[123X[133X
  
  [33X[0;0YThis   function   checks   for   some   *WithGiven  operations  declared  in
  LeftCoclosedMonoidalCategories.gd if they are computable in the CAP category
  [23Xcat[123X.  If yes, then the operation is executed with the parameters given above
  and  compared to the equivalent computation in the opposite category of [23Xcat[123X.
  Pass the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-14 MonoidalCategoriesTensorProductOnObjectsAndTensorUnitTest[101X
  
  [33X[1;0Y[29X[2XMonoidalCategoriesTensorProductOnObjectsAndTensorUnitTest[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b[123X[133X
  
  [33X[0;0YThis     function     checks     for    every    operation    declared    in
  MonoidalCategoriesTensorProductOnObjectsAndTensorUnit.gd if it is computable
  in  the  CAP  category  [23Xcat[123X. If yes, then the operation is executed with the
  parameters  given  above  and  compared to the equivalent computation in the
  opposite category of [23Xcat[123X. Pass the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-15 TestMonoidalUnitorsForInvertibility[101X
  
  [33X[1;0Y[29X[2XTestMonoidalUnitorsForInvertibility[102X( [3Xcat[103X, [3Xobj[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis  is  a debug operation. The arguments are two objects [23Xobj[123X in a monoidal
  category  [23Xcat[123X.  The  output  is  true  if  the  left  and  right unitors are
  invertible for [23Xobj[123X.[133X
  
  [1X2.1-16 TestAssociatorForInvertibility[101X
  
  [33X[1;0Y[29X[2XTestAssociatorForInvertibility[102X( [3Xcat[103X, [3Xobj_1[103X, [3Xobj_2[103X, [3Xobj_3[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis is a debug operation. The arguments are two objects [23Xobj_1, obj_2, obj_3[123X
  in  a  monoidal  category  [23Xcat[123X.  The  output  is  true if the associator are
  invertible for these 3 objects, false otherwise.[133X
  
  [1X2.1-17 TestMonoidalTriangleIdentity[101X
  
  [33X[1;0Y[29X[2XTestMonoidalTriangleIdentity[102X( [3Xcat[103X, [3Xobj_1[103X, [3Xobj_2[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis  is  a debug operation. The arguments are two objects [23Xobj_1, obj_2[123X in a
  monoidal category [23Xcat[123X. The output is true if the triangle identity holds for
  these 2 objects, false otherwise.[133X
  
  [1X2.1-18 TestMonoidalTriangleIdentityForAllPairsInList[101X
  
  [33X[1;0Y[29X[2XTestMonoidalTriangleIdentityForAllPairsInList[102X( [3Xcat[103X, [3XL[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis is a debug operation. The argument is a list [23XL[123X of objects in a monoidal
  category  [23Xcat[123X.  The  output  is  true if the triangle identity holds for all
  pairs of objects in [23XL[123X, otherwise false.[133X
  
  [1X2.1-19 TestMonoidalPentagonIdentity[101X
  
  [33X[1;0Y[29X[2XTestMonoidalPentagonIdentity[102X( [3Xcat[103X, [3Xobj_1[103X, [3Xobj_2[103X, [3Xobj_3[103X, [3Xobj_4[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis  is a debug operation. The arguments are 4 objects [23Xobj_1, obj_2, obj_3,
  obj_4[123X  in  a  monoidal  category  [23Xcat[123X.  The  output  is true if the pentagon
  identity holds for these 4 objects, false otherwise.[133X
  
  [1X2.1-20 TestMonoidalPentagonIdentityUsingWithGivenOperations[101X
  
  [33X[1;0Y[29X[2XTestMonoidalPentagonIdentityUsingWithGivenOperations[102X( [3Xcat[103X, [3Xobj_1[103X, [3Xobj_2[103X, [3Xobj_3[103X, [3Xobj_4[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis  is a debug operation. The arguments are 4 objects [23Xobj_1, obj_2, obj_3,
  obj_4[123X  in  a  monoidal  category  [23Xcat[123X.  The  output  is true if the pentagon
  identity  holds  for  these  4  objects, false otherwise. This test uses the
  WithGiven-operations.[133X
  
  [1X2.1-21 TestMonoidalPentagonIdentityForAllQuadruplesInList[101X
  
  [33X[1;0Y[29X[2XTestMonoidalPentagonIdentityForAllQuadruplesInList[102X( [3Xcat[103X, [3XL[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis is a debug operation. The argument is a list [23XL[123X of objects in a monoidal
  category  [23Xcat[123X.  The  output  is  true if the pentagon identity holds for all
  quadruples of objects in [23XL[123X, otherwise false.[133X
  
  [1X2.1-22 MonoidalCategoriesTest[101X
  
  [33X[1;0Y[29X[2XMonoidalCategoriesTest[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xalpha[103X, [3Xbeta[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\alpha: a \rightarrow b[123X[133X
  
  [30X    [33X[0;6Ya morphism [23X\beta: c \rightarrow d[123X[133X
  
  [33X[0;0YThis  function  checks for every operation declared in MonoidalCategories.gd
  if  it  is computable in the CAP category [23Xcat[123X. If yes, then the operation is
  executed  with  the  parameters  given  above and compared to the equivalent
  computation in the opposite category of [23Xcat[123X. Pass the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-23 TestZigZagIdentitiesForDual[101X
  
  [33X[1;0Y[29X[2XTestZigZagIdentitiesForDual[102X( [3Xcat[103X, [3Xobj[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya boolean[133X
  
  [33X[0;0YThis  is  a  debug  operation.  The  argument  is  an  object [23Xobj[123X in a rigid
  symmetric  monoidal category [23Xcat[123X. The output is true if the zig zag identity
  for duals hold, false otherwise.[133X
  
  [1X2.1-24 RigidSymmetricClosedMonoidalCategoriesTest[101X
  
  [33X[1;0Y[29X[2XRigidSymmetricClosedMonoidalCategoriesTest[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Yan endomorphism [23X\alpha: a \rightarrow a[123X[133X
  
  [33X[0;0YThis   function   checks   for   every   object  and  morphism  declared  in
  RigidSymmetricClosedMonoidalCategories.gd  if  it  is  computable in the CAP
  category  [23Xcat[123X.  If  yes,  then the operation is executed with the parameters
  given  above  and  compared  to  the  equivalent computation in the opposite
  category of [23Xcat[123X. Pass the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
  [1X2.1-25 RigidSymmetricCoclosedMonoidalCategoriesTest[101X
  
  [33X[1;0Y[29X[2XRigidSymmetricCoclosedMonoidalCategoriesTest[102X( [3Xcat[103X, [3Xa[103X, [3Xb[103X, [3Xc[103X, [3Xd[103X, [3Xalpha[103X ) [32X function[133X
  
  [33X[0;0YThe arguments are[133X
  
  [30X    [33X[0;6Ya CAP category [23Xcat[123X[133X
  
  [30X    [33X[0;6Yobjects [23Xa, b, c, d[123X[133X
  
  [30X    [33X[0;6Yan endomorphism [23X\alpha: a \rightarrow a[123X[133X
  
  [33X[0;0YThis   function   checks   for   every   object  and  morphism  declared  in
  RigidSymmetricCoclosedMonoidalCategories.gd  if  it is computable in the CAP
  category  [23Xcat[123X.  If  yes,  then the operation is executed with the parameters
  given  above  and  compared  to  the  equivalent computation in the opposite
  category of [23Xcat[123X. Pass the options[133X
  
  [30X    [33X[0;6Y[10Xverbose := true[110X to output more information.[133X
  
  [30X    [33X[0;6Y[10Xonly_primitive_operations  :=  true[110X, which is passed on to Opposite(),
        to  only primitively install dual operations for primitively installed
        operations  in  [23Xcat[123X.  The advantage is, that more derivations might be
        tested.     On     the     downside,    this    might    test    fewer
        dual_pre/postprocessor_funcs.[133X
  
