|
@@ -4,10 +4,14 @@
|
|
#include "semigroup.hpp"
|
|
#include "semigroup.hpp"
|
|
bool cut(const Semigroup& S);
|
|
bool cut(const Semigroup& S);
|
|
bool cut_wilf_left_primitives(const Semigroup& S);
|
|
bool cut_wilf_left_primitives(const Semigroup& S);
|
|
-
|
|
|
|
|
|
+bool is_special(const Semigroup& S);
|
|
|
|
+bool wilf1(const Semigroup& S);
|
|
|
|
+bool wilf2(const Semigroup& S);
|
|
|
|
+bool wilf3(const Semigroup& S);
|
|
|
|
+
|
|
inline bool cut(const Semigroup& S){
|
|
inline bool cut(const Semigroup& S){
|
|
- return false;
|
|
|
|
- // return cut_wilf_left_primitives(S);
|
|
|
|
|
|
+ //return false;
|
|
|
|
+ return (not wilf1(S)) or (not wilf2(S));
|
|
// return !is_special(S);
|
|
// return !is_special(S);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -18,8 +22,15 @@ inline bool is_special(const Semigroup& S){
|
|
return S.decs[x]==1;
|
|
return S.decs[x]==1;
|
|
}
|
|
}
|
|
|
|
|
|
-inline bool cut_wilf_left_primitives(const Semigroup& S){
|
|
|
|
- return 3*S.left_primitive>=S.min;
|
|
|
|
|
|
+inline bool wilf1(const Semigroup& S){
|
|
|
|
+ return K_MANUEL*S.left_primitive<S.min;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+inline bool wilf2(const Semigroup& S){
|
|
|
|
+ return (K_MANUEL*S.e)<S.min+K_MANUEL*(MAX_GENUS-S.genus);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*inline bool wilf3(const Semigroup& S){
|
|
|
|
+ return 5*S.min<3*(MAX_GENUS+1);
|
|
|
|
+}*/
|
|
#endif
|
|
#endif
|