Tangle class
          #include <sources/headers/Tangles.h>
        
        consists of a list of slices (Slice) and a list of cuts (Cut)
There is also a boolean value symmetry which is true iff the tangle represents a knot with strong inversion and a boolean value fixed_orientations which is true iff the orientation on the input tangle string was inconsistent and orientations had to be changed during initialization
Constructors, destructors, conversion operators
Public functions
- auto add(const std::string& twists) const -> Tangle
 - add a tangle 
twiststo the bottom of the tangle. The format oftwistsis as the first component of tangle_input.  - auto bot_orient() const -> std::vector<bool>
 - bottom Cut
 - 
              template<typename Coeff>auto CobComplex(Complex<CobObj, CobMor, Coeff> cx = {}, const bool& with_feedback = true) const -> Complex<CobObj, CobMor, Coeff>
 - computes the cobordism complex for a tangle
 - auto complete_symmetry() const -> Tangle
 - completes a symmetric knot to a full knot
 - auto complexity() const -> size_t
 - complexity of the tangle; equal to the sum of the cubes of the lengths of all cuts
 - void doubled()
 - double each strand of a tangle diagram. For example, this can be used to generate four-ended tangles from 1-1-knots. For those knots, the framing of the resulting cap-trivial tangle is chosen such that the linking number between the two strands is 0 and the -filling is the unknot filling.
 - auto draw_svg_orient(const Cut& cut, const int& ycoord, const int& pref_orient = 2) const -> std::string
 - svg-string adding orientations according to 
cutat the y-coordinateycoord;pref_orientis the preferred orientation, which is 0 (down), 1 (up) or 2 (both). - auto draw_svg_slice(const unsigned int& si, const unsigned int& level) const -> std::string
 - svg-string for a single slice
 - auto draw_svg_slice_fill(const std::vector<Slice>& sliceL, const unsigned int& max, const unsigned int& level) const -> std::string
 - svg-string adding all vertical strands in a slice with a crossing
 - void flip_orient_at_index(int i)
 - changes the orientation of the strand at the index 
iat the bottom of the tangle, counted from the left, starting with 0 - auto is_symmetric() const -> bool
 - true iff 
symmetryistrue - auto n_ended(const size_t& n) -> bool
 - true if tangle is n-ended and has at least one top tangle end (which is the reduction point) and one bottom tangle end
 - void print(const bool& orient = 1) const
 - prints a string represenation of a tangle into the terminal. 
orientis as in to_string().  - auto quotient() const -> Tangle
 - computes the quotient of a symmetric knot under a strong inversion
 - void record_new_orientations(const File& file) const
 - adds a comment to 
filewhich records the top Cut; this is used if the input tangle was inconsistent and the constructor changed the top cut to fix orientations. - void simplify_diagram()
 - attempt to simplify a tangle diagram. This is currently only implemented for non-symmetric tangles. This function relies on simplify().
 - auto tanglestring() const -> std::string
 - convert tangle back into input string, the first component of tangle_
input  - void to_file(const File& file) const
 - generates a file 
file.khtwhich specifies the tangle in the formattangle_inputand adds metadata - auto to_string(const int& index, const bool& orient) const -> std::string
 - string representation of a single slice of the tangle. If 
orientis1, all strands are oriented, otherwise only the orientations of caps (↶/↷) are included. - void to_svg(const std::string& metadata, const std::string& name, const bool& orient = false, const bool& transparent = false) const
 - create svg file of the tangle diagram
 - auto top_orient() const -> std::vector<bool>
 - top Cut
 - auto writhe() const -> int
 - signed number of crossings
 
Function documentation
               Tangle:: Tangle(std::string input,
              Cut top_orient,
              bool auto_correct = true)
            
            standard constructor
The pair (input, top_orient) have the same format as tangle_auto_correct is true, the constructor will attempt to auto-correct the orientation of strands if the input is inconsistent
              
                template<typename Coeff>
              
              Complex<CobObj, CobMor, Coeff> Tangle:: CobComplex(Complex<CobObj, CobMor, Coeff> cx = {},
              const bool& with_feedback = true) const
            
            computes the cobordism complex for a tangle
The first argument is a cobordism complex that we tensor with the cobordim complex for , gluing the top of to the bottom of . If this argument is empty, we replace it by a complex consisting of a single crossingless tangle, namely the identity tangle on the same number of strands as there are endpoints at the top of .
If the second argument is false, some feedback in the terminal concerning the status of the computation will be suppressed.