template<typename Coeff>
Complex<CobObj, CobMor, Coeff> class

Specialization of Complex to the cobordism category (Cob.h)

Base classes

template<typename Obj, template<typename> typename Mor, typename Coeff>
class Complex_Base<CobObj, CobMor, Coeff>
base class for complexes

Public functions

void AddCap(const unsigned int& i)
computes the cobordism complex obtained by tensoring with the complex consisting of a single object, which is the identity plus a cap at the tangle end i, counted from the bottom left starting at 0.
void AddCrossing(const unsigned int& i, const bool& sign, const bool& XorY)
computes the cobordism complex obtained by tensoring with the complex corresponding to a crossing at the tangle end i, counted from the bottom left starting at 0.
void AddCup(const unsigned int& i)
computes the cobordism complex obtained by tensoring with the complex consisting of a single object, which is the identity plus a cup at the tangle end i, counted from the bottom left starting at 0.
auto optimize(const std::vector<bool>& bot_orient, std::string tanglestring = "") -> std::string
add crossings such that the number of generators is minimized, or add tangle according to tanglestring. The returned string represents the crossings that were added.
void print(const std::string& name = "", const std::string& metadata = "") const
if name is the empty, print string representative of a complex over the cobordism category into the terminal; if name is non-empty, this prints this string representative into the file specified by 'name'; metadata must be provided.
auto to_BN() const -> Complex<BNObj, BNMor, Coeff>
Corresponding complex over the Bar-Natan algebra (or the free polynomial ring in the variable $H$ ); this only works if such a conversion is defined for crossingless atangles and cobordisms, ie for four-ended (two-ended) tangles; see also CobMor::to_BNMor() and CobObj::to_BNObj().
void view(const std::string& name = "temp.svg", const std::string& metadata = "") const
generates an svg file of a labelled oriented graph representing the complex. Metadata must be provided.

Function documentation

template<typename Coeff>
void Complex<CobObj, CobMor, Coeff><Coeff>::AddCrossing(const unsigned int& i, const bool& sign, const bool& XorY)

computes the cobordism complex obtained by tensoring with the complex corresponding to a crossing at the tangle end i, counted from the bottom left starting at 0.

The complexes for the single crossing look as follows (compare Section 4 in [4])

for crossing Y, ie ⤫ (XorY == 0):

  • if positive crossing (sign==1): $h^0 q^1 \parallel \rightarrow h^1 q^2 =$
  • if negative crossing (sign==0): $h^{-1} q^{-2} \parallel \rightarrow h^0 q^{-1} =$

for crossing X, ie ⤬ (XorY == 1):

  • if positive crossing (sign==1): $h^0 q^1 = \rightarrow h^1 q^2 \parallel$
  • if negative crossing (sign==0): $h^{-1} q^{-2} = \rightarrow h^0 q^{-1} \parallel$