27 static auto res =
symbol{
"f2"};
86 require(v != 1,
"f2: star: invalid value: 1");
152 sname(),
": invalid value: ", i);
156 raise(
sname(),
": invalid value: ",
is);
163 return o << (v ?
'1' :
'0');
172 o <<
"\\mathbb{F}_2";
static size_t hash(value_t v)
static constexpr bool is_special(value_t)
static value_t star(const value_t v)
Print as rich UTF-8 text, escaped.
static constexpr bool is_commutative()
auto hash_value(const T &v) -> decltype(std::hash< T >
Following the naming convention of Boost.
void require(Bool b, Args &&...args)
If b is not verified, raise an error with args as message.
static bool less(value_t lhs, value_t rhs)
Whether lhs < rhs.
Print as is. For instance, don't try to escape labels.
static constexpr bool show_one()
static value_t conv(self_t, value_t v)
static bool is_zero(const value_t v)
weightset_mixin< detail::r_impl > r
static value_t transpose(const value_t v)
An input/output format for valuesets.
char eat(std::istream &is, char c)
Check lookahead character and advance.
Provide a variadic mul on top of a binary mul(), and one().
weightset_mixin< detail::f2_impl > f2
static std::ostream & print(const value_t v, std::ostream &o, format={})
static value_t conv(std::istream &is, bool=true)
static f2 make(std::istream &is)
Build from the description in is.
boost::flyweight< std::string, boost::flyweights::no_tracking, boost::flyweights::intermodule_holder > symbol
An internalized string.
Print as plain (ASCII) text, escaped.
static constexpr bool has_lightening_weights()
static bool equal(const value_t l, const value_t r)
std::istringstream is
The input stream: the specification to translate.
static constexpr star_status_t star_status()
Print as a parsable type string.
static value_t ldiv(const value_t l, const value_t r)
static value_t rdiv(const value_t l, const value_t r)
static value_t add(const value_t l, const value_t r)
static value_t sub(const value_t l, const value_t r)
static bool is_one(const value_t v)
std::ostream & print_set(std::ostream &o, format fmt={}) const
static constexpr bool is_idempotent()
static value_t mul(const value_t l, const value_t r)