tuples
that leads into the set of states given as input.
i.e. the set of such that is
consistent with both the input constraints and the
state/input constraints, s is INVAR, and a transition
from s to s' labelled by i exists for some INVAR s' in
S.
The weak backward image of S(X,F) is computed as follows.
X - state variables, I - input variables, F - frozen variables.
a. S1(X,F) := S(X,F) and Invar(X,F)
b. S2(X',F := S1(X,F)[x'/x
Defined in BddFsm.c
boolean
BddFsm_has_cached_reachable_states(
const BddFsm_ptr self
)
Checks if the set of reachable states exists in the FSM
Defined in BddFsm.c
boolean
BddFsm_is_deadlock_free(
BddFsm_ptr self
)
This method checks wether this machine is deadlock
free, i.e. wether it is impossible to reach an INVAR
state with no admittable INVAR successor moving from
the initial condition.
This happens when the machine is total. If it is not,
each INVAR state from which no transition to another
INVAR state can be made according to the input and
state/input constraints is non-reachable.
This method checks deadlock freeness by checking
that the intersection between the set of reachable
states and the set of INVAR states with no admittable
INVAR successor is empty.
Could update the cache. May trigger the computation of
deadlock states.
Side Effects Cache can change
Defined in BddFsm.c
boolean
BddFsm_is_fair_states(
const BddFsm_ptr self,
BddStates states
)
Checks if a set of states is fair.
Defined in BddFsm.c
boolean
BddFsm_is_total(
BddFsm_ptr self
)
This method checks wether this machine is total, in
the sense that each INVAR state has at least one INVAR
successor state given the constraints on the inputs
and the state/input.
This is done by checking that the BddFsm_ImageBwd
image of the set of all the states is the set of all
the INVAR states. This way, the INVAR constraints
together with the set of constraints on both input and
state/input are implicitly taken into account by
BddFsm_get_forward_image.
The answer "false" is produced when states exist that
admit no INVAR successor, given the sets of input and
state/input constraints. However, all these "dead"
states may be non-reachable, so the machine can still
be "deadlock free". See the "BddFsm_is_deadlock_free"
method.
Could update the cache. May trigger the computation of
states without successors.
Side Effects Cache can change
Defined in BddFsm.c
void
BddFsm_print_fair_states_info(
const BddFsm_ptr self,
const boolean print_states,
FILE* file
)
Prints the number of fair states, taking care of the
encoding and of the indifferent variables in the
encoding. In verbose mode also prints states.
Defined in BddFsm.c
void
BddFsm_print_fair_transitions_info(
const BddFsm_ptr self,
const boolean print_transitions,
FILE* file
)
Prints the number of fair states, taking care of
the encoding and of the indifferent variables in the encoding.
Defined in BddFsm.c
void
BddFsm_print_info(
const BddFsm_ptr self,
FILE* file
)
Prints some information about this BddFsm.
Side Effects None
Defined in BddFsm.c
void
BddFsm_print_reachable_states_info(
const BddFsm_ptr self,
const boolean print_states,
const boolean print_defines,
const boolean print_formula,
FILE* file
)
Prints statistical information about reachable
states, i.e. the real number of reachable states. It is computed
taking care of the encoding and of the indifferent variables in the
encoding.
Defined in BddFsm.c
boolean
BddFsm_reachable_states_computed(
BddFsm_ptr self
)
Note: a state is represented by state and frozen variables.
Defined in BddFsm.c
void
BddFsm_set_reachable_states(
const BddFsm_ptr self,
BddStates reachable
)
Sets the whole set of reachable states for this FSM, with
no onion ring informations
Defined in BddFsm.c
BddStates
BddFsm_states_inputs_to_inputs(
const BddFsm_ptr self,
BddStatesInputs si
)
Quantifies away the state variables (including frozen ones).
A state is represented by state and frozen variables thus
both state and frozen variables are abstracted away.
Defined in BddFsm.c
BddStates
BddFsm_states_inputs_to_states(
const BddFsm_ptr self,
BddStatesInputs si
)
Quantifies away the input variables.
Note: a state is represented by state and frozen variables.
Defined in BddFsm.c
BddInputs
BddFsm_states_to_states_get_inputs(
const BddFsm_ptr self,
BddStates cur_states,
BddStates next_states
)
Note: a state is represented by state and frozen variables.
Defined in BddFsm.c
void
BddFsm_update_cached_reachable_states(
const BddFsm_ptr self,
node_ptr layers_list,
int size,
boolean completed
)
Updates the cached reachable states
Defined in BddFsm.c
BddOregJusticeEmptinessBddAlgorithmType \
Bdd_BddOregJusticeEmptinessBddAlgorithmType_from_string(
const char* name
)
Converts the given type from string "name" to a
BddOregJusticeEmptinessBddAlgorithmType object.
Side Effects None.
See Also BddOregJusticeEmptinessBddAlgorithmType_to_string
Defined in bddMisc.c
const char*
Bdd_BddOregJusticeEmptinessBddAlgorithmType_to_string(
const BddOregJusticeEmptinessBddAlgorithmType self
)
It takes BddOregJusticeEmptinessBddAlgorithmType of
self and returns a string specifying the type of it.
Returned string is statically allocated and must not be
freed.
Side Effects None.
See Also Bdd_BddOregJusticeEmptinessBddAlgorithmType_from_string
Defined in bddMisc.c
void
Bdd_End(
)
Quit the BddFsm package
Defined in bddCmd.c
void
Bdd_Init(
)
Initializes the BddFsm package.
Defined in bddCmd.c
boolean
Bdd_elfwd_check_options(
unsigned int which_options,
boolean on_fail_print
)
Depending on the value of which_options, it checks that
forward search, ltl_tableau_forward_search, and
use_reachable_states are enabled and counter_examples is
disabled. Returns true if the checks are successful,
false otherwise. If on_fail_print is true, it prints an
error message on failure.
Side Effects None.
Defined in bddMisc.c
BddELFwdSavedOptions_ptr
Bdd_elfwd_check_set_and_save_options(
unsigned int which_options
)
Which values are actually checked, set, and saved is
determined by the value of which_options. If set
in which_options, forward search,
ltl_tableau_forward_search, and
use_reachable_states are enabled and
counter_examples is disabled. Previous values
are stored and returned.
Creates the returned
BddELFwdSavedOptions_ptr. It does *not* belong
to caller - it will be destroyed by the
corresponding call to
Bdd_elfwd_restore_options.
Side Effects Modifies options.
See Also Bdd_elfwd_restore_options
Defined in bddMisc.c
void
Bdd_elfwd_restore_options(
unsigned int which_options,
BddELFwdSavedOptions_ptr saved_options
)
Which values are actually restored from saved_options is
determined by the value of which_options.
Side Effects Modifies options.
See Also Bdd_elfwd_check_set_and_save_options
Defined in bddMisc.c
void
Bdd_print_available_BddOregJusticeEmptinessBddAlgorithms(
FILE * file
)
Prints the BDD-based algorithms to check language
emptiness for omega-regular properties the system
currently supplies
Side Effects None.
See Also BddOregJusticeEmptinessBddAlgorithmType
Bdd_BddOregJusticeEmptinessBddAlgorithmType_to_string
Defined in bddMisc.c
int
CommandCheckFsm(
int argc,
char ** argv
)
Checks the fsm for totality and deadlock states.
Defined in bddCmd.c
int
CommandComputeReachable(
int argc,
char ** argv
)
Computates the set of reachable states
Defined in bddCmd.c
int
CommandPrintFairStates(
int argc,
char ** argv
)
Prints the fair states.
Defined in bddCmd.c
int
CommandPrintFairTransitions(
int argc,
char ** argv
)
Prints the fair transitions.
Defined in bddCmd.c
int
CommandPrintReachableStates(
int argc,
char ** argv
)
Prints the reachable states.
Defined in bddCmd.c
void
CompassionList_append_p_q(
CompassionList_ptr self,
BddStates p,
BddStates q
)
Given bdds are referenced, so the caller should free it
when it is no longer needed
Defined in FairnessList.c
void
CompassionList_apply_synchronous_product(
CompassionList_ptr self,
const CompassionList_ptr other
)
Creates the union of the two given fairness lists. Result
goes into self
Side Effects self changes
Defined in FairnessList.c
CompassionList_ptr
CompassionList_create(
DdManager* dd_manager
)
Call FairnessList_destroy to destruct self
Defined in FairnessList.c
BddStates
CompassionList_get_p(
const CompassionList_ptr self,
const FairnessListIterator_ptr iter
)
Returned bdd is referenced
Defined in FairnessList.c
BddStates
CompassionList_get_q(
const CompassionList_ptr self,
const FairnessListIterator_ptr iter
)
Returned bdd is referenced
Defined in FairnessList.c
boolean
FairnessListIterator_is_end(
const FairnessListIterator_ptr self
)
Use to check end of iteration
Defined in FairnessList.c
FairnessListIterator_ptr
FairnessListIterator_next(
const FairnessListIterator_ptr self
)
use to iterate on an list iterator
Defined in FairnessList.c
FairnessListIterator_ptr
FairnessList_begin(
const FairnessList_ptr self
)
Use to start iteration
Defined in FairnessList.c
FairnessList_ptr
FairnessList_create(
DdManager* dd_manager
)
Base class constructor
Defined in FairnessList.c
void
JusticeList_append_p(
JusticeList_ptr self,
BddStates p
)
Given bdd is referenced, so the caller should free it
when it is no longer needed
Defined in FairnessList.c
void
JusticeList_apply_synchronous_product(
JusticeList_ptr self,
const JusticeList_ptr other
)
Creates the union of the two given fairness lists. Result
goes into self
Side Effects self changes
Defined in FairnessList.c
JusticeList_ptr
JusticeList_create(
DdManager* dd_manager
)
Call FairnessList_destroy to destruct self
Defined in FairnessList.c
BddStates
JusticeList_get_p(
const JusticeList_ptr self,
const FairnessListIterator_ptr iter
)
Returned bdd is referenced
Defined in FairnessList.c
static BddStatesInputs
bdd_fsm_EUorES_SI(
const BddFsm_ptr self,
BddStatesInputs f,
BddStatesInputs g,
BddFsm_dir dir
)
Computes the set of state-input pairs that satisfy E(f U g)
(if dir = BDD_FSM_DIR_BWD) or E(f S g) (otherwise),
with f and g sets of state-input pairs.
Defined in BddFsm.c
static BddStatesInputs
bdd_fsm_EXorEY_SI(
const BddFsm_ptr self,
BddStatesInputs si,
BddFsm_dir dir
)
Preimage:
Quantifies away the inputs, and computes the (states-inputs)
preimage of the resulting set of states.
Postimage:
Computes the (states-inputs) postimage of si.
Defined in BddFsm.c
static void
bdd_fsm_cache_deinit_reachables(
BddFsmCache_ptr self
)
Call only if family_counter is 0
Defined in BddFsmCache.c
static void
bdd_fsm_cache_deinit(
BddFsmCache_ptr self
)
private deinitializer. Call only if family_counter is 0
Defined in BddFsmCache.c
static void
bdd_fsm_cache_init(
BddFsmCache_ptr self,
DdManager* dd
)
private initializer
Defined in BddFsmCache.c
static void
bdd_fsm_check_fairness_emptiness(
const BddFsm_ptr self
)
Checks fair states for emptiness, as well as fot the
intersaction of fair states and inits. Prints a warning if needed
Defined in BddFsm.c
static void
bdd_fsm_check_init_state_invar_emptiness(
const BddFsm_ptr self
)
Check inits for emptiness, and prints a warning if needed
Defined in BddFsm.c
static BddStatesInputs
bdd_fsm_compute_EL_SI_subset_aux(
const BddFsm_ptr self,
BddStatesInputs states,
BddStatesInputs subspace,
BddFsm_dir dir
)
Executes the inner fixed point of the Emerson-Lei
algorithm. Direction is given by dir, fair states are restricted to
states, backward/forward exploration (other than the last, "strict"
image) is restricted to subspace.
Defined in BddFsm.c
static BddStatesInputs
bdd_fsm_compute_EL_SI_subset(
const BddFsm_ptr self,
BddStatesInputs subspace,
BddFsm_dir dir
)
Executes the Emerson-Lei algorithm in the set of states
given by subspace in the direction given by dir
Defined in BddFsm.c
static void
bdd_fsm_compute_reachable_states(
BddFsm_ptr self
)
Computes the set of reachable states of this machine
Side Effects Changes the internal cache
Defined in BddFsm.c
static void
bdd_fsm_copy(
const BddFsm_ptr self,
BddFsm_ptr copy
)
private copy constructor
Defined in BddFsm.c
static void
bdd_fsm_deinit(
BddFsm_ptr self
)
private member called by the destructor
Defined in BddFsm.c
static BddStatesInputs
bdd_fsm_get_fair_or_revfair_states_inputs_in_subspace(
const BddFsm_ptr self,
BddStatesInputs subspace,
BddFsm_dir dir
)
Computes the set of fair states (if dir =
BDD_FSM_DIR_BWD) or reverse fair states (otherwise) by calling the
Emerson-Lei algorithm.
Defined in BddFsm.c
static BddStatesInputs
bdd_fsm_get_fair_or_revfair_states_inputs(
BddFsm_ptr self,
BddFsm_dir dir
)
Computes the set of fair states (if dir =
BDD_FSM_DIR_BWD) or reverse fair states (otherwise) by calling the
Emerson-Lei algorithm.
Side Effects Cache might change
See Also bdd_fsm_get_fair_or_revfair_states_inputs_in_subspace
Defined in BddFsm.c
static BddStatesInputs
bdd_fsm_get_legal_state_input(
BddFsm_ptr self
)
A legal transition is a transition which satisfy the
transition relation, and the state, input and next-state satisfy the
invariants. So the image S(X, F, I) is computed as follows:
S(X,F,I) = StateConstr(X,F) & InputConstr(i) & StateConstr(X',F) &
Tr(X,F,I,X') for some X'
X - state variables, I - input variables, F - frozen variables.
Used for planning in strong backward image computation.
Could update the cache.
Note: a state is represented by state and frozen variables,
but frozen variable are never abstracted away.
Returned bdd is referenced.
Side Effects Cache can change
Defined in BddFsm.c
static void
bdd_fsm_init(
BddFsm_ptr self,
BddEnc_ptr encoding,
BddStates init,
BddInvarStates invar_states,
BddInvarInputs invar_inputs,
BddTrans_ptr trans,
JusticeList_ptr justice,
CompassionList_ptr compassion
)
Private initializer
Defined in BddFsm.c
static void
fairness_list_init(
FairnessList_ptr self,
DdManager* dd_manager
)
Defined in FairnessList.c