12#ifndef MCRL2_LTS_DETAIL_LTS_LOAD_H
13#define MCRL2_LTS_DETAIL_LTS_LOAD_H
15#include "mcrl2/utilities/tool.h"
16#include "mcrl2/data/real_utilities.h"
17#include "mcrl2/lts/lts_io.h"
28 desc.add_option(
"data", utilities::make_file_argument(
"FILE"),
29 "use FILE as the data and action specification. "
30 "FILE must be a .mcrl2 file which does not contain an init clause. ",
'D');
32 desc.add_option(
"lps", utilities::make_file_argument(
"FILE"),
33 "use FILE for the data and action specification. "
34 "FILE must be a .lps file. ",
'l');
36 desc.add_option(
"mcrl2", utilities::make_file_argument(
"FILE"),
37 "use FILE as the data and action specification for the LTS. "
38 "FILE must be a .mcrl2 file. ",
'm');
43template <
class LTS_TYPE>
44void load_lts(
const utilities::command_line_parser& parser,
const std::string& ltsfilename, LTS_TYPE& result)
46 data_file_type_t data_file_type = data_file_type_t::none_e;
47 std::string data_file;
49 if (parser.options.count(
"data"))
51 if (1 < parser.options.count(
"data"))
53 mCRL2log(log::warning) <<
"Multiple data specification files are specified; can only use one.\n";
55 data_file_type = data_file_type_t::data_e;
56 data_file = parser.option_argument(
"data");
59 if (parser.options.count(
"lps"))
61 if (1 < parser.options.count(
"lps") || data_file_type != data_file_type_t::none_e)
63 mCRL2log(log::warning) <<
"Multiple data specification files are specified; can only use one.\n";
66 data_file_type = data_file_type_t::lps_e;
67 data_file = parser.option_argument(
"lps");
70 if (parser.options.count(
"mcrl2"))
72 if (1 < parser.options.count(
"mcrl2") || data_file_type != data_file_type_t::none_e)
74 mCRL2log(log::warning) <<
"Multiple data specification files are specified; can only use one.\n";
77 data_file_type = data_file_type_t::mcrl2_e;
78 data_file = parser.option_argument(
"mcrl2");
81 lts_type input_type = detail::guess_format(ltsfilename);
82 load_lts(result, ltsfilename, input_type, data_file_type, data_file);
86template <
class LTS_TYPE>
89 lps::stochastic_action_summand_vector action_summands;
91 data::variable_list process_parameters({ process_parameter });
92 std::set<data::variable> global_variables;
94 lps::deadlock_summand_vector deadlock_summands(1, lps::deadlock_summand(data::variable_list(), data::sort_bool::true_(), lps::deadlock()));
98 if constexpr (!(LTS_TYPE::is_probabilistic_lts))
105 const typename LTS_TYPE::probabilistic_state_t& init = l.initial_probabilistic_state();
116 std::size_t count=init.size();
117 for(
typename LTS_TYPE::probabilistic_state_t::const_reverse_iterator i=init.rbegin(); i!=init.rend(); ++i)
129 return lps::stochastic_specification(l.data(), l.action_label_declarations(), global_variables, lps, initial_process);
\brief A stochastic distribution
stochastic_distribution()
\brief Default constructor X3.
stochastic_distribution(const data::variable_list &variables, const data::data_expression &distribution)
\brief Constructor Z12.
A stochastic process initializer.
stochastic_process_initializer(const data::data_expression_list &expressions, const stochastic_distribution &distribution)
Constructor.
Linear process specification.
function object to compare two constln_t pointers based on their contents
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.
Namespace for system defined sort pos.
const basic_sort & pos()
Constructor for sort expression Pos.
Namespace for system defined sort real_.
data_expression & real_zero()
application equal_to(const data_expression &arg0, const data_expression &arg1)
Application of function symbol ==.
The main namespace for the LPS library.
lps::stochastic_specification extract_specification(const LTS_TYPE &l)
void load_lts(const utilities::command_line_parser &parser, const std::string <sfilename, LTS_TYPE &result)
void add_options(utilities::interface_description &desc)