#pragma once #include "Algorithm.hh" #include #include "Combinatorics.hh" namespace cadabra { class sym : virtual public Algorithm { public: sym(const Kernel&, Ex&, Ex&, bool sign); sym(const Kernel&, Ex&, const std::vector&, bool sign); virtual bool can_apply(iterator) override; virtual result_t apply(iterator& it) override; protected: Ex objects; bool sign; std::vector slotloc; std::vector argloc_2_treeloc; combin::combinations raw_ints; result_t doit(iterator&, bool); }; }