Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members

spot::tgba_bdd_concrete Class Reference

A concrete spot::tgba implemented using BDDs. More...

#include <tgbabddconcrete.hh>

Inheritance diagram for spot::tgba_bdd_concrete:

Inheritance graph
[legend]
Collaboration diagram for spot::tgba_bdd_concrete:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 tgba_bdd_concrete (const tgba_bdd_factory &fact)
 Construct a tgba_bdd_concrete with unknown initial state.

 tgba_bdd_concrete (const tgba_bdd_factory &fact, bdd init)
 Construct a tgba_bdd_concrete with known initial state.

virtual ~tgba_bdd_concrete ()
virtual void set_init_state (bdd s)
 Set the initial state.

virtual state_bddget_init_state () const
 Get the initial state of the automaton.

bdd get_init_bdd () const
 Get the initial state directly as a BDD.

virtual tgba_succ_iterator_concretesucc_iter (const state *local_state, const state *global_state=0, const tgba *global_automaton=0) const
 Get an iterator over the successors of local_state.

virtual std::string format_state (const state *state) const
 Format the state as a string for printing.

virtual bdd_dictget_dict () const
 Get the dictionary associated to the automaton.

const tgba_bdd_core_dataget_core_data () const
 Get the core data associated to this automaton.

virtual bdd all_acceptance_conditions () const
 Return the set of all acceptance conditions used by this automaton.

virtual bdd neg_acceptance_conditions () const
 Return the conjuction of all negated acceptance variables.

bdd support_conditions (const state *state) const
 Get a formula that must hold whatever successor is taken.

bdd support_variables (const state *state) const
 Get the conjunctions of variables tested by the outgoing transitions of state.

virtual stateproject_state (const state *s, const tgba *t) const
 Project a state on an automata.


Protected Member Functions

virtual bdd compute_support_conditions (const state *state) const
 Do the actual computation of tgba::support_conditions().

virtual bdd compute_support_variables (const state *state) const
 Do the actual computation of tgba::support_variables().


Protected Attributes

tgba_bdd_core_data data_
 Core data associated to the automaton.

bdd init_
 Initial state.


Private Member Functions

 tgba_bdd_concrete (const tgba_bdd_concrete &)
tgba_bdd_concretetgba_bdd_concrete::operator= (const tgba_bdd_concrete &)

Detailed Description

A concrete spot::tgba implemented using BDDs.


Constructor & Destructor Documentation

spot::tgba_bdd_concrete::tgba_bdd_concrete const tgba_bdd_factory fact  ) 
 

Construct a tgba_bdd_concrete with unknown initial state.

set_init_state() should be called later.

spot::tgba_bdd_concrete::tgba_bdd_concrete const tgba_bdd_factory fact,
bdd  init
 

Construct a tgba_bdd_concrete with known initial state.

virtual spot::tgba_bdd_concrete::~tgba_bdd_concrete  )  [virtual]
 

spot::tgba_bdd_concrete::tgba_bdd_concrete const tgba_bdd_concrete  )  [private]
 


Member Function Documentation

virtual bdd spot::tgba_bdd_concrete::all_acceptance_conditions  )  const [virtual]
 

Return the set of all acceptance conditions used by this automaton.

The goal of the emptiness check is to ensure that a strongly connected component walks through each of these acceptiong conditions. I.e., the union of the acceptiong conditions of all transition in the SCC should be equal to the result of this function.

Implements spot::tgba.

virtual bdd spot::tgba_bdd_concrete::compute_support_conditions const state state  )  const [protected, virtual]
 

Do the actual computation of tgba::support_conditions().

Implements spot::tgba.

virtual bdd spot::tgba_bdd_concrete::compute_support_variables const state state  )  const [protected, virtual]
 

Do the actual computation of tgba::support_variables().

Implements spot::tgba.

virtual std::string spot::tgba_bdd_concrete::format_state const state state  )  const [virtual]
 

Format the state as a string for printing.

This formating is the responsability of the automata who owns the state.

Implements spot::tgba.

const tgba_bdd_core_data& spot::tgba_bdd_concrete::get_core_data  )  const
 

Get the core data associated to this automaton.

These data includes the various BDD used to represent the relation, encode variable sets, Next-to-Now rewrite rules, etc.

virtual bdd_dict* spot::tgba_bdd_concrete::get_dict  )  const [virtual]
 

Get the dictionary associated to the automaton.

State are represented as BDDs. The dictionary allows to map BDD variables back to formulae, and vice versa. This is useful when dealing with several automata (which may use the same BDD variable for different formula), or simply when printing.

Implements spot::tgba.

bdd spot::tgba_bdd_concrete::get_init_bdd  )  const
 

Get the initial state directly as a BDD.

The sole point of this method is to prevent writing horrors such as

          state_bdd* s = automata.get_init_state();
          some_class some_instance(s->as_bdd());
          delete s;

virtual state_bdd* spot::tgba_bdd_concrete::get_init_state  )  const [virtual]
 

Get the initial state of the automaton.

The state has been allocated with new. It is the responsability of the caller to delete it when no longer needed.

Implements spot::tgba.

virtual bdd spot::tgba_bdd_concrete::neg_acceptance_conditions  )  const [virtual]
 

Return the conjuction of all negated acceptance variables.

For instance if the automaton uses variables Acc[a], Acc[b] and Acc[c] to describe acceptance sets, this function should return !Acc[a]&!Acc[b]&!Acc[c].

This is useful when making products: each operand's condition set should be augmented with the neg_acceptance_conditions() of the other operand.

Implements spot::tgba.

virtual state* spot::tgba::project_state const state s,
const tgba t
const [virtual, inherited]
 

Project a state on an automata.

This converts s, into that corresponding spot::state for t. This is useful when you have the state of a product, and want restrict this state to a specific automata occuring in the product.

It goes without saying that s and t should be compatible (i.e., s is a state of t).

Returns:
0 if the projection fails (s is unrelated to t), or a new state* (the projected state) that must be deleted by the caller.

Reimplemented in spot::tgba_product, and spot::tgba_tba_proxy.

virtual void spot::tgba_bdd_concrete::set_init_state bdd  s  )  [virtual]
 

Set the initial state.

virtual tgba_succ_iterator_concrete* spot::tgba_bdd_concrete::succ_iter const state local_state,
const state global_state = 0,
const tgba global_automaton = 0
const [virtual]
 

Get an iterator over the successors of local_state.

The iterator has been allocated with new. It is the responsability of the caller to delete it when no longer needed.

During synchornized products, additional informations are passed about the entire product and its state. Recall that products can be nested, forming a tree of spot::tgba where most values are computed on demand. global_automaton designate the root spot::tgba, and global_state its state. This two objects can be used by succ_iter() to restrict the set of successors to compute.

Parameters:
local_state The state whose successors are to be explored. This pointer is not adopted in any way by succ_iter, and it is still the caller's responsability to delete it when appropriate (this can be done during the lifetime of the iterator).
global_state In a product, the state of the global product automaton. Otherwise, 0. Like locale_state, global_state is not adopted by succ_iter.
global_automaton In a product, the state of the global product automaton. Otherwise, 0.

Implements spot::tgba.

bdd spot::tgba::support_conditions const state state  )  const [inherited]
 

Get a formula that must hold whatever successor is taken.

Returns:
A formula which must be verified for all successors of state.
This can be as simple as bddtrue, or more completely the disjunction of the condition of all successors. This is used as an hint by succ_iter() to reduce the number of successor to compute in a product.

Sub classes should implement compute_support_conditions(), this function is just a wrapper that will cache the last return value for efficiency.

bdd spot::tgba::support_variables const state state  )  const [inherited]
 

Get the conjunctions of variables tested by the outgoing transitions of state.

All variables tested by outgoing transitions must be returned. This is mandatory.

This is used as an hint by some succ_iter() to reduce the number of successor to compute in a product.

Sub classes should implement compute_support_variables(), this function is just a wrapper that will cache the last return value for efficiency.

tgba_bdd_concrete& spot::tgba_bdd_concrete::tgba_bdd_concrete::operator= const tgba_bdd_concrete  )  [private]
 


Member Data Documentation

tgba_bdd_core_data spot::tgba_bdd_concrete::data_ [protected]
 

Core data associated to the automaton.

bdd spot::tgba_bdd_concrete::init_ [protected]
 

Initial state.


The documentation for this class was generated from the following file:
Generated on Mon Mar 8 23:32:03 2004 for spot by doxygen 1.3.5