spot
1.2.6
|
Core data for a TGBA encoded using BDDs. More...
#include <tgba/tgbabddcoredata.hh>
Public Member Functions | |
tgba_bdd_core_data (bdd_dict *dict) | |
Default constructor. More... | |
tgba_bdd_core_data (const tgba_bdd_core_data ©) | |
Copy constructor. More... | |
tgba_bdd_core_data (const tgba_bdd_core_data &left, const tgba_bdd_core_data &right) | |
Merge two tgba_bdd_core_data. More... | |
tgba_bdd_core_data & | operator= (const tgba_bdd_core_data ©) |
void | declare_now_next (bdd now, bdd next) |
Update the variable sets to take a new pair of variables into account. More... | |
void | declare_atomic_prop (bdd var) |
Update the variable sets to take a new automic proposition into account. More... | |
void | declare_acceptance_condition (bdd prom) |
Update the variable sets to take a new acceptance condition into account. More... | |
void | delete_unaccepting_scc (bdd init) |
Delete SCCs (Strongly Connected Components) from the relation which cannot be accepting. More... | |
Public Attributes | |
bdd | relation |
encodes the transition relation of the TGBA. More... | |
bdd | acceptance_conditions |
encodes the acceptance conditions More... | |
bdd | acceptance_conditions_support |
The value of bdd_support(acceptance_conditions) More... | |
bdd | all_acceptance_conditions |
The set of all acceptance conditions used by the Automaton. More... | |
bdd | now_set |
The conjunction of all Now variables, in their positive form. More... | |
bdd | next_set |
The conjunction of all Next variables, in their positive form. More... | |
bdd | nownext_set |
The conjunction of all Now and Next variables, in their positive form. More... | |
bdd | notnow_set |
The (positive) conjunction of all variables which are not Now variables. More... | |
bdd | notnext_set |
The (positive) conjunction of all variables which are not Next variables. More... | |
bdd | var_set |
The (positive) conjunction of all variables which are atomic propositions. More... | |
bdd | notvar_set |
The (positive) conjunction of all variables which are not atomic propositions. More... | |
bdd | varandnext_set |
The (positive) conjunction of all Next variables and atomic propositions. More... | |
bdd | acc_set |
The (positive) conjunction of all variables which are acceptance conditions. More... | |
bdd | notacc_set |
The (positive) conjunction of all variables which are not acceptance conditions. More... | |
bdd | negacc_set |
The negative conjunction of all variables which are acceptance conditions. More... | |
bdd_dict * | dict |
The dictionary used by the automata. More... | |
Core data for a TGBA encoded using BDDs.
spot::tgba_bdd_core_data::tgba_bdd_core_data | ( | bdd_dict * | dict) |
Default constructor.
Initially all variable set are empty and the relation
is true.
spot::tgba_bdd_core_data::tgba_bdd_core_data | ( | const tgba_bdd_core_data & | copy) |
Copy constructor.
spot::tgba_bdd_core_data::tgba_bdd_core_data | ( | const tgba_bdd_core_data & | left, |
const tgba_bdd_core_data & | right | ||
) |
Merge two tgba_bdd_core_data.
This is used when building a product of two automata.
void spot::tgba_bdd_core_data::declare_acceptance_condition | ( | bdd | prom) |
Update the variable sets to take a new acceptance condition into account.
void spot::tgba_bdd_core_data::declare_atomic_prop | ( | bdd | var) |
Update the variable sets to take a new automic proposition into account.
void spot::tgba_bdd_core_data::declare_now_next | ( | bdd | now, |
bdd | next | ||
) |
Update the variable sets to take a new pair of variables into account.
void spot::tgba_bdd_core_data::delete_unaccepting_scc | ( | bdd | init) |
Delete SCCs (Strongly Connected Components) from the relation which cannot be accepting.
bdd spot::tgba_bdd_core_data::acc_set |
The (positive) conjunction of all variables which are acceptance conditions.
bdd spot::tgba_bdd_core_data::acceptance_conditions |
encodes the acceptance conditions
a U b
, or F b
, both imply that b
should be verified eventually. We encode this with generalized Büchi acceptating conditions. An acceptance set, called Acc[b]
, hold all the state that do not promise to verify b
eventually. (I.e., all the states that contain b
, or do not contain a U b
, or F b
.)
The spot::succ_iter::current_acceptance_conditions() method will return the Acc
[x] variables of the acceptance sets in which a transition is. Actually we never return Acc
[x] alone, but Acc
[x] and all other acceptance variables negated.
So if there is three acceptance set a
, b
, and c
, and a transition is in set a
, we'll return Acc[a]&!Acc[b]&!Acc[c]
. If the transition is in both a
and b
, we'll return (Acc[a]&!Acc[b]&!Acc[c])
.|
(!Acc[a]&Acc[b]&!Acc[c])
Acceptance conditions are attributed to transitions and are only concerned by atomic propositions (which label the transitions) and Next variables (the destination). Typically, a transition should bear the variable Acc
[b] if it doesn't check for `b' and have a destination of the form a U b
, or F b
.
To summarize, acceptance_conditions
contains three kinds of variables:
bdd spot::tgba_bdd_core_data::acceptance_conditions_support |
The value of bdd_support(acceptance_conditions)
bdd spot::tgba_bdd_core_data::all_acceptance_conditions |
The set of all acceptance conditions used by the 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.
bdd_dict* spot::tgba_bdd_core_data::dict |
The dictionary used by the automata.
bdd spot::tgba_bdd_core_data::negacc_set |
The negative conjunction of all variables which are acceptance conditions.
bdd spot::tgba_bdd_core_data::next_set |
The conjunction of all Next variables, in their positive form.
bdd spot::tgba_bdd_core_data::notacc_set |
The (positive) conjunction of all variables which are not acceptance conditions.
bdd spot::tgba_bdd_core_data::notnext_set |
The (positive) conjunction of all variables which are not Next variables.
bdd spot::tgba_bdd_core_data::notnow_set |
The (positive) conjunction of all variables which are not Now variables.
bdd spot::tgba_bdd_core_data::notvar_set |
The (positive) conjunction of all variables which are not atomic propositions.
bdd spot::tgba_bdd_core_data::now_set |
The conjunction of all Now variables, in their positive form.
bdd spot::tgba_bdd_core_data::nownext_set |
The conjunction of all Now and Next variables, in their positive form.
bdd spot::tgba_bdd_core_data::relation |
encodes the transition relation of the TGBA.
relation
uses three kinds of variables:
bdd spot::tgba_bdd_core_data::var_set |
The (positive) conjunction of all variables which are atomic propositions.
bdd spot::tgba_bdd_core_data::varandnext_set |
The (positive) conjunction of all Next variables and atomic propositions.