20 #ifndef LIMI_RESULTS_H
21 #define LIMI_RESULTS_H
23 #include <unordered_set>
40 template<
class Symbol>
43 std::shared_ptr<counterexample_chain> parent;
45 counterexample_chain(
const Symbol& current,
const std::shared_ptr<counterexample_chain>& parent) :
46 current(current), parent(parent) { }
48 std::list<Symbol> to_list()
const {
49 std::list<Symbol> result;
52 result.push_front(c->current);
58 std::vector<Symbol> to_vector()
const {
59 std::vector<Symbol> result;
62 result.push_back(c->current);
65 std::reverse(result.begin(), result.end());
77 template <
class Symbol>
119 counter_example.erase( std::remove_if(counter_example.begin(), counter_example.end(), to_remove), std::end(counter_example));
138 stream <<
"Included" << std::endl;
140 stream <<
"Not Included";
141 if (bound_hit) stream <<
"; bound";
143 for (
const auto& s : counter_example) {
144 stream << symbol_printer(s);
155 #endif //LIMI_RESULTS_H
The main namespace of the library.
Definition: antichain_algo.h:40
The result of the language inclusion test.
Definition: results.h:78
Represents a list of symbols.
Definition: results.h:41
unsigned max_bound
The maximum bound used to obtain this inclusion result.
Definition: results.h:128
std::vector< Symbol > counter_example
A counter-example if applicable.
Definition: results.h:106
void filter_trace(std::function< bool(Symbol)> to_remove)
Filters the result trace.
Definition: results.h:118
bool included
True if automaton A is included in automaton B.
Definition: results.h:86
bool bound_hit
Was the bound hit during automata exploration.
Definition: results.h:96
void print_long(std::ostream &stream, const printer_base< Symbol > &symbol_printer)
Print this result.
Definition: results.h:136