mCRL2
Loading...
Searching...
No Matches
mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE > Class Template Reference

#include <liblts_pbisim_bem.h>

Classes

struct  block_type
 
struct  distribution_type
 
struct  step_class_type
 
struct  tree_type
 

Public Member Functions

 prob_bisim_partitioner_bem (LTS_TYPE &l, utilities::execution_timer &timer)
 Creates a probabilistic bisimulation partitioner for an PLTS.
 
std::size_t num_eq_classes () const
 Gives the number of bisimulation equivalence classes of the LTS.
 
std::size_t get_eq_class (const std::size_t s) const
 Gives the bisimulation equivalence class number of a state.
 
std::size_t get_eq_step_class (const std::size_t d) const
 Gives the bisimulation equivalence step class number of a probabilistic state.
 
void replace_transitions ()
 Replaces the transition relation of the current lts by the transitions of the bisimulation reduced transition system.
 
void replace_probabilistic_states ()
 Replaces the probabilistic states of the current lts by the probabilistic states of the bisimulation reduced transition system.
 
bool in_same_probabilistic_class (const std::size_t s, const std::size_t t) const
 Returns whether two states are in the same probabilistic bisimulation equivalence class.
 

Private Types

typedef std::size_t block_key_type
 
typedef std::size_t step_class_key_type
 
typedef std::size_t state_type
 
typedef std::size_t label_type
 
typedef std::size_t distribution_key_type
 
typedef LTS_TYPE::probabilistic_state_t::probability_t probability_fraction_type
 

Private Member Functions

void create_initial_partition (void)
 Creates the initial partition of step classes and blocks. \detail The blocks are initially partitioned based on the actions that can perform. The step classes are partitioned based on the action that leads to the probabilistic state.
 
probability_fraction_type probability_to_block (distribution_type &d, block_type &b)
 Calculates the probability to reach block b from distribution d.
 
LTS_TYPE::probabilistic_state_t calculate_new_probabilistic_state (typename LTS_TYPE::probabilistic_state_t ps)
 
LTS_TYPE::probabilistic_state_t calculate_equivalent_probabilistic_state (step_class_type &sc)
 
void refine_partition_until_it_becomes_stable (void)
 Two-phased partitioning algorithm described in page 204. Fig 9. Baier. \detail Refinement of state partition and step partition until no new blocks/step classes are in front of the partition lists.
 
void postprocessing_stage (void)
 

Private Attributes

std::list< block_type * > state_partition
 
std::list< step_class_type * > step_partition
 
std::vector< distribution_typedistributions
 
std::deque< step_class_typestep_classes
 
std::deque< step_class_typeequivalent_step_classes
 
std::deque< block_typeblocks
 
std::vector< block_key_typeblock_index_of_a_state
 
std::vector< step_class_key_typestep_class_index_of_a_distribution
 
LTS_TYPE & aut
 

Detailed Description

template<class LTS_TYPE>
class mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >

Definition at line 24 of file liblts_pbisim_bem.h.

Member Typedef Documentation

◆ block_key_type

template<class LTS_TYPE >
typedef std::size_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::block_key_type
private

Definition at line 138 of file liblts_pbisim_bem.h.

◆ distribution_key_type

template<class LTS_TYPE >
typedef std::size_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::distribution_key_type
private

Definition at line 142 of file liblts_pbisim_bem.h.

◆ label_type

template<class LTS_TYPE >
typedef std::size_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::label_type
private

Definition at line 141 of file liblts_pbisim_bem.h.

◆ probability_fraction_type

template<class LTS_TYPE >
typedef LTS_TYPE::probabilistic_state_t::probability_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::probability_fraction_type
private

Definition at line 143 of file liblts_pbisim_bem.h.

◆ state_type

template<class LTS_TYPE >
typedef std::size_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::state_type
private

Definition at line 140 of file liblts_pbisim_bem.h.

◆ step_class_key_type

template<class LTS_TYPE >
typedef std::size_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::step_class_key_type
private

Definition at line 139 of file liblts_pbisim_bem.h.

Constructor & Destructor Documentation

◆ prob_bisim_partitioner_bem()

template<class LTS_TYPE >
mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::prob_bisim_partitioner_bem ( LTS_TYPE &  l,
utilities::execution_timer timer 
)
inline

Creates a probabilistic bisimulation partitioner for an PLTS.

This bisimulation partitioner applies the algorithm defined in C. Baier, B. Engelen and M. Majster-Cederbaum. Deciding Bisimilarity and Similarity for Probabilistic Processes. In Journal of Computer and System Sciences 60, 187-237 (2000)

Definition at line 32 of file liblts_pbisim_bem.h.

Member Function Documentation

◆ calculate_equivalent_probabilistic_state()

template<class LTS_TYPE >
LTS_TYPE::probabilistic_state_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::calculate_equivalent_probabilistic_state ( step_class_type sc)
inlineprivate

Definition at line 467 of file liblts_pbisim_bem.h.

◆ calculate_new_probabilistic_state()

template<class LTS_TYPE >
LTS_TYPE::probabilistic_state_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::calculate_new_probabilistic_state ( typename LTS_TYPE::probabilistic_state_t  ps)
inlineprivate

Definition at line 417 of file liblts_pbisim_bem.h.

◆ create_initial_partition()

template<class LTS_TYPE >
void mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::create_initial_partition ( void  )
inlineprivate

Creates the initial partition of step classes and blocks. \detail The blocks are initially partitioned based on the actions that can perform. The step classes are partitioned based on the action that leads to the probabilistic state.

Definition at line 196 of file liblts_pbisim_bem.h.

◆ get_eq_class()

template<class LTS_TYPE >
std::size_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::get_eq_class ( const std::size_t  s) const
inline

Gives the bisimulation equivalence class number of a state.

Parameters
[in]sA state number.
Returns
The number of the bisimulation equivalence class to which s belongs.

Definition at line 55 of file liblts_pbisim_bem.h.

◆ get_eq_step_class()

template<class LTS_TYPE >
std::size_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::get_eq_step_class ( const std::size_t  d) const
inline

Gives the bisimulation equivalence step class number of a probabilistic state.

Parameters
[in]sA probabilistic state number.
Returns
The number of the step class to which s belongs.

Definition at line 64 of file liblts_pbisim_bem.h.

◆ in_same_probabilistic_class()

template<class LTS_TYPE >
bool mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::in_same_probabilistic_class ( const std::size_t  s,
const std::size_t  t 
) const
inline

Returns whether two states are in the same probabilistic bisimulation equivalence class.

Parameters
[in]sA state number.
[in]tA state number.
Return values
trueif s and t are in the same bisimulation equivalence class;
falseotherwise.

Definition at line 131 of file liblts_pbisim_bem.h.

◆ num_eq_classes()

template<class LTS_TYPE >
std::size_t mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::num_eq_classes ( ) const
inline

Gives the number of bisimulation equivalence classes of the LTS.

Returns
The number of bisimulation equivalence classes of the LTS.

Definition at line 47 of file liblts_pbisim_bem.h.

◆ postprocessing_stage()

template<class LTS_TYPE >
void mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::postprocessing_stage ( void  )
inlineprivate

Definition at line 719 of file liblts_pbisim_bem.h.

◆ probability_to_block()

template<class LTS_TYPE >
probability_fraction_type mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::probability_to_block ( distribution_type d,
block_type b 
)
inlineprivate

Calculates the probability to reach block b from distribution d.

Parameters
[in]dis a probabilistic state (distribution). b is a block of states.
Returns
The probability to reach block b.

Definition at line 388 of file liblts_pbisim_bem.h.

◆ refine_partition_until_it_becomes_stable()

template<class LTS_TYPE >
void mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::refine_partition_until_it_becomes_stable ( void  )
inlineprivate

Two-phased partitioning algorithm described in page 204. Fig 9. Baier. \detail Refinement of state partition and step partition until no new blocks/step classes are in front of the partition lists.

Definition at line 485 of file liblts_pbisim_bem.h.

◆ replace_probabilistic_states()

template<class LTS_TYPE >
void mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::replace_probabilistic_states ( )
inline

Replaces the probabilistic states of the current lts by the probabilistic states of the bisimulation reduced transition system.

Precondition
The bisimulation step classes have been computed.

Definition at line 101 of file liblts_pbisim_bem.h.

◆ replace_transitions()

template<class LTS_TYPE >
void mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::replace_transitions ( )
inline

Replaces the transition relation of the current lts by the transitions of the bisimulation reduced transition system.

Precondition
The bisimulation equivalence classes have been computed.

Definition at line 75 of file liblts_pbisim_bem.h.

Member Data Documentation

◆ aut

template<class LTS_TYPE >
LTS_TYPE& mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::aut
private

Definition at line 176 of file liblts_pbisim_bem.h.

◆ block_index_of_a_state

template<class LTS_TYPE >
std::vector<block_key_type> mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::block_index_of_a_state
private

Definition at line 173 of file liblts_pbisim_bem.h.

◆ blocks

template<class LTS_TYPE >
std::deque<block_type> mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::blocks
private

Definition at line 172 of file liblts_pbisim_bem.h.

◆ distributions

template<class LTS_TYPE >
std::vector<distribution_type> mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::distributions
private

Definition at line 169 of file liblts_pbisim_bem.h.

◆ equivalent_step_classes

template<class LTS_TYPE >
std::deque<step_class_type> mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::equivalent_step_classes
private

Definition at line 171 of file liblts_pbisim_bem.h.

◆ state_partition

template<class LTS_TYPE >
std::list<block_type*> mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::state_partition
private

Definition at line 167 of file liblts_pbisim_bem.h.

◆ step_class_index_of_a_distribution

template<class LTS_TYPE >
std::vector<step_class_key_type> mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::step_class_index_of_a_distribution
private

Definition at line 174 of file liblts_pbisim_bem.h.

◆ step_classes

template<class LTS_TYPE >
std::deque<step_class_type> mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::step_classes
private

Definition at line 170 of file liblts_pbisim_bem.h.

◆ step_partition

template<class LTS_TYPE >
std::list<step_class_type*> mcrl2::lts::detail::prob_bisim_partitioner_bem< LTS_TYPE >::step_partition
private

Definition at line 168 of file liblts_pbisim_bem.h.


The documentation for this class was generated from the following file: