#ifndef TREEWALK_HPP #define TREEWALK_HPP #include "semigroup.hpp" #include "stack.hpp" bool cut(const Semigroup& m); void treat(const Semigroup& m); void walk(Stack& stack,size_t* res); void signal_checkpoint_handler(int signum); inline bool cut(const Semigroup& m){ if(3*m.left_primitive>=m.min) return true; return false; } inline bool is_special(const Semigroup& S){ ind_t c=S.conductor; ind_t m=S.min; ind_t x=c+(m-1)-c%m; return S.decs[x]==1; } #endif