1 #ifndef SYMBOLIC_STATE_DFA_H
2 #define SYMBOLIC_STATE_DFA_H
9 #include "ExplicitStateDfaAdd.h"
21 std::shared_ptr<VarMgr> var_mgr_;
22 std::size_t automaton_id_;
24 std::vector<int> initial_state_;
25 CUDD::BDD final_states_;
26 std::vector<CUDD::BDD> transition_function_;
30 static std::pair<std::size_t, std::size_t> create_state_variables(
31 std::shared_ptr<VarMgr> &mgr,
32 std::size_t state_count);
34 static CUDD::BDD state_to_bdd(
const std::shared_ptr<VarMgr> &mgr,
38 static CUDD::BDD state_set_to_bdd(
39 const std::shared_ptr<VarMgr> &mgr,
41 const std::vector<size_t> &states);
43 static std::vector<CUDD::BDD> symbolic_transition_function(
44 const std::shared_ptr<VarMgr> &mgr,
75 std::vector<CUDD::BDD> predicates);
80 std::shared_ptr<VarMgr>
var_mgr()
const;
139 void dump_dot(
const std::string &filename)
const;
158 std::size_t bit_count);
A DFA with explicit states and symbolic transitions represented in ADDs.
Definition: ExplicitStateDfaAdd.h:18
A DFA with symbolic states and transitions.
Definition: SymbolicStateDfa.h:18
CUDD::BDD final_states() const
Returns the BDD encoding the set of final states.
Definition: SymbolicStateDfa.cpp:135
std::size_t automaton_id() const
Returns the automaton ID.
Definition: SymbolicStateDfa.cpp:123
static std::vector< int > state_to_binary(std::size_t state, std::size_t bit_count)
Returns the binary encoding of a given state index.
Definition: SymbolicStateDfa.cpp:27
static SymbolicStateDfa product_OR(const std::vector< SymbolicStateDfa > &dfa_vector)
Returns a product AND of two symbolic DFAs.
Definition: SymbolicStateDfa.cpp:245
void restrict_dfa_with_states(const CUDD::BDD &valid_states)
Restrict a symbolic DFA with a given set of states.
Definition: SymbolicStateDfa.cpp:143
std::vector< CUDD::BDD > transition_function() const
Returns the transition function of the DFA as a vector of BDDs.
Definition: SymbolicStateDfa.cpp:139
std::vector< int > initial_state() const
Returns the bitvector representing the initial state of the DFA.
Definition: SymbolicStateDfa.cpp:127
void new_sink_states(const CUDD::BDD &sink_states)
Shrink a set of states to a sink state.
Definition: SymbolicStateDfa.cpp:233
static SymbolicStateDfa complement(const SymbolicStateDfa dfa)
Returns the complement of a symbolic DFA.
Definition: SymbolicStateDfa.cpp:283
CUDD::BDD initial_state_bdd() const
Returns the BDD representing the initial state of the DFA.
Definition: SymbolicStateDfa.cpp:131
static SymbolicStateDfa product_AND(const std::vector< SymbolicStateDfa > &dfa_vector)
Returns a product AND of two symbolic DFAs.
Definition: SymbolicStateDfa.cpp:196
static SymbolicStateDfa from_predicates(std::shared_ptr< VarMgr > var_mgr, std::vector< CUDD::BDD > predicates)
Creates a simple automaton that remembers the value of predicates.
Definition: SymbolicStateDfa.cpp:179
void restrict_dfa_with_transitions(const CUDD::BDD &feasible_moves)
Restrict a symbolic DFA with a set of feasible moves.
Definition: SymbolicStateDfa.cpp:154
static SymbolicStateDfa from_explicit(const ExplicitStateDfaAdd &explicit_dfa)
Converts an explicit DFA to a symbolic representation.
Definition: SymbolicStateDfa.cpp:92
void dump_dot(const std::string &filename) const
Saves the symbolic representation of the DFA in a .dot file.
Definition: SymbolicStateDfa.cpp:162
std::shared_ptr< VarMgr > var_mgr() const
Returns the variable manager.
Definition: SymbolicStateDfa.cpp:119