#include <sources/headers/Complex.h>
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 nonempty, 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 BarNatan algebra (or the free polynomial ring in the variable ); this only works if such a conversion is defined for crossingless atangles and cobordisms, ie for fourended (twoended) 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):
 if negative crossing (sign==0):
for crossing X, ie ⤬ (XorY == 1):
 if positive crossing (sign==1):
 if negative crossing (sign==0):