mCRL2
Loading...
Searching...
No Matches
lps2pbes_par.h
Go to the documentation of this file.
1// Author(s): Wieger Wesselink
2// Copyright: see the accompanying file COPYING or copy at
3// https://github.com/mCRL2org/mCRL2/blob/master/COPYING
4//
5// Distributed under the Boost Software License, Version 1.0.
6// (See accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8//
11
12#ifndef MCRL2_PBES_DETAIL_LPS2PBES_PAR_H
13#define MCRL2_PBES_DETAIL_LPS2PBES_PAR_H
14
16
17namespace mcrl2 {
18
19namespace pbes_system {
20
21namespace detail {
22
23data::variable_list Par(const core::identifier_string& X, const data::variable_list& l, const state_formulas::state_formula& x);
24
26{
28 using super::enter;
29 using super::leave;
30 using super::apply;
31
34 std::vector<data::variable_list> result_stack;
35
37 : X(X_), l(l_)
38 {}
39
41 {
42 result_stack.push_back(x);
43 }
44
45 const data::variable_list& top() const
46 {
47 return result_stack.back();
48 }
49
51 {
52 data::variable_list result = top();
53 result_stack.pop_back();
54 return result;
55 }
56
57 // join the two topmost elements on the stack
58 void join()
59 {
60 data::variable_list right = pop();
61 data::variable_list left = pop();
62 push(left + right);
63 }
64
66 {
68 }
69
71 {
73 }
74
76 {
78 }
79
81 {
82 // skip
83 }
84
86 {
87 join();
88 }
89
91 {
92 join();
93 }
94
96 {
97 join();
98 }
99
101 {
102 push(Par(X, l + x.variables(), x.body()));
103 }
104
106 {
107 push(Par(X, l + x.variables(), x.body()));
108 }
109
111 {
112 // skip
113 }
114
116 {
117 // skip
118 }
119
121 {
123 }
124
126 {
128 }
129
131 {
133 }
134
136 {
138 }
139
141 {
143 }
144
146 {
147 if (x.name() == X)
148 {
149 push(l);
150 }
151 else
152 {
154 }
155 }
156
158 {
159 if (x.name() == X)
160 {
161 push(l);
162 }
163 else
164 {
166 }
167 }
168};
169
170inline
172{
173 par_traverser f(X, l);
174 f.apply(x);
175 return f.top();
176}
177
178} // namespace detail
179
180} // namespace pbes_system
181
182} // namespace mcrl2
183
184#endif // MCRL2_PBES_DETAIL_LPS2PBES_PAR_H
Term containing a string.
\brief The and operator for state formulas
\brief The timed delay operator for state formulas
\brief The delay operator for state formulas
\brief The existential quantification operator for state formulas
const state_formula & body() const
const data::variable_list & variables() const
\brief The value false for state formulas
\brief The universal quantification operator for state formulas
const state_formula & body() const
const data::variable_list & variables() const
\brief The implication operator for state formulas
\brief The may operator for state formulas
\brief The mu operator for state formulas
const core::identifier_string & name() const
const data::assignment_list & assignments() const
const state_formula & operand() const
\brief The must operator for state formulas
\brief The not operator for state formulas
\brief The nu operator for state formulas
const core::identifier_string & name() const
const state_formula & operand() const
const data::assignment_list & assignments() const
\brief The or operator for state formulas
\brief The value true for state formulas
\brief The state formula variable
\brief The timed yaled operator for state formulas
\brief The yaled operator for state formulas
add your file description here.
atermpp::aterm_string identifier_string
String type of the LPS library. Identifier strings are represented internally as ATerms.
variable_list left_hand_sides(const assignment_list &x)
Returns the left hand sides of an assignment list.
Definition assignment.h:310
atermpp::term_list< variable > variable_list
\brief list of variables
data::variable_list Par(const core::identifier_string &X, const data::variable_list &l, const state_formulas::state_formula &x)
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
Definition indexed_set.h:72
void apply(const state_formulas::mu &x)
const data::variable_list & top() const
void leave(const state_formulas::yaled &)
void leave(const state_formulas::variable &)
void leave(const state_formulas::may &)
const core::identifier_string & X
std::vector< data::variable_list > result_stack
void apply(const state_formulas::nu &x)
par_traverser(const core::identifier_string &X_, const data::variable_list &l_)
void push(const data::variable_list &x)
void apply(const state_formulas::forall &x)
void leave(const state_formulas::true_ &)
void apply(const state_formulas::exists &x)
void leave(const state_formulas::must &)
void leave(const state_formulas::or_ &)
void leave(const state_formulas::delay &)
void leave(const state_formulas::and_ &)
state_formulas::state_formula_traverser< par_traverser > super
void leave(const state_formulas::imp &)
void leave(const state_formulas::not_ &)
void leave(const state_formulas::delay_timed &)
void leave(const state_formulas::yaled_timed &)
void leave(const state_formulas::false_ &)
void leave(const data::data_expression &)