File mintermization.hh¶
-
namespace mata
Main namespace including structs and algorithms for all automata.
In particular, this includes:
Alphabets,
Formula graphs and nodes,
Closed sets.
-
class Mintermization
- #include <mintermization.hh>
Public Functions
-
std::unordered_set<BDD> compute_minterms(const std::unordered_set<BDD> &source_bdds)
Takes a set of BDDs and build a minterm tree over it.
The leaves of BDDs, which are minterms of input set, are returned
- Parameters:
source_bdds – BDDs for which minterms are computed
- Returns:
Computed minterms
-
BDD graph_to_bdd_nfa(const FormulaGraph &graph)
Transforms a graph representing formula at transition to bdd.
- Parameters:
graph – Graph to be transformed
- Returns:
Resulting BDD
-
OptionalBdd graph_to_bdd_afa(const FormulaGraph &graph)
Transforms a graph representing formula at transition to bdd.
This version of method is a more general one and accepts also formula including states.
- Parameters:
graph – Graph to be transformed
- Returns:
Resulting BDD
-
mata::IntermediateAut mintermize(const mata::IntermediateAut &aut)
Method mintermizes given automaton which has bitvector alphabet.
It transforms its transitions to BDDs, then build a minterm tree over the BDDs and finally transforms automaton to explicit one.
- Parameters:
aut – Automaton to be mintermized.
- Returns:
Mintermized automaton
-
std::vector<mata::IntermediateAut> mintermize(const std::vector<const mata::IntermediateAut*> &auts)
Methods mintermize given automata which have bitvector alphabet.
It transforms transitions of all automata to BDDs, then build a minterm tree over the BDDs and finally transforms automata to explicit one (sharing the same minterms).
- Parameters:
auts – Automata to be mintermized.
- Returns:
Mintermized automata corresponding to the input autamata
-
std::vector<mata::IntermediateAut> mintermize(const std::vector<mata::IntermediateAut> &auts)¶
-
void minterms_to_aut_nfa(mata::IntermediateAut &res, const mata::IntermediateAut &aut, const std::unordered_set<BDD> &minterms)
The method performs the mintermization over @aut with given @minterms.
It is method specialized for NFA.
- Parameters:
res – The resulting mintermized automaton
aut – Automaton to be mintermized
minterms – Set of minterms for mintermization
-
void minterms_to_aut_afa(mata::IntermediateAut &res, const mata::IntermediateAut &aut, const std::unordered_set<BDD> &minterms)
The method for mintermization of alternating finite automaton using a given set of minterms.
- Parameters:
res – The resulting mintermized automaton
aut – Automaton to be mintermized
minterms – Set of minterms for mintermization
-
inline Mintermization()¶
Private Types
-
using DisjunctStatesPair = std::pair<const FormulaGraph*, const FormulaGraph*>¶
Private Functions
-
void trans_to_bdd_nfa(const IntermediateAut &aut)¶
-
void trans_to_bdd_afa(const IntermediateAut &aut)¶
Private Members
-
Cudd bdd_mng = {}¶
-
std::unordered_map<const FormulaGraph*, BDD> trans_to_bddvar = {}¶
-
std::unordered_map<const FormulaNode*, std::vector<DisjunctStatesPair>> lhs_to_disjuncts_and_states = {}¶
-
struct OptionalBdd¶
-
Public Functions
-
OptionalBdd() = default¶
-
inline explicit OptionalBdd(const BDD &bdd)¶
-
OptionalBdd operator*(const OptionalBdd &b) const¶
-
OptionalBdd operator+(const OptionalBdd &b) const¶
-
OptionalBdd operator!() const¶
-
OptionalBdd() = default¶
-
std::unordered_set<BDD> compute_minterms(const std::unordered_set<BDD> &source_bdds)