  
  [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 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-3 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-4 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-5 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-6 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-7 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-8 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-9 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-10 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-11 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-12 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-13 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-14 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
  
