69 typedef std::map<const ltl::formula*, int>
fv_map;
71 typedef std::map<int, const ltl::formula*>
vf_map;
79 enum var_type { anon = 0, var, acc };
87 typedef std::vector<bdd_info> bdd_info_map;
102 int register_proposition(
const ltl::formula* f,
const void* for_me);
104 template <
typename T>
106 std::shared_ptr<T> for_me)
108 return register_proposition(f, for_me.get());
120 void register_propositions(bdd f,
const void* for_me);
122 template <
typename T>
123 void register_propositions(bdd f, std::shared_ptr<T> for_me)
125 register_propositions(f, for_me.get());
135 int has_registered_proposition(
const ltl::formula* f,
137 template <
typename T>
138 int has_registered_proposition(
const ltl::formula* f,
139 std::shared_ptr<T> for_me)
141 return has_registered_proposition(f, for_me.get());
156 int register_acceptance_variable(
const ltl::formula* f,
const void* for_me);
158 template <
typename T>
159 int register_acceptance_variable(
const ltl::formula* f,
160 std::shared_ptr<T> for_me)
162 return register_acceptance_variable(f, for_me.get());
172 int register_clone_acc(
int var,
const void* for_me);
174 template <
typename T>
175 int register_clone_acc(
int var, std::shared_ptr<T> for_me)
177 return register_clone_acc(var, for_me.get());
189 void register_acceptance_variables(bdd f,
const void* for_me);
191 template <
typename T>
192 void register_acceptance_variables(bdd f, std::shared_ptr<T> for_me)
194 register_acceptance_variables(f, for_me.get());
207 const ltl::formula* oneacc_to_formula(bdd oneacc)
const;
217 const ltl::formula* oneacc_to_formula(
int var)
const;
227 int register_anonymous_variables(
int n,
const void* for_me);
229 template <
typename T>
230 int register_anonymous_variables(
int n, std::shared_ptr<T> for_me)
232 return register_anonymous_variables(n, for_me.get());
243 void register_all_variables_of(
const void* from_other,
const void* for_me);
245 template <
typename T>
246 void register_all_variables_of(
const void* from_other,
247 std::shared_ptr<T> for_me)
249 register_all_variables_of(from_other, for_me.get());
252 template <
typename T>
253 void register_all_variables_of(std::shared_ptr<T> from_other,
256 register_all_variables_of(from_other.get(), for_me);
259 template <
typename T,
typename U>
260 void register_all_variables_of(std::shared_ptr<T> from_other,
261 std::shared_ptr<U> for_me)
263 register_all_variables_of(from_other.get(), for_me.get());
275 void register_all_propositions_of(
const void* from_other,
278 template <
typename T>
279 void register_all_propositions_of(
const void* from_other,
280 std::shared_ptr<T> for_me)
282 register_all_propositions_of(from_other, for_me.get());
285 template <
typename T>
286 void register_all_propositions_of(std::shared_ptr<T> from_other,
289 register_all_propositions_of(from_other.get(), for_me);
292 template <
typename T,
typename U>
293 void register_all_propositions_of(std::shared_ptr<T> from_other,
294 std::shared_ptr<U> for_me)
296 register_all_propositions_of(from_other.get(), for_me.get());
303 void unregister_all_my_variables(
const void* me);
308 void unregister_all_typed_variables(var_type type,
const void* me);
310 template <
typename T>
311 void unregister_all_typed_variables(var_type type, std::shared_ptr<T> me)
313 unregister_all_typed_variables(type, me.get());
319 void unregister_variable(
int var,
const void* me);
321 template <
typename T>
322 void unregister_variable(
int var, std::shared_ptr<T> me)
324 unregister_variable(var, me.get());
330 std::ostream&
dump(std::ostream& os)
const;
343 void assert_emptiness()
const;
347 bdd_dict(
const bdd_dict& other) SPOT_DELETED;
348 bdd_dict& operator=(
const bdd_dict& other) SPOT_DELETED;
351 typedef std::shared_ptr<bdd_dict> bdd_dict_ptr;
353 inline bdd_dict_ptr make_bdd_dict()
355 return std::make_shared<bdd_dict>();
std::set< const void * > ref_set
BDD-variable reference counts.
Definition: bdddict.hh:77
fv_map acc_map
Maps acceptance conditions to BDD variables.
Definition: bdddict.hh:74
std::map< const ltl::formula *, int > fv_map
Formula-to-BDD-variable maps.
Definition: bdddict.hh:69
Definition: bdddict.hh:80
Map BDD variables to formulae.
Definition: bdddict.hh:55
SPOT_API std::ostream & dump(std::ostream &os, const formula *f)
Dump a formula tree.
std::map< int, const ltl::formula * > vf_map
BDD-variable-to-formula maps.
Definition: bdddict.hh:71
fv_map var_map
Maps atomic propositions to BDD variables.
Definition: bdddict.hh:73